From 5ed6620bad808381fce94f2cd67ee911b4d45bff Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:19:04 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/TextGL.dcu | Bin 0 -> 8556 bytes Game/Code/Classes/TextGL.pas | 345 ++++ Game/Code/Classes/UCatCovers.dcu | Bin 0 -> 4945 bytes Game/Code/Classes/UCatCovers.pas | 143 ++ Game/Code/Classes/UCovers.dcu | Bin 0 -> 6055 bytes Game/Code/Classes/UCovers.pas | 226 +++ Game/Code/Classes/UDLLManager.dcu | Bin 0 -> 6021 bytes Game/Code/Classes/UDLLManager.pas | 216 +++ Game/Code/Classes/UDraw.dcu | Bin 0 -> 41304 bytes Game/Code/Classes/UDraw.pas | 1613 +++++++++++++++++ Game/Code/Classes/UFiles.dcu | Bin 0 -> 4673 bytes Game/Code/Classes/UFiles.pas | 326 ++++ Game/Code/Classes/UGraphic.dcu | Bin 0 -> 18647 bytes Game/Code/Classes/UGraphic.pas | 405 +++++ Game/Code/Classes/UGraphicClasses.dcu | Bin 0 -> 341 bytes Game/Code/Classes/UGraphicClasses.pas | 7 + Game/Code/Classes/UIni.dcu | Bin 0 -> 22355 bytes Game/Code/Classes/UIni.pas | 693 ++++++++ Game/Code/Classes/UJoystick.dcu | Bin 0 -> 2268 bytes Game/Code/Classes/UJoystick.pas | 124 ++ Game/Code/Classes/ULCD.dcu | Bin 0 -> 5497 bytes Game/Code/Classes/ULCD.pas | 287 +++ Game/Code/Classes/ULCD.~pas | 287 +++ Game/Code/Classes/ULanguage.dcu | Bin 0 -> 6519 bytes Game/Code/Classes/ULanguage.pas | 222 +++ Game/Code/Classes/ULight.dcu | Bin 0 -> 2389 bytes Game/Code/Classes/ULight.pas | 116 ++ Game/Code/Classes/ULog.dcu | Bin 0 -> 6217 bytes Game/Code/Classes/ULog.pas | 227 +++ Game/Code/Classes/ULyrics.dcu | Bin 0 -> 9029 bytes Game/Code/Classes/ULyrics.pas | 383 ++++ Game/Code/Classes/UMain.dcu | Bin 0 -> 11501 bytes Game/Code/Classes/UMain.pas | 673 +++++++ Game/Code/Classes/UMusic.dcu | Bin 0 -> 15179 bytes Game/Code/Classes/UMusic.pas | 783 +++++++++ Game/Code/Classes/UParty.dcu | Bin 0 -> 4129 bytes Game/Code/Classes/UParty.pas | 204 +++ Game/Code/Classes/UPliki.dcu | Bin 0 -> 19679 bytes Game/Code/Classes/UPliki.pas | 830 +++++++++ Game/Code/Classes/URecord.dcu | Bin 0 -> 6913 bytes Game/Code/Classes/URecord.pas | 371 ++++ Game/Code/Classes/UScores.dcu | Bin 0 -> 4811 bytes Game/Code/Classes/UScores.pas | 144 ++ Game/Code/Classes/USkins.dcu | Bin 0 -> 5747 bytes Game/Code/Classes/USkins.pas | 158 ++ Game/Code/Classes/USongs.dcu | Bin 0 -> 13980 bytes Game/Code/Classes/USongs.pas | 667 +++++++ Game/Code/Classes/UTexture.dcu | Bin 0 -> 19192 bytes Game/Code/Classes/UTexture.pas | 811 +++++++++ Game/Code/Classes/UThemes.dcu | Bin 0 -> 59165 bytes Game/Code/Classes/UThemes.pas | 1837 ++++++++++++++++++++ Game/Code/Classes/UTime.dcu | Bin 0 -> 2083 bytes Game/Code/Classes/UTime.pas | 81 + Game/Code/Menu/UDisplay.dcu | Bin 0 -> 7030 bytes Game/Code/Menu/UDisplay.pas | 289 +++ Game/Code/Menu/UDrawTexture.dcu | Bin 0 -> 3640 bytes Game/Code/Menu/UDrawTexture.pas | 101 ++ Game/Code/Menu/UMenu.dcu | Bin 0 -> 31672 bytes Game/Code/Menu/UMenu.pas | 1136 ++++++++++++ Game/Code/Menu/UMenuButton.dcu | Bin 0 -> 5472 bytes Game/Code/Menu/UMenuButton.pas | 238 +++ Game/Code/Menu/UMenuInteract.dcu | Bin 0 -> 404 bytes Game/Code/Menu/UMenuInteract.pas | 14 + Game/Code/Menu/UMenuSelect.dcu | Bin 0 -> 3922 bytes Game/Code/Menu/UMenuSelect.pas | 198 +++ Game/Code/Menu/UMenuSelectSlide.dcu | Bin 0 -> 6108 bytes Game/Code/Menu/UMenuSelectSlide.pas | 335 ++++ Game/Code/Menu/UMenuStatic.dcu | Bin 0 -> 1594 bytes Game/Code/Menu/UMenuStatic.pas | 32 + Game/Code/Menu/UMenuText.dcu | Bin 0 -> 3155 bytes Game/Code/Menu/UMenuText.pas | 96 + Game/Code/SMpeg/USmpeg.alt.pas | 292 ++++ Game/Code/SMpeg/USmpeg.dcu | Bin 0 -> 6074 bytes Game/Code/SMpeg/USmpeg.pas | 299 ++++ Game/Code/Screens/UScreenEdit.dcu | Bin 0 -> 2915 bytes Game/Code/Screens/UScreenEdit.pas | 104 ++ Game/Code/Screens/UScreenEditConvert.dcu | Bin 0 -> 13604 bytes Game/Code/Screens/UScreenEditConvert.pas | 500 ++++++ Game/Code/Screens/UScreenEditHeader.dcu | Bin 0 -> 9398 bytes Game/Code/Screens/UScreenEditHeader.pas | 362 ++++ Game/Code/Screens/UScreenEditSub.dcu | Bin 0 -> 29283 bytes Game/Code/Screens/UScreenEditSub.pas | 1236 +++++++++++++ Game/Code/Screens/UScreenLevel.dcu | Bin 0 -> 3407 bytes Game/Code/Screens/UScreenLevel.pas | 101 ++ Game/Code/Screens/UScreenLoading.dcu | Bin 0 -> 2525 bytes Game/Code/Screens/UScreenLoading.pas | 48 + Game/Code/Screens/UScreenMain.dcu | Bin 0 -> 9661 bytes Game/Code/Screens/UScreenMain.pas | 384 ++++ Game/Code/Screens/UScreenName.dcu | Bin 0 -> 4199 bytes Game/Code/Screens/UScreenName.pas | 114 ++ Game/Code/Screens/UScreenOpen.dcu | Bin 0 -> 4756 bytes Game/Code/Screens/UScreenOpen.pas | 151 ++ Game/Code/Screens/UScreenOptions.dcu | Bin 0 -> 4834 bytes Game/Code/Screens/UScreenOptions.pas | 221 +++ Game/Code/Screens/UScreenOptionsGame.dcu | Bin 0 -> 4049 bytes Game/Code/Screens/UScreenOptionsGame.pas | 107 ++ Game/Code/Screens/UScreenOptionsGraphics.dcu | Bin 0 -> 3911 bytes Game/Code/Screens/UScreenOptionsGraphics.pas | 101 ++ Game/Code/Screens/UScreenOptionsLyrics.dcu | Bin 0 -> 3566 bytes Game/Code/Screens/UScreenOptionsLyrics.pas | 91 + Game/Code/Screens/UScreenOptionsRecord.dcu | Bin 0 -> 4885 bytes Game/Code/Screens/UScreenOptionsRecord.pas | 136 ++ Game/Code/Screens/UScreenOptionsSound.dcu | Bin 0 -> 3629 bytes Game/Code/Screens/UScreenOptionsSound.pas | 93 + Game/Code/Screens/UScreenOptionsThemes.dcu | Bin 0 -> 4188 bytes Game/Code/Screens/UScreenOptionsThemes.pas | 118 ++ Game/Code/Screens/UScreenPartyNewRound.dcu | Bin 0 -> 9085 bytes Game/Code/Screens/UScreenPartyNewRound.pas | 397 +++++ Game/Code/Screens/UScreenPartyOptions.dcu | Bin 0 -> 5884 bytes Game/Code/Screens/UScreenPartyOptions.pas | 164 ++ Game/Code/Screens/UScreenPartyPlayer.dcu | Bin 0 -> 6068 bytes Game/Code/Screens/UScreenPartyPlayer.pas | 210 +++ Game/Code/Screens/UScreenPartyScore.dcu | Bin 0 -> 5605 bytes Game/Code/Screens/UScreenPartyScore.pas | 183 ++ Game/Code/Screens/UScreenPartyWin.dcu | Bin 0 -> 4642 bytes Game/Code/Screens/UScreenPartyWin.pas | 157 ++ Game/Code/Screens/UScreenScore.dcu | Bin 0 -> 10273 bytes Game/Code/Screens/UScreenScore.pas | 586 +++++++ Game/Code/Screens/UScreenSing.dcu | Bin 0 -> 23327 bytes Game/Code/Screens/UScreenSing.pas | 1121 ++++++++++++ Game/Code/Screens/UScreenSingModi.dcu | Bin 0 -> 15109 bytes Game/Code/Screens/UScreenSingModi.pas | 1088 ++++++++++++ Game/Code/Screens/UScreenSong.dcu | Bin 0 -> 29384 bytes Game/Code/Screens/UScreenSong.pas | 1690 ++++++++++++++++++ Game/Code/Screens/UScreenSongMenu.dcu | Bin 0 -> 7346 bytes Game/Code/Screens/UScreenSongMenu.pas | 355 ++++ Game/Code/Screens/UScreenTop5.dcu | Bin 0 -> 4531 bytes Game/Code/Screens/UScreenTop5.pas | 166 ++ Game/Code/Screens/UScreenWelcome.dcu | Bin 0 -> 3228 bytes Game/Code/Screens/UScreenWelcome.pas | 117 ++ Game/Code/UltraStar.RES | Bin 0 -> 1341060 bytes Game/Code/UltraStar.bdsproj | 168 ++ Game/Code/UltraStar.bdsproj.local | 2 + Game/Code/UltraStar.cfg | 41 + Game/Code/UltraStar.dof | 148 ++ Game/Code/UltraStar.dpr | 286 +++ Game/Code/UltraStar.identcache2 | Bin 0 -> 3983 bytes Game/Code/UltraStar.rc | 15 + Game/Code/UltraStar.~dpr | 285 +++ Game/Code/rccompillieren.bat | 1 + Game/Fonts/512x512 Normal.dat | Bin 0 -> 512 bytes Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp | Bin 0 -> 524408 bytes Game/Fonts/Backup/Bold/Font 1024 Bold.dat | Bin 0 -> 256 bytes Game/Fonts/Backup/Bold/Thumbs.db | Bin 0 -> 9216 bytes Game/Fonts/Backup/Normal/Font Normal 16.bmp | Bin 0 -> 131192 bytes Game/Fonts/Backup/Normal/Font Normal.dat | Bin 0 -> 256 bytes Game/Fonts/Backup/Normal/Thumbs.db | Bin 0 -> 8704 bytes .../Backup/Outline 1/Outline 36 (1024) 16c.bmp | Bin 0 -> 524408 bytes Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat | Bin 0 -> 256 bytes Game/Fonts/Backup/Outline 1/Thumbs.db | Bin 0 -> 9728 bytes .../Outline 2/5 - Outline dark edited 16c.bmp | Bin 0 -> 131192 bytes Game/Fonts/Backup/Outline 2/Outline.dat | Bin 0 -> 256 bytes Game/Fonts/Backup/Outline 2/Thumbs.db | Bin 0 -> 9216 bytes Game/Fonts/Bold/Font 1024 Bold 16.bmp | Bin 0 -> 524406 bytes Game/Fonts/Bold/Font 1024 Bold 16.old.bmp | Bin 0 -> 524408 bytes Game/Fonts/Bold/Font 1024 Bold.dat | Bin 0 -> 256 bytes Game/Fonts/Bold/Thumbs.db | Bin 0 -> 9216 bytes Game/Fonts/Normal/Font Normal 16.bmp | Bin 0 -> 131190 bytes Game/Fonts/Normal/Font Normal 16.old.bmp | Bin 0 -> 131192 bytes Game/Fonts/Normal/Font Normal.dat | Bin 0 -> 256 bytes Game/Fonts/Normal/Thumbs.db | Bin 0 -> 20992 bytes Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp | Bin 0 -> 524406 bytes Game/Fonts/Outline 1/Outline 36 (1024).dat | Bin 0 -> 256 bytes Game/Fonts/Outline 1/Photoshop.psd | Bin 0 -> 952610 bytes Game/Fonts/Outline 1/Thumbs.db | Bin 0 -> 9728 bytes .../Outline 2/5 - Outline dark edited 16c.bmp | Bin 0 -> 131190 bytes Game/Fonts/Outline 2/Outline.dat | Bin 0 -> 256 bytes Game/Fonts/Outline 2/Thumbs.db | Bin 0 -> 9216 bytes Game/Graphics/MusicWheelItem song.jpg | Bin 0 -> 27550 bytes Game/Graphics/Thumbs.db | Bin 0 -> 10752 bytes Game/Graphics/us.ico | Bin 0 -> 766 bytes Modis/5000Points/Until5000.dpr | 89 + Modis/Blind/Blind.dpr | 97 ++ Modis/Don't_Get_Worse/Hold_The_Line.dpr | 170 ++ Modis/Duell/Duell.cfg | 40 + Modis/Duell/Duell.dpr | 95 + Modis/SDK/ModiSDK.pas | 139 ++ Modis/SDK/StrUtils.pas | 70 + 178 files changed, 26956 insertions(+) create mode 100644 Game/Code/Classes/TextGL.dcu create mode 100644 Game/Code/Classes/TextGL.pas create mode 100644 Game/Code/Classes/UCatCovers.dcu create mode 100644 Game/Code/Classes/UCatCovers.pas create mode 100644 Game/Code/Classes/UCovers.dcu create mode 100644 Game/Code/Classes/UCovers.pas create mode 100644 Game/Code/Classes/UDLLManager.dcu create mode 100644 Game/Code/Classes/UDLLManager.pas create mode 100644 Game/Code/Classes/UDraw.dcu create mode 100644 Game/Code/Classes/UDraw.pas create mode 100644 Game/Code/Classes/UFiles.dcu create mode 100644 Game/Code/Classes/UFiles.pas create mode 100644 Game/Code/Classes/UGraphic.dcu create mode 100644 Game/Code/Classes/UGraphic.pas create mode 100644 Game/Code/Classes/UGraphicClasses.dcu create mode 100644 Game/Code/Classes/UGraphicClasses.pas create mode 100644 Game/Code/Classes/UIni.dcu create mode 100644 Game/Code/Classes/UIni.pas create mode 100644 Game/Code/Classes/UJoystick.dcu create mode 100644 Game/Code/Classes/UJoystick.pas create mode 100644 Game/Code/Classes/ULCD.dcu create mode 100644 Game/Code/Classes/ULCD.pas create mode 100644 Game/Code/Classes/ULCD.~pas create mode 100644 Game/Code/Classes/ULanguage.dcu create mode 100644 Game/Code/Classes/ULanguage.pas create mode 100644 Game/Code/Classes/ULight.dcu create mode 100644 Game/Code/Classes/ULight.pas create mode 100644 Game/Code/Classes/ULog.dcu create mode 100644 Game/Code/Classes/ULog.pas create mode 100644 Game/Code/Classes/ULyrics.dcu create mode 100644 Game/Code/Classes/ULyrics.pas create mode 100644 Game/Code/Classes/UMain.dcu create mode 100644 Game/Code/Classes/UMain.pas create mode 100644 Game/Code/Classes/UMusic.dcu create mode 100644 Game/Code/Classes/UMusic.pas create mode 100644 Game/Code/Classes/UParty.dcu create mode 100644 Game/Code/Classes/UParty.pas create mode 100644 Game/Code/Classes/UPliki.dcu create mode 100644 Game/Code/Classes/UPliki.pas create mode 100644 Game/Code/Classes/URecord.dcu create mode 100644 Game/Code/Classes/URecord.pas create mode 100644 Game/Code/Classes/UScores.dcu create mode 100644 Game/Code/Classes/UScores.pas create mode 100644 Game/Code/Classes/USkins.dcu create mode 100644 Game/Code/Classes/USkins.pas create mode 100644 Game/Code/Classes/USongs.dcu create mode 100644 Game/Code/Classes/USongs.pas create mode 100644 Game/Code/Classes/UTexture.dcu create mode 100644 Game/Code/Classes/UTexture.pas create mode 100644 Game/Code/Classes/UThemes.dcu create mode 100644 Game/Code/Classes/UThemes.pas create mode 100644 Game/Code/Classes/UTime.dcu create mode 100644 Game/Code/Classes/UTime.pas create mode 100644 Game/Code/Menu/UDisplay.dcu create mode 100644 Game/Code/Menu/UDisplay.pas create mode 100644 Game/Code/Menu/UDrawTexture.dcu create mode 100644 Game/Code/Menu/UDrawTexture.pas create mode 100644 Game/Code/Menu/UMenu.dcu create mode 100644 Game/Code/Menu/UMenu.pas create mode 100644 Game/Code/Menu/UMenuButton.dcu create mode 100644 Game/Code/Menu/UMenuButton.pas create mode 100644 Game/Code/Menu/UMenuInteract.dcu create mode 100644 Game/Code/Menu/UMenuInteract.pas create mode 100644 Game/Code/Menu/UMenuSelect.dcu create mode 100644 Game/Code/Menu/UMenuSelect.pas create mode 100644 Game/Code/Menu/UMenuSelectSlide.dcu create mode 100644 Game/Code/Menu/UMenuSelectSlide.pas create mode 100644 Game/Code/Menu/UMenuStatic.dcu create mode 100644 Game/Code/Menu/UMenuStatic.pas create mode 100644 Game/Code/Menu/UMenuText.dcu create mode 100644 Game/Code/Menu/UMenuText.pas create mode 100644 Game/Code/SMpeg/USmpeg.alt.pas create mode 100644 Game/Code/SMpeg/USmpeg.dcu create mode 100644 Game/Code/SMpeg/USmpeg.pas create mode 100644 Game/Code/Screens/UScreenEdit.dcu create mode 100644 Game/Code/Screens/UScreenEdit.pas create mode 100644 Game/Code/Screens/UScreenEditConvert.dcu create mode 100644 Game/Code/Screens/UScreenEditConvert.pas create mode 100644 Game/Code/Screens/UScreenEditHeader.dcu create mode 100644 Game/Code/Screens/UScreenEditHeader.pas create mode 100644 Game/Code/Screens/UScreenEditSub.dcu create mode 100644 Game/Code/Screens/UScreenEditSub.pas create mode 100644 Game/Code/Screens/UScreenLevel.dcu create mode 100644 Game/Code/Screens/UScreenLevel.pas create mode 100644 Game/Code/Screens/UScreenLoading.dcu create mode 100644 Game/Code/Screens/UScreenLoading.pas create mode 100644 Game/Code/Screens/UScreenMain.dcu create mode 100644 Game/Code/Screens/UScreenMain.pas create mode 100644 Game/Code/Screens/UScreenName.dcu create mode 100644 Game/Code/Screens/UScreenName.pas create mode 100644 Game/Code/Screens/UScreenOpen.dcu create mode 100644 Game/Code/Screens/UScreenOpen.pas create mode 100644 Game/Code/Screens/UScreenOptions.dcu create mode 100644 Game/Code/Screens/UScreenOptions.pas create mode 100644 Game/Code/Screens/UScreenOptionsGame.dcu create mode 100644 Game/Code/Screens/UScreenOptionsGame.pas create mode 100644 Game/Code/Screens/UScreenOptionsGraphics.dcu create mode 100644 Game/Code/Screens/UScreenOptionsGraphics.pas create mode 100644 Game/Code/Screens/UScreenOptionsLyrics.dcu create mode 100644 Game/Code/Screens/UScreenOptionsLyrics.pas create mode 100644 Game/Code/Screens/UScreenOptionsRecord.dcu create mode 100644 Game/Code/Screens/UScreenOptionsRecord.pas create mode 100644 Game/Code/Screens/UScreenOptionsSound.dcu create mode 100644 Game/Code/Screens/UScreenOptionsSound.pas create mode 100644 Game/Code/Screens/UScreenOptionsThemes.dcu create mode 100644 Game/Code/Screens/UScreenOptionsThemes.pas create mode 100644 Game/Code/Screens/UScreenPartyNewRound.dcu create mode 100644 Game/Code/Screens/UScreenPartyNewRound.pas create mode 100644 Game/Code/Screens/UScreenPartyOptions.dcu create mode 100644 Game/Code/Screens/UScreenPartyOptions.pas create mode 100644 Game/Code/Screens/UScreenPartyPlayer.dcu create mode 100644 Game/Code/Screens/UScreenPartyPlayer.pas create mode 100644 Game/Code/Screens/UScreenPartyScore.dcu create mode 100644 Game/Code/Screens/UScreenPartyScore.pas create mode 100644 Game/Code/Screens/UScreenPartyWin.dcu create mode 100644 Game/Code/Screens/UScreenPartyWin.pas create mode 100644 Game/Code/Screens/UScreenScore.dcu create mode 100644 Game/Code/Screens/UScreenScore.pas create mode 100644 Game/Code/Screens/UScreenSing.dcu create mode 100644 Game/Code/Screens/UScreenSing.pas create mode 100644 Game/Code/Screens/UScreenSingModi.dcu create mode 100644 Game/Code/Screens/UScreenSingModi.pas create mode 100644 Game/Code/Screens/UScreenSong.dcu create mode 100644 Game/Code/Screens/UScreenSong.pas create mode 100644 Game/Code/Screens/UScreenSongMenu.dcu create mode 100644 Game/Code/Screens/UScreenSongMenu.pas create mode 100644 Game/Code/Screens/UScreenTop5.dcu create mode 100644 Game/Code/Screens/UScreenTop5.pas create mode 100644 Game/Code/Screens/UScreenWelcome.dcu create mode 100644 Game/Code/Screens/UScreenWelcome.pas create mode 100644 Game/Code/UltraStar.RES create mode 100644 Game/Code/UltraStar.bdsproj create mode 100644 Game/Code/UltraStar.bdsproj.local create mode 100644 Game/Code/UltraStar.cfg create mode 100644 Game/Code/UltraStar.dof create mode 100644 Game/Code/UltraStar.dpr create mode 100644 Game/Code/UltraStar.identcache2 create mode 100644 Game/Code/UltraStar.rc create mode 100644 Game/Code/UltraStar.~dpr create mode 100644 Game/Code/rccompillieren.bat create mode 100644 Game/Fonts/512x512 Normal.dat create mode 100644 Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp create mode 100644 Game/Fonts/Backup/Bold/Font 1024 Bold.dat create mode 100644 Game/Fonts/Backup/Bold/Thumbs.db create mode 100644 Game/Fonts/Backup/Normal/Font Normal 16.bmp create mode 100644 Game/Fonts/Backup/Normal/Font Normal.dat create mode 100644 Game/Fonts/Backup/Normal/Thumbs.db create mode 100644 Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp create mode 100644 Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat create mode 100644 Game/Fonts/Backup/Outline 1/Thumbs.db create mode 100644 Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp create mode 100644 Game/Fonts/Backup/Outline 2/Outline.dat create mode 100644 Game/Fonts/Backup/Outline 2/Thumbs.db create mode 100644 Game/Fonts/Bold/Font 1024 Bold 16.bmp create mode 100644 Game/Fonts/Bold/Font 1024 Bold 16.old.bmp create mode 100644 Game/Fonts/Bold/Font 1024 Bold.dat create mode 100644 Game/Fonts/Bold/Thumbs.db create mode 100644 Game/Fonts/Normal/Font Normal 16.bmp create mode 100644 Game/Fonts/Normal/Font Normal 16.old.bmp create mode 100644 Game/Fonts/Normal/Font Normal.dat create mode 100644 Game/Fonts/Normal/Thumbs.db create mode 100644 Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp create mode 100644 Game/Fonts/Outline 1/Outline 36 (1024).dat create mode 100644 Game/Fonts/Outline 1/Photoshop.psd create mode 100644 Game/Fonts/Outline 1/Thumbs.db create mode 100644 Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp create mode 100644 Game/Fonts/Outline 2/Outline.dat create mode 100644 Game/Fonts/Outline 2/Thumbs.db create mode 100644 Game/Graphics/MusicWheelItem song.jpg create mode 100644 Game/Graphics/Thumbs.db create mode 100644 Game/Graphics/us.ico create mode 100644 Modis/5000Points/Until5000.dpr create mode 100644 Modis/Blind/Blind.dpr create mode 100644 Modis/Don't_Get_Worse/Hold_The_Line.dpr create mode 100644 Modis/Duell/Duell.cfg create mode 100644 Modis/Duell/Duell.dpr create mode 100644 Modis/SDK/ModiSDK.pas create mode 100644 Modis/SDK/StrUtils.pas diff --git a/Game/Code/Classes/TextGL.dcu b/Game/Code/Classes/TextGL.dcu new file mode 100644 index 00000000..772d09c1 Binary files /dev/null and b/Game/Code/Classes/TextGL.dcu differ diff --git a/Game/Code/Classes/TextGL.pas b/Game/Code/Classes/TextGL.pas new file mode 100644 index 00000000..cf09e48b --- /dev/null +++ b/Game/Code/Classes/TextGL.pas @@ -0,0 +1,345 @@ +unit TextGL; + +interface + +uses OpenGL12, SDL, UTexture, Classes, ULog; + +procedure BuildFont; // Build Our Bitmap Font +procedure KillFont; // Delete The Font +function glTextWidth(text: pchar): real; // Returns Text Width +procedure glPrintDone(text: pchar; Done: real; ColR, ColG, ColB: real); +procedure glPrintLetter(letter: char); +procedure glPrintLetterCut(letter: char; Start, Finish: real); +procedure glPrint(text: pchar); // Custom GL "Print" Routine +procedure glPrintCut(text: pchar); +procedure SetFontPos(X, Y: real); // Sets X And Y +procedure SetFontSize(Size: real); +procedure SetFontStyle(Style: integer); // sets active font style (normal, bold, etc) +procedure SetFontItalic(Enable: boolean); // sets italic type letter (works for all fonts) +procedure SetFontAspectW(Aspect: real); + +type + TTextGL = record + X: real; + Y: real; + Text: string; + Size: real; + ColR: real; + ColG: real; + ColB: real; + end; + + TFont = record + Tex: TTexture; + Width: array[0..255] of byte; + AspectW: real; + Centered: boolean; + Done: real; + Outline: real; + Italic: boolean; + end; + + +var + base: GLuint; // Base Display List For The Font Set + Fonts: array of TFont; + ActFont: integer; + PColR: real; // temps for glPrintDone + PColG: real; + PColB: real; + +implementation + +uses UMain, Windows, SysUtils, UGraphic; + +procedure BuildFont; // Build Our Bitmap Font +var + font: HFONT; // Windows Font ID + h_dc: hdc; + Rejestr: TResourceStream; + Pet: integer; +begin + ActFont := 0; + + SetLength(Fonts, 5); + Fonts[0].Tex := Texture.LoadTexture(true, 'Font', 'BMP', 'Font', 0); + Fonts[0].Tex.H := 30; + Fonts[0].AspectW := 0.9; + Fonts[0].Done := -1; + Fonts[0].Outline := 0; + + Fonts[1].Tex := Texture.LoadTexture(true, 'FontB', 'BMP', 'Font', 0); + Fonts[1].Tex.H := 30; + Fonts[1].AspectW := 1; + Fonts[1].Done := -1; + Fonts[1].Outline := 0; + + Fonts[2].Tex := Texture.LoadTexture(true, 'FontO', 'BMP', 'Font Outline', 0); + Fonts[2].Tex.H := 30; + Fonts[2].AspectW := 0.95; + Fonts[2].Done := -1; + Fonts[2].Outline := 5; + + Fonts[3].Tex := Texture.LoadTexture(true, 'FontO2', 'BMP', 'Font Outline 2', 0); + Fonts[3].Tex.H := 30; + Fonts[3].AspectW := 0.95; + Fonts[3].Done := -1; + Fonts[3].Outline := 4; + +{ Fonts[4].Tex := Texture.LoadTexture('FontO', 'BMP', 'Arrow', 0); // for score screen + Fonts[4].Tex.H := 30; + Fonts[4].AspectW := 0.95; + Fonts[4].Done := -1; + Fonts[4].Outline := 5;} + + + Rejestr := TResourceStream.Create(HInstance, 'Font', 'FNT'); + Rejestr.Read(Fonts[0].Width, 256); + Rejestr.Free; + + Rejestr := TResourceStream.Create(HInstance, 'FontB', 'FNT'); + Rejestr.Read(Fonts[1].Width, 256); + Rejestr.Free; + + Rejestr := TResourceStream.Create(HInstance, 'FontO', 'FNT'); + Rejestr.Read(Fonts[2].Width, 256); + Rejestr.Free; + + Rejestr := TResourceStream.Create(HInstance, 'FontO2', 'FNT'); + Rejestr.Read(Fonts[3].Width, 256); + Rejestr.Free; + +{ Rejestr := TResourceStream.Create(HInstance, 'FontO', 'FNT'); + Rejestr.Read(Fonts[4].Width, 256); + Rejestr.Free;} + + for Pet := 0 to 255 do + Fonts[1].Width[Pet] := Fonts[1].Width[Pet] div 2; + + for Pet := 0 to 255 do + Fonts[2].Width[Pet] := Fonts[2].Width[Pet] div 2 + 2; + + for Pet := 0 to 255 do + Fonts[3].Width[Pet] := Fonts[3].Width[Pet] + 1; + +{ for Pet := 0 to 255 do + Fonts[4].Width[Pet] := Fonts[4].Width[Pet] div 2 + 2;} + +end; + +procedure KillFont; // Delete The Font +begin +// glDeleteLists(base, 256); // Delete All 96 Characters +end; + +function glTextWidth(text: pchar): real; +var + Letter: char; +begin +// Log.LogStatus(Text, 'glTextWidth'); + Result := 0; + while (length(text) > 0) do begin + Letter := Text[0]; + text := pchar(Copy(text, 2, Length(text)-1)); + Result := Result + Fonts[ActFont].Width[Ord(Letter)] * Fonts[ActFont].Tex.H / 30 * Fonts[ActFont].AspectW; + end; // while +end; + +procedure glPrintDone(text: pchar; Done: real; ColR, ColG, ColB: real); +begin + Fonts[ActFont].Done := Done; + PColR := ColR; + PColG := ColG; + PColB := ColB; + glPrintCut(text); + Fonts[ActFont].Done := -1; +end; + +procedure glPrintLetter(Letter: char); +var + TexX, TexY: real; + TexR, TexB: real; + FWidth: real; + PL, PT: real; + PR, PB: real; + XItal: real; // X shift for italic type letter +begin + with Fonts[ActFont].Tex do begin + FWidth := Fonts[ActFont].Width[Ord(Letter)]; + + W := FWidth * (H/30) * Fonts[ActFont].AspectW; +// H := 30; + + // set texture positions + TexX := (ord(Letter) mod 16) * 1/16 + 1/32 - FWidth/1024 - Fonts[ActFont].Outline/1024; + TexY := (ord(Letter) div 16) * 1/16 + 2/1024; // 2/1024 + TexR := (ord(Letter) mod 16) * 1/16 + 1/32 + FWidth/1024 + Fonts[ActFont].Outline/1024; + TexB := (1 + ord(Letter) div 16) * 1/16 - 2/1024; + + // set vector positions + PL := X - Fonts[ActFont].Outline * (H/30) * Fonts[ActFont].AspectW /2; + PT := Y; + PR := PL + W + Fonts[ActFont].Outline * (H/30) * Fonts[ActFont].AspectW; + PB := PT + H; + if Fonts[ActFont].Italic = false then + XItal := 0 + else + XItal := 12; + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, TexNum); + glBegin(GL_QUADS); + glTexCoord2f(TexX, TexY); glVertex2f(PL+XItal, PT); + glTexCoord2f(TexX, TexB); glVertex2f(PL, PB); + glTexCoord2f(TexR, TexB); glVertex2f(PR, PB); + glTexCoord2f(TexR, TexY); glVertex2f(PR+XItal, PT); + glEnd; + X := X + W; + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + end; // with +end; + +procedure glPrintLetterCut(letter: char; Start, Finish: real); +var + TexX, TexY: real; + TexR, TexB: real; + TexTemp: real; + FWidth: real; + PL, PT: real; + PR, PB: real; + OutTemp: real; + XItal: real; +begin + with Fonts[ActFont].Tex do begin + FWidth := Fonts[ActFont].Width[Ord(Letter)]; + + W := FWidth * (H/30) * Fonts[ActFont].AspectW; +// H := 30; + OutTemp := Fonts[ActFont].Outline * (H/30) * Fonts[ActFont].AspectW; + + // set texture positions + TexX := (ord(Letter) mod 16) * 1/16 + 1/32 - FWidth/1024 - Fonts[ActFont].Outline/1024; + TexY := (ord(Letter) div 16) * 1/16 + 2/1024; // 2/1024 + TexR := (ord(Letter) mod 16) * 1/16 + 1/32 + FWidth/1024 + Fonts[ActFont].Outline/1024; + TexB := (1 + ord(Letter) div 16) * 1/16 - 2/1024; + + TexTemp := TexX + Start * (TexR - TexX); + TexR := TexX + Finish * (TexR - TexX); + TexX := TexTemp; + + // set vector positions + PL := X - OutTemp / 2 + OutTemp * Start; + PT := Y; + PR := PL + (W + OutTemp) * (Finish - Start); + PB := PT + H; + if Fonts[ActFont].Italic = false then + XItal := 0 + else + XItal := 12; + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, TexNum); + glBegin(GL_QUADS); + glTexCoord2f(TexX, TexY); glVertex2f(PL+XItal, PT); + glTexCoord2f(TexX, TexB); glVertex2f(PL, PB); + glTexCoord2f(TexR, TexB); glVertex2f(PR, PB); + glTexCoord2f(TexR, TexY); glVertex2f(PR+XItal, PT); // not tested with XItal + glEnd; + X := X + W * (Finish - Start); + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + end; // with + +end; + +procedure glPrint(text: pchar); // Custom GL "Print" Routine +var + Letter: char; +begin + if (Text = '') then // If There's No Text + Exit; // Do Nothing + + while (length(text) > 0) do begin + // cut + Letter := Text[0]; + Text := pchar(Copy(Text, 2, Length(Text)-1)); + + // print + glPrintLetter(Letter); + end; // while +end; + +procedure glPrintCut(text: pchar); +var + Letter: char; + PToDo: real; + PTotWidth: real; + PDoingNow: real; + S: string; +begin + if (Text = '') then // If There's No Text + Exit; // Do Nothing + + PTotWidth := glTextWidth(Text); + PToDo := Fonts[ActFont].Done; + + while (length(text) > 0) do begin + // cut + Letter := Text[0]; + Text := pchar(Copy(Text, 2, Length(Text)-1)); + + // analyze + S := Letter; + PDoingNow := glTextWidth(pchar(S)) / PTotWidth; + + // drawing + if (PToDo > 0) and (PDoingNow <= PToDo) then + glPrintLetter(Letter); + + if (PToDo > 0) and (PDoingNow > PToDo) then begin + glPrintLetterCut(Letter, 0, PToDo / PDoingNow); + glColor3f(PColR, PColG, PColB); + glPrintLetterCut(Letter, PToDo / PDoingNow, 1); + end; + + if (PToDo <= 0) then + glPrintLetter(Letter); + + PToDo := PToDo - PDoingNow; + + end; // while +end; + + +procedure SetFontPos(X, Y: real); +begin + Fonts[ActFont].Tex.X := X; + Fonts[ActFont].Tex.Y := Y; +end; + +procedure SetFontSize(Size: real); +begin + Fonts[ActFont].Tex.H := 30 * (Size/10); +end; + +procedure SetFontStyle(Style: integer); +begin + ActFont := Style; +end; + +procedure SetFontItalic(Enable: boolean); +begin + Fonts[ActFont].Italic := Enable; +end; + +procedure SetFontAspectW(Aspect: real); +begin + Fonts[ActFont].AspectW := Aspect; +end; + +end. diff --git a/Game/Code/Classes/UCatCovers.dcu b/Game/Code/Classes/UCatCovers.dcu new file mode 100644 index 00000000..2ff7a7d9 Binary files /dev/null and b/Game/Code/Classes/UCatCovers.dcu differ diff --git a/Game/Code/Classes/UCatCovers.pas b/Game/Code/Classes/UCatCovers.pas new file mode 100644 index 00000000..00a758c8 --- /dev/null +++ b/Game/Code/Classes/UCatCovers.pas @@ -0,0 +1,143 @@ +unit UCatCovers; +///////////////////////////////////////////////////////////////////////// +// UCatCovers by Whiteshark // +// Class for listing and managing the Category Covers // +///////////////////////////////////////////////////////////////////////// + +interface +uses UIni; + +type + TCatCovers = class + protected + cNames: array [low(ISorting)..high(ISorting)] of array of string; + cFiles: array [low(ISorting)..high(ISorting)] of array of string; + public + constructor Create; + procedure Load; //Load Cover aus Cover.ini and Cover Folder + procedure Add(Sorting: integer; Name, Filename: string); //Add a Cover + function CoverExists(Sorting: integer; Name: string): boolean; //Returns True when a cover with the given Name exists + function GetCover(Sorting: integer; Name: string): string; //Returns the Filename of a Cover + end; + +var +CatCovers: TCatCovers; + +implementation +uses IniFiles, SysUtils, Classes, UPliki, ULog; + +constructor TCatCovers.Create; +begin + Load; +end; + + //Load Cover aus Cover.ini and Cover Folder +procedure TCatCovers.Load; +var + Ini: TMemIniFile; + SR: TSearchRec; + List: TStringlist; + I, J: Integer; + Name, Filename, Temp: string; +begin +try + Ini := TMemIniFile.Create(CoversPath + 'covers.ini'); + List := TStringlist.Create; + + //Add every Cover in Covers Ini for Every Sorting option + for I := low(ISorting) to high(ISorting) do + begin + Ini.ReadSection(ISorting[I], List); + + for J := 0 to List.Count - 1 do + Add(I, List.Strings[J], CoversPath + Ini.ReadString(ISorting[I], List.Strings[J], 'NoCover.jpg')); + end; + +finally + Ini.Free; + List.Free; +end; + +try + //Add Covers from Folder + if (FindFirst (CoversPath + '*.jpg', faAnyFile, SR) = 0) then + repeat + //Add Cover if it doesn't exist for every Section + Name := SR.Name; + Filename := CoversPath + Name; + Delete (Name, length(Name) - 3, 4); + + for I := low(ISorting) to high(ISorting) do + begin + Temp := Name; + if ((I = sTitle) or (I = sTitle2)) and (Pos ('Title', Temp) <> 0) then + Delete (Temp, Pos ('Title', Temp), 5) + else if (I = sArtist) or (I = sArtist2) and (Pos ('Artist', Temp) <> 0) then + Delete (Temp, Pos ('Artist', Temp), 6); + + if not CoverExists(I, Temp) then + Add (I, Temp, Filename); + end; + until FindNext (SR) <> 0; + +finally + FindClose (SR); +end; + +end; + + //Add a Cover +procedure TCatCovers.Add(Sorting: integer; Name, Filename: string); +begin +if FileExists (Filename) then //If Exists -> Add +begin +SetLength (CNames[Sorting], Length(CNames[Sorting]) + 1); +SetLength (CFiles[Sorting], Length(CNames[Sorting]) + 1); + +CNames[Sorting][high(cNames[Sorting])] := Uppercase(Name); +CFiles[Sorting][high(cNames[Sorting])] := FileName; +end; +end; + + //Returns True when a cover with the given Name exists +function TCatCovers.CoverExists(Sorting: integer; Name: string): boolean; +var +I: Integer; +begin +Result := False; +Name := Uppercase(Name); //Case Insensitiv + +for I := low(cNames[Sorting]) to high(cNames[Sorting]) do +begin + if (cNames[Sorting][I] = Name) then //Found Name + begin + Result := true; + break; //Break For Loop + end; +end; +end; + + //Returns the Filename of a Cover +function TCatCovers.GetCover(Sorting: integer; Name: string): string; +var +I: Integer; +begin +Result := ''; +Name := Uppercase(Name); + +for I := low(cNames[Sorting]) to high(cNames[Sorting]) do +begin + if cNames[Sorting][I] = Name then + begin + Result := cFiles[Sorting][I]; + Break; + end; +end; + +//No Cover +if (Result = '') AND (FileExists(CoversPath + 'NoCover.jpg')) then + Result := CoversPath + 'NoCover.jpg'; + +end; + +end. diff --git a/Game/Code/Classes/UCovers.dcu b/Game/Code/Classes/UCovers.dcu new file mode 100644 index 00000000..ca99fc7c Binary files /dev/null and b/Game/Code/Classes/UCovers.dcu differ diff --git a/Game/Code/Classes/UCovers.pas b/Game/Code/Classes/UCovers.pas new file mode 100644 index 00000000..55329fd2 --- /dev/null +++ b/Game/Code/Classes/UCovers.pas @@ -0,0 +1,226 @@ +unit UCovers; + +interface +uses OpenGL12, Windows, Math, Classes, SysUtils, Graphics, UThemes, UTexture; + +type + TCover = record + Name: string; + W: word; + H: word; + Size: integer; + Position: integer; // position of picture in the cache file +// Data: array of byte; + end; + + TCovers = class + Cover: array of TCover; + W: word; + H: word; + Size: integer; + Data: array of byte; + WritetoFile: Boolean; + + constructor Create; + procedure Load; + procedure Save; + procedure AddCover(Name: string); + function CoverExists(Name: string): boolean; + function CoverNumber(Name: string): integer; + procedure PrepareData(Name: string); + end; + +var + Covers: TCovers; + +implementation +uses UPliki, ULog, DateUtils; + +constructor TCovers.Create; +begin + W := 128; + H := 128; + Size := W*H*3; + Load; + WritetoFile := True; +end; + +procedure TCovers.Load; +var + F: File; + C: integer; // cover number + W: word; + H: word; + Bits: byte; + NLen: word; + Name: string; +// Data: array of byte; +begin + if FileExists(GamePath + 'covers.cache') then begin + AssignFile(F, GamePath + 'covers.cache'); + Reset(F, 1); + + WritetoFile := not FileIsReadOnly(GamePath + 'covers.cache'); + + SetLength(Cover, 0); + + while not EOF(F) do begin + SetLength(Cover, Length(Cover)+1); + + BlockRead(F, W, 2); + Cover[High(Cover)].W := W; + + BlockRead(F, H, 2); + Cover[High(Cover)].H := H; + + BlockRead(F, Bits, 1); + + Cover[High(Cover)].Size := W * H * (Bits div 8); + + // test +// W := 128; +// H := 128; +// Bits := 24; +// Seek(F, FilePos(F) + 3); + + BlockRead(F, NLen, 2); + SetLength(Name, NLen); + + BlockRead(F, Name[1], NLen); + Cover[High(Cover)].Name := Name; + + Cover[High(Cover)].Position := FilePos(F); + Seek(F, FilePos(F) + W*H*(Bits div 8)); + +// SetLength(Cover[High(Cover)].Data, W*H*(Bits div 8)); +// BlockRead(F, Cover[High(Cover)].Data[0], W*H*(Bits div 8)); + + end; + + CloseFile(F); + end; // fileexists +end; + +procedure TCovers.Save; +var + F: File; + C: integer; // cover number + W: word; + H: word; + NLen: word; + Bits: byte; +begin +{ AssignFile(F, GamePath + 'covers.cache'); + Rewrite(F, 1); + + Bits := 24; + for C := 0 to High(Cover) do begin + W := Cover[C].W; + H := Cover[C].H; + + BlockWrite(F, W, 2); + BlockWrite(F, H, 2); + BlockWrite(F, Bits, 1); + + NLen := Length(Cover[C].Name); + BlockWrite(F, NLen, 2); + BlockWrite(F, Cover[C].Name[1], NLen); + BlockWrite(F, Cover[C].Data[0], W*H*(Bits div 8)); + end; + + CloseFile(F);} +end; + +procedure TCovers.AddCover(Name: string); +var + B: integer; + F: File; + C: integer; // cover number + NLen: word; + Bits: byte; +begin + if not CoverExists(Name) then begin + SetLength(Cover, Length(Cover)+1); + Cover[High(Cover)].Name := Name; + + Cover[High(Cover)].W := W; + Cover[High(Cover)].H := H; + Cover[High(Cover)].Size := Size; + + // do not copy data. write them directly to file +// SetLength(Cover[High(Cover)].Data, Size); +// for B := 0 to Size-1 do +// Cover[High(Cover)].Data[B] := CacheMipmap[B]; + + if WritetoFile then + begin + AssignFile(F, GamePath + 'covers.cache'); + if FileExists(GamePath + 'covers.cache') then begin + Reset(F, 1); + Seek(F, FileSize(F)); + end else + Rewrite(F, 1); + + Bits := 24; + + BlockWrite(F, W, 2); + BlockWrite(F, H, 2); + BlockWrite(F, Bits, 1); + + NLen := Length(Name); + BlockWrite(F, NLen, 2); + BlockWrite(F, Name[1], NLen); + + Cover[High(Cover)].Position := FilePos(F); + BlockWrite(F, CacheMipmap[0], W*H*(Bits div 8)); + + CloseFile(F); + end; + end + else + Cover[High(Cover)].Position := 0; +end; + +function TCovers.CoverExists(Name: string): boolean; +var + C: integer; // cover +begin + Result := false; + C := 0; + while (C <= High(Cover)) and (Result = false) do begin + if Cover[C].Name = Name then Result := true; + Inc(C); + end; +end; + +function TCovers.CoverNumber(Name: string): integer; +var + C: integer; +begin + Result := -1; + C := 0; + while (C <= High(Cover)) and (Result = -1) do begin + if Cover[C].Name = Name then Result := C; + Inc(C); + end; +end; + +procedure TCovers.PrepareData(Name: string); +var + F: File; + C: integer; +begin + if FileExists(GamePath + 'covers.cache') then begin + AssignFile(F, GamePath + 'covers.cache'); + Reset(F, 1); + + C := CoverNumber(Name); + SetLength(Data, Cover[C].Size); + if Length(Data) < 6 then beep; + Seek(F, Cover[C].Position); + BlockRead(F, Data[0], Cover[C].Size); + CloseFile(F); + end; +end; + +end. diff --git a/Game/Code/Classes/UDLLManager.dcu b/Game/Code/Classes/UDLLManager.dcu new file mode 100644 index 00000000..3ba97949 Binary files /dev/null and b/Game/Code/Classes/UDLLManager.dcu differ diff --git a/Game/Code/Classes/UDLLManager.pas b/Game/Code/Classes/UDLLManager.pas new file mode 100644 index 00000000..151f0617 --- /dev/null +++ b/Game/Code/Classes/UDLLManager.pas @@ -0,0 +1,216 @@ +unit UDLLManager; + +interface +uses ModiSDK, UPliki; + +type + TDLLMan = class + private + hLib: THandle; + P_Init: fModi_Init; + P_Draw: fModi_Draw; + P_Finish: fModi_Finish; + P_RData: pModi_RData; + public + Plugins: array of TPluginInfo; + PluginPaths: array of String; + Selected: ^TPluginInfo; + + constructor Create; + + procedure GetPluginList; + procedure ClearPluginInfo(No: Cardinal); + function LoadPluginInfo(Filename: String; No: Cardinal): boolean; + + function LoadPlugin(No: Cardinal): boolean; + procedure UnLoadPlugin; + + function PluginInit (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; + function PluginDraw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; + function PluginFinish (var Playerinfo: TPlayerinfo): byte; + procedure PluginRData (handle: HSTREAM; buffer: Pointer; len: DWORD; user: DWORD); + end; + +var + DLLMan: TDLLMan; + +const DLLPath = 'Plugins\'; + +implementation +uses Windows, ULog, SysUtils; + + +constructor TDLLMan.Create; +begin + SetLength(Plugins, 0); + SetLength(PluginPaths, Length(Plugins)); + GetPluginList; +end; + +procedure TDLLMan.GetPluginList; +var + SR: TSearchRec; +begin + + if FindFirst(DLLPath + '*.dll', faAnyFile , SR) = 0 then + begin + repeat + SetLength(Plugins, Length(Plugins)+1); + SetLength(PluginPaths, Length(Plugins)); + + if LoadPluginInfo(SR.Name, High(Plugins)) then //Loaded succesful + begin + PluginPaths[High(PluginPaths)] := SR.Name; + end + else //Error Loading + begin + SetLength(Plugins, Length(Plugins)-1); + SetLength(PluginPaths, Length(Plugins)); + end; + + until FindNext(SR) <> 0; + FindClose(SR); + end; +end; + +procedure TDLLMan.ClearPluginInfo(No: Cardinal); +begin + Plugins[No].Name := 'unknown'; + Plugins[No].NumPlayers := 0; + + Plugins[No].Creator := 'Nobody'; + Plugins[No].PluginDesc := 'NO_PLUGIN_DESC'; + + Plugins[No].LoadSong := True; + Plugins[No].ShowScore := True; + Plugins[No].ShowBars := False; + Plugins[No].ShowNotes := True; + Plugins[No].LoadVideo := True; + Plugins[No].LoadBack := True; + + Plugins[No].TeamModeOnly := False; + Plugins[No].GetSoundData := False; + Plugins[No].Dummy := False; + + + Plugins[No].BGShowFull := False; + Plugins[No].BGShowFull_O := True; + + Plugins[No].ShowRateBar:= False; + Plugins[No].ShowRateBar_O := True; + + Plugins[No].EnLineBonus := False; + Plugins[No].EnLineBonus_O := True; +end; + +function TDLLMan.LoadPluginInfo(Filename: String; No: Cardinal): boolean; +var + hLibg: THandle; + Info: pModi_PluginInfo; + I: Integer; +begin + Result := False; + //Clear Plugin Info + ClearPluginInfo(No); + + {//Workaround Plugins Loaded 2 Times + For I := low(PluginPaths) to high(PluginPaths) do + if (PluginPaths[I] = Filename) then + exit; } + + //Load Libary + hLibg := LoadLibrary(PChar(DLLPath + Filename)); + //If Loaded + if (hLibg <> 0) then + begin + //Load Info Procedure + @Info := GetProcAddress (hLibg, PChar('PluginInfo')); + + //If Loaded + if (@Info <> nil) then + begin + //Load PluginInfo + Info (Plugins[No]); + Result := True; + end + else + Log.LogError('Could not Load Plugin "' + Filename + '": Info Procedure not Found'); + + FreeLibrary (hLibg); + end + else + Log.LogError('Could not Load Plugin "' + Filename + '": Libary not Loaded'); +end; + +function TDLLMan.LoadPlugin(No: Cardinal): boolean; +begin + Result := False; + //Load Libary + hLib := LoadLibrary(PChar(DLLPath + PluginPaths[No])); + //If Loaded + if (hLib <> 0) then + begin + //Load Info Procedure + @P_Init := GetProcAddress (hLib, PChar('Init')); + @P_Draw := GetProcAddress (hLib, PChar('Draw')); + @P_Finish := GetProcAddress (hLib, PChar('Finish')); + + //If Loaded + if (@P_Init <> nil) And (@P_Draw <> nil) And (@P_Finish <> nil) then + begin + Selected := @Plugins[No]; + Result := True; + end + else + begin + Log.LogError('Could not Load Plugin "' + PluginPaths[No] + '": Procedures not Found'); + + end; + end + else + Log.LogError('Could not Load Plugin "' + PluginPaths[No] + '": Libary not Loaded'); +end; + +procedure TDLLMan.UnLoadPlugin; +begin +if (hLib <> 0) then + FreeLibrary (hLib); + +//Selected := nil; +@P_Init := nil; +@P_Draw := nil; +@P_Finish := nil; +@P_RData := nil; +end; + +function TDLLMan.PluginInit (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; +begin +if (@P_Init <> nil) then + Result := P_Init (TeamInfo, PlayerInfo, Sentences, LoadTex, Print, LoadSound, PlaySound) +else + Result := False +end; + +function TDLLMan.PluginDraw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; +begin +if (@P_Draw <> nil) then + Result := P_Draw (PlayerInfo, CurSentence) +else + Result := False +end; + +function TDLLMan.PluginFinish (var Playerinfo: TPlayerinfo): byte; +begin +if (@P_Finish <> nil) then + Result := P_Finish (PlayerInfo) +else + Result := 0; +end; + +procedure TDLLMan.PluginRData (handle: HSTREAM; buffer: Pointer; len: DWORD; user: DWORD); +begin +if (@P_RData <> nil) then + P_RData (handle, buffer, len, user); +end; + +end. diff --git a/Game/Code/Classes/UDraw.dcu b/Game/Code/Classes/UDraw.dcu new file mode 100644 index 00000000..a3fcecc9 Binary files /dev/null and b/Game/Code/Classes/UDraw.dcu differ diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas new file mode 100644 index 00000000..e9433790 --- /dev/null +++ b/Game/Code/Classes/UDraw.pas @@ -0,0 +1,1613 @@ +unit UDraw; + +interface +uses UThemes, ModiSDK; + +procedure SingDraw; +procedure SingModiDraw (PlayerInfo: TPlayerInfo); +procedure SingDrawBackground; +procedure SingDrawOscilloscope(X, Y, W, H: real; NrSound: integer); +procedure SingDrawNoteLines(Left, Top, Right: real; Space: integer); +procedure SingDrawBeatDelimeters(Left, Top, Right: real; NrCzesci: integer); +procedure SingDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); +procedure SingDrawPlayerCzesc(X, Y, W: real; NrGracza: integer; Space: integer); +procedure SingDrawPlayerBGCzesc(Left, Top, Right: real; NrCzesci, NrGracza: integer; Space: integer); +procedure SingDrawStar(X, Y, A: real); +procedure SingGoldenStar(X, Y, A: real); + +// The Singbar +procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer); + +//Phrasen Bonus - Line Bonus +procedure SingDrawLineBonus( const X, Y: integer; Color: TRGB; Alpha: Single; Text: string); + +//Draw Editor NoteLines +procedure EditDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); + + +type + TRecR = record + Top: real; + Left: real; + Right: real; + Bottom: real; + + Width: real; + WMid: real; + Height: real; + HMid: real; + + Mid: real; + end; + +var + NotesW: real; + NotesH: real; + Starfr: integer; + StarfrG: integer; + + + + //SingBar Mod + TickOld: cardinal; + TickOld2:cardinal; + //end Singbar Mod + + + + +const + Przedz = 32; + +implementation + +uses Windows, OpenGL12, UGraphic, SysUtils, UMusic, URecord, ULog, UScreenSing, UScreenSingModi, ULyrics, UMain, TextGL, UTexture, UDrawTexture, UIni, Math, UDLLManager; + +procedure SingDrawBackground; +var + Rec: TRecR; + TexRec: TRecR; +begin + if ScreenSing.Tex_Background.TexNum >= 1 then begin + + glClearColor (1, 1, 1, 1); + + if (Ini.MovieSize = 0) then //HalfSize BG + begin + (* half screen + gradient *) + Rec.Top := 110; // 80 + Rec.Bottom := Rec.Top + 20; + Rec.Left := 0; + Rec.Right := 800; + + TexRec.Top := (Rec.Top / 600) * ScreenSing.Tex_Background.TexH; + TexRec.Bottom := (Rec.Bottom / 600) * ScreenSing.Tex_Background.TexH; + TexRec.Left := 0; + TexRec.Right := ScreenSing.Tex_Background.TexW; + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, ScreenSing.Tex_Background.TexNum); + glEnable(GL_BLEND); + glBegin(GL_QUADS); + (* gradient draw *) + (* top *) + glColor4f(1, 1, 1, 0); + glTexCoord2f(TexRec.Right, TexRec.Top); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(TexRec.Left, TexRec.Top); glVertex2f(Rec.Left, Rec.Top); + glColor4f(1, 1, 1, 1); + glTexCoord2f(TexRec.Left, TexRec.Bottom); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(TexRec.Right, TexRec.Bottom); glVertex2f(Rec.Right, Rec.Bottom); + (* mid *) + Rec.Top := Rec.Bottom; + Rec.Bottom := 490 - 20; // 490 - 20 + TexRec.Top := TexRec.Bottom; + TexRec.Bottom := (Rec.Bottom / 600) * ScreenSing.Tex_Background.TexH; + glTexCoord2f(TexRec.Left, TexRec.Top); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(TexRec.Left, TexRec.Bottom); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(TexRec.Right, TexRec.Bottom); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(TexRec.Right, TexRec.Top); glVertex2f(Rec.Right, Rec.Top); + (* bottom *) + Rec.Top := Rec.Bottom; + Rec.Bottom := 490; // 490 + TexRec.Top := TexRec.Bottom; + TexRec.Bottom := (Rec.Bottom / 600) * ScreenSing.Tex_Background.TexH; + glTexCoord2f(TexRec.Right, TexRec.Top); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(TexRec.Left, TexRec.Top); glVertex2f(Rec.Left, Rec.Top); + glColor4f(1, 1, 1, 0); + glTexCoord2f(TexRec.Left, TexRec.Bottom); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(TexRec.Right, TexRec.Bottom); glVertex2f(Rec.Right, Rec.Bottom); + + glEnd; + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + end + else //Full Size BG + begin + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, ScreenSing.Tex_Background.TexNum); + //glEnable(GL_BLEND); + glBegin(GL_QUADS); + + glTexCoord2f(0, 0); glVertex2f(0, 0); + glTexCoord2f(0, ScreenSing.Tex_Background.TexH); glVertex2f(0, 600); + glTexCoord2f( ScreenSing.Tex_Background.TexW, ScreenSing.Tex_Background.TexH); glVertex2f(800, 600); + glTexCoord2f( ScreenSing.Tex_Background.TexW, 0); glVertex2f(800, 0); + + glEnd; + glDisable(GL_TEXTURE_2D); + //glDisable(GL_BLEND); + end; + end; +end; + +procedure SingDrawOscilloscope(X, Y, W, H: real; NrSound: integer); +var + Pet: integer; +begin; +// Log.LogStatus('Oscilloscope', 'SingDraw'); + glColor3f(Skin_OscR, Skin_OscG, Skin_OscB); + if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then + glColor3f(1, 1, 1); + + glBegin(GL_LINE_STRIP); + glVertex2f(X, -Sound[NrSound].BufferArray[1] / $10000 * H + Y + H/2); + for Pet := 2 to Sound[NrSound].n div 1 do begin + glVertex2f(X + (Pet-1) * W / (Sound[NrSound].n - 1), + -Sound[NrSound].BufferArray[Pet] / $10000 * H + Y + H/2); + end; + glEnd; +end; + +procedure SingDrawNoteLines(Left, Top, Right: real; Space: integer); +var + Pet: integer; +begin + glEnable(GL_BLEND); + glColor4f(Skin_P1_LinesR, Skin_P1_LinesG, Skin_P1_LinesB, 0.4); + glBegin(GL_LINES); + for Pet := 0 to 9 do begin + glVertex2f(Left, Top + Pet * Space); + glVertex2f(Right, Top + Pet * Space); + end; + glEnd; + glDisable(GL_BLEND); +end; + +procedure SingDrawBeatDelimeters(Left, Top, Right: real; NrCzesci: integer); +var + Pet: integer; + TempR: real; +begin + TempR := (Right-Left) / (Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote); + glEnable(GL_BLEND); + glBegin(GL_LINES); + for Pet := Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote to Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec do begin + if (Pet mod Czesci[NrCzesci].Resolution) = Czesci[NrCzesci].NotesGAP then + glColor4f(0, 0, 0, 1) + else + glColor4f(0, 0, 0, 0.3); + glVertex2f(Left + TempR * (Pet - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote), Top); + glVertex2f(Left + TempR * (Pet - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote), Top + 135); + end; + glEnd; + glDisable(GL_BLEND); +end; + +// draw blank Notebars +procedure SingDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); +var + Rec: TRecR; + Pet: integer; + TempR: real; + R,G,B: real; +begin + glColor3f(1, 1, 1); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + TempR := (Right-Left) / (Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote); + with Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt] do begin + for Pet := 0 to HighNut do begin + with Nuta[Pet] do begin + if not FreeStyle then begin + + // Golden Note Patch + case Wartosc of + 1: glColor4f(1, 1, 1, 0.85); + 2: glColor4f(1, 1, 0.3, 0.85); + end; // case + + + + // lewa czesc - left part + Rec.Left := (Start-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left + 0.5 + 10*ScreenX; + Rec.Right := Rec.Left + NotesW; + Rec.Top := Top - (Ton-BaseNote)*Space/2 - NotesH; + Rec.Bottom := Rec.Top + 2 * NotesH; + glBindTexture(GL_TEXTURE_2D, Tex_Left[Color].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + // srodkowa czesc - middle part + Rec.Left := Rec.Right; + Rec.Right := (Start+Dlugosc-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left - NotesW - 0.5 + 10*ScreenX; + + glBindTexture(GL_TEXTURE_2D, Tex_Mid[Color].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/32, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/32, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(31/32, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(31/32, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + // prawa czesc - right part + Rec.Left := Rec.Right; + Rec.Right := Rec.Right + NotesW; + + glBindTexture(GL_TEXTURE_2D, Tex_Right[Color].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + + // Golden Star Patch + //case Wartosc of + // 2: SingGoldenStar(Rec.Left, Rec.Top, 1, StarfrG); + //end; // case + + + end; // if not FreeStyle + end; // with + end; // for + end; // with + + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); +end; + + +// draw sung notes +procedure SingDrawPlayerCzesc(X, Y, W: real; NrGracza: integer; Space: integer); +var + TempR: real; + Rec: TRecR; + N: integer; + R: real; + G: real; + B: real; + A: real; + NotesH2: real; + begin +// Log.LogStatus('Player notes', 'SingDraw'); + +// if NrGracza = 0 then LoadColor(R, G, B, 'P1Light') +// else LoadColor(R, G, B, 'P2Light'); + +// R := 71/255; +// G := 175/255; +// B := 247/255; + + + glColor3f(1, 1, 1); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + if Player[NrGracza].IlNut > 0 then begin + TempR := W / (Czesci[0].Czesc[Czesci[0].Akt].Koniec - Czesci[0].Czesc[Czesci[0].Akt].StartNote); + for N := 0 to Player[NrGracza].HighNut do begin + with Player[NrGracza].Nuta[N] do begin + // lewa czesc + Rec.Left := X + (Start-Czesci[0].Czesc[Czesci[0].Akt].StartNote) * TempR + 0.5 + 10*ScreenX; + Rec.Right := Rec.Left + NotesW; + + + // Half size Notes Patch + if Hit then begin + NotesH2 := NotesH + end else begin + NotesH2 := int(NotesH * 0.65); + end; //if + + + + // if True then + Rec.Top := Y - (Ton-Czesci[0].Czesc[Czesci[0].Akt].BaseNote)*Space/2 - NotesH2; + Rec.Bottom := Rec.Top + 2 *NotesH2; + + glColor3f(1, 1, 1); + glBindTexture(GL_TEXTURE_2D, Tex_Left[NrGracza+1].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + // srodkowa czesc + Rec.Left := Rec.Right; + Rec.Right := X + (Start+Dlugosc-Czesci[0].Czesc[Czesci[0].Akt].StartNote) * TempR - NotesW - 0.5 + 10*ScreenX; + // (nowe) + if (Start+Dlugosc-1 = Czas.AktBeatD) then + Rec.Right := Rec.Right - (1-Frac(Czas.MidBeatD)) * TempR; + + if Rec.Right <= Rec.Left then Rec.Right := Rec.Left; + + +// glColor3f(R, G, B); +// glBindTexture(GL_TEXTURE_2D, Tex_MidGray.TexNum); + glBindTexture(GL_TEXTURE_2D, Tex_Mid[NrGracza+1].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + glColor3f(1, 1, 1); + + // prawa czesc + Rec.Left := Rec.Right; + Rec.Right := Rec.Right + NotesW; + + glBindTexture(GL_TEXTURE_2D, Tex_Right[NrGracza+1].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + + + //Rec.Right := X + (Start+Dlugosc-Czesci[0].Czesc[Czesci[0].Akt].StartNote) * TempR - NotesW - 0.5 + 10*ScreenX; + //if (Start+Dlugosc-1 = Czas.AktBeatD) then + if Perfect AND (Ini.GMAFix <> 1) then begin +// A := sqrt((1+sin(Music.Position * 3))/2); + A := 1 - 2*(Czas.Teraz - GetTimeFromBeat(Start+Dlugosc)); + if not (Start+Dlugosc-1 = Czas.AktBeatD) then + + //Star animation counter + //inc(Starfr); + //Starfr := Starfr mod 128; + + + SingDrawStar(Rec.Left+2, Rec.Top+4, A); + end; + + // detekt +{ Rec.Left := Round((Detekt-Czesci.Czesc[Czesci.Akt].Start) * TempR) + 130; + glColor3f(1, 0.2, 0.2); + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + glBegin(GL_QUADS); + glVertex(Rec.Left, Rec.Top-5); + glVertex(Rec.Left, Rec.Bottom+5); + glVertex(Rec.Left+1, Rec.Bottom+5); + glVertex(Rec.Left+1, Rec.Top-5); + glEnd; + glColor3f(1, 1, 1); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D);} + + // detekt + FFT length +{ Rec.Right := (Detekt-Czesci.Czesc[Czesci.Akt].Start) * TempR + 130; + // TempR = dlugosc 1 kostki + // 60 * 4 / BPM = czas w sekundach na 1 kostke, np. 0,4s + // 4096 / 44100 = czas jednego sampla FFT, np. 0,1s + // ile to ma kostek? np. 0.25 + // (4096 / 44100) / (60 * 4 / BPM), np. 0,1s / 0,4s = 0.25 + // * TempR = dlugosc sampla FFT + Rec.Left := Rec.Right - (Sound.n / 44100) / (60 * 4 / Muzyka.BPM) * TempR; + + glColor3f(1, 0.2, 0.2); + glVertex(Rec.Left, Rec.Top-4); + glVertex(Rec.Left, Rec.Bottom+4); + glVertex(Rec.Right, Rec.Bottom+4); + glVertex(Rec.Right, Rec.Top-4);} + + end; // with + end; // for + end; // if +end; + +//draw Note glow +procedure SingDrawPlayerBGCzesc(Left, Top, Right: real; NrCzesci, NrGracza: integer; Space: integer); +var + Rec: TRecR; + Pet: integer; + TempR: real; + R,G,B: real; + X1, X2, X3, X4: real; + W, H: real; +begin + if (Player[NrGracza].ScoreTotalI >= 0) then begin + glColor4f(1, 1, 1, sqrt((1+sin(Music.Position * 3))/4)/ 2 + 0.5 ); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + TempR := (Right-Left) / (Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote); + with Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt] do begin + for Pet := 0 to HighNut do begin + with Nuta[Pet] do begin + if not FreeStyle then begin + // begin: 14, 20 + // easy: 6, 11 + W := NotesW * 2 + 2; + H := NotesH * 1.5 + 3.5; + + X2 := (Start-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left + 0.5 + 10*ScreenX + 4; // wciecie + X1 := X2-W; + + X3 := (Start+Dlugosc-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left - 0.5 + 10*ScreenX - 4; // wciecie + X4 := X3+W; + + // left + Rec.Left := X1; + Rec.Right := X2; + Rec.Top := Top - (Ton-BaseNote)*Space/2 - H; + Rec.Bottom := Rec.Top + 2 * H; + + glBindTexture(GL_TEXTURE_2D, Tex_BG_Left[NrGracza+1].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + + // srodkowa czesc + Rec.Left := X2; + Rec.Right := X3; + + glBindTexture(GL_TEXTURE_2D, Tex_BG_Mid[NrGracza+1].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/32, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/32, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(31/32, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(31/32, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + // prawa czesc + Rec.Left := X3; + Rec.Right := X4; + + glBindTexture(GL_TEXTURE_2D, Tex_BG_Right[NrGracza+1].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + end; // if not FreeStyle + end; // with + end; // for + end; // with + + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + end; +end; + +procedure SingDrawStar(X, Y, A: real); +var + TempR: real; + W, H: real; + Starframe: real; + begin + W := 32; + H := 32; + + // Golden Star Patch +// case Z of +// 1: glColor4f(1, 1, 1, A); +// 2: glColor4f(1, 1, 0.3, A); +// end; // case + + glColor4f(1, 1, 1, A); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_Note_Star.TexNum); + + Starframe := 15 - ((GetTickCount div 33) mod 16); + + glBegin(GL_QUADS); + glTexCoord2f((1/16) * Starframe, 0); glVertex2f(X-W, Y-H); + glTexCoord2f((1/16) * Starframe + (1/16), 0); glVertex2f(X-W, Y+H); + glTexCoord2f((1/16) * Starframe + (1/16), 1); glVertex2f(X+W, Y+H); + glTexCoord2f((1/16) * Starframe, 1); glVertex2f(X+W, Y-H); + glEnd; +end; + + +procedure SingGoldenStar(X, Y, A: real); +var + TempR: real; + W, H: real; + StarfrG2: real; + begin + W := 16; + H := 16; + glColor4f(1, 1, 0.3, A); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_Note_Star.TexNum); + StarfrG2 := 15 - ((GetTickCount div 67) mod 16); + glBegin(GL_QUADS); + //x1 + glTexCoord2f((1/16) * StarfrG2, 0); glVertex2f(X-W, Y-H); + glTexCoord2f((1/16) * StarfrG2 + (1/16), 0); glVertex2f(X-W, Y+H); + glTexCoord2f((1/16) * StarfrG2 + (1/16), 1); glVertex2f(X+W, Y+H); + glTexCoord2f((1/16) * StarfrG2, 1); glVertex2f(X+W, Y-H); + glEnd; +end; + + +procedure SingDraw; +var + Pet: integer; + Pet2: integer; + TempR: real; + Rec: TRecR; + TexRec: TRecR; + NR: TRecR; + FS: real; + BarFrom: integer; + BarAlpha: real; + BarWspol: real; + TempCol: real; + Tekst: string; + LyricTemp: string; + PetCz: integer; + + + + //SingBar Mod + A: Integer; + E: Integer; + I: Integer; + //end Singbar Mod + + + +begin + // positions + if Ini.SingWindow = 0 then begin + NR.Left := 120; + end else begin + NR.Left := 20; + end; + NR.Right := 780; + + NR.Width := NR.Right - NR.Left; + NR.WMid := NR.Width / 2; + NR.Mid := NR.Left + NR.WMid; + + // background //BG Fullsize Mod + //SingDrawBackground; + + // time bar +// Log.LogStatus('Time Bar', 'SingDraw'); + glBegin(GL_QUADS); + glColor3f(0.9, 0.9, 0.9); + glVertex2f(140 + 10*ScreenX, 21); + glVertex2f(140 + 10*ScreenX, 29); + glVertex2f(330 + 10*ScreenX, 29); + glVertex2f(330 + 10*ScreenX, 21); + glColor3f(Skin_TimeR, Skin_TimeG, Skin_TimeB); + glVertex2f(140 + 10*ScreenX, 21); + glVertex2f(140 + 10*ScreenX, 29); + glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 29); + glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 21); + glEnd; + + // rysuje paski pod nutami + if PlayersPlay = 1 then + SingDrawNoteLines(Nr.Left + 10*ScreenX, Skin_P2_NotesB - 105, Nr.Right + 10*ScreenX, 15); + if (PlayersPlay = 2) or (PlayersPlay = 4) then begin + SingDrawNoteLines(Nr.Left + 10*ScreenX, Skin_P1_NotesB - 105, Nr.Right + 10*ScreenX, 15); + SingDrawNoteLines(Nr.Left + 10*ScreenX, Skin_P2_NotesB - 105, Nr.Right + 10*ScreenX, 15); + end; + + if (PlayersPlay = 3) or (PlayersPlay = 6) then begin + SingDrawNoteLines(Nr.Left + 10*ScreenX, 120, Nr.Right + 10*ScreenX, 12); + SingDrawNoteLines(Nr.Left + 10*ScreenX, 245, Nr.Right + 10*ScreenX, 12); + SingDrawNoteLines(Nr.Left + 10*ScreenX, 370, Nr.Right + 10*ScreenX, 12); + end; + + // rysuje tekst - new Lyric engine + ScreenSing.LyricMain.Draw; + ScreenSing.LyricSub.Draw; + + // rysuje pasek, podpowiadajacy poczatek spiwania w scenie + FS := 1.3; + BarFrom := Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czesci[0].Czesc[Czesci[0].Akt].Start; + if BarFrom > 40 then BarFrom := 40; + if (Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czesci[0].Czesc[Czesci[0].Akt].Start > 8) and // dluga przerwa //16->12 for more help bars and then 12->8 for even more + (Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czas.MidBeat > 0) and // przed tekstem + (Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czas.MidBeat < 40) then begin // ale nie za wczesnie + BarWspol := (Czas.MidBeat - (Czesci[0].Czesc[Czesci[0].Akt].StartNote - BarFrom)) / BarFrom; + Rec.Left := NR.Left + BarWspol * +// (NR.WMid - Czesci[0].Czesc[Czesci[0].Akt].LyricWidth / 2 * FS - 50); + (ScreenSing.LyricMain.ClientX - NR.Left - 50) + 10*ScreenX; + Rec.Right := Rec.Left + 50; + Rec.Top := Skin_LyricsT + 3; + Rec.Bottom := Rec.Top + 33;//SingScreen.LyricMain.Size * 3; + + // zapalanie + BarAlpha := (BarWspol*10) * 0.5; + if BarAlpha > 0.5 then BarAlpha := 0.5; + + // gaszenie + if BarWspol > 0.95 then BarAlpha := 0.5 * (1 - (BarWspol - 0.95) * 20); + //Change fuer Crazy Joker + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glColor4f(26/255, 165/255, 220/255, 0); + glVertex2f(Rec.Left, Rec.Top); + glVertex2f(Rec.Left, Rec.Bottom); + glColor4f(26/255, 165/255, 220/255, BarAlpha); + glVertex2f(Rec.Right, Rec.Bottom); + glVertex2f(Rec.Right, Rec.Top); + glEnd; + glDisable(GL_BLEND); + end; + + // oscilloscope + if Ini.Oscilloscope = 1 then begin + if PlayersPlay = 1 then + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0); + + if PlayersPlay = 2 then begin + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0); + SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 1); + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0); + SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 1); + end; + if ScreenAct = 2 then begin + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 2); + SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 3); + end; + end; + + if PlayersPlay = 3 then begin + SingDrawOscilloscope(75 + 10*ScreenX, 95, 100, 20, 0); + SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 1); + SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 2); + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 0); + SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 1); + SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 2); + end; + if ScreenAct = 2 then begin + SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 3); + SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 4); + SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 5); + end; + end; + + end + + //SingBar Mod + else if Ini.Oscilloscope = 2 then begin + A := GetTickCount div 33; + if A <> Tickold then begin + Tickold := A; + for E := 0 to (PlayersPlay - 1) do begin //Set new Pos + Alpha + I := Player[E].ScorePercentTarget - Player[E].ScorePercent; + if I > 0 then Inc(Player[E].ScorePercent) + else if I < 0 then Dec(Player[E].ScorePercent); + end; //for + end; //if + if PlayersPlay = 1 then begin + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + 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); + 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); + end; + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + 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); + end; + end; + if PlayersPlay = 6 then begin + if ScreenAct = 1 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); + 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); + end; + end; + end; + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + if Ini.LineBonus > 0 then begin + A := GetTickCount div 33; + if (A <> Tickold2) AND (Player[0].LineBonus_Visible) then begin + Tickold2 := A; + for E := 0 to (PlayersPlay - 1) do begin + //Change Alpha + Player[E].LineBonus_Alpha := Player[E].LineBonus_Alpha - 0.02; + + if Player[E].LineBonus_Alpha <= 0 then + Player[E].LineBonus_Visible := False + else + begin + //Change Position + if (Player[E].LineBonus_PosX < Player[E].LineBonus_TargetX) then + Inc(Player[E].LineBonus_PosX,1) + else if (Player[E].LineBonus_PosX > Player[E].LineBonus_TargetX) then + Dec(Player[E].LineBonus_PosX,1); + + if (Player[E].LineBonus_PosY < Player[E].LineBonus_TargetY) then + Inc(Player[E].LineBonus_PosY,1) + else if (Player[E].LineBonus_PosY > Player[E].LineBonus_TargetY) then + Dec(Player[E].LineBonus_PosY,1); + + end; + end; + end; //if + + if PlayersPlay = 1 then begin + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + end + else if PlayersPlay = 2 then begin + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + end + else if PlayersPlay = 3 then begin + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + end + else if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + end; + if ScreenAct = 2 then begin + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + end; + end; + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + end; + if ScreenAct = 2 then begin + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + SingDrawLineBonus( Player[4].LineBonus_PosX, Player[4].LineBonus_PosY, Player[4].LineBonus_Color, Player[4].LineBonus_Alpha, Player[4].LineBonus_Text); + SingDrawLineBonus( Player[5].LineBonus_PosX, Player[5].LineBonus_PosY, Player[5].LineBonus_Color, Player[5].LineBonus_Alpha, Player[5].LineBonus_Text); + end; + end; + end; + //PhrasenBonus - Line Bonus Mod End + + + // rysuje paski +// Log.LogStatus('Original notes', 'SingDraw'); + case Ini.Difficulty of + 0: + begin + NotesH := 11; // 9 + NotesW := 6; // 5 + end; + 1: + begin + NotesH := 8; // 7 + NotesW := 4; // 4 + end; + 2: + begin + NotesH := 5; + NotesW := 3; + end; + end; + + if PlayersPlay = 1 then begin + SingDrawPlayerBGCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 0, 15); + SingDrawCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 0, 15); + end; + + if (PlayersPlay = 2) then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Right - 20, 0, 0, 15); + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Right - 20, 0, 1, 15); + + SingDrawCzesc(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 15); + SingDrawCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15); + + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Width - 40, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 1, 15); + end; + + if PlayersPlay = 3 then begin + NotesW := NotesW * 0.8; + NotesH := NotesH * 0.8; + + SingDrawPlayerBGCzesc(Nr.Left + 20, 120+95, Nr.Right - 20, 0, 0, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 245+95, Nr.Right - 20, 0, 1, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 370+95, Nr.Right - 20, 0, 2, 12); + + SingDrawCzesc(NR.Left + 20, 120+95, NR.Right - 20, 0, 12); + SingDrawCzesc(NR.Left + 20, 245+95, NR.Right - 20, 0, 12); + SingDrawCzesc(NR.Left + 20, 370+95, NR.Right - 20, 0, 12); + + SingDrawPlayerCzesc(Nr.Left + 20, 120+95, Nr.Width - 40, 0, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 245+95, Nr.Width - 40, 1, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 370+95, Nr.Width - 40, 2, 12); + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Right - 20, 0, 0, 15); + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Right - 20, 0, 1, 15); + end; + if ScreenAct = 2 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Right - 20, 0, 2, 15); + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Right - 20, 0, 3, 15); + end; + + SingDrawCzesc(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 15); + SingDrawCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15); + + if ScreenAct = 1 then begin + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Width - 40, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 1, 15); + end; + if ScreenAct = 2 then begin + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Width - 40, 2, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 3, 15); + end; + end; + + if PlayersPlay = 6 then begin + NotesW := NotesW * 0.8; + NotesH := NotesH * 0.8; + + if ScreenAct = 1 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 120+95, Nr.Right - 20, 0, 0, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 245+95, Nr.Right - 20, 0, 1, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 370+95, Nr.Right - 20, 0, 2, 12); + end; + if ScreenAct = 2 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 120+95, Nr.Right - 20, 0, 3, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 245+95, Nr.Right - 20, 0, 4, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 370+95, Nr.Right - 20, 0, 5, 12); + end; + + SingDrawCzesc(NR.Left + 20, 120+95, NR.Right - 20, 0, 12); + SingDrawCzesc(NR.Left + 20, 245+95, NR.Right - 20, 0, 12); + SingDrawCzesc(NR.Left + 20, 370+95, NR.Right - 20, 0, 12); + + if ScreenAct = 1 then begin + SingDrawPlayerCzesc(Nr.Left + 20, 120+95, Nr.Width - 40, 0, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 245+95, Nr.Width - 40, 1, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 370+95, Nr.Width - 40, 2, 12); + end; + if ScreenAct = 2 then begin + SingDrawPlayerCzesc(Nr.Left + 20, 120+95, Nr.Width - 40, 3, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 245+95, Nr.Width - 40, 4, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 370+95, Nr.Width - 40, 5, 12); + end; + end; + + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); +end; + +procedure SingModiDraw (PlayerInfo: TPlayerInfo); +var + Pet: integer; + Pet2: integer; + TempR: real; + Rec: TRecR; + TexRec: TRecR; + NR: TRecR; + FS: real; + BarFrom: integer; + BarAlpha: real; + BarWspol: real; + TempCol: real; + Tekst: string; + LyricTemp: string; + PetCz: integer; + + + + //SingBar Mod + A: Integer; + E: Integer; + I: Integer; + //end Singbar Mod + + + +begin + // positions + if Ini.SingWindow = 0 then begin + NR.Left := 120; + end else begin + NR.Left := 20; + end; + NR.Right := 780; + + NR.Width := NR.Right - NR.Left; + NR.WMid := NR.Width / 2; + NR.Mid := NR.Left + NR.WMid; + + // background //BG Fullsize Mod + //SingDrawBackground; + + // time bar +// Log.LogStatus('Time Bar', 'SingDraw'); + glBegin(GL_QUADS); + glColor3f(0.9, 0.9, 0.9); + glVertex2f(140 + 10*ScreenX, 21); + glVertex2f(140 + 10*ScreenX, 29); + glVertex2f(330 + 10*ScreenX, 29); + glVertex2f(330 + 10*ScreenX, 21); + glColor3f(Skin_TimeR, Skin_TimeG, Skin_TimeB); + glVertex2f(140 + 10*ScreenX, 21); + glVertex2f(140 + 10*ScreenX, 29); + glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 29); + glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 21); + glEnd; + + if DLLMan.Selected.ShowNotes then + begin + // rysuje paski pod nutami + if PlayersPlay = 1 then + SingDrawNoteLines(Nr.Left + 10*ScreenX, Skin_P2_NotesB - 105, Nr.Right + 10*ScreenX, 15); + if (PlayersPlay = 2) or (PlayersPlay = 4) then begin + SingDrawNoteLines(Nr.Left + 10*ScreenX, Skin_P1_NotesB - 105, Nr.Right + 10*ScreenX, 15); + SingDrawNoteLines(Nr.Left + 10*ScreenX, Skin_P2_NotesB - 105, Nr.Right + 10*ScreenX, 15); + end; + + if (PlayersPlay = 3) or (PlayersPlay = 6) then begin + SingDrawNoteLines(Nr.Left + 10*ScreenX, 120, Nr.Right + 10*ScreenX, 12); + SingDrawNoteLines(Nr.Left + 10*ScreenX, 245, Nr.Right + 10*ScreenX, 12); + SingDrawNoteLines(Nr.Left + 10*ScreenX, 370, Nr.Right + 10*ScreenX, 12); + end; + end; + + // rysuje tekst - new Lyric engine + ScreenSingModi.LyricMain.Draw; + ScreenSingModi.LyricSub.Draw; + + // rysuje pasek, podpowiadajacy poczatek spiwania w scenie + FS := 1.3; + BarFrom := Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czesci[0].Czesc[Czesci[0].Akt].Start; + if BarFrom > 40 then BarFrom := 40; + if (Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czesci[0].Czesc[Czesci[0].Akt].Start > 8) and // dluga przerwa //16->12 for more help bars and then 12->8 for even more + (Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czas.MidBeat > 0) and // przed tekstem + (Czesci[0].Czesc[Czesci[0].Akt].StartNote - Czas.MidBeat < 40) then begin // ale nie za wczesnie + BarWspol := (Czas.MidBeat - (Czesci[0].Czesc[Czesci[0].Akt].StartNote - BarFrom)) / BarFrom; + Rec.Left := NR.Left + BarWspol * + // (NR.WMid - Czesci[0].Czesc[Czesci[0].Akt].LyricWidth / 2 * FS - 50); + (ScreenSingModi.LyricMain.ClientX - NR.Left - 50) + 10*ScreenX; + Rec.Right := Rec.Left + 50; + Rec.Top := Skin_LyricsT + 3; + Rec.Bottom := Rec.Top + 33;//SingScreen.LyricMain.Size * 3; + + // zapalanie + BarAlpha := (BarWspol*10) * 0.5; + if BarAlpha > 0.5 then BarAlpha := 0.5; + + // gaszenie + if BarWspol > 0.95 then BarAlpha := 0.5 * (1 - (BarWspol - 0.95) * 20); + //Change fuer Crazy Joker + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glColor4f(26/255, 165/255, 220/255, 0); + glVertex2f(Rec.Left, Rec.Top); + glVertex2f(Rec.Left, Rec.Bottom); + glColor4f(26/255, 165/255, 220/255, BarAlpha); + glVertex2f(Rec.Right, Rec.Bottom); + glVertex2f(Rec.Right, Rec.Top); + glEnd; + glDisable(GL_BLEND); + end; + + // oscilloscope + if (((Ini.Oscilloscope = 1) AND (DLLMan.Selected.ShowRateBar_O)) AND (NOT DLLMan.Selected.ShowRateBar)) then begin + if PlayersPlay = 1 then + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0); + + if PlayersPlay = 2 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 1); + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 0); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 1); + end; + if ScreenAct = 2 then begin + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawOscilloscope(190 + 10*ScreenX, 55, 180, 40, 2); + if PlayerInfo.Playerinfo[3].Enabled then + SingDrawOscilloscope(425 + 10*ScreenX, 55, 180, 40, 3); + end; + end; + + if PlayersPlay = 3 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawOscilloscope(75 + 10*ScreenX, 95, 100, 20, 0); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 1); + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 2); + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 0); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 1); + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 2); + end; + if ScreenAct = 2 then begin + if PlayerInfo.Playerinfo[3].Enabled then + SingDrawOscilloscope( 75 + 10*ScreenX, 95, 100, 20, 3); + if PlayerInfo.Playerinfo[4].Enabled then + SingDrawOscilloscope(370 + 10*ScreenX, 95, 100, 20, 4); + if PlayerInfo.Playerinfo[5].Enabled then + SingDrawOscilloscope(670 + 10*ScreenX, 95, 100, 20, 5); + end; + end; + + end + + //SingBar Mod + else if ((Ini.Oscilloscope = 2) AND (DLLMan.Selected.ShowRateBar_O)) OR (DLLMan.Selected.ShowRateBar) then begin + A := GetTickCount div 33; + if A <> Tickold then begin + Tickold := A; + for E := 0 to (PlayersPlay - 1) do begin //Set new Pos + Alpha + I := Player[E].ScorePercentTarget - Player[E].ScorePercent; + if I > 0 then Inc(Player[E].ScorePercent) + else if I < 0 then Dec(Player[E].ScorePercent); + end; //for + end; //if + if PlayersPlay = 1 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + end; + if PlayersPlay = 2 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + end; + if PlayersPlay = 3 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent); + 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); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + end; + if ScreenAct = 2 then begin + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent); + if PlayerInfo.Playerinfo[3].Enabled then + SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent); + 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); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent); + end; + if ScreenAct = 2 then begin + if PlayerInfo.Playerinfo[3].Enabled then + SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent); + if PlayerInfo.Playerinfo[4].Enabled then + SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[4].ScorePercent); + if PlayerInfo.Playerinfo[5].Enabled then + SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[5].ScorePercent); + end; + end; + end; + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + if ((Ini.LineBonus > 0) AND (DLLMan.Selected.EnLineBonus_O)) OR (DLLMan.Selected.EnLineBonus) then begin + A := GetTickCount div 33; + if (A <> Tickold2) AND (Player[0].LineBonus_Visible) then begin + Tickold2 := A; + for E := 0 to (PlayersPlay - 1) do begin + //Change Alpha + Player[E].LineBonus_Alpha := Player[E].LineBonus_Alpha - 0.02; + + if Player[E].LineBonus_Alpha <= 0 then + Player[E].LineBonus_Visible := False + else + begin + //Change Position + if (Player[E].LineBonus_PosX < Player[E].LineBonus_TargetX) then + Inc(Player[E].LineBonus_PosX,1) + else if (Player[E].LineBonus_PosX > Player[E].LineBonus_TargetX) then + Dec(Player[E].LineBonus_PosX,1); + + if (Player[E].LineBonus_PosY < Player[E].LineBonus_TargetY) then + Inc(Player[E].LineBonus_PosY,1) + else if (Player[E].LineBonus_PosY > Player[E].LineBonus_TargetY) then + Dec(Player[E].LineBonus_PosY,1); + + end; + end; + end; //if + + if PlayersPlay = 1 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + end + else if PlayersPlay = 2 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + end + else if PlayersPlay = 3 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + end + else if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + end; + if ScreenAct = 2 then begin + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + if PlayerInfo.Playerinfo[3].Enabled then + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + end; + end; + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + if PlayerInfo.Playerinfo[0].Enabled then + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + if PlayerInfo.Playerinfo[1].Enabled then + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + if PlayerInfo.Playerinfo[2].Enabled then + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + end; + if ScreenAct = 2 then begin + if PlayerInfo.Playerinfo[3].Enabled then + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + if PlayerInfo.Playerinfo[4].Enabled then + SingDrawLineBonus( Player[4].LineBonus_PosX, Player[4].LineBonus_PosY, Player[4].LineBonus_Color, Player[4].LineBonus_Alpha, Player[4].LineBonus_Text); + if PlayerInfo.Playerinfo[5].Enabled then + SingDrawLineBonus( Player[5].LineBonus_PosX, Player[5].LineBonus_PosY, Player[5].LineBonus_Color, Player[5].LineBonus_Alpha, Player[5].LineBonus_Text); + end; + end; + end; + //PhrasenBonus - Line Bonus Mod End + + + // rysuje paski +// Log.LogStatus('Original notes', 'SingDraw'); + case Ini.Difficulty of + 0: + begin + NotesH := 11; // 9 + NotesW := 6; // 5 + end; + 1: + begin + NotesH := 8; // 7 + NotesW := 4; // 4 + end; + 2: + begin + NotesH := 5; + NotesW := 3; + end; + end; + + if (DLLMAn.Selected.ShowNotes And DLLMan.Selected.LoadSong) then + begin + if (PlayersPlay = 1) And PlayerInfo.Playerinfo[0].Enabled then begin + SingDrawPlayerBGCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 0, 15); + SingDrawCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 0, 15); + end; + + if (PlayersPlay = 2) then begin + if PlayerInfo.Playerinfo[0].Enabled then + begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Right - 20, 0, 0, 15); + SingDrawCzesc(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Width - 40, 0, 15); + end; + if PlayerInfo.Playerinfo[1].Enabled then + begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Right - 20, 0, 1, 15); + SingDrawCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 1, 15); + end; + + end; + + if PlayersPlay = 3 then begin + NotesW := NotesW * 0.8; + NotesH := NotesH * 0.8; + + if PlayerInfo.Playerinfo[0].Enabled then + begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 120+95, Nr.Right - 20, 0, 0, 12); + SingDrawCzesc(NR.Left + 20, 120+95, NR.Right - 20, 0, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 120+95, Nr.Width - 40, 0, 12); + end; + + if PlayerInfo.Playerinfo[1].Enabled then + begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 245+95, Nr.Right - 20, 0, 1, 12); + SingDrawCzesc(NR.Left + 20, 245+95, NR.Right - 20, 0, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 245+95, Nr.Width - 40, 1, 12); + end; + + if PlayerInfo.Playerinfo[2].Enabled then + begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 370+95, Nr.Right - 20, 0, 2, 12); + SingDrawCzesc(NR.Left + 20, 370+95, NR.Right - 20, 0, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 370+95, Nr.Width - 40, 2, 12); + end; + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Right - 20, 0, 0, 15); + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Right - 20, 0, 1, 15); + end; + if ScreenAct = 2 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Right - 20, 0, 2, 15); + SingDrawPlayerBGCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Right - 20, 0, 3, 15); + end; + + SingDrawCzesc(NR.Left + 20, Skin_P1_NotesB, NR.Right - 20, 0, 15); + SingDrawCzesc(NR.Left + 20, Skin_P2_NotesB, NR.Right - 20, 0, 15); + + if ScreenAct = 1 then begin + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Width - 40, 0, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 1, 15); + end; + if ScreenAct = 2 then begin + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P1_NotesB, Nr.Width - 40, 2, 15); + SingDrawPlayerCzesc(Nr.Left + 20, Skin_P2_NotesB, Nr.Width - 40, 3, 15); + end; + end; + + if PlayersPlay = 6 then begin + NotesW := NotesW * 0.8; + NotesH := NotesH * 0.8; + + if ScreenAct = 1 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 120+95, Nr.Right - 20, 0, 0, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 245+95, Nr.Right - 20, 0, 1, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 370+95, Nr.Right - 20, 0, 2, 12); + end; + if ScreenAct = 2 then begin + SingDrawPlayerBGCzesc(Nr.Left + 20, 120+95, Nr.Right - 20, 0, 3, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 245+95, Nr.Right - 20, 0, 4, 12); + SingDrawPlayerBGCzesc(Nr.Left + 20, 370+95, Nr.Right - 20, 0, 5, 12); + end; + + SingDrawCzesc(NR.Left + 20, 120+95, NR.Right - 20, 0, 12); + SingDrawCzesc(NR.Left + 20, 245+95, NR.Right - 20, 0, 12); + SingDrawCzesc(NR.Left + 20, 370+95, NR.Right - 20, 0, 12); + + if ScreenAct = 1 then begin + SingDrawPlayerCzesc(Nr.Left + 20, 120+95, Nr.Width - 40, 0, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 245+95, Nr.Width - 40, 1, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 370+95, Nr.Width - 40, 2, 12); + end; + if ScreenAct = 2 then begin + SingDrawPlayerCzesc(Nr.Left + 20, 120+95, Nr.Width - 40, 3, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 245+95, Nr.Width - 40, 4, 12); + SingDrawPlayerCzesc(Nr.Left + 20, 370+95, Nr.Width - 40, 5, 12); + end; + end; + end; + + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); +end; + + +//SingBar Mod +procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer); +var + R: Real; + G: Real; + B: Real; + A: cardinal; + I: Integer; + +begin; + + //SingBar Background + 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(1/16, 0); glVertex2f(X, Y); + glTexCoord2f(1/16, 1); glVertex2f(X, Y+H); + glTexCoord2f(1 - 1/16, 1); glVertex2f(X+W, Y+H); + glTexCoord2f(1 - 1/16, 0); glVertex2f(X+W, Y); + glEnd; + + //SingBar coloured Bar + Case Percent of + 0..22: begin + R := 1; + G := 0; + B := 0; + end; + 23..42: begin + R := 1; + G := ((Percent-23)/100)*5; + B := 0; + end; + 43..57: begin + R := 1; + G := 1; + B := 0; + end; + 58..77: begin + R := 1-(Percent - 58)/100*5; + G := 1; + B := 0; + end; + 78..99: begin + R := 0; + G := 1; + B := 0; + end; + End; //Case + + glColor4f(R, G, B, 1); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Bar.TexNum); + //Size= Player[PlayerNum].ScorePercent of W + glBegin(GL_QUADS); + glTexCoord2f(1/16, 0); glVertex2f(X, Y); + glTexCoord2f(1/16, 1); glVertex2f(X, Y+H); + glTexCoord2f(1 - 1/16, 1); glVertex2f(X+(W/100 * (Percent +1)), Y+H); + glTexCoord2f(1 - 1/16, 0); glVertex2f(X+(W/100 * (Percent +1)), Y); + glEnd; + + //SingBar Front + glColor4f(1, 1, 1, 0.6); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Front.TexNum); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(X, Y); + glTexCoord2f(0, 1); glVertex2f(X, Y+H); + glTexCoord2f(1, 1); glVertex2f(X+W, Y+H); + glTexCoord2f(1, 0); glVertex2f(X+W, Y); + glEnd; +end; +//end Singbar Mod + +//PhrasenBonus - Line Bonus Mod +procedure SingDrawLineBonus( const X, Y: integer; Color: TRGB; Alpha: Single; Text: string); +var +Length, X2: Real; //Length of Text +begin +if Alpha <> 0 then +begin + +//Set Font Propertys +SetFontStyle(2); //Font: Outlined1 +SetFontSize(6); +SetFontItalic(False); + +//Check Font Size +Length := glTextWidth ( PChar(Text)) + 3; //Little Space for a Better Look ^^ + +//Text +SetFontPos (X + 50 - (Length / 2), Y + 12); //Position + + //Draw Background + glColor4f(Color.R, Color.G, Color.B, Alpha); //Set Color + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + //Old Method with Variable Background + {//Draw Left Side + glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusL.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(X, Y); + glTexCoord2f(0, 1); glVertex2f(X, Y + Tex_SingLineBonusL.H * Tex_SingLineBonusL.ScaleH); + glTexCoord2f(1, 1); glVertex2f(X + Tex_SingLineBonusL.W * Tex_SingLineBonusL.scaleW, Y + Tex_SingLineBonusL.H * Tex_SingLineBonusL.scaleH); + glTexCoord2f(1, 0); glVertex2f(X + Tex_SingLineBonusL.W * Tex_SingLineBonusL.scaleW, Y); + glEnd; + + //Set X of Next Tile + X2 := X + Tex_SingLineBonusL.W * Tex_SingLineBonusL.scaleW; + + //Draw Middle + glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusM.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(X2, Y); + glTexCoord2f(0, 1); glVertex2f(X2, Y + Tex_SingLineBonusM.H * Tex_SingLineBonusM.ScaleH); + glTexCoord2f(1, 1); glVertex2f(X2 + Length, Y + Tex_SingLineBonusM.H * Tex_SingLineBonusM.scaleH); + glTexCoord2f(1, 0); glVertex2f(X2 + Length, Y); + glEnd; + + //Set X of Next Tile + X2 := X2 + Length; + + //Draw Rigth Side + glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusR.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(X2, Y); + glTexCoord2f(0, 1); glVertex2f(X2, Y + Tex_SingLineBonusR.H * Tex_SingLineBonusR.ScaleH); + glTexCoord2f(1, 1); glVertex2f(X2 + Tex_SingLineBonusR.W * Tex_SingLineBonusR.scaleW, Y + Tex_SingLineBonusR.H * Tex_SingLineBonusR.scaleH); + glTexCoord2f(1, 0); glVertex2f(X2 + Tex_SingLineBonusR.W * Tex_SingLineBonusR.scaleW, Y); + glEnd;} + //New Method, Not Variable + glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusBack.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(1/32, 0); glVertex2f(X, Y); + glTexCoord2f(1/32, 1); glVertex2f(X, Y + 50); + glTexCoord2f(31/32, 1); glVertex2f(X + 100, Y + 50); + glTexCoord2f(31/32, 0); glVertex2f(X + 100, Y); + glEnd; + + glColor4f(1, 1, 1, Alpha); //Set Color + //Draw Text + glPrint (PChar(Text)); +end; +end; +//PhrasenBonus - Line Bonus Mod + +// Draw Note Bars for Editor +//There are 11 Resons for a new Procdedure: +// 1. It don't look good when you Draw the Golden Note Star Effect in the Editor +// 2. You can see the Freestyle Notes in the Editor SemiTransparent +// 3. Its easier and Faster then changing the old Procedure +procedure EditDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); +var + Rec: TRecR; + Pet: integer; + TempR: real; +begin + glColor3f(1, 1, 1); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + TempR := (Right-Left) / (Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote); + with Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt] do begin + for Pet := 0 to HighNut do begin + with Nuta[Pet] do begin + + // Golden Note Patch + case Wartosc of + 0: glColor4f(1, 1, 1, 0.35); + 1: glColor4f(1, 1, 1, 0.85); + 2: glColor4f(1, 1, 0.3, 0.85); + end; // case + + + + // lewa czesc - left part + Rec.Left := (Start-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left + 0.5 + 10*ScreenX; + Rec.Right := Rec.Left + NotesW; + Rec.Top := Top - (Ton-BaseNote)*Space/2 - NotesH; + Rec.Bottom := Rec.Top + 2 * NotesH; + glBindTexture(GL_TEXTURE_2D, Tex_Left[Color].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + // srodkowa czesc - middle part + Rec.Left := Rec.Right; + Rec.Right := (Start+Dlugosc-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left - NotesW - 0.5 + 10*ScreenX; + + glBindTexture(GL_TEXTURE_2D, Tex_Mid[Color].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/32, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/32, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(31/32, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(31/32, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + // prawa czesc - right part + Rec.Left := Rec.Right; + Rec.Right := Rec.Right + NotesW; + + glBindTexture(GL_TEXTURE_2D, Tex_Right[Color].TexNum); + glBegin(GL_QUADS); + glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glEnd; + + end; // with + end; // for + end; // with + + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); +end; + +end. + diff --git a/Game/Code/Classes/UFiles.dcu b/Game/Code/Classes/UFiles.dcu new file mode 100644 index 00000000..9ed45d8f Binary files /dev/null and b/Game/Code/Classes/UFiles.dcu differ diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas new file mode 100644 index 00000000..61fdab03 --- /dev/null +++ b/Game/Code/Classes/UFiles.pas @@ -0,0 +1,326 @@ +unit UFiles; + +interface + +uses USongs, SysUtils, ULog, UMusic; + +//procedure InitializePaths; //Function sets All Absolute Paths eg. for Songs +function ReadTXTHeader(var Song: TSong): boolean; //Reads Standard TXT Header +function AnalyseFile(var Song: TSong): boolean; //Analyse Song File and Read Header +procedure ClearSong(var Song: TSong); //Clears Song Header values + +//procedure CzyscNuty; +//function WczytajCzesci(Name: string): boolean; +//function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; +//function SaveSongDebug(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; + +var + {//Absolute Paths + GamePath: string; + SoundPath: string; + SongPath: string; + LogPath: string; + ThemePath: string; + ScreenshotsPath: string; + CoversPath: string; + LanguagesPath: string; //} + + SongFile: TextFile; // all procedures in this unit operates on this file + FileLineNo: integer; //Line which is readed at Last, for error reporting + + {// variables available for all procedures + Base: array[0..1] of integer; + Rel: array[0..1] of integer;//} + Mult: integer = 1; + MultBPM: integer = 4; + +implementation +uses TextGL, UIni, UMain, UPliki; + + //Function sets All Absolute Paths eg. for Songs +{procedure InitializePaths; +begin + GamePath := ExtractFilePath(ParamStr(0)); + SoundPath := GamePath + 'Sounds\'; + SongPath := GamePath + 'Songs\'; + LogPath := GamePath; + ThemePath := GamePath + 'Themes\'; + ScreenshotsPath := GamePath + 'Screenshots\'; + CoversPath := GamePath + 'Covers\'; + LanguagesPath := GamePath + 'Languages\'; + + DecimalSeparator := ','; +end;} + + //Clears Song Header values +procedure ClearSong(var Song: TSong); +begin + //Main Information + Song.Title := ''; + Song.Artist := ''; + + //Sortings: + Song.Genre := 'Unknown'; + Song.Edition := 'Unknown'; + Song.Language := 'Unknown'; //Language Patch + + //Required Information + Song.Mp3 := ''; + Song.BPM := 0; + Song.GAP := 0; + Song.Start := 0; + Song.Finish := 0; + + //Additional Information + Song.Background := ''; + Song.Video := ''; + Song.VideoGAP := 0; + Song.NotesGAP := 0; + Song.Resolution := 4; + Song.Creator := ''; +end; + + //Reads Standard TXT Header +function ReadTXTHeader(var Song: TSong): boolean; +var +Line, Identifier, Value: String; +Temp: word; +Done: byte; +begin + Result := true; + + //Read first Line + ReadLn (SongFile, Line); + + if (Length(Line)<=0) then + begin + Log.LogError('File Starts with Empty Line: ' + Song.FileName); + Result := False; + Exit; + end; + + //Read Lines while Line starts with # + While (Line[1] = '#') do + begin + //Increase Line Number + Inc (FileLineNo); + Temp := Pos(':', Line); + + //Line has a Seperator-> Headerline + if (Temp <> 0) then + begin + //Read Identifier and Value + Identifier := Uppercase(Trim(Copy(Line, 2, Temp - 2))); //Uppercase is for Case Insensitive Checks + Value := Trim(Copy(Line, Temp + 1,Length(Line) - Temp)); + + //Check the Identifier (If Value is given) + if (Length(Value) <> 0) then + begin + + //----------- + //Required Attributes + //----------- + + //Title + if (Identifier = 'TITLE') then + begin + Song.Title := Value; + + //Add Title Flag to Done + Done := Done or 1; + end + + //Artist + else if (Identifier = 'ARTIST') then + begin + Song.Artist := Value; + + //Add Artist Flag to Done + Done := Done or 2; + end + + //MP3 File //Test if Exists + else if (Identifier = 'MP3') AND (FileExists(Song.Path + Value)) then + begin + Song.Mp3 := Value; + + //Add Mp3 Flag to Done + Done := Done or 4; + end + + //Beats per Minute + else if (Identifier = 'BPM') then + begin + // Replace . with , + if (Pos('.', Value) <> 0) then + Value[Pos('.', Value)] := ','; + + SetLength(Song.BPM, 1); + Song.BPM[0].StartBeat := 0; + + Song.BPM[0].BPM := StrtoFloatDef(Value, 0) * Mult * MultBPM; + + if Song.BPM[0].BPM <> 0 then + begin + //Add BPM Flag to Done + Done := Done or 8; + end; + end + + //--------- + //Additional Header Information + //--------- + + //Cover Picture + else if (Identifier = 'COVER') then + begin + Song.Cover := Value; + end + + //Background Picture + else if (Identifier = 'BACKGROUND') then + begin + Song.Background := Value; + end + + // Video File + else if (Identifier = 'VIDEO') then + begin + Song.Video := Value; + end + + // Video Gap + else if (Identifier = 'VIDEOGAP') then + begin + // Replace . with , + if (Pos('.', Value) <> 0) then + Value[Pos('.', Value)] := ','; + + Song.VideoGAP := StrtoFloatDef (Value, 0); + end + + //Genre Sorting + else if (Identifier = 'GENRE') then + begin + Song.Genre := Value; + end + + //Edition Sorting + else if (Identifier = 'EDITION') then + begin + Song.Edition := Value; + end + + //Creator Tag + else if (Identifier = 'CREATOR') then + begin + Song.Creator := Value; + end + + //Language Sorting + else if (Identifier = 'LANGUAGE') then + begin + Song.Language := Value; + end + + // Song Start + else if (Identifier = 'START') then + begin + // Replace . with , + if (Pos('.', Value) <> 0) then + Value[Pos('.', Value)] := ','; + + Song.Start := StrtoFloatDef(Value, 0); + end + + // Song Ending + else if (Identifier = 'END') then + begin + TryStrtoInt(Value, Song.Finish); + end + + // Resolution + else if (Identifier = 'RESOLUTION') then + begin + TryStrtoInt(Value, Song.Resolution); + end + + // Notes Gap + else if (Identifier = 'NOTESGAP') then + begin + TryStrtoInt(Value, Song.NotesGAP); + end + + // Relative Notes + else if (Identifier = 'RELATIVE') AND (uppercase(Value) = 'YES') then + begin + Song.Relative := True; + end; + + end; + end; + + if not EOf(SongFile) then + ReadLn (SongFile, Line) + else + begin + Result := False; + Log.LogError('File Incomplete or not Ultrastar TxT: ' + Song.FileName); + break; + end; + + //End on first empty Line + if (Length(Line) = 0) then + break; + end; + + //Check if all Required Values are given + if (Done <> 15) then + begin + Result := False; + if (Done and 8) = 0 then //No BMP Flag + Log.LogError('BMP Tag Missing: ' + Song.FileName) + else if (Done and 4) = 0 then //No MP3 Flag + Log.LogError('MP3 Tag/File Missing: ' + Song.FileName) + else if (Done and 2) = 0 then //No Artist Flag + Log.LogError('Artist Tag Missing: ' + Song.FileName) + else if (Done and 1) = 0 then //No Title Flag + Log.LogError('Title Tag Missing: ' + Song.FileName) + else //unknown Error + Log.LogError('File Incomplete or not Ultrastar TxT: ' + Song.FileName); + end; + +end; + + //Analyse Song File and Read Header +function AnalyseFile(var Song: TSong): boolean; +begin +Result := False; +{try } + //Reset LineNo + FileLineNo := 0; + + //Open File and set File Pointer to the beginning + AssignFile(SongFile, Song.Path + Song.FileName); + Reset(SongFile); + + //Clear old Song Header + ClearSong(Song); + + //Read Header + Result := ReadTxTHeader(Song); + + //And Close File + CloseFile(SongFile); +{except + CloseFile(SongFile); + + Result := False; + //Error Reporting + Log.LogError('An Error occured reading Line ' + inttostr(FileLineNo) + ' from SongHeader: ' + Song.FileName); +end;} +end; + + + +end. \ No newline at end of file diff --git a/Game/Code/Classes/UGraphic.dcu b/Game/Code/Classes/UGraphic.dcu new file mode 100644 index 00000000..c264b16b Binary files /dev/null and b/Game/Code/Classes/UGraphic.dcu differ diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas new file mode 100644 index 00000000..05a9fda7 --- /dev/null +++ b/Game/Code/Classes/UGraphic.pas @@ -0,0 +1,405 @@ +unit UGraphic; + +interface +uses + SDL, OpenGL12, UTexture, TextGL, ULog, SysUtils, ULyrics, UScreenLoading, + UScreenWelcome, UScreenMain, UScreenName, UScreenLevel, UScreenOptions, UScreenOptionsGame, + UScreenOptionsGraphics, UScreenOptionsSound, UScreenOptionsLyrics, UScreenOptionsThemes, UScreenOptionsRecord, + UScreenSong, UScreenSing, UScreenScore, UScreenTop5, UScreenEditSub, + UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, + {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer; + +type + TRecR = record + Top: real; + Left: real; + Right: real; + Bottom: real; + end; + +var + Screen: PSDL_Surface; + + RenderW: integer; + RenderH: integer; + ScreenW: integer; + ScreenH: integer; + Screens: integer; + ScreenAct: integer; + ScreenX: integer; + + ScreenLoading: TScreenLoading; + ScreenWelcome: TScreenWelcome; + ScreenMain: TScreenMain; + ScreenName: TScreenName; + ScreenLevel: TScreenLevel; + ScreenSong: TScreenSong; + ScreenSing: TScreenSing; + ScreenScore: TScreenScore; + ScreenTop5: TScreenTop5; + ScreenOptions: TScreenOptions; + ScreenOptionsGame: TScreenOptionsGame; + ScreenOptionsGraphics: TScreenOptionsGraphics; + ScreenOptionsSound: TScreenOptionsSound; + ScreenOptionsLyrics: TScreenOptionsLyrics; + ScreenOptionsThemes: TScreenOptionsThemes; + ScreenOptionsRecord: TScreenOptionsRecord; + ScreenEditSub: TScreenEditSub; + ScreenEdit: TScreenEdit; + ScreenEditConvert: TScreenEditConvert; + ScreenEditHeader: TScreenEditHeader; + ScreenOpen: TScreenOpen; + + ScreenSongMenu: TScreenSongMenu; + + //Party Screens + ScreenSingModi: TScreenSingModi; + ScreenPartyNewRound: TScreenPartyNewRound; + ScreenPartyScore: TScreenPartyScore; + ScreenPartyWin: TScreenPartyWin; + ScreenPartyOptions: TScreenPartyOptions; + ScreenPartyPlayer: TScreenPartyPlayer; + + + Tex_Left: array[0..6] of TTexture; + Tex_Mid: array[0..6] of TTexture; + Tex_Right: array[0..6] of TTexture; + + Tex_BG_Left: array[1..6] of TTexture; + Tex_BG_Mid: array[1..6] of TTexture; + Tex_BG_Right: array[1..6] of TTexture; + + Tex_Note_Star: TTexture; + + Tex_Ball: TTexture; + FullScreen: boolean; + + + + //Sing Bar Mod + Tex_SingBar_Back: TTexture; + Tex_SingBar_Bar: TTexture; + Tex_SingBar_Front: TTexture; + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + Tex_SingLineBonusBack: TTexture; + //End PhrasenBonus - Line Bonus Mod + +const + Skin_BGColorR = 1; + Skin_BGColorG = 1; + Skin_BGColorB = 1; + + Skin_SpectrumR = 0; + Skin_SpectrumG = 0; + Skin_SpectrumB = 0; + + Skin_Spectograph1R = 0.6; + Skin_Spectograph1G = 0.8; + Skin_Spectograph1B = 1; + + Skin_Spectograph2R = 0; + Skin_Spectograph2G = 0; + Skin_Spectograph2B = 0.2; + + Skin_SzczytR = 0.8; + Skin_SzczytG = 0; + Skin_SzczytB = 0; + + Skin_SzczytLimitR = 0; + Skin_SzczytLimitG = 0.8; + Skin_SzczytLimitB = 0; + + Skin_FontR = 0; + Skin_FontG = 0; + Skin_FontB = 0; + + Skin_FontHighlightR = 0.3; // 0.3 + Skin_FontHighlightG = 0.3; // 0.3 + Skin_FontHighlightB = 1; // 1 + + Skin_TimeR = 0.25; //0,0,0 + Skin_TimeG = 0.25; + Skin_TimeB = 0.25; + + Skin_OscR = 0; + Skin_OscG = 0; + Skin_OscB = 0; + + Skin_LyricsT = 500; // 510 / 400 + Skin_SpectrumT = 470; + Skin_SpectrumBot = 570; + Skin_SpectrumH = 100; + + Skin_P1_LinesR = 0.5; // 0.6 0.6 1 + Skin_P1_LinesG = 0.5; + Skin_P1_LinesB = 0.5; + + Skin_P2_LinesR = 0.5; // 1 0.6 0.6 + Skin_P2_LinesG = 0.5; + Skin_P2_LinesB = 0.5; + + Skin_P1_NotesB = 250; + Skin_P2_NotesB = 430; // 430 / 300 + + Skin_P1_ScoreT = 50; + Skin_P1_ScoreL = 20; + + Skin_P2_ScoreT = 50; + Skin_P2_ScoreL = 640; + +procedure Initialize3D (Title: string); +procedure Reinitialize3D; +procedure SwapBuffers; + +procedure LoadTextures; +procedure InitializeScreen; +procedure LoadScreens; + + +implementation +uses UMain, UIni, UDisplay; + +procedure LoadTextures; +var + P: integer; + R, G, B: real; + Col: integer; +begin + // zaladowanie tekstur + Log.LogStatus('Loading Textures', 'LoadTextures'); + Tex_Left[0] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('GrayLeft')), 'BMP', 'Transparent', 0); + Tex_Mid[0] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('GrayMid')), 'BMP', 'Plain', 0); + Tex_Right[0] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('GrayRight')), 'BMP', 'Transparent', 0); + + // P1-6 + for P := 1 to 6 do begin + LoadColor(R, G, B, 'P' + IntToStr(P) + 'Light'); + Col := $10000 * Round(R*255) + $100 * Round(G*255) + Round(B*255); + Tex_Left[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('GrayLeft')), 'BMP', 'Note Transparent', Col); + Tex_Mid[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('GrayMid')), 'BMP', 'Note Plain', Col); + Tex_Right[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('GrayRight')), 'BMP', 'Note Transparent', Col); + + Tex_BG_Left[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteBGLeft')), 'BMP', 'Alpha Black Colored', Col); + Tex_BG_Mid[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteBGMid')), 'BMP', 'Alpha Black Colored', Col); + Tex_BG_Right[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteBGRight')), 'BMP', 'Alpha Black Colored', Col); + end; + + Tex_Note_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteStar')), 'JPG', 'Font Black', 0); + Tex_Ball := Texture.LoadTexture(pchar(Skin.GetTextureFileName('Ball')), 'BMP', 'Transparent', $FF00FF); + + + + //SingBar Mod + Tex_SingBar_Back := Texture.LoadTexture(pchar(Skin.GetTextureFileName('SingBarBack')), 'JPG', 'Plain', 0); + Tex_SingBar_Bar := Texture.LoadTexture(pchar(Skin.GetTextureFileName('SingBarBar')), 'JPG', 'Plain', 0); + Tex_SingBar_Front := Texture.LoadTexture(pchar(Skin.GetTextureFileName('SingBarFront')), 'JPG', 'Font', 0); + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + Tex_SingLineBonusBack := Texture.LoadTexture(pchar(Skin.GetTextureFileName('LineBonusBack')), 'JPG', 'Font Black', 0); + {//Set Texture to Font High + Tex_SingLineBonusL.H := 32; Tex_SingLineBonusL.W := 8; + Tex_SingLineBonusM.H := 32; //Tex_SingLineBonusM.TexW := Tex_SingLineBonusM.TexW/2; + Tex_SingLineBonusR.H := 32; Tex_SingLineBonusR.W := 8; } + //PhrasenBonus - Line Bonus Mod End + + // tworzenie czcionek + Log.LogStatus('Building Fonts', 'LoadTextures'); + BuildFont; +end; + +procedure Initialize3D (Title: string); +begin + Log.LogStatus('LoadOpenGL', 'Initialize3D'); + Log.BenchmarkStart(2); + + LoadOpenGL; + +// SDL_WM_SetIcon(SDL_LoadBMP('..\Graphics\us.ico'),0); + + Log.LogStatus('SDL_Init', 'Initialize3D'); + if ( SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO)= -1 ) then begin + Log.LogError('SDL_Init Failed', 'Initialize3D'); + exit; + end; + + SDL_WM_SetCaption(PChar(Title), 'WM_DEFAULT'); + + InitializeScreen; + + Log.BenchmarkEnd(2); + Log.LogBenchmark('--> Setting Screen', 2); + + // ladowanie tekstur + Log.BenchmarkStart(2); + Texture := TTextureUnit.Create; + Texture.Limit := 1024*1024; + + LoadTextures; + Log.BenchmarkEnd(2); + Log.LogBenchmark('--> Loading Textures', 2); + + Log.BenchmarkStart(2); + Lyric := TLyric.Create; + Log.BenchmarkEnd(2); + Log.LogBenchmark('--> Loading Fonts', 2); + + Log.BenchmarkStart(2); + Display := TDisplay.Create; + SDL_EnableUnicode(1); + Log.BenchmarkEnd(2); Log.LogBenchmark('====> Creating Display', 2); + + Log.LogStatus('Loading Screens', 'Initialize3D'); + Log.BenchmarkStart(3); + + LoadScreens; + Display.ActualScreen^.FadeTo(@ScreenMain); + + Log.BenchmarkEnd(2); + Log.LogBenchmark('--> Loading Screens', 2); + + Log.LogStatus('Finish', 'Initialize3D'); +end; + +procedure SwapBuffers; +begin + SDL_GL_SwapBuffers; + glMatrixMode(GL_PROJECTION); + glLoadIdentity; + glOrtho(0, 800, 600, 0, -1, 100); + glMatrixMode(GL_MODELVIEW); +end; + +procedure Reinitialize3D; +begin +// InitializeScreen; +// LoadTextures; +// LoadScreens; +end; + +procedure InitializeScreen; +var + S: string; + I: integer; + W, H: integer; +begin + Screens := Ini.Screens + 1; + + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + + S := IResolution[Ini.Resolution]; + I := Pos('x', S); + W := StrToInt(Copy(S, 1, I-1)) * Screens; + H := StrToInt(Copy(S, I+1, 1000)); + + if ParamStr(1) = '-fsblack' then begin + W := 800; + H := 600; + end; + if ParamStr(1) = '-320x240' then begin + W := 320; + H := 240; + end; + + + Log.LogStatus('SDL_SetVideoMode', 'Initialize3D'); +// SDL_SetRefreshrate(85); +// SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + if (Ini.FullScreen = 0) and (ParamStr(1) <> '-fsblack') then + screen := SDL_SetVideoMode(W, H, (Ini.Depth+1) * 16, SDL_OPENGL) + else begin + screen := SDL_SetVideoMode(W, H, (Ini.Depth+1) * 16, SDL_OPENGL or SDL_FULLSCREEN); + SDL_ShowCursor(0); + end; + if (screen = nil) then begin + Log.LogError('SDL_SetVideoMode Failed', 'Initialize3D'); + exit; + end; + + // clear screen once window is being shown + glClearColor(1, 1, 1, 1); + glClear(GL_COLOR_BUFFER_BIT); + SwapBuffers; + + // zmienne + RenderW := 800; + RenderH := 600; + ScreenW := W; + ScreenH := H; +end; + +procedure LoadScreens; +begin + ScreenLoading := TScreenLoading.Create(''); + ScreenLoading.onShow; + Display.ActualScreen := @ScreenLoading; + ScreenLoading.Draw; + Display.Draw; + SwapBuffers; + + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Loading', 3); Log.BenchmarkStart(3); +{ ScreenWelcome := TScreenWelcome.Create; //'BG', 4, 3); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Welcome', 3); Log.BenchmarkStart(3);} + ScreenMain := TScreenMain.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Main', 3); Log.BenchmarkStart(3); + ScreenName := TScreenName.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Name', 3); Log.BenchmarkStart(3); + ScreenLevel := TScreenLevel.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Level', 3); Log.BenchmarkStart(3); + ScreenSong := TScreenSong.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Song', 3); Log.BenchmarkStart(3); + ScreenSongMenu := TScreenSongMenu.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Song Menu', 3); Log.BenchmarkStart(3); + ScreenSing := TScreenSing.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Sing', 3); Log.BenchmarkStart(3); + ScreenScore := TScreenScore.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Score', 3); Log.BenchmarkStart(3); + ScreenTop5 := TScreenTop5.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Top5', 3); Log.BenchmarkStart(3); + ScreenOptions := TScreenOptions.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options', 3); Log.BenchmarkStart(3); + ScreenOptionsGame := TScreenOptionsGame.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Game', 3); Log.BenchmarkStart(3); + ScreenOptionsGraphics := TScreenOptionsGraphics.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Graphics', 3); Log.BenchmarkStart(3); + ScreenOptionsSound := TScreenOptionsSound.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Sound', 3); Log.BenchmarkStart(3); + ScreenOptionsLyrics := TScreenOptionsLyrics.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Lyrics', 3); Log.BenchmarkStart(3); + ScreenOptionsThemes := TScreenOptionsThemes.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Themes', 3); Log.BenchmarkStart(3); + ScreenOptionsRecord := TScreenOptionsRecord.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Record', 3); Log.BenchmarkStart(3); + ScreenEditSub := TScreenEditSub.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit Sub', 3); Log.BenchmarkStart(3); + ScreenEdit := TScreenEdit.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit', 3); Log.BenchmarkStart(3); + ScreenEditConvert := TScreenEditConvert.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen EditConvert', 3); Log.BenchmarkStart(3); +// ScreenEditHeader := TScreenEditHeader.Create(Skin.ScoreBG); +// Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit Header', 3); Log.BenchmarkStart(3); + ScreenOpen := TScreenOpen.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Open', 3); Log.BenchmarkStart(3); + ScreenSingModi := TScreenSingModi.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen SongMenu', 3); Log.BenchmarkStart(3); + //ScreenSongMenu := TScreenSongMenu.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Sing with Modi support', 3); Log.BenchmarkStart(3); + ScreenPartyNewRound := TScreenPartyNewRound.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyNewRound', 3); Log.BenchmarkStart(3); + ScreenPartyScore := TScreenPartyScore.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyScore', 3); Log.BenchmarkStart(3); + ScreenPartyWin := TScreenPartyWin.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyWin', 3); Log.BenchmarkStart(3); + ScreenPartyOptions := TScreenPartyOptions.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyOptions', 3); Log.BenchmarkStart(3); + ScreenPartyPlayer := TScreenPartyPlayer.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyPlayer', 3); Log.BenchmarkStart(3); +end; + +end. diff --git a/Game/Code/Classes/UGraphicClasses.dcu b/Game/Code/Classes/UGraphicClasses.dcu new file mode 100644 index 00000000..58d003b0 Binary files /dev/null and b/Game/Code/Classes/UGraphicClasses.dcu differ diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas new file mode 100644 index 00000000..abb59e4b --- /dev/null +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -0,0 +1,7 @@ +unit UGraphicClasses; + +interface + +implementation + +end. diff --git a/Game/Code/Classes/UIni.dcu b/Game/Code/Classes/UIni.dcu new file mode 100644 index 00000000..e891d36c Binary files /dev/null and b/Game/Code/Classes/UIni.dcu differ diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas new file mode 100644 index 00000000..beadabb6 --- /dev/null +++ b/Game/Code/Classes/UIni.pas @@ -0,0 +1,693 @@ +unit UIni; + +interface +uses IniFiles, ULog, SysUtils; + +type + TIni = class + Name: array[0..5] of string; + + // Game + Players: integer; + Difficulty: integer; + Language: integer; + Tabs: integer; + Tabs_at_startup:integer; //Tabs at Startup fix + Sorting: integer; + Debug: integer; + + // Graphics + Screens: integer; + Resolution: integer; + Depth: integer; + FullScreen: integer; + TextureSize: integer; + SingWindow: integer; + Oscilloscope: integer; + Spectrum: integer; + Spectrograph: integer; + MovieSize: integer; + //LineBonus Mod + LineBonus: integer; + //GMA Fix + GMAFix: integer; + + + // Sound + MicBoost: integer; + ClickAssist: integer; + BeatClick: integer; + SavePlayback: integer; + Threshold: integer; + //TwoPlayerMode: integer; + + // Lyrics + LyricsFont: integer; + LyricsEffect: integer; + Solmization: integer; + + // Themes + Theme: integer; + SkinNo: integer; + Color: integer; + + // Record + Card: integer; // not saved in config.ini + + CardList: array of record + Name: string; + Input: integer; + ChannelL: integer; + ChannelR: integer; + end; + + // Controller + Joypad: integer; + + // Soundcards + SoundCard: array[0..7, 1..2] of integer; + + // Devices + LPT: integer; + + procedure Load; + procedure Save; + procedure SaveNames; + procedure SaveLevel; + end; + + +var + Ini: TIni; + IResolution: array of string; + ILanguage: array of string; + ITheme: array of string; + ISkin: array of string; + ICard: array of string; + IInput: array of string; + +const + IPlayers: array[0..4] of string = ('1', '2', '3', '4', '6'); + IDifficulty: array[0..2] of string = ('Easy', 'Medium', 'Hard'); + ITabs: array[0..1] of string = ('Off', 'On'); + + ISorting: array[0..7] of string = ('Edition', 'Genre', 'Language', 'Folder', 'Title', 'Artist', 'Title2', 'Artist2'); + sEdition = 0; + sGenre = 1; + sLanguage = 2; + sFolder = 3; + sTitle = 4; + sArtist = 5; + sTitle2 = 6; + sArtist2 = 7; + + IDebug: array[0..1] of string = ('Off', 'On'); + + IScreens: array[0..1] of string = ('1', '2'); + IFullScreen: array[0..1] of string = ('Off', 'On'); + IDepth: array[0..1] of string = ('16 bit', '32 bit'); + ITextureSize: array[0..2] of string = ('128', '256', '512'); + ISingWindow: array[0..1] of string = ('Small', 'Big'); + + //SingBar Mod + IOscilloscope: array[0..2] of string = ('Off', 'Osci', 'Bar'); + //IOscilloscope: array[0..1] of string = ('Off', 'On'); + + //Line Bonus MOd + ILineBonus: array[0..2] of string = ('Off', 'At Score', 'At Notes'); + //GMA Fix + IGMAFix: array[0..1] of string = ('Off', 'On'); + + ISpectrum: array[0..1] of string = ('Off', 'On'); + ISpectrograph: array[0..1] of string = ('Off', 'On'); + IMovieSize: array[0..1] of string = ('Half', 'Full'); + + IMicBoost: array[0..3] of string = ('Off', '+6dB', '+12dB', '+18dB'); + IClickAssist: array[0..1] of string = ('Off', 'On'); + IBeatClick: array[0..1] of string = ('Off', 'On'); + ISavePlayback: array[0..1] of string = ('Off', 'On'); + IThreshold: array[0..3] of string = ('5%', '10%', '15%', '20%'); + //ITwoPlayerMode: array[0..2] of string = ('Stereo', '2 Cards', 'Advanced'); + + ILyricsFont: array[0..2] of string = ('Plain', 'OLine1', 'OLine2'); + ILyricsEffect: array[0..3] of string = ('Simple', 'Zoom', 'Slide', 'Ball'); + ISolmization: array[0..3] of string = ('Off', 'Euro', 'Jap', 'American'); + + IColor: array[0..8] of string = ('Blue', 'Green', 'Pink', 'Red', 'Violet', 'Orange', 'Yellow', 'Brown', 'Black'); + + IJoypad: array[0..1] of string = ('Off', 'On'); + ILPT: array[0..2] of string = ('Off', 'LCD', 'Lights'); + + IChannel: array[0..6] of string = ('0', '1', '2', '3', '4', '5', '6'); + +implementation +uses UPliki, SDL, ULanguage, USkins, URecord; + +procedure TIni.Load; +var + IniFile: TMemIniFile; + ThemeIni: TMemIniFile; + Tekst: string; + Pet: integer; + B: boolean; + I, I2, I3: integer; + S: string; + Modes: PPSDL_Rect; + SR: TSearchRec; //Skin List Patch + +function GetFileName (S: String):String; + begin + //Result := copy (S,0,StrRScan (PChar(S),char('.'))+1); + Result := copy (S,0,Pos ('.ini',S)-1); + end; + +begin + GamePath := ExtractFilePath(ParamStr(0)); + IniFile := TMemIniFile.Create(GamePath + 'config.ini'); + + // Name + for I := 0 to 5 do + Ini.Name[I] := IniFile.ReadString('Name', 'P'+IntToStr(I+1), 'Player'+IntToStr(I+1)); + + // Players + Tekst := IniFile.ReadString('Game', 'Players', IPlayers[0]); + for Pet := 0 to High(IPlayers) do + if Tekst = IPlayers[Pet] then Ini.Players := Pet; + + // Difficulty + Tekst := IniFile.ReadString('Game', 'Difficulty', 'Easy'); + for Pet := 0 to High(IDifficulty) do + if Tekst = IDifficulty[Pet] then Ini.Difficulty := Pet; + + // Language + Tekst := IniFile.ReadString('Game', 'Language', 'English'); + for Pet := 0 to High(ILanguage) do + if Tekst = ILanguage[Pet] then Ini.Language := Pet; + +// Language.ChangeLanguage(ILanguage[Ini.Language]); + + // Tabs + Tekst := IniFile.ReadString('Game', 'Tabs', ITabs[0]); + for Pet := 0 to High(ITabs) do + if Tekst = ITabs[Pet] then Ini.Tabs := Pet; + + //Tabs at Startup fix + Ini.Tabs_at_startup := Ini.Tabs; + + // Sorting + Tekst := IniFile.ReadString('Game', 'Sorting', ISorting[0]); + for Pet := 0 to High(ISorting) do + if Tekst = ISorting[Pet] then Ini.Sorting := Pet; + + // Debug + Tekst := IniFile.ReadString('Game', 'Debug', IDebug[0]); + for Pet := 0 to High(IDebug) do + if Tekst = IDebug[Pet] then Ini.Debug := Pet; + + //if Ini.Debug = 1 then SongPath := 'E:\UltraStar 03\Songs\'; + + // Screens + Tekst := IniFile.ReadString('Graphics', 'Screens', IScreens[0]); + for Pet := 0 to High(IScreens) do + if Tekst = IScreens[Pet] then Ini.Screens := Pet; + + // Resolution + SetLength(IResolution, 0); + Modes := SDL_ListModes(nil, SDL_OPENGL or SDL_FULLSCREEN); // Check if there are any modes available + repeat +// Log.LogError(Format( ' %d x %d', [ modes^.w, modes^.h ] ) ); + SetLength(IResolution, Length(IResolution) + 1); + IResolution[High(IResolution)] := IntToStr(Modes^.w) + 'x' + IntToStr(Modes^.h); + Inc(Modes); + until Modes^ = nil; + + // reverse order + for I := 0 to (Length(IResolution) div 2) - 1 do begin + S := IResolution[I]; + IResolution[I] := IResolution[High(IResolution)-I]; + IResolution[High(IResolution)-I] := S; + end; + + Tekst := IniFile.ReadString('Graphics', 'Resolution', '800x600'); + for Pet := 0 to High(IResolution) do + if Tekst = IResolution[Pet] then Ini.Resolution := Pet; + + // FullScreen + Tekst := IniFile.ReadString('Graphics', 'FullScreen', 'On'); + for Pet := 0 to High(IFullScreen) do + if Tekst = IFullScreen[Pet] then Ini.FullScreen := Pet; + + // Resolution + Tekst := IniFile.ReadString('Graphics', 'Depth', '32 bit'); + for Pet := 0 to High(IDepth) do + if Tekst = IDepth[Pet] then Ini.Depth := Pet; + + // Texture Size + Tekst := IniFile.ReadString('Graphics', 'TextureSize', ITextureSize[1]); + for Pet := 0 to High(ITextureSize) do + if Tekst = ITextureSize[Pet] then Ini.TextureSize := Pet; + + // SingWindow + Tekst := IniFile.ReadString('Graphics', 'SingWindow', 'Big'); + for Pet := 0 to High(ISingWindow) do + if Tekst = ISingWindow[Pet] then Ini.SingWindow := Pet; + + // Oscilloscope + Tekst := IniFile.ReadString('Graphics', 'Oscilloscope', 'Off'); + for Pet := 0 to High(IOscilloscope) do + if Tekst = IOscilloscope[Pet] then Ini.Oscilloscope := Pet; + + // Line Bonus + Tekst := IniFile.ReadString('Graphics', 'LineBonus', 'At Score'); + for Pet := 0 to High(ILineBonus) do + if Tekst = ILineBonus[Pet] then Ini.LineBonus := Pet; + + //GMA Fix + Tekst := IniFile.ReadString('Graphics', 'GMAFix', 'Off'); + for Pet := 0 to High(IGMAFix) do + if Tekst = IGMAFix[Pet] then Ini.GMAFix := Pet; + + // Spectrum + Tekst := IniFile.ReadString('Graphics', 'Spectrum', 'Off'); + for Pet := 0 to High(ISpectrum) do + if Tekst = ISpectrum[Pet] then Ini.Spectrum := Pet; + + // Spectrograph + Tekst := IniFile.ReadString('Graphics', 'Spectrograph', 'Off'); + for Pet := 0 to High(ISpectrograph) do + if Tekst = ISpectrograph[Pet] then Ini.Spectrograph := Pet; + + // MovieSize + Tekst := IniFile.ReadString('Graphics', 'MovieSize', IMovieSize[0]); + for Pet := 0 to High(IMovieSize) do + if Tekst = IMovieSize[Pet] then Ini.MovieSize := Pet; + + // MicBoost + Tekst := IniFile.ReadString('Sound', 'MicBoost', 'Off'); + for Pet := 0 to High(IMicBoost) do + if Tekst = IMicBoost[Pet] then Ini.MicBoost := Pet; + + // ClickAssist + Tekst := IniFile.ReadString('Sound', 'ClickAssist', 'Off'); + for Pet := 0 to High(IClickAssist) do + if Tekst = IClickAssist[Pet] then Ini.ClickAssist := Pet; + + // BeatClick + Tekst := IniFile.ReadString('Sound', 'BeatClick', IBeatClick[0]); + for Pet := 0 to High(IBeatClick) do + if Tekst = IBeatClick[Pet] then Ini.BeatClick := Pet; + + // SavePlayback + Tekst := IniFile.ReadString('Sound', 'SavePlayback', ISavePlayback[0]); + for Pet := 0 to High(ISavePlayback) do + if Tekst = ISavePlayback[Pet] then Ini.SavePlayback := Pet; + + // Threshold + Tekst := IniFile.ReadString('Sound', 'Threshold', IThreshold[2]); + for Pet := 0 to High(IThreshold) do + if Tekst = IThreshold[Pet] then Ini.Threshold := Pet; + + {// Two Player Mode + for I := 0 to 7 do begin + Ini.SoundCard[I, 1] := 2*I + 1; + Ini.SoundCard[I, 2] := 2*I + 2; + end; + + Tekst := IniFile.ReadString('Sound', 'TwoPlayerMode', ITwoPlayerMode[0]); + for Pet := 0 to High(ITwoPlayerMode) do + if Tekst = ITwoPlayerMode[Pet] then Ini.TwoPlayerMode := Pet; + + if Ini.TwoPlayerMode = 1 then begin + Ini.SoundCard[0, 1] := 1; + Ini.SoundCard[0, 2] := 3; + Ini.SoundCard[1, 1] := 2; + end;} + + // Lyrics Font + Tekst := IniFile.ReadString('Lyrics', 'LyricsFont', ILyricsFont[1]); + for Pet := 0 to High(ILyricsFont) do + if Tekst = ILyricsFont[Pet] then Ini.LyricsFont := Pet; + + // Lyrics Effect + Tekst := IniFile.ReadString('Lyrics', 'LyricsEffect', ILyricsEffect[1]); + for Pet := 0 to High(ILyricsEffect) do + if Tekst = ILyricsEffect[Pet] then Ini.LyricsEffect := Pet; + + // Solmization + Tekst := IniFile.ReadString('Lyrics', 'Solmization', ISolmization[0]); + for Pet := 0 to High(ISolmization) do + if Tekst = ISolmization[Pet] then Ini.Solmization := Pet; + + // Theme + {SetLength(ITheme, 0); + if FileExists('Themes\Singstar.ini') then begin + SetLength(ITheme, Length(ITheme)+1); + ITheme[High(ITheme)] := 'Singstar'; + end; { + if FileExists('Themes\Karin.ini') then begin + SetLength(ITheme, Length(ITheme)+1); + ITheme[High(ITheme)] := 'Karin'; + end;} + + //Theme List Patch + SetLength(ITheme, 0); + FindFirst('Themes\*.ini',faAnyFile,SR); + Repeat + ThemeIni := TMemIniFile.Create(SR.Name); + Tekst := UpperCase(ThemeIni.ReadString('Theme','Name',GetFileName(SR.Name))); + ThemeIni.Free; + for Pet := low(Skin.Skin) to high(Skin.Skin) do + begin + if UpperCase(Skin.Skin[Pet].Theme) = Tekst then + begin + SetLength(ITheme, Length(ITheme)+1); + ITheme[High(ITheme)] := GetFileName(SR.Name); + break; + end; + end; + Until FindNext(SR) <> 0; + FindClose(SR); + //Theme List Patch End } + + //No Theme Found + if (Length(ITheme)=0) then + begin + Log.LogError('Could not find any valid Themes.'); + Halt; + end; + + + Tekst := IniFile.ReadString('Themes', 'Theme', ITheme[0]); + Ini.Theme := 0; + for Pet := 0 to High(ITheme) do + if Uppercase(Tekst) = Uppercase(ITheme[Pet]) then Ini.Theme := Pet; + + // Skin + Skin.onThemeChange; + Ini.SkinNo := 0; + + Tekst := IniFile.ReadString('Themes', 'Skin', ISkin[0]); + for Pet := 0 to High(ISkin) do + if Tekst = ISkin[Pet] then Ini.SkinNo := Pet; + + // Color + Tekst := IniFile.ReadString('Themes', 'Color', IColor[0]); + for Pet := 0 to High(IColor) do + if Tekst = IColor[Pet] then Ini.Color := Pet; + + // Record - load ini list + SetLength(CardList, 0); + I := 1; + while (IniFile.ValueExists('Record', 'DeviceName' + IntToStr(I)) = true) do begin + //Automatically Delete not Existing Sound Cards + S := IniFile.ReadString('Record', 'DeviceName' + IntToStr(I), ''); + //{ + B := False; + //Look for Soundcard + for I2 := 0 to High(Recording.SoundCard) do + begin + if (S = Trim(Recording.SoundCard[I2].Description)) then + begin + B := True; + Break; + end; + end; + + if B then + begin //} + I3 := Length(CardList); + SetLength(CardList, I3+1); + Ini.CardList[I3].Name := S; + Ini.CardList[I3].Input := IniFile.ReadInteger('Record', 'Input' + IntToStr(I), 0); + Ini.CardList[I3].ChannelL := IniFile.ReadInteger('Record', 'ChannelL' + IntToStr(I), 0); + Ini.CardList[I3].ChannelR := IniFile.ReadInteger('Record', 'ChannelR' + IntToStr(I), 0); + end; + Inc(I); + end; + + Log.LogError(InttoStr(Length(CardList)) + ' Cards Loaded'); + + // Record - append detected soundcards + for I := 0 to High(Recording.SoundCard) do + begin + B := False; + For I2 := 0 to High(CardList) do + begin //Search for Card in List + if (CardList[I2].Name = Trim(Recording.SoundCard[I].Description)) then + begin + B := True; + Break; + end; + end; + + //If not in List -> Add + If not B then + begin + I3 := Length(CardList); + SetLength(CardList, I3+1); + CardList[I3].Name := Trim(Recording.SoundCard[I].Description); + CardList[I3].Input := 0; + CardList[I3].ChannelL := 0; + CardList[I3].ChannelR := 0; + // default for new users + if (Length(CardList) = 1) then + CardList[I].ChannelL := 1; + end; + end; + + {for I := 0 to High(Recording.SoundCard) do begin + + B := false; + I2 := 0; + while ((B = false) and (I2 <= High(CardList))) do + if CardList[I2].Name = Recording.SoundCard[I].Description then B := true + else Inc(I2); + + // if the card wasn't detected in ini file, append it to the ini list + if B = false then begin + I3 := Length(CardList); + SetLength(CardList, I3+1); + CardList[I3].Name := Recording.SoundCard[I].Description; + CardList[I3].Input := 0; + CardList[I3].ChannelL := 0; + CardList[I3].ChannelR := 0; + if Length(CardList) = 1 then CardList[I].ChannelL := 1; // default for new users + //CardList[I].Input := 2; + end; + end; } + + Log.LogError(InttoStr(Length(CardList)) + ' Cards Detected'); + + // Joypad + Tekst := IniFile.ReadString('Controller', 'Joypad', IJoypad[0]); + for Pet := 0 to High(IJoypad) do + if Tekst = IJoypad[Pet] then Ini.Joypad := Pet; + + // SoundCard + for I := 0 to 7 do begin + Ini.SoundCard[I, 1] := IniFile.ReadInteger('SoundCards', 'SoundCard'+IntToStr(I+1)+'L', Ini.SoundCard[I, 1]); + Ini.SoundCard[I, 2] := IniFile.ReadInteger('SoundCards', 'SoundCard'+IntToStr(I+1)+'R', Ini.SoundCard[I, 2]); + end; + + // LCD + Tekst := IniFile.ReadString('Devices', 'LPT', ILPT[0]); + for Pet := 0 to High(ILPT) do + if Tekst = ILPT[Pet] then Ini.LPT := Pet; + + + // SongPath + SongPath := IncludeTrailingPathDelimiter(IniFile.ReadString('Path', 'Songs', SongPath)); + + + IniFile.Free; +end; + +procedure TIni.Save; +var + IniFile: TIniFile; + Tekst: string; + I: Integer; + S: String; +begin + if not (FileExists(GamePath + 'config.ini') and FileIsReadOnly(GamePath + 'config.ini')) then begin + IniFile := TIniFile.Create(GamePath + 'config.ini'); + + // Players + Tekst := IPlayers[Ini.Players]; + IniFile.WriteString('Game', 'Players', Tekst); + + // Difficulty + Tekst := IDifficulty[Ini.Difficulty]; + IniFile.WriteString('Game', 'Difficulty', Tekst); + + // Language + Tekst := ILanguage[Ini.Language]; + IniFile.WriteString('Game', 'Language', Tekst); + + // Tabs + Tekst := ITabs[Ini.Tabs]; + IniFile.WriteString('Game', 'Tabs', Tekst); + + // Sorting + Tekst := ISorting[Ini.Sorting]; + IniFile.WriteString('Game', 'Sorting', Tekst); + + // Debug + Tekst := IDebug[Ini.Debug]; + IniFile.WriteString('Game', 'Debug', Tekst); + + // Screens + Tekst := IScreens[Ini.Screens]; + IniFile.WriteString('Graphics', 'Screens', Tekst); + + // FullScreen + Tekst := IFullScreen[Ini.FullScreen]; + IniFile.WriteString('Graphics', 'FullScreen', Tekst); + + // Resolution + Tekst := IResolution[Ini.Resolution]; + IniFile.WriteString('Graphics', 'Resolution', Tekst); + + // Depth + Tekst := IDepth[Ini.Depth]; + IniFile.WriteString('Graphics', 'Depth', Tekst); + + // Resolution + Tekst := ITextureSize[Ini.TextureSize]; + IniFile.WriteString('Graphics', 'TextureSize', Tekst); + + // Sing Window + Tekst := ISingWindow[Ini.SingWindow]; + IniFile.WriteString('Graphics', 'SingWindow', Tekst); + + // Oscilloscope + Tekst := IOscilloscope[Ini.Oscilloscope]; + IniFile.WriteString('Graphics', 'Oscilloscope', Tekst); + + //Line Bonus + Tekst := ILineBonus[Ini.LineBonus]; + IniFile.WriteString('Graphics', 'LineBonus', Tekst); + + //GMA Fix + Tekst := IGMAFix[Ini.GMAFix]; + IniFile.WriteString('Graphics', 'GMAFix', Tekst); + + // Spectrum + Tekst := ISpectrum[Ini.Spectrum]; + IniFile.WriteString('Graphics', 'Spectrum', Tekst); + + // Spectrograph + Tekst := ISpectrograph[Ini.Spectrograph]; + IniFile.WriteString('Graphics', 'Spectrograph', Tekst); + + // Movie Size + Tekst := IMovieSize[Ini.MovieSize]; + IniFile.WriteString('Graphics', 'MovieSize', Tekst); + + // MicBoost + Tekst := IMicBoost[Ini.MicBoost]; + IniFile.WriteString('Sound', 'MicBoost', Tekst); + + // ClickAssist + Tekst := IClickAssist[Ini.ClickAssist]; + IniFile.WriteString('Sound', 'ClickAssist', Tekst); + + // BeatClick + Tekst := IBeatClick[Ini.BeatClick]; + IniFile.WriteString('Sound', 'BeatClick', Tekst); + + // Threshold + Tekst := IThreshold[Ini.Threshold]; + IniFile.WriteString('Sound', 'Threshold', Tekst); + + // SavePlayback + Tekst := ISavePlayback[Ini.SavePlayback]; + IniFile.WriteString('Sound', 'SavePlayback', Tekst); + + {// Two Player Mode + Tekst := ITwoPlayerMode[Ini.TwoPlayerMode]; + IniFile.WriteString('Sound', 'TwoPlayerMode', Tekst); } + + // Lyrics Font + Tekst := ILyricsFont[Ini.LyricsFont]; + IniFile.WriteString('Lyrics', 'LyricsFont', Tekst); + + // Lyrics Effect + Tekst := ILyricsEffect[Ini.LyricsEffect]; + IniFile.WriteString('Lyrics', 'LyricsEffect', Tekst); + + // Solmization + Tekst := ISolmization[Ini.Solmization]; + IniFile.WriteString('Lyrics', 'Solmization', Tekst); + + // Theme + Tekst := ITheme[Ini.Theme]; + IniFile.WriteString('Themes', 'Theme', Tekst); + + // Skin + Tekst := ISkin[Ini.SkinNo]; + IniFile.WriteString('Themes', 'Skin', Tekst); + + // Color + Tekst := IColor[Ini.Color]; + IniFile.WriteString('Themes', 'Color', Tekst); + + // Record + for I := 0 to High(CardList) do begin + S := IntToStr(I+1); + + Tekst := CardList[I].Name; + IniFile.WriteString('Record', 'DeviceName' + S, Tekst); + + Tekst := IntToStr(CardList[I].Input); + IniFile.WriteString('Record', 'Input' + S, Tekst); + + Tekst := IntToStr(CardList[I].ChannelL); + IniFile.WriteString('Record', 'ChannelL' + S, Tekst); + + Tekst := IntToStr(CardList[I].ChannelR); + IniFile.WriteString('Record', 'ChannelR' + S, Tekst); + end; + + Log.LogError(InttoStr(Length(CardList)) + ' Cards Saved'); + + // Joypad + Tekst := IJoypad[Ini.Joypad]; + IniFile.WriteString('Controller', 'Joypad', Tekst); + + IniFile.Free; + end; +end; + +procedure TIni.SaveNames; +var + IniFile: TIniFile; + I: integer; +begin + if not FileIsReadOnly(GamePath + 'config.ini') then begin + IniFile := TIniFile.Create(GamePath + 'config.ini'); + + //Name + for I := 1 to 6 do + IniFile.WriteString('Name', 'P' + IntToStr(I), Ini.Name[I-1]); + + IniFile.Free; + end; +end; + +procedure TIni.SaveLevel; +var + IniFile: TIniFile; + I: integer; +begin + if not FileIsReadOnly(GamePath + 'config.ini') then begin + IniFile := TIniFile.Create(GamePath + 'config.ini'); + + // Difficulty + IniFile.WriteString('Game', 'Difficulty', IDifficulty[Ini.Difficulty]); + + IniFile.Free; + end; +end; + +end. \ No newline at end of file diff --git a/Game/Code/Classes/UJoystick.dcu b/Game/Code/Classes/UJoystick.dcu new file mode 100644 index 00000000..62cde484 Binary files /dev/null and b/Game/Code/Classes/UJoystick.dcu differ diff --git a/Game/Code/Classes/UJoystick.pas b/Game/Code/Classes/UJoystick.pas new file mode 100644 index 00000000..a2a06307 --- /dev/null +++ b/Game/Code/Classes/UJoystick.pas @@ -0,0 +1,124 @@ +unit UJoystick; + +interface + +uses SDL; + +type + TJoyButton = record + State: integer; + Enabled: boolean; + Type_: byte; + Sym: cardinal; + end; + + TJoyUnit = record + Button: array[0..15] of TJoyButton; + end; + + TJoy = class + constructor Create; + procedure Update; + end; + +var + Joy: TJoy; + JoyUnit: TJoyUnit; + SDL_Joy: PSDL_Joystick; + JoyEvent: TSDL_Event; + +implementation + +uses SysUtils; + +constructor TJoy.Create; +var + B, N: integer; +begin + //Old Corvus5 Method + {// joystick support + SDL_JoystickEventState(SDL_IGNORE); + SDL_InitSubSystem(SDL_INIT_JOYSTICK); + if SDL_NumJoysticks <> 1 then beep; + + SDL_Joy := SDL_JoystickOpen(0); + if SDL_Joy = nil then beep; + + if SDL_JoystickNumButtons(SDL_Joy) <> 16 then beep; + +// SDL_JoystickEventState(SDL_ENABLE); + // Events don't work - thay hang the whole application with SDL_JoystickEventState(SDL_ENABLE) + + // clear states + for B := 0 to 15 do + JoyUnit.Button[B].State := 1; + + // mapping + JoyUnit.Button[1].Enabled := true; + JoyUnit.Button[1].Type_ := SDL_KEYDOWN; + JoyUnit.Button[1].Sym := SDLK_RETURN; + JoyUnit.Button[2].Enabled := true; + JoyUnit.Button[2].Type_ := SDL_KEYDOWN; + JoyUnit.Button[2].Sym := SDLK_ESCAPE; + + JoyUnit.Button[12].Enabled := true; + JoyUnit.Button[12].Type_ := SDL_KEYDOWN; + JoyUnit.Button[12].Sym := SDLK_LEFT; + JoyUnit.Button[13].Enabled := true; + JoyUnit.Button[13].Type_ := SDL_KEYDOWN; + JoyUnit.Button[13].Sym := SDLK_DOWN; + JoyUnit.Button[14].Enabled := true; + JoyUnit.Button[14].Type_ := SDL_KEYDOWN; + JoyUnit.Button[14].Sym := SDLK_RIGHT; + JoyUnit.Button[15].Enabled := true; + JoyUnit.Button[15].Type_ := SDL_KEYDOWN; + JoyUnit.Button[15].Sym := SDLK_UP; + } + //New Sarutas method + SDL_JoystickEventState(SDL_IGNORE); + SDL_InitSubSystem(SDL_INIT_JOYSTICK); + if SDL_NumJoysticks < 1 then beep; + + SDL_Joy := SDL_JoystickOpen(0); + if SDL_Joy = nil then beep; + + N := SDL_JoystickNumButtons(SDL_Joy); + if N < 6 then beep; + + for B := 0 to 5 do begin + JoyUnit.Button[B].Enabled := true; + JoyUnit.Button[B].State := 1; + JoyUnit.Button[B].Type_ := SDL_KEYDOWN; + end; + + JoyUnit.Button[0].Sym := SDLK_UP; + JoyUnit.Button[1].Sym := SDLK_RIGHT; + JoyUnit.Button[2].Sym := SDLK_DOWN; + JoyUnit.Button[3].Sym := SDLK_LEFT; + + JoyUnit.Button[4].Sym := SDLK_RETURN; + JoyUnit.Button[5].Sym := SDLK_ESCAPE; +end; + +procedure TJoy.Update; +var + B: integer; +begin + SDL_JoystickUpdate; + + for B := 0 to 15 do begin + if (JoyUnit.Button[B].Enabled) and (JoyUnit.Button[B].State <> SDL_JoystickGetButton(SDL_Joy, B)) and (JoyUnit.Button[B].State = 0) then begin + JoyEvent.type_ := JoyUnit.Button[B].Type_; + JoyEvent.key.keysym.sym := JoyUnit.Button[B].Sym; + SDL_PushEvent(@JoyEvent); + end; + end; + + + for B := 0 to 15 do begin + JoyUnit.Button[B].State := SDL_JoystickGetButton(SDL_Joy, B); + end; + +end; + +end. diff --git a/Game/Code/Classes/ULCD.dcu b/Game/Code/Classes/ULCD.dcu new file mode 100644 index 00000000..8098a187 Binary files /dev/null and b/Game/Code/Classes/ULCD.dcu differ diff --git a/Game/Code/Classes/ULCD.pas b/Game/Code/Classes/ULCD.pas new file mode 100644 index 00000000..a127c689 --- /dev/null +++ b/Game/Code/Classes/ULCD.pas @@ -0,0 +1,287 @@ +unit ULCD; + +interface + +type + TLCD = class + private + Enabled: boolean; + Text: array[1..6] of string; + StartPos: integer; + LineBR: integer; + Position: integer; + procedure WriteCommand(B: byte); + procedure WriteData(B: byte); + procedure WriteString(S: string); + public + HalfInterface: boolean; + constructor Create; + procedure Enable; + procedure Clear; + procedure WriteText(Line: integer; S: string); + procedure MoveCursor(Line, Pos: integer); + procedure ShowCursor; + procedure HideCursor; + + // for 2x16 + procedure AddTextBR(S: string); + procedure MoveCursorBR(Pos: integer); + procedure ScrollUpBR; + procedure AddTextArray(Line:integer; S: string); + end; + +var + LCD: TLCD; + +const + Data = $378; // domyœlny adres portu + Status = Data + 1; + Control = Data + 2; + +implementation + +uses + SysUtils, zlportio, UTime; + +procedure TLCD.WriteCommand(B: Byte); +// Wysylanie komend sterujacych +begin + if not HalfInterface then begin + zlioportwrite(Control, 0, $02); + zlioportwrite(Data, 0, B); + zlioportwrite(Control, 0, $03); + end else begin + zlioportwrite(Control, 0, $02); + zlioportwrite(Data, 0, B and $F0); + zlioportwrite(Control, 0, $03); + + TimeSleep(0.1); + + zlioportwrite(Control, 0, $02); + zlioportwrite(Data, 0, (B * 16) and $F0); + zlioportwrite(Control, 0, $03); + end; + + if (B=1) or (B=2) then + Sleep(2) + else + TimeSleep(0.1); +end; + +procedure TLCD.WriteData(B: Byte); +// Wysylanie danych +begin + if not HalfInterface then begin + zlioportwrite(Control, 0, $06); + zlioportwrite(Data, 0, B); + zlioportwrite(Control, 0, $07); + end else begin + zlioportwrite(Control, 0, $06); + zlioportwrite(Data, 0, B and $F0); + zlioportwrite(Control, 0, $07); + + TimeSleep(0.1); + + zlioportwrite(Control, 0, $06); + zlioportwrite(Data, 0, (B * 16) and $F0); + zlioportwrite(Control, 0, $07); + end; + + TimeSleep(0.1); + Inc(Position); +end; + +procedure TLCD.WriteString(S: string); +// Wysylanie slow +var + I: integer; +begin + for I := 1 to Length(S) do + WriteData(Ord(S[I])); +end; + +constructor TLCD.Create; +begin +// +end; + +procedure TLCD.Enable; +var + A: byte; + B: byte; +begin + Enabled := true; + if not HalfInterface then + WriteCommand($38) + else begin + WriteCommand($33); + WriteCommand($32); + WriteCommand($28); + end; + +// WriteCommand($06); +// WriteCommand($0C); +// sleep(10); +end; + +procedure TLCD.Clear; +begin + if Enabled then begin + WriteCommand(1); + WriteCommand(2); + Text[1] := ''; + Text[2] := ''; + Text[3] := ''; + Text[4] := ''; + Text[5] := ''; + Text[6] := ''; + StartPos := 1; + LineBR := 1; + end; +end; + +procedure TLCD.WriteText(Line: integer; S: string); +begin + if Enabled then begin + if Line <= 2 then begin + MoveCursor(Line, 1); + WriteString(S); + end; + + Text[Line] := ''; + AddTextArray(Line, S); + end; +end; + +procedure TLCD.MoveCursor(Line, Pos: integer); +var + I: integer; +begin + if Enabled then begin + Pos := Pos + (Line-1) * 40; + + if Position > Pos then begin + WriteCommand(2); + for I := 1 to Pos-1 do + WriteCommand(20); + end; + + if Position < Pos then + for I := 1 to Pos - Position do + WriteCommand(20); + + Position := Pos; + end; +end; + +procedure TLCD.ShowCursor; +begin + if Enabled then begin + WriteCommand(14); + end; +end; + +procedure TLCD.HideCursor; +begin + if Enabled then begin + WriteCommand(12); + end; +end; + +procedure TLCD.AddTextBR(S: string); +var + Word: string; + W: integer; + P: integer; + L: integer; +begin + if Enabled then begin + if LineBR <= 6 then begin + L := LineBR; + P := Pos(' ', S); + + if L <= 2 then + MoveCursor(L, 1); + + while (L <= 6) and (P > 0) do begin + Word := Copy(S, 1, P); + if (Length(Text[L]) + Length(Word)-1) > 16 then begin + L := L + 1; + if L <= 2 then + MoveCursor(L, 1); + end; + + if L <= 6 then begin + if L <= 2 then + WriteString(Word); + AddTextArray(L, Word); + end; + + Delete(S, 1, P); + P := Pos(' ', S) + end; + + LineBR := L + 1; + end; + end; +end; + +procedure TLCD.MoveCursorBR(Pos: integer); +var + I: integer; + L: integer; +begin + if Enabled then begin + Pos := Pos - (StartPos-1); + if Pos <= Length(Text[1]) then + MoveCursor(1, Pos); + + if Pos > Length(Text[1]) then begin + // bez zawijania +// Pos := Pos - Length(Text[1]); +// MoveCursor(2, Pos); + + // z zawijaniem + Pos := Pos - Length(Text[1]); + ScrollUpBR; + MoveCursor(1, Pos); + end; + end; +end; + +procedure TLCD.ScrollUpBR; +var + T: array[1..5] of string; + SP: integer; + LBR: integer; +begin + if Enabled then begin + T[1] := Text[2]; + T[2] := Text[3]; + T[3] := Text[4]; + T[4] := Text[5]; + T[5] := Text[6]; + SP := StartPos + Length(Text[1]); + LBR := LineBR; + + Clear; + + StartPos := SP; + WriteText(1, T[1]); + WriteText(2, T[2]); + WriteText(3, T[3]); + WriteText(4, T[4]); + WriteText(5, T[5]); + LineBR := LBR-1; + end; +end; + +procedure TLCD.AddTextArray(Line: integer; S: string); +begin + if Enabled then begin + Text[Line] := Text[Line] + S; + end; +end; + +end. + diff --git a/Game/Code/Classes/ULCD.~pas b/Game/Code/Classes/ULCD.~pas new file mode 100644 index 00000000..a127c689 --- /dev/null +++ b/Game/Code/Classes/ULCD.~pas @@ -0,0 +1,287 @@ +unit ULCD; + +interface + +type + TLCD = class + private + Enabled: boolean; + Text: array[1..6] of string; + StartPos: integer; + LineBR: integer; + Position: integer; + procedure WriteCommand(B: byte); + procedure WriteData(B: byte); + procedure WriteString(S: string); + public + HalfInterface: boolean; + constructor Create; + procedure Enable; + procedure Clear; + procedure WriteText(Line: integer; S: string); + procedure MoveCursor(Line, Pos: integer); + procedure ShowCursor; + procedure HideCursor; + + // for 2x16 + procedure AddTextBR(S: string); + procedure MoveCursorBR(Pos: integer); + procedure ScrollUpBR; + procedure AddTextArray(Line:integer; S: string); + end; + +var + LCD: TLCD; + +const + Data = $378; // domyœlny adres portu + Status = Data + 1; + Control = Data + 2; + +implementation + +uses + SysUtils, zlportio, UTime; + +procedure TLCD.WriteCommand(B: Byte); +// Wysylanie komend sterujacych +begin + if not HalfInterface then begin + zlioportwrite(Control, 0, $02); + zlioportwrite(Data, 0, B); + zlioportwrite(Control, 0, $03); + end else begin + zlioportwrite(Control, 0, $02); + zlioportwrite(Data, 0, B and $F0); + zlioportwrite(Control, 0, $03); + + TimeSleep(0.1); + + zlioportwrite(Control, 0, $02); + zlioportwrite(Data, 0, (B * 16) and $F0); + zlioportwrite(Control, 0, $03); + end; + + if (B=1) or (B=2) then + Sleep(2) + else + TimeSleep(0.1); +end; + +procedure TLCD.WriteData(B: Byte); +// Wysylanie danych +begin + if not HalfInterface then begin + zlioportwrite(Control, 0, $06); + zlioportwrite(Data, 0, B); + zlioportwrite(Control, 0, $07); + end else begin + zlioportwrite(Control, 0, $06); + zlioportwrite(Data, 0, B and $F0); + zlioportwrite(Control, 0, $07); + + TimeSleep(0.1); + + zlioportwrite(Control, 0, $06); + zlioportwrite(Data, 0, (B * 16) and $F0); + zlioportwrite(Control, 0, $07); + end; + + TimeSleep(0.1); + Inc(Position); +end; + +procedure TLCD.WriteString(S: string); +// Wysylanie slow +var + I: integer; +begin + for I := 1 to Length(S) do + WriteData(Ord(S[I])); +end; + +constructor TLCD.Create; +begin +// +end; + +procedure TLCD.Enable; +var + A: byte; + B: byte; +begin + Enabled := true; + if not HalfInterface then + WriteCommand($38) + else begin + WriteCommand($33); + WriteCommand($32); + WriteCommand($28); + end; + +// WriteCommand($06); +// WriteCommand($0C); +// sleep(10); +end; + +procedure TLCD.Clear; +begin + if Enabled then begin + WriteCommand(1); + WriteCommand(2); + Text[1] := ''; + Text[2] := ''; + Text[3] := ''; + Text[4] := ''; + Text[5] := ''; + Text[6] := ''; + StartPos := 1; + LineBR := 1; + end; +end; + +procedure TLCD.WriteText(Line: integer; S: string); +begin + if Enabled then begin + if Line <= 2 then begin + MoveCursor(Line, 1); + WriteString(S); + end; + + Text[Line] := ''; + AddTextArray(Line, S); + end; +end; + +procedure TLCD.MoveCursor(Line, Pos: integer); +var + I: integer; +begin + if Enabled then begin + Pos := Pos + (Line-1) * 40; + + if Position > Pos then begin + WriteCommand(2); + for I := 1 to Pos-1 do + WriteCommand(20); + end; + + if Position < Pos then + for I := 1 to Pos - Position do + WriteCommand(20); + + Position := Pos; + end; +end; + +procedure TLCD.ShowCursor; +begin + if Enabled then begin + WriteCommand(14); + end; +end; + +procedure TLCD.HideCursor; +begin + if Enabled then begin + WriteCommand(12); + end; +end; + +procedure TLCD.AddTextBR(S: string); +var + Word: string; + W: integer; + P: integer; + L: integer; +begin + if Enabled then begin + if LineBR <= 6 then begin + L := LineBR; + P := Pos(' ', S); + + if L <= 2 then + MoveCursor(L, 1); + + while (L <= 6) and (P > 0) do begin + Word := Copy(S, 1, P); + if (Length(Text[L]) + Length(Word)-1) > 16 then begin + L := L + 1; + if L <= 2 then + MoveCursor(L, 1); + end; + + if L <= 6 then begin + if L <= 2 then + WriteString(Word); + AddTextArray(L, Word); + end; + + Delete(S, 1, P); + P := Pos(' ', S) + end; + + LineBR := L + 1; + end; + end; +end; + +procedure TLCD.MoveCursorBR(Pos: integer); +var + I: integer; + L: integer; +begin + if Enabled then begin + Pos := Pos - (StartPos-1); + if Pos <= Length(Text[1]) then + MoveCursor(1, Pos); + + if Pos > Length(Text[1]) then begin + // bez zawijania +// Pos := Pos - Length(Text[1]); +// MoveCursor(2, Pos); + + // z zawijaniem + Pos := Pos - Length(Text[1]); + ScrollUpBR; + MoveCursor(1, Pos); + end; + end; +end; + +procedure TLCD.ScrollUpBR; +var + T: array[1..5] of string; + SP: integer; + LBR: integer; +begin + if Enabled then begin + T[1] := Text[2]; + T[2] := Text[3]; + T[3] := Text[4]; + T[4] := Text[5]; + T[5] := Text[6]; + SP := StartPos + Length(Text[1]); + LBR := LineBR; + + Clear; + + StartPos := SP; + WriteText(1, T[1]); + WriteText(2, T[2]); + WriteText(3, T[3]); + WriteText(4, T[4]); + WriteText(5, T[5]); + LineBR := LBR-1; + end; +end; + +procedure TLCD.AddTextArray(Line: integer; S: string); +begin + if Enabled then begin + Text[Line] := Text[Line] + S; + end; +end; + +end. + diff --git a/Game/Code/Classes/ULanguage.dcu b/Game/Code/Classes/ULanguage.dcu new file mode 100644 index 00000000..2d5c3596 Binary files /dev/null and b/Game/Code/Classes/ULanguage.dcu differ diff --git a/Game/Code/Classes/ULanguage.pas b/Game/Code/Classes/ULanguage.pas new file mode 100644 index 00000000..bc3793e3 --- /dev/null +++ b/Game/Code/Classes/ULanguage.pas @@ -0,0 +1,222 @@ +unit ULanguage; + +interface + +type + TLanguageEntry = record + ID: string; + Text: string; + end; + + TLanguageList = record + Name: string; + {FileName: string; } + end; + + TLanguage = class + private + Entry: array of TLanguageEntry; //Entrys of Chosen Language + SEntry: array of TLanguageEntry; //Entrys of Standard Language + CEntry: array of TLanguageEntry; //Constant Entrys e.g. Version + Implode_Glue1, Implode_Glue2: String; + public + List: array of TLanguageList; + + constructor Create; + procedure LoadList; + function Translate(Text: String): String; + procedure ChangeLanguage(Language: String); + procedure AddConst(ID, Text: String); + procedure ChangeConst(ID, Text: String); + function Implode(Pieces: Array of String): String; + end; + +var + Language: TLanguage; + +implementation + +uses UPliki, UIni, IniFiles, Classes, SysUtils, Windows, ULog; + +//---------- +//Create - Construct Class then LoadList + Standard Language + Set Standard Implode Glues +//---------- +constructor TLanguage.Create; +var + I, J: Integer; +begin + LoadList; + + //Set Implode Glues for Backward Compatibility + Implode_Glue1 := ', '; + Implode_Glue2 := ' and '; + + if (Length(List) = 0) then //No Language Files Loaded -> Abort Loading + Log.CriticalError('Could not load any Language Files'); + + //Standard Language (If a Language File is Incomplete) + //Then use English Language + for I := 0 to high(List) do //Search for English Language + begin + //English Language Found -> Load + if Uppercase(List[I].Name) = 'ENGLISH' then + begin + ChangeLanguage('English'); + + SetLength(SEntry, Length(Entry)); + for J := low(Entry) to high(Entry) do + SEntry[J] := Entry[J]; + + SetLength(Entry, 0); + end; + + if (I = high(List)) then + Log.LogError('English Languagefile missing! No standard Translation loaded'); + end; + //Standard Language END + +end; + +//---------- +//LoadList - Parse the Language Dir searching Translations +//---------- +procedure TLanguage.LoadList; +var + SR: TSearchRec; // for parsing directory +begin + SetLength(List, 0); + SetLength(ILanguage, 0); + + if FindFirst(LanguagesPath + '*.ini', 0, SR) = 0 then begin + repeat + SetLength(List, Length(List)+1); + SetLength(ILanguage, Length(ILanguage)+1); + SR.Name := ChangeFileExt(SR.Name, ''); + + List[High(List)].Name := SR.Name; + ILanguage[High(ILanguage)] := SR.Name; + + until FindNext(SR) <> 0; + SysUtils.FindClose(SR); + end; // if FindFirst +end; + +//---------- +//ChangeLanguage - Load the specified LanguageFile +//---------- +procedure TLanguage.ChangeLanguage(Language: String); +var + IniFile: TIniFile; + E: integer; // entry + S: TStringList; +begin + SetLength(Entry, 0); + IniFile := TIniFile.Create(LanguagesPath + Language + '.ini'); + S := TStringList.Create; + + IniFile.ReadSectionValues('Text', S); + SetLength(Entry, S.Count); + for E := 0 to high(Entry) do + begin + if S.Names[E] = 'IMPLODE_GLUE1' then + Implode_Glue1 := S.ValueFromIndex[E]+ ' ' + else if S.Names[E] = 'IMPLODE_GLUE2' then + Implode_Glue2 := ' ' + S.ValueFromIndex[E] + ' '; + + Entry[E].ID := S.Names[E]; + Entry[E].Text := S.ValueFromIndex[E]; + end; + + S.Free; + IniFile.Free; +end; + +//---------- +//Translate - Translate the Text +//---------- +Function TLanguage.Translate(Text: String): String; +var + E: integer; // entry +begin + Result := Text; + + //Const Mod + for E := 0 to high(CEntry) do + if Text = CEntry[E].ID then + begin + Result := CEntry[E].Text; + exit; + end; + //Const Mod End + + for E := 0 to high(Entry) do + if Text = Entry[E].ID then + begin + Result := Entry[E].Text; + exit; + end; + + //Standard Language (If a Language File is Incomplete) + //Then use Standard Language + if Text = Result then + begin + for E := low(SEntry) to high(SEntry) do + if Text = SEntry[E].ID then + begin + Result := SEntry[E].Text; + exit; + end; + end; + //Standard Language END +end; + +//---------- +//AddConst - Add a Constant ID that will be Translated but not Loaded from the LanguageFile +//---------- +procedure TLanguage.AddConst (ID, Text: String); +begin + SetLength (CEntry, Length(CEntry) + 1); + CEntry[high(CEntry)].ID := ID; + CEntry[high(CEntry)].Text := Text; +end; + +//---------- +//ChangeConst - Change a Constant Value by ID +//---------- +procedure TLanguage.ChangeConst(ID, Text: String); +var + I: Integer; +begin + for I := 0 to high(CEntry) do + begin + if CEntry[I].ID = ID then + begin + CEntry[I].Text := Text; + Break; + end; + end; +end; + +//---------- +//Implode - Connect an Array of Strings with ' and ' or ', ' to one String +//---------- +function TLanguage.Implode(Pieces: Array of String): String; +var + I: Integer; +begin + Result := ''; + //Go through Pieces + for I := low(Pieces) to high(Pieces) do + begin + //Add Value + Result := Result + Pieces[I]; + + //Add Glue + if (I < high(Pieces) - 1) then + Result := Result + Implode_Glue1 + else if (I < high(Pieces)) then + Result := Result + Implode_Glue2; + end; +end; + +end. diff --git a/Game/Code/Classes/ULight.dcu b/Game/Code/Classes/ULight.dcu new file mode 100644 index 00000000..10ba61bc Binary files /dev/null and b/Game/Code/Classes/ULight.dcu differ diff --git a/Game/Code/Classes/ULight.pas b/Game/Code/Classes/ULight.pas new file mode 100644 index 00000000..967d2ea1 --- /dev/null +++ b/Game/Code/Classes/ULight.pas @@ -0,0 +1,116 @@ +unit ULight; +interface + +type + TLight = class + private + Enabled: boolean; + Light: array[0..7] of boolean; + LightTime: array[0..7] of real; // time to stop, need to call update to change state + LastTime: real; + public + constructor Create; + procedure Enable; + procedure SetState(State: integer); + procedure AutoSetState; + procedure TurnOn; + procedure TurnOff; + procedure LightOne(Number: integer; Time: real); + procedure Refresh; + end; + +var + Light: TLight; + +const + Data = $378; // default port address + Status = Data + 1; + Control = Data + 2; + +implementation + +uses + SysUtils, zlportio, UTime; + +constructor TLight.Create; +begin + Enabled := false; +end; + +procedure TLight.Enable; +begin + Enabled := true; + LastTime := GetTime; +end; + +procedure TLight.SetState(State: integer); +begin + if Enabled then + PortWriteB($378, State); +end; + +procedure TLight.AutoSetState; +var + State: integer; +begin + if Enabled then begin + State := 0; + if Light[0] then State := State + 2; + if Light[1] then State := State + 1; + // etc + SetState(State); + end; +end; + +procedure TLight.TurnOn; +begin + if Enabled then + SetState(3); +end; + +procedure TLight.TurnOff; +begin + if Enabled then + SetState(0); +end; + +procedure TLight.LightOne(Number: integer; Time: real); +begin + if Enabled then begin + if Light[Number] = false then begin + Light[Number] := true; + AutoSetState; + end; + + LightTime[Number] := GetTime + Time/1000; // [s] + end; +end; + +procedure TLight.Refresh; +var + Time: real; + TimeSkip: real; + L: integer; +begin + if Enabled then begin + Time := GetTime; + TimeSkip := Time - LastTime; + for L := 0 to 7 do begin + if Light[L] = true then begin + if LightTime[L] > Time then begin + // jest jeszcze zapas - bez zmian + //LightTime[L] := LightTime[L] - TimeSkip; + end else begin + // czas minal + Light[L] := false; + end; + end; + end; + LastTime := Time; + AutoSetState; + end; +end; + +end. + + diff --git a/Game/Code/Classes/ULog.dcu b/Game/Code/Classes/ULog.dcu new file mode 100644 index 00000000..1794325d Binary files /dev/null and b/Game/Code/Classes/ULog.dcu differ diff --git a/Game/Code/Classes/ULog.pas b/Game/Code/Classes/ULog.pas new file mode 100644 index 00000000..6bffa04e --- /dev/null +++ b/Game/Code/Classes/ULog.pas @@ -0,0 +1,227 @@ +unit ULog; + +interface + +uses Classes; + +type + TLog = class + BenchmarkTimeStart: array[0..7] of real; + BenchmarkTimeLength: array[0..7] of real;//TDateTime; + + FileBenchmark: TextFile; + FileBenchmarkO: boolean; // opened + FileAnalyze: TextFile; + FileAnalyzeO: boolean; // opened + FileError: TextFile; + FileErrorO: boolean; // opened + + Title: String; //Application Title + + // destuctor + destructor Free; + + // benchmark + procedure BenchmarkStart(Number: integer); + procedure BenchmarkEnd(Number: integer); + procedure LogBenchmark(Text: string; Number: integer); + + // analyze + procedure LogAnalyze(Text: string); + + // error + procedure LogError(Text: string); overload; + + //Critical Error (Halt + MessageBox) + procedure CriticalError(Text: string); + + // voice + procedure LogVoice(SoundNr: integer); + + // compability + procedure LogStatus(Log1, Log2: string); + procedure LogError(Log1, Log2: string); overload; + end; + +var + Log: TLog; + +implementation +uses UPliki, SysUtils, DateUtils, URecord, UTime, UIni, Windows; + +destructor TLog.Free; +begin + if FileBenchmarkO then CloseFile(FileBenchmark); +// if FileAnalyzeO then CloseFile(FileAnalyze); + if FileErrorO then CloseFile(FileError); +end; + +procedure TLog.BenchmarkStart(Number: integer); +begin + BenchmarkTimeStart[Number] := USTime.GetTime; //Time; +end; + +procedure TLog.BenchmarkEnd(Number: integer); +begin + BenchmarkTimeLength[Number] := USTime.GetTime {Time} - BenchmarkTimeStart[Number]; +end; + +procedure TLog.LogBenchmark(Text: string; Number: integer); +var + Minutes: integer; + Seconds: integer; + Miliseconds: integer; + + MinutesS: string; + SecondsS: string; + MilisecondsS: string; + + ValueText: string; +begin + if (ParamStr(1) = '-benchmark') then begin + if not FileBenchmarkO then begin + FileBenchmarkO := true; + AssignFile(FileBenchmark, LogPath + 'Benchmark.log'); + {$I-} + Rewrite(FileBenchmark); + if IOResult = 0 then FileBenchmarkO := true; + {$I+} + end; + + if FileBenchmarkO then begin + Miliseconds := Trunc(Frac(BenchmarkTimeLength[Number]) * 1000); + Seconds := Trunc(BenchmarkTimeLength[Number]) mod 60; + Minutes := Trunc((BenchmarkTimeLength[Number] - Seconds) / 60); +// ValueText := FloatToStr(BenchmarkTimeLength[Number]); + +{ ValueText := FloatToStr( + SecondOf(BenchmarkTimeLength[Number]) + MilliSecondOf(BenchmarkTimeLength[Number])/1000 + ); + if MinuteOf(BenchmarkTimeLength[Number]) >= 1 then + ValueText := IntToStr(MinuteOf(BenchmarkTimeLength[Number])) + ':' + ValueText; + WriteLn(FileBenchmark, Text + ': ' + ValueText + ' seconds');} + + if (Minutes = 0) and (Seconds = 0) then begin + MilisecondsS := IntToStr(Miliseconds); + ValueText := MilisecondsS + ' miliseconds'; + end; + + if (Minutes = 0) and (Seconds >= 1) then begin + MilisecondsS := IntToStr(Miliseconds); + while Length(MilisecondsS) < 3 do MilisecondsS := '0' + MilisecondsS; + + SecondsS := IntToStr(Seconds); + + ValueText := SecondsS + ',' + MilisecondsS + ' seconds'; + end; + + if Minutes >= 1 then begin + MilisecondsS := IntToStr(Miliseconds); + while Length(MilisecondsS) < 3 do MilisecondsS := '0' + MilisecondsS; + + SecondsS := IntToStr(Seconds); + while Length(SecondsS) < 2 do SecondsS := '0' + SecondsS; + + MinutesS := IntToStr(Minutes); + + ValueText := MinutesS + ':' + SecondsS + ',' + MilisecondsS + ' minutes'; + end; + + WriteLn(FileBenchmark, Text + ': ' + ValueText); + Flush(FileBenchmark); + end; + end; +end; + +procedure TLog.LogAnalyze(Text: string); +var + Seconds: integer; + Miliseconds: integer; + ValueText: string; +begin + if Ini.Debug = 1 then begin + + if not FileAnalyzeO then begin + AssignFile(FileAnalyze, LogPath + 'Analyze.log'); + {$I-} + Rewrite(FileAnalyze); + if IOResult = 0 then FileAnalyzeO := true; + {$I+} + end; + + if FileAnalyzeO then begin + WriteLn(FileAnalyze, Text); + Flush(FileAnalyze); // try to speed up + end; + + end; +end; + +procedure TLog.LogError(Text: string); +begin + if not FileErrorO then begin + FileErrorO := true; + AssignFile(FileError, LogPath + 'Error.log'); + {$I-} + Rewrite(FileError); + if IOResult = 0 then FileErrorO := true; + {$I+} + end; + + if FileErrorO then begin + WriteLn(FileError, Text); + Flush(FileError); + end; +end; + +procedure TLog.LogVoice(SoundNr: integer); +var + FileVoice: File; + FS: TFileStream; + FileName: string; + Num: integer; + BL: integer; +begin + for Num := 1 to 9999 do begin + FileName := IntToStr(Num); + while Length(FileName) < 4 do FileName := '0' + FileName; + FileName := LogPath + 'Voice' + FileName + '.raw'; + if not FileExists(FileName) then break + end; + + + FS := TFileStream.Create(FileName, fmCreate); + + for BL := 0 to High(Sound[SoundNr].BufferLong) do begin + Sound[SoundNr].BufferLong[BL].Seek(0, soBeginning); + FS.CopyFrom(Sound[SoundNr].BufferLong[BL], Sound[SoundNr].BufferLong[BL].Size); + end; + + FS.Free; +end; + +procedure TLog.LogStatus(Log1, Log2: string); +begin +//asd + LogError (Log2 + ': ' + Log1); +end; + +procedure TLog.LogError(Log1, Log2: string); +begin +//asd +end; + +procedure TLog.CriticalError(Text: string); +begin + //Write Error to Logfile: + LogError (Text); + + //Show Errormessage + Messagebox(0, PChar(Text), PChar(Title), MB_ICONERROR or MB_OK); + + //Exit Application + Halt; +end; + +end. + \ No newline at end of file diff --git a/Game/Code/Classes/ULyrics.dcu b/Game/Code/Classes/ULyrics.dcu new file mode 100644 index 00000000..3867c263 Binary files /dev/null and b/Game/Code/Classes/ULyrics.dcu differ diff --git a/Game/Code/Classes/ULyrics.pas b/Game/Code/Classes/ULyrics.pas new file mode 100644 index 00000000..c3b440bc --- /dev/null +++ b/Game/Code/Classes/ULyrics.pas @@ -0,0 +1,383 @@ +unit ULyrics; + +interface +uses SysUtils, OpenGL12, UMusic; + +type + TWord = record + X: real; + Y: real; + Size: real; + Width: real; + Text: string; + ColR: real; + ColG: real; + ColB: real; + Scale: real; + Done: real; + FontStyle: integer; + Italic: boolean; + Selected: boolean; + end; + + TLyric = class + private + AlignI: integer; + XR: real; + YR: real; + SizeR: real; + SelectedI: integer; + ScaleR: real; + StyleI: integer; // 0 - one selection, 1 - long selection, 2 - one selection with fade to normal text, 3 - long selection with fade with color from left + FontStyleI: integer; // font number + Word: array of TWord; + procedure SetX(Value: real); + procedure SetY(Value: real); + function GetClientX: real; + procedure SetAlign(Value: integer); + function GetSize: real; + procedure SetSize(Value: real); + procedure SetSelected(Value: integer); + procedure SetDone(Value: real); + procedure SetScale(Value: real); + procedure SetStyle(Value: integer); + procedure SetFStyle(Value: integer); + procedure Refresh; + procedure DrawNormal(W: integer); + procedure DrawPlain(W: integer); + procedure DrawScaled(W: integer); + procedure DrawSlide(W: integer); + public + ColR: real; + ColG: real; + ColB: real; + ColSR: real; + ColSG: real; + ColSB: real; + Italic: boolean; + Text: string; // LCD + + published + property X: real write SetX; + property Y: real write SetY; + property ClientX: real read GetClientX; + property Align: integer write SetAlign; + property Size: real read GetSize write SetSize; + property Selected: integer read SelectedI write SetSelected; + property Done: real write SetDone; + property Scale: real write SetScale; + property Style: integer write SetStyle; + property FontStyle: integer write SetFStyle; + procedure AddWord(Text: string); + procedure AddCzesc(NrCzesci: integer); + + function SelectedLetter: integer; // LCD + function SelectedLength: integer; // LCD + + procedure Clear; + procedure Draw; + + end; + +var + Lyric: TLyric; + +implementation +uses TextGL, UGraphic, UDrawTexture; + +procedure TLyric.SetX(Value: real); +begin + XR := Value; +end; + +procedure TLyric.SetY(Value: real); +begin + YR := Value; +end; + +function TLyric.GetClientX: real; +begin + Result := Word[0].X; +end; + +procedure TLyric.SetAlign(Value: integer); +begin + AlignI := Value; +// if AlignInt = 0 then beep; +end; + +function TLyric.GetSize: real; +begin + Result := SizeR; +end; + +procedure TLyric.SetSize(Value: real); +begin + SizeR := Value; +end; + +procedure TLyric.SetSelected(Value: integer); +var + W: integer; +begin + if (StyleI = 0) or (StyleI = 2) or (StyleI = 4) then begin + if (SelectedI > -1) and (SelectedI <= High(Word)) then begin + Word[SelectedI].Selected := false; + Word[SelectedI].ColR := ColR; + Word[SelectedI].ColG := ColG; + Word[SelectedI].ColB := ColB; + Word[SelectedI].Done := 0; + end; + + SelectedI := Value; + if (Value > -1) and (Value <= High(Word)) then begin + Word[Value].Selected := true; + Word[Value].ColR := ColSR; + Word[Value].ColG := ColSG; + Word[Value].ColB := ColSB; + Word[Value].Scale := ScaleR; + end; + end; + + if (StyleI = 1) or (StyleI = 3) then begin + if (SelectedI > -1) and (SelectedI <= High(Word)) then begin + for W := SelectedI to High(Word) do begin + Word[W].Selected := false; + Word[W].ColR := ColR; + Word[W].ColG := ColG; + Word[W].ColB := ColB; + Word[W].Done := 0; + end; + end; + + SelectedI := Value; + if (Value > -1) and (Value <= High(Word)) then begin + for W := 0 to Value do begin + Word[W].Selected := true; + Word[W].ColR := ColSR; + Word[W].ColG := ColSG; + Word[W].ColB := ColSB; + Word[W].Scale := ScaleR; + Word[W].Done := 1; + end; + end; + end; + + Refresh; +end; + +procedure TLyric.SetDone(Value: real); +var + W: integer; +begin + W := SelectedI; + if W > -1 then + Word[W].Done := Value; +end; + +procedure TLyric.SetScale(Value: real); +begin + ScaleR := Value; +end; + +procedure TLyric.SetStyle(Value: integer); +begin + StyleI := Value; +end; + +procedure TLyric.SetFStyle(Value: integer); +begin + FontStyleI := Value; +end; + +procedure TLyric.AddWord(Text: string); +var + WordNum: integer; +begin + WordNum := Length(Word); + SetLength(Word, WordNum + 1); + if WordNum = 0 then begin + Word[WordNum].X := XR; + end else begin + Word[WordNum].X := Word[WordNum - 1].X + Word[WordNum - 1].Width; + end; + + Word[WordNum].Y := YR; + Word[WordNum].Size := SizeR; + Word[WordNum].FontStyle := FontStyleI; // new + SetFontStyle(FontStyleI); + SetFontSize(SizeR); + Word[WordNum].Width := glTextWidth(pchar(Text)); + Word[WordNum].Text := Text; + Word[WordNum].ColR := ColR; + Word[WordNum].ColG := ColG; + Word[WordNum].ColB := ColB; + Word[WordNum].Scale := 1; + Word[WordNum].Done := 0; + Word[WordNum].Italic := Italic; + + Refresh; +end; + +procedure TLyric.AddCzesc(NrCzesci: integer); +var + N: integer; +begin + Clear; + for N := 0 to Czesci[0].Czesc[NrCzesci].HighNut do begin + Italic := Czesci[0].Czesc[NrCzesci].Nuta[N].FreeStyle; + AddWord(Czesci[0].Czesc[NrCzesci].Nuta[N].Tekst); + Text := Text + Czesci[0].Czesc[NrCzesci].Nuta[N].Tekst; + end; + Selected := -1; +end; + +procedure TLyric.Clear; +begin +{ ColR := Skin_FontR; + ColG := Skin_FontG; + ColB := Skin_FontB;} + SetLength(Word, 0); + Text := ''; + SelectedI := -1; +end; + +procedure TLyric.Refresh; +var + W: integer; + TotWidth: real; +begin + if AlignI = 1 then begin + TotWidth := 0; + for W := 0 to High(Word) do + TotWidth := TotWidth + Word[W].Width; + + Word[0].X := XR - TotWidth / 2; + for W := 1 to High(Word) do + Word[W].X := Word[W - 1].X + Word[W - 1].Width; + end; +end; + +procedure TLyric.Draw; +var + W: integer; +begin + case StyleI of + 0: + begin + for W := 0 to High(Word) do + DrawNormal(W); + end; + 1: + begin + for W := 0 to High(Word) do + DrawPlain(W); + end; + 2: // zoom + begin + for W := 0 to High(Word) do + if not Word[W].Selected then + DrawNormal(W); + + for W := 0 to High(Word) do + if Word[W].Selected then + DrawScaled(W); + end; + 3: // slide + begin + for W := 0 to High(Word) do begin + if not Word[W].Selected then + DrawNormal(W) + else + DrawSlide(W); + end; + end; + 4: // ball + begin + for W := 0 to High(Word) do + DrawNormal(W); + + for W := 0 to High(Word) do + if Word[W].Selected then begin + Tex_Ball.X := (Word[W].X - 10) + Word[W].Done * Word[W].Width; + Tex_Ball.Y := 480 - 10*sin(Word[W].Done * pi); + Tex_Ball.W := 20; + Tex_Ball.H := 20; + DrawTexture(Tex_Ball); + end; + end; + end; // case +end; + +procedure TLyric.DrawNormal(W: integer); +begin + SetFontStyle(Word[W].FontStyle); + SetFontPos(Word[W].X+ 10*ScreenX, Word[W].Y); + SetFontSize(Word[W].Size); + SetFontItalic(Word[W].Italic); + glColor3f(Word[W].ColR, Word[W].ColG, Word[W].ColB); + glPrint(pchar(Word[W].Text)); +end; + +procedure TLyric.DrawPlain(W: integer); +var + D: real; +begin + D := Word[W].Done; // przyrost + + SetFontStyle(Word[W].FontStyle); + SetFontPos(Word[W].X, Word[W].Y); + SetFontSize(Word[W].Size); + SetFontItalic(Word[W].Italic); + + if D = 0 then + glColor3f(ColR, ColG, ColB) + else + glColor3f(ColSR, ColSG, ColSB); + + glPrint(pchar(Word[W].Text)); +end; + +procedure TLyric.DrawScaled(W: integer); +var + D: real; +begin + // previous plus dynamic scaling effect + D := 1-Word[W].Done; // przyrost + SetFontStyle(Word[W].FontStyle); + SetFontPos(Word[W].X - D * Word[W].Width * (Word[W].Scale - 1) / 2 + (D+1)*10*ScreenX, Word[W].Y - D * 1.5 * Word[W].Size *(Word[W].Scale - 1)); + SetFontSize(Word[W].Size + D * (Word[W].Size * Word[W].Scale - Word[W].Size)); + SetFontItalic(Word[W].Italic); + glColor3f(Word[W].ColR, Word[W].ColG, Word[W].ColB); + glPrint(pchar(Word[W].Text)) +end; + +procedure TLyric.DrawSlide(W: integer); +var + D: real; +begin + D := Word[W].Done; // przyrost + SetFontStyle(Word[W].FontStyle); + SetFontPos(Word[W].X, Word[W].Y); + SetFontSize(Word[W].Size); + SetFontItalic(Word[W].Italic); + glColor3f(Word[W].ColR, Word[W].ColG, Word[W].ColB); + glPrintDone(pchar(Word[W].Text), D, ColR, ColG, ColB); +end; + +function TLyric.SelectedLetter; // LCD +var + W: integer; +begin + Result := 1; + + for W := 0 to SelectedI-1 do + Result := Result + Length(Word[W].Text); +end; + +function TLyric.SelectedLength: integer; // LCD +begin + Result := Length(Word[SelectedI].Text); +end; + +end. diff --git a/Game/Code/Classes/UMain.dcu b/Game/Code/Classes/UMain.dcu new file mode 100644 index 00000000..3a2edf09 Binary files /dev/null and b/Game/Code/Classes/UMain.dcu differ diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas new file mode 100644 index 00000000..3ef65e1d --- /dev/null +++ b/Game/Code/Classes/UMain.pas @@ -0,0 +1,673 @@ +unit UMain; + +interface +uses SDL, UGraphic, UMusic, URecord, UTime, SysUtils, UDisplay, UIni, ULog, ULyrics, UScreenSing, + OpenGL12, zlportio {you can disable it and all PortWriteB calls}, ULCD, ULight, UThemes; + +type + TPlayer = record + Name: string; + + Score: real; + ScoreLine: real; + ScoreGolden: real; + + ScoreI: integer; + ScoreLineI: integer; + ScoreGoldenI: integer; + ScoreTotalI: integer; + + + + //SingBar Mod + ScoreLast: Real;//Last Line Score + ScorePercent: integer;//Aktual Fillstate of the SingBar + ScorePercentTarget: integer;//Target Fillstate of the SingBar + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + LineBonus_PosX: integer; + LineBonus_PosY: integer; + LineBonus_Alpha: Single; + LineBonus_Visible: boolean; + LineBonus_Text: string; + LineBonus_Color: TRGB; + + //Variable vor Positioning -> Set on ScreenShow, different when Playercount Changes + LineBonus_TargetX: integer; + LineBonus_TargetY: integer; + LineBonus_StartX: integer; + LineBonus_StartY: integer; + //PhrasenBonus - Line Bonus Mod End + + + + +// Meter: real; + + HighNut: integer; + IlNut: integer; + Nuta: array of record + Start: integer; + Dlugosc: integer; + Detekt: real; // dokladne miejsce, w ktorym wykryto ta nute + Ton: real; + Perfect: boolean; // true if the note matches the original one, lit the star + + + + // Half size Notes Patch + Hit: boolean; // true if the note Hits the Line + //end Half size Notes Patch + + + + end; + end; + + +var + OGL: Boolean; + Done: Boolean; + Event: TSDL_event; + FileName: string; + Restart: boolean; + + // gracz i jego nuty + Player: array of TPlayer; + PlayersPlay: integer; + + +procedure MainLoop; +procedure CheckEvents; +procedure Sing(Sender: TScreenSing); +procedure NewSentence(Sender: TScreenSing); +procedure NewBeat(Sender: TScreenSing); // executed when on then new beat +procedure NewBeatC(Sender: TScreenSing); // executed when on then new beat for click +procedure NewBeatD(Sender: TScreenSing); // executed when on then new beat for detection +//procedure NewHalf; // executed when in the half between beats +procedure NewNote(Sender: TScreenSing); // detect note +function GetMidBeat(Time: real): real; +function GetTimeFromBeat(Beat: integer): real; +procedure ClearScores(PlayerNum: integer); + +implementation +uses USongs, UJoystick, math; + +procedure MainLoop; +var + Delay: integer; +begin + SDL_EnableKeyRepeat(125, 125); + While not Done do + Begin + // joypad + if Ini.Joypad = 1 then + Joy.Update; + + // keyboard events + CheckEvents; + + // display + Display.Draw; + SwapBuffers; + + // light + Light.Refresh; + + // delay + CountMidTime; +// if 1000*TimeMid > 100 then beep; + Delay := Floor(1000 / 100 - 1000 * TimeMid); + if Delay >= 1 then + SDL_Delay(Delay); // dynamic, maximum is 100 fps + CountSkipTime; + + // reinitialization of graphics + if Restart then begin + Reinitialize3D; + Restart := false; + end; + + End; + UnloadOpenGL; +End; + +Procedure CheckEvents; +//var +// p: pointer; +Begin + if not Assigned(Display.NextScreen) then + While SDL_PollEvent( @event ) = 1 Do + Begin +// beep; + Case Event.type_ Of + SDL_QUITEV: done := true; +{ SDL_MOUSEBUTTONDOWN: + With Event.button Do + Begin + If State = SDL_BUTTON_LEFT Then + Begin + // + End; + End; // With} + SDL_KEYDOWN: + begin + if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True)) then +// if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.scancode, True)) then + done := true; // exit game + end; +// SDL_JOYAXISMOTION: +// begin +// beep +// end; + SDL_JOYBUTTONDOWN: + begin + beep + end; + End; // Case Event.type_ + End; // While +End; // CheckEvents + +function GetTimeForBeats(BPM, Beats: real): real; +begin + Result := 60 / BPM * Beats; +end; + +function GetBeats(BPM, msTime: real): real; +begin + Result := BPM * msTime / 60; +end; + +procedure GetMidBeatSub(BPMNum: integer; var Time: real; var CurBeat: real); +var + NewTime: real; +begin + if High(AktSong.BPM) = BPMNum then begin + // last BPM + CurBeat := AktSong.BPM[BPMNum].StartBeat + GetBeats(AktSong.BPM[BPMNum].BPM, Time); + Time := 0; + end else begin + // not last BPM + // count how much time is it for start of the new BPM and store it in NewTime + NewTime := GetTimeForBeats(AktSong.BPM[BPMNum].BPM, AktSong.BPM[BPMNum+1].StartBeat - AktSong.BPM[BPMNum].StartBeat); + + // compare it to remaining time + if (Time - NewTime) > 0 then begin + // there is still remaining time + CurBeat := AktSong.BPM[BPMNum].StartBeat; + Time := Time - NewTime; + end else begin + // there is no remaining time + CurBeat := AktSong.BPM[BPMNum].StartBeat + GetBeats(AktSong.BPM[BPMNum].BPM, Time); + Time := 0; + end; // if + end; // if +end; + +function GetMidBeat(Time: real): real; +var + CurBeat: real; + CurBPM: integer; +// TopBeat: real; +// TempBeat: real; +// TempTime: real; +begin + Result := 0; + if Length(AktSong.BPM) = 1 then Result := Time * AktSong.BPM[0].BPM / 60; + + (* 2 BPMs *) +{ if Length(AktSong.BPM) > 1 then begin + (* new system *) + CurBeat := 0; + TopBeat := GetBeats(AktSong.BPM[0].BPM, Time); + if TopBeat > AktSong.BPM[1].StartBeat then begin + // analyze second BPM + Time := Time - GetTimeForBeats(AktSong.BPM[0].BPM, AktSong.BPM[1].StartBeat - CurBeat); + CurBeat := AktSong.BPM[1].StartBeat; + TopBeat := GetBeats(AktSong.BPM[1].BPM, Time); + Result := CurBeat + TopBeat; + + end else begin + (* pierwszy przedzial *) + Result := TopBeat; + end; + end; // if} + + (* more BPMs *) + if Length(AktSong.BPM) > 1 then begin + + CurBeat := 0; + CurBPM := 0; + while (Time > 0) do begin + GetMidBeatSub(CurBPM, Time, CurBeat); + Inc(CurBPM); + end; + + Result := CurBeat; + end; // if +end; + +function GetTimeFromBeat(Beat: integer): real; +var + CurBPM: integer; +begin + Result := 0; + if Length(AktSong.BPM) = 1 then Result := AktSong.GAP / 1000 + Beat * 60 / AktSong.BPM[0].BPM; + + (* more BPMs *) + if Length(AktSong.BPM) > 1 then begin + Result := AktSong.GAP / 1000; + CurBPM := 0; + while (CurBPM <= High(AktSong.BPM)) and (Beat > AktSong.BPM[CurBPM].StartBeat) do begin + if (CurBPM < High(AktSong.BPM)) and (Beat >= AktSong.BPM[CurBPM+1].StartBeat) then begin + // full range + Result := Result + (60 / AktSong.BPM[CurBPM].BPM) * (AktSong.BPM[CurBPM+1].StartBeat - AktSong.BPM[CurBPM].StartBeat); + end; + + if (CurBPM = High(AktSong.BPM)) or (Beat < AktSong.BPM[CurBPM+1].StartBeat) then begin + // in the middle + Result := Result + (60 / AktSong.BPM[CurBPM].BPM) * (Beat - AktSong.BPM[CurBPM].StartBeat); + end; + Inc(CurBPM); + end; + +{ while (Time > 0) do begin + GetMidBeatSub(CurBPM, Time, CurBeat); + Inc(CurBPM); + end;} + end; // if} +end; + +procedure Sing(Sender: TScreenSing); +var + Pet: integer; + PetGr: integer; + CP: integer; + Done: real; + N: integer; +begin + Czas.Teraz := Czas.Teraz + TimeSkip; + + Czas.OldBeat := Czas.AktBeat; + Czas.MidBeat := GetMidBeat(Czas.Teraz - (AktSong.Gap{ + 90 I've forgotten for what it is}) / 1000); // new system with variable BPM in function + Czas.AktBeat := Floor(Czas.MidBeat); + +// Czas.OldHalf := Czas.AktHalf; +// Czas.MidHalf := Czas.MidBeat + 0.5; +// Czas.AktHalf := Floor(Czas.MidHalf); + + Czas.OldBeatC := Czas.AktBeatC; + Czas.MidBeatC := GetMidBeat(Czas.Teraz - (AktSong.Gap) / 1000); + Czas.AktBeatC := Floor(Czas.MidBeatC); + + Czas.OldBeatD := Czas.AktBeatD; + Czas.MidBeatD := -0.5+GetMidBeat(Czas.Teraz - (AktSong.Gap + 120 + 20) / 1000); // MidBeat with addition GAP + Czas.AktBeatD := Floor(Czas.MidBeatD); + Czas.FracBeatD := Frac(Czas.MidBeatD); + + // sentences routines + for PetGr := 0 to 0 do begin;//High(Gracz) do begin + CP := PetGr; + // ustawianie starej czesci + Czas.OldCzesc := Czesci[CP].Akt; + + // wybieranie aktualnej czesci + for Pet := 0 to Czesci[CP].High do + if Czas.AktBeat >= Czesci[CP].Czesc[Pet].Start then Czesci[CP].Akt := Pet; + + // czysczenie nut gracza, gdy to jest nowa plansza + // (optymizacja raz na halfbeat jest zla) + if Czesci[CP].Akt <> Czas.OldCzesc then NewSentence(Sender); + + end; // for PetGr + + // wykonuje operacje raz na beat + if (Czas.AktBeat >= 0) and (Czas.OldBeat <> Czas.AktBeat) then + NewBeat(Sender); + + // make some operations on clicks + if {(Czas.AktBeatC >= 0) and }(Czas.OldBeatC <> Czas.AktBeatC) then + NewBeatC(Sender); + + // make some operations when detecting new voice pitch + if (Czas.AktBeatD >= 0) and (Czas.OldBeatD <> Czas.AktBeatD) then + NewBeatD(Sender); + + // wykonuje operacje w polowie beatu +// if (Czas.AktHalf >= 1) and (Czas.OldHalf <> Czas.AktHalf) then +// NewHalf; + + // plynnie przesuwa text + Done := 1; + for N := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Start <= Czas.MidBeat) + and (Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Start + Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Dlugosc >= Czas.MidBeat) then + Done := (Czas.MidBeat - Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Start) / (Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Dlugosc); + + N := Czesci[0].Czesc[Czesci[0].Akt].HighNut; + + // wylacza ostatnia nute po przejsciu + if (Ini.LyricsEffect = 1) and (Done = 1) and + (Czas.MidBeat > Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Start + Czesci[0].Czesc[Czesci[0].Akt].Nuta[N].Dlugosc) + then Sender.LyricMain.Selected := -1; + + if Done > 1 then Done := 1; + Sender.LyricMain.Done := Done; + + // use Done with LCD +{ with ScreenSing do begin + if LyricMain.Selected >= 0 then begin + LCD.MoveCursor(1, LyricMain.SelectedLetter + Round((LyricMain.SelectedLength-1) * Done)); + LCD.ShowCursor; + end; + end;} + + +end; + +procedure NewSentence(Sender: TScreenSing); +var +G: Integer; +begin + // czyszczenie nut graczy + for G := 0 to High(Player) do begin + Player[G].IlNut := 0; + Player[G].HighNut := -1; + SetLength(Player[G].Nuta, 0); + end; + + // wstawianie tekstow + with Sender do begin + LyricMain.AddCzesc(Czesci[0].Akt); + if Czesci[0].Akt < Czesci[0].High then + LyricSub.AddCzesc(Czesci[0].Akt+1) + else + LyricSub.Clear; + end; + + Sender.UpdateLCD; +end; + +procedure NewBeat(Sender: TScreenSing); +var + Pet: integer; +// TempBeat: integer; +begin + // ustawia zaznaczenie tekstu +// SingScreen.LyricMain.Selected := -1; + for Pet := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Start = Czas.AktBeat) then begin + // operates on currently beated note + Sender.LyricMain.Selected := Pet; + +// LCD.MoveCursor(1, ScreenSing.LyricMain.SelectedLetter); +// LCD.ShowCursor; + + LCD.MoveCursorBR(Sender.LyricMain.SelectedLetter); + LCD.ShowCursor; + + end; +end; + +procedure NewBeatC; +var + Pet: integer; +// LPT_1: integer; +// LPT_2: integer; +begin +// LPT_1 := 1; +// LPT_2 := 1; + + // beat click + if (Ini.BeatClick = 1) and ((Czas.AktBeatC + Czesci[0].Resolution + Czesci[0].NotesGAP) mod Czesci[0].Resolution = 0) then + Music.PlayClick; + + // debug system on LPT + if ((Czas.AktBeatC + Czesci[0].Resolution + Czesci[0].NotesGAP) mod Czesci[0].Resolution = 0) then begin + //LPT_1 := 0; +// Light.LightOne(0, 150); + + Light.LightOne(1, 200); // beat light + if ParamStr(1) = '-doublelights' then + Light.LightOne(0, 200); // beat light + + +{ if ((Czas.AktBeatC + Czesci[0].Resolution + Czesci[0].NotesGAP) mod (Czesci[0].Resolution * 2) = 0) then + Light.LightOne(0, 150) + else + Light.LightOne(1, 150)} + end; + + for Pet := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Start = Czas.AktBeatC) then begin + // click assist + if Ini.ClickAssist = 1 then + Music.PlayClick; + + //LPT_2 := 0; + if ParamStr(1) <> '-doublelights' then + Light.LightOne(0, 150); //125 + + + // drum machine +(* TempBeat := Czas.AktBeat;// + 2; + if (TempBeat mod 8 = 0) then Music.PlayDrum; + if (TempBeat mod 8 = 4) then Music.PlayClap; +// if (TempBeat mod 4 = 2) then Music.PlayHihat; + if (TempBeat mod 4 <> 0) then Music.PlayHihat;*) + end; + + //PortWriteB($378, LPT_1 + LPT_2 * 2); // 0 zapala +end; + +procedure NewBeatD(Sender: TScreenSing); +begin + NewNote(Sender); +end; + +//procedure NewHalf; +//begin +// NewNote; +//end; + +procedure NewNote(Sender: TScreenSing); +var + CP: integer; // current player + S: integer; // sentence + SMin: integer; + SMax: integer; + SDet: integer; // temporary: sentence of detected note + Pet: integer; + Mozna: boolean; + Nowa: boolean; + Range: integer; + NoteHit:boolean; +begin +// Log.LogStatus('Beat ' + IntToStr(Czas.AktBeat) + ' HalfBeat ' + IntToStr(Czas.AktHalf), 'NewBeat'); +// beep; + + // analizuje dla obu graczy ten sam sygnal (Sound.OneSrcForBoth) + // albo juz lepiej nie + for CP := 0 to PlayersPlay-1 do begin + + // analyze buffer + Sound[CP].AnalizujBufor; + + // adds some noise +// Czas.Ton := Czas.Ton + Round(Random(3)) - 1; + + // 0.5.0: count min and max sentence range for checking (detection is delayed to the notes we see on the screen) + SMin := Czesci[0].Akt-1; + if SMin < 0 then SMin := 0; + SMax := Czesci[0].Akt; + + // check if we can add new note + Mozna := false; + for S := SMin to SMax do + for Pet := 0 to Czesci[0].Czesc[S].HighNut do + if ((Czesci[0].Czesc[S].Nuta[Pet].Start <= Czas.AktBeatD) + and (Czesci[0].Czesc[S].Nuta[Pet].Start + Czesci[0].Czesc[S].Nuta[Pet].Dlugosc - 1 >= Czas.AktBeatD)) + and (not Czesci[0].Czesc[S].Nuta[Pet].FreeStyle) // but don't allow when it's FreeStyle note + and (Czesci[0].Czesc[S].Nuta[Pet].Dlugosc > 0) // and make sure the note lenghts is at least 1 + then begin + SDet := S; + Mozna := true; + Break; + end; + + S := SDet; + + + + + +// Czas.SzczytJest := true; +// Czas.Ton := 27; + + // gdy moze, to dodaje nute + if (Sound[CP].SzczytJest) and (Mozna) then begin + // operowanie na ostatniej nucie + for Pet := 0 to Czesci[0].Czesc[S].HighNut do + if (Czesci[0].Czesc[S].Nuta[Pet].Start <= Czas.OldBeatD+1) + and (Czesci[0].Czesc[S].Nuta[Pet].Start + + Czesci[0].Czesc[S].Nuta[Pet].Dlugosc > Czas.OldBeatD+1) then begin + // to robi, tylko dla pary nut (oryginalnej i gracza) + + // przesuwanie tonu w odpowiednia game + while (Sound[CP].Ton - Czesci[0].Czesc[S].Nuta[Pet].Ton > 6) do + Sound[CP].Ton := Sound[CP].Ton - 12; + while (Sound[CP].Ton - Czesci[0].Czesc[S].Nuta[Pet].Ton < -6) do + Sound[CP].Ton := Sound[CP].Ton + 12; + + // Half size Notes Patch + NoteHit := false; + + //if Ini.Difficulty = 0 then Range := 2; + //if Ini.Difficulty = 1 then Range := 1; + //if Ini.Difficulty = 2 then Range := 0; + Range := 2 - Ini.Difficulty; + if abs(Czesci[0].Czesc[S].Nuta[Pet].Ton - Sound[CP].Ton) <= Range then begin + Sound[CP].Ton := Czesci[0].Czesc[S].Nuta[Pet].Ton; + + + // Half size Notes Patch + NoteHit := true; + + + if (Ini.LineBonus = 0) then + begin + // add points without LineBonus + case Czesci[0].Czesc[S].Nuta[Pet].Wartosc of + 1: Player[CP].Score := Player[CP].Score + 10000 / Czesci[0].Wartosc * + Czesci[0].Czesc[S].Nuta[Pet].Wartosc; + 2: Player[CP].ScoreGolden := Player[CP].ScoreGolden + 10000 / Czesci[0].Wartosc * + Czesci[0].Czesc[S].Nuta[Pet].Wartosc; + end; + end + else + begin + // add points with Line Bonus + case Czesci[0].Czesc[S].Nuta[Pet].Wartosc of + 1: Player[CP].Score := Player[CP].Score + 9000 / Czesci[0].Wartosc * + Czesci[0].Czesc[S].Nuta[Pet].Wartosc; + 2: Player[CP].ScoreGolden := Player[CP].ScoreGolden + 9000 / Czesci[0].Wartosc * + Czesci[0].Czesc[S].Nuta[Pet].Wartosc; + end; + end; + + Player[CP].ScoreI := Floor(Player[CP].Score / 10) * 10; + Player[CP].ScoreGoldenI := Floor(Player[CP].ScoreGolden / 10) * 10; + + Player[CP].ScoreTotalI := Player[CP].ScoreI + Player[CP].ScoreGoldenI + Player[CP].ScoreLineI; + end; + + end; // operowanie + + // sprawdzanie czy to nowa nuta, czy przedluzenie + if S = SMax then begin + Nowa := true; + // jezeli ostatnia ma ten sam ton + if (Player[CP].IlNut > 0 ) and (Player[CP].Nuta[Player[CP].HighNut].Ton = Sound[CP].Ton) + and (Player[CP].Nuta[Player[CP].HighNut].Start + Player[CP].Nuta[Player[CP].HighNut].Dlugosc = Czas.AktBeatD) + then Nowa := false; + // jezeli jest jakas nowa nuta na sprawdzanym beacie + for Pet := 0 to Czesci[0].Czesc[S].HighNut do + if (Czesci[0].Czesc[S].Nuta[Pet].Start = Czas.AktBeatD) then + Nowa := true; + + // dodawanie nowej nuty + if Nowa then begin + // nowa nuta + Player[CP].IlNut := Player[CP].IlNut + 1; + Player[CP].HighNut := Player[CP].HighNut + 1; + SetLength(Player[CP].Nuta, Player[CP].IlNut); + Player[CP].Nuta[Player[CP].HighNut].Start := Czas.AktBeatD; + Player[CP].Nuta[Player[CP].HighNut].Dlugosc := 1; + Player[CP].Nuta[Player[CP].HighNut].Ton := Sound[CP].Ton; // Ton || TonDokl + Player[CP].Nuta[Player[CP].HighNut].Detekt := Czas.MidBeat; + + + // Half Note Patch + Player[CP].Nuta[Player[CP].HighNut].Hit := NoteHit; + + + // Log.LogStatus('Nowa Nuta ' + IntToStr(Gracz.Nuta[Gracz.HighNut].Start), 'NewBeat'); + + end else begin + // przedluzenie nuty + Player[CP].Nuta[Player[CP].HighNut].Dlugosc := Player[CP].Nuta[Player[CP].HighNut].Dlugosc + 1; + end; + + + // check for perfect note and then lit the star (on Draw) + for Pet := 0 to Czesci[0].Czesc[S].HighNut do + if (Czesci[0].Czesc[S].Nuta[Pet].Start = Player[CP].Nuta[Player[CP].HighNut].Start) + and (Czesci[0].Czesc[S].Nuta[Pet].Dlugosc = Player[CP].Nuta[Player[CP].HighNut].Dlugosc) + and (Czesci[0].Czesc[S].Nuta[Pet].Ton = Player[CP].Nuta[Player[CP].HighNut].Ton) then begin + Player[CP].Nuta[Player[CP].HighNut].Perfect := true; + end; + + end;// else beep; // if S = SMax + + end; // if moze + end; // for CP +// Log.LogStatus('EndBeat', 'NewBeat'); + +//On Sentence End -> For LineBonus + SingBar +if (sDet >= low(Czesci[0].Czesc)) AND (sDet <= high(Czesci[0].Czesc)) then +if ((Czesci[0].Czesc[SDet].Nuta[Czesci[0].Czesc[SDet].HighNut].Start + Czesci[0].Czesc[SDet].Nuta[Czesci[0].Czesc[SDet].HighNut].Dlugosc - 1) = Czas.AktBeatD) then + Sender.onSentenceEnd(sDet); + +end; + +procedure ClearScores(PlayerNum: integer); +begin + Player[PlayerNum].Score := 0; + Player[PlayerNum].ScoreI := 0; + Player[PlayerNum].ScoreLine := 0; + Player[PlayerNum].ScoreLineI := 0; + Player[PlayerNum].ScoreGolden := 0; + Player[PlayerNum].ScoreGoldenI := 0; + Player[PlayerNum].ScoreTotalI := 0; + + + //SingBar Mod + Player[PlayerNum].ScoreLast := 0; + Player[PlayerNum].ScorePercent := 50;// Sets to 50% when song starts + Player[PlayerNum].ScorePercentTarget := 50;// Sets to 50% when song starts + //end SingBar Mod + + //PhrasenBonus - Line Bonus Mod + Player[PlayerNum].LineBonus_Visible := False; //Hide Line Bonus + Player[PlayerNum].LineBonus_Alpha := 0; + Player[PlayerNum].LineBonus_TargetX := 70 + PlayerNum*500; + Player[PlayerNum].LineBonus_TargetY := 30; + //PhrasenBonus - Line Bonus Mod End + + + +end; + +end. + diff --git a/Game/Code/Classes/UMusic.dcu b/Game/Code/Classes/UMusic.dcu new file mode 100644 index 00000000..f3116f8b Binary files /dev/null and b/Game/Code/Classes/UMusic.dcu differ diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas new file mode 100644 index 00000000..db1675c5 --- /dev/null +++ b/Game/Code/Classes/UMusic.pas @@ -0,0 +1,783 @@ +unit UMusic; + +interface + +uses Classes, MPlayer, Windows, Messages, SysUtils, Forms, ULog, USongs, Bass;//, DXSounds; + +procedure InitializeSound; + +type + TSoundCard = record + Name: string; + Source: array of string; + end; + + TFFTData = array [0..256] of Single; + + TCustomSoundEntry = record + Filename: String; + Handle: hStream; + end; + + + TMusic = class + private +// MediaPlayer: TMediaPlayer; // It will be replaced by another component; +{ MediaPlayerStart: TMediaPlayer; // or maybe not if done this way ;) + MediaPlayerBack: TMediaPlayer; + MediaPlayerSwoosh: TMediaPlayer; + MediaPlayerChange: TMediaPlayer; + MediaPlayerOption: TMediaPlayer; + MediaPlayerClick: TMediaPlayer; + MediaPlayerDrum: TMediaPlayer; + MediaPlayerHihat: TMediaPlayer; + MediaPlayerClap: TMediaPlayer; + MediaPlayerShuffle: TMediaPlayer;} + BassStart: hStream; // Wait, I've replaced this with BASS + BassBack: hStream; // It has almost all features we need + BassSwoosh: hStream; + BassChange: hStream; // Almost? It aleady has them all :) + BassOption: hStream; + BassClick: hStream; + BassDrum: hStream; + BassHihat: hStream; + BassClap: hStream; + BassShuffle: hStream; + + //Custom Sounds + CustomSounds: array of TCustomSoundEntry; + + + Loaded: boolean; + Loop: boolean; +// DXSound: TDXSound; +// Player: TcmxMp3; + public + Bass: hStream; + +// SoundCard: array of TSoundCard; + procedure InitializePlayback; + procedure InitializeRecord; + procedure SetVolume(Volume: integer); + procedure SetLoop(Enabled: boolean); + function Open(Name: string): boolean; // true if succeed + procedure Rewind; + procedure MoveTo(Time: real); + procedure Play; + procedure Pause; //Pause Mod + procedure Stop; + procedure Close; + function Finished: boolean; + function Length: real; + function Position: real; + procedure PlayStart; + procedure PlayBack; + procedure PlaySwoosh; + procedure PlayChange; + procedure PlayOption; + procedure PlayClick; + procedure PlayDrum; + procedure PlayHihat; + procedure PlayClap; + procedure PlayShuffle; + procedure StopShuffle; + procedure CaptureStart; + procedure CaptureStop; + procedure CaptureCard(RecordI, PlayerLeft, PlayerRight: byte); + procedure StopCard(Card: byte); + function LoadPlayerFromFile(var MediaPlayer: TMediaPlayer; Name: string): boolean; + function LoadSoundFromFile(var hStream: hStream; Name: string): boolean; + + //Equalizer + function GetFFTData: TFFTData; + + //Custom Sounds + function LoadCustomSound(const Filename: String): Cardinal; + procedure PlayCustomSound(const Index: Cardinal); + +end; + +const + RecordSystem = 1; + +type + TMuzyka = record + Path: string; + Start: integer; // start of song in ms +// BPM: array of TBPM; +// Gap: real; + IlNut: integer; + DlugoscNut: integer; +// WartoscNut: integer; + end; + + TCzesci = record + Akt: integer; // aktualna czesc utworu do rysowania + High: integer; + Ilosc: integer; + Resolution: integer; + NotesGAP: integer; + Wartosc: integer; + Czesc: array of record + Start: integer; + StartNote: integer; + Lyric: string; + LyricWidth: real; + Koniec: integer; + BaseNote: integer; + HighNut: integer; + IlNut: integer; + TotalNotes: integer; + Nuta: array of record + Color: integer; + Start: integer; + Dlugosc: integer; + Ton: integer; + TonGamy: integer; + Tekst: string; + FreeStyle: boolean; + Wartosc: integer; // zwykla nuta x1, zlota nuta x2 + + + + + end; + end; + end; + + TCzas = record // wszystko, co dotyczy aktualnej klatki +// BajtowTotal: integer; +// BajtowTeraz: integer; +// BajtowNaSek: integer; + OldBeat: integer; // poprzednio wykryty beat w utworze + AktBeat: integer; // aktualny beat w utworze + MidBeat: real; // dokladny AktBeat + + // should not be used +// OldHalf: integer; // poprzednio wykryta polowka +// AktHalf: integer; // aktualna polowka w utworze +// MidHalf: real; // dokladny AktHalf + + // now we use this for super synchronization! + // only used when analyzing voice + OldBeatD: integer; // poprzednio wykryty beat w utworze + AktBeatD: integer; // aktualny beat w utworze + MidBeatD: real; // dokladny AktBeatD + FracBeatD: real; // fractional part of MidBeatD + + // we use this for audiable clicks + OldBeatC: integer; // poprzednio wykryty beat w utworze + AktBeatC: integer; // aktualny beat w utworze + MidBeatC: real; // dokladny AktBeatC + FracBeatC: real; // fractional part of MidBeatC + + + OldCzesc: integer; // poprzednio wyswietlana czesc + // akt jest w czesci.akt + + Teraz: real; // aktualny czas w utworze + Razem: real; // caly czas utworu +// TerazSek: integer; + end; + +var + Form: TForm; + Music: TMusic; + + // muzyka + Muzyka: TMuzyka; + + // czesci z nutami; + Czesci: array of TCzesci; + + // czas + Czas: TCzas; + + fHWND: Thandle; + +const + ModeStr: array[TMPModes] of string = ('Not ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open'); + +implementation +uses UGraphic, URecord, UPliki, UIni, UMain, UThemes; + +procedure InitializeSound; +begin + Log.LogStatus('Initializing Playback', 'InitializeSound'); Music.InitializePlayback; + Log.LogStatus('Initializing Record', 'InitializeSound'); Music.InitializeRecord; +end; + +procedure TMusic.InitializePlayback; +var + Pet: integer; + S: integer; +begin + Log.BenchmarkStart(4); + Log.LogStatus('Initializing Playback Subsystem', 'Music Initialize'); + Loaded := false; + Loop := false; + fHWND := AllocateHWND( nil); + + if not BASS_Init(1, 44100, 0, fHWND, nil) then begin + Application.MessageBox ('Could not initialize BASS', 'Error'); + Exit; + end; + + Log.BenchmarkEnd(4); Log.LogBenchmark('--> Bass Init', 4); + + // config playing buffer +// BASS_SetConfig(BASS_CONFIG_UPDATEPERIOD, 10); +// BASS_SetConfig(BASS_CONFIG_BUFFER, 100); + +{ MediaPlayer := TMediaPlayer.Create( nil ); + MediaPlayer.ParentWindow := fHWND; + MediaPlayer.Wait := true;} + + Log.LogStatus('Loading Sounds', 'Music Initialize'); + +{ LoadPlayerFromFile(MediaPlayerStart, SoundPath + 'Common Start.mp3'); + LoadPlayerFromFile(MediaPlayerBack, SoundPath + 'Common Back.mp3'); + LoadPlayerFromFile(MediaPlayerSwoosh, SoundPath + 'menu swoosh.mp3'); + LoadPlayerFromFile(MediaPlayerChange, SoundPath + 'select music change music.mp3'); + LoadPlayerFromFile(MediaPlayerOption, SoundPath + 'option change col.mp3'); + LoadPlayerFromFile(MediaPlayerClick, SoundPath + 'rimshot022b.mp3'); + + LoadPlayerFromFile(MediaPlayerDrum, SoundPath + 'bassdrumhard076b.mp3'); + LoadPlayerFromFile(MediaPlayerHihat, SoundPath + 'hihatclosed068b.mp3'); + LoadPlayerFromFile(MediaPlayerClap, SoundPath + 'claps050b.mp3'); + + LoadPlayerFromFile(MediaPlayerShuffle, SoundPath + 'Shuffle.mp3');} + + Log.BenchmarkStart(4); + LoadSoundFromFile(BassStart, SoundPath + 'Common Start.mp3'); + LoadSoundFromFile(BassBack, SoundPath + 'Common Back.mp3'); + LoadSoundFromFile(BassSwoosh, SoundPath + 'menu swoosh.mp3'); + LoadSoundFromFile(BassChange, SoundPath + 'select music change music 50.mp3'); + LoadSoundFromFile(BassOption, SoundPath + 'option change col.mp3'); + LoadSoundFromFile(BassClick, SoundPath + 'rimshot022b.mp3'); + +// LoadSoundFromFile(BassDrum, SoundPath + 'bassdrumhard076b.mp3'); +// LoadSoundFromFile(BassHihat, SoundPath + 'hihatclosed068b.mp3'); +// LoadSoundFromFile(BassClap, SoundPath + 'claps050b.mp3'); + +// LoadSoundFromFile(BassShuffle, SoundPath + 'Shuffle.mp3'); + + Log.BenchmarkEnd(4); Log.LogBenchmark('--> Loading Sounds', 4); +end; + +procedure TMusic.InitializeRecord; +var + S: integer; + device: integer; + descr: string; + input: integer; + input2: integer; + flags: integer; + mic: array[0..15] of integer; + SC: integer; // soundcard + SCI: integer; // soundcard input +begin + if RecordSystem = 1 then begin + SetLength(Sound, 6 {max players});//Ini.Players+1); + for S := 0 to High(Sound) do begin //Ini.Players do begin + Sound[S] := TSound.Create; + Sound[S].Num := S; + Sound[S].BufferNew := TMemoryStream.Create; + SetLength(Sound[S].BufferLong, 1); + Sound[S].BufferLong[0] := TMemoryStream.Create; + Sound[S].n := 4*1024; + end; + + + // check for recording devices; + {device := 0; + descr := BASS_RecordGetDeviceDescription(device); + + SetLength(SoundCard, 0); + while (descr <> '') do begin + SC := High(SoundCard) + 1; + SetLength(SoundCard, SC+1); + + Log.LogAnalyze('Device #'+IntToStr(device)+': '+ descr); + SoundCard[SC].Description := Descr; + + // check for recording inputs + mic[device] := -1; // default to no change + input := 0; + BASS_RecordInit(device); + Log.LogAnalyze('Input #' + IntToStr(Input) + ': ' + BASS_RecordGetInputName(input)); + flags := BASS_RecordGetInput(input); + + SetLength(SoundCard[SC].Input, 0); + while (flags <> -1) do begin + SCI := High(SoundCard[SC].Input) + 1; + SetLength(SoundCard[SC].Input, SCI+1); + + Log.LogAnalyze('Input #' + IntToStr(Input) + ': ' + BASS_RecordGetInputName(input)); + SoundCard[SC].Input[SCI].Name := BASS_RecordGetInputName(Input); + + if (flags and BASS_INPUT_TYPE_MASK) = BASS_INPUT_TYPE_MIC then begin + mic[device] := input; // auto set microphone + end; + Inc(Input); + flags := BASS_RecordGetInput(input); + end; + + if mic[device] <> -1 then begin + Log.LogAnalyze('Found the mic at input ' + IntToStr(Mic[device])) + end else begin + Log.LogAnalyze('Mic not found'); + mic[device] := 0; // setting to the first one (for kxproject) + end; + SoundCard[SC].InputSeleceted := Mic[Device]; + + + BASS_RecordFree; + + inc(Device); + descr := BASS_RecordGetDeviceDescription(Device); + end; // while} + end; // if +end; + +procedure TMusic.SetVolume(Volume: integer); +begin + BASS_SetVolume(Volume); +end; + +procedure TMusic.SetLoop(Enabled: boolean); +begin + Loop := Enabled; +end; + +function TMusic.Open(Name: string): boolean; +begin + Loaded := false; + if FileExists(Name) then begin +{ MediaPlayer.FileName := Name; + MediaPlayer.Open;} + + Bass := Bass_StreamCreateFile(false, pchar(Name), 0, 0, 0); + Loaded := true; + end; + + Result := Loaded; + +// Player := TcmxMp3.Create(Name); +end; + +procedure TMusic.Rewind; +begin + if Loaded then begin +// MediaPlayer.Position := 0; + + end; +end; + +procedure TMusic.MoveTo(Time: real); +var + bytes: integer; +begin +// if Loaded then begin +// MediaPlayer.StartPos := Round(Time); + bytes := BASS_ChannelSeconds2Bytes(Bass, Time); + BASS_ChannelSetPosition(Bass, bytes); +// end; +end; + +procedure TMusic.Play; +begin + if Loaded then begin +// MediaPlayer.Play; + BASS_ChannelPlay(Bass, False); // for setting position before playing + end; +end; + +procedure TMusic.Pause; //Pause Mod +begin + if Loaded then begin + BASS_ChannelPause(Bass); // Pauses Song + end; +end; + +procedure TMusic.Stop; +begin + Bass_ChannelStop(Bass); +// Bass_StreamFree(Bass); +// if ModeStr[MediaPlayer.Mode] = 'Playing' then begin +// MediaPlayer.Stop; +// end; +end; + +procedure TMusic.Close; +begin + Bass_StreamFree(Bass); +// Player.Free; +// MediaPlayer.Close; +end; + +function TMusic.Length: real; +var + bytes: integer; +begin + Result := 60; + + bytes := BASS_StreamGetLength(Bass); + Result := BASS_ChannelBytes2Seconds(Bass, bytes); + +{ if Assigned(MediaPlayer) then begin + if Loaded then Result := MediaPlayer.Length / 1000; + end;} +// if Assigned(Player) then +// Result := Player.LengthInSeconds; +end; + +function TMusic.Position: real; +var + bytes: integer; +begin + Result := 0;//MediaPlayer.Position / 1000; + bytes := BASS_ChannelGetPosition(BASS); + Result := BASS_ChannelBytes2Seconds(BASS, bytes); +end; + +function TMusic.Finished: boolean; +begin + Result := false; +// if ModeStr[MediaPlayer.Mode] = 'Stopped' then Result := true; + if BASS_ChannelIsActive(BASS) = BASS_ACTIVE_STOPPED then begin +// beep; + Result := true; + end; +end; + +{function myeffect( chan : integer; stream : Pointer; len : integer; udata : Pointer ): Pointer; cdecl; +var + dane: pwordarray; + pet: integer; + Prev: smallint; + PrevNew: smallint; +begin + dane := stream; + Prev := 0; + for pet := 0 to len div 2 -1 do begin + PrevNew := Dane[Pet]; + +// Dane[pet] := Round(PrevNew*1/8 + Prev*7/8); + + Prev := Dane[Pet]; + end; +end;} + +procedure TMusic.PlayStart; +{var + Music: PMix_Chunk;} +begin +{ Mix_OpenAudio(44100, 16, 1, 16*1024); + Music := Mix_LoadWAV('D:\Rozne\UltraStar\Old\Boys - Hej Sokoly 30s.wav'); + Mix_RegisterEffect(0, myeffect, nil, 0); + Mix_PlayChannel(0, Music, 0);} + +// MediaPlayerStart.Rewind; +// MediaPlayerStart.Play; + BASS_ChannelPlay(BassStart, True); +end; + +procedure TMusic.PlayBack; +begin +// MediaPlayerBack.Rewind; +// MediaPlayerBack.Play; +// if not + BASS_ChannelPlay(BassBack, True);// then +// Application.MessageBox ('Error playing stream!', 'Error'); +end; + +procedure TMusic.PlaySwoosh; +begin +// MediaPlayerSwoosh.Rewind; +// MediaPlayerSwoosh.Play; + BASS_ChannelPlay(BassSwoosh, True); +end; + +procedure TMusic.PlayChange; +begin +// MediaPlayerChange.Rewind; +// MediaPlayerChange.Play; + BASS_ChannelPlay(BassChange, True); +end; + +procedure TMusic.PlayOption; +begin +// MediaPlayerOption.Rewind; +// MediaPlayerOption.Play; + BASS_ChannelPlay(BassOption, True); +end; + +procedure TMusic.PlayClick; +begin +// MediaPlayerClick.Rewind; +// MediaPlayerClick.Play; + BASS_ChannelPlay(BassClick, True); +end; + +procedure TMusic.PlayDrum; +begin +// MediaPlayerDrum.Rewind; +// MediaPlayerDrum.Play; + BASS_ChannelPlay(BassDrum, True); +end; + +procedure TMusic.PlayHihat; +begin +// MediaPlayerHihat.Rewind; +// MediaPlayerHihat.Play; + BASS_ChannelPlay(BassHihat, True); +end; + +procedure TMusic.PlayClap; +begin +// MediaPlayerClap.Rewind; +// MediaPlayerClap.Play; + BASS_ChannelPlay(BassClap, True); +end; + +procedure TMusic.PlayShuffle; +begin +// MediaPlayerShuffle.Rewind; +// MediaPlayerShuffle.Play; + BASS_ChannelPlay(BassShuffle, True); +end; + +procedure TMusic.StopShuffle; +begin + BASS_ChannelStop(BassShuffle); +end; + +procedure TMusic.CaptureStart; +var + S: integer; + SC: integer; + P1: integer; + P2: integer; +begin + for S := 0 to High(Sound) do + Sound[S].BufferLong[0].Clear; + +{ case PlayersPlay of + 1: begin + CaptureCard(0, 0, 1, 0); + end; + 2: begin + if Ini.TwoPlayerMode = 0 then begin + CaptureCard(0, 0, 1, 2); + end else begin + CaptureCard(0, 0, 1, 0); + CaptureCard(1, 1, 2, 0); + end; + end; + 3: begin + CaptureCard(0, 0, 1, 2); + CaptureCard(1, 1, 3, 0); + end; + end; // case} + +// CaptureCard(0, 0, 0, 0); +// end; + + {for SC := 0 to High(SoundCard) do begin + P1 := Ini.SoundCard[SC, 1]; + P2 := Ini.SoundCard[SC, 2]; + if P1 > PlayersPlay then P1 := 0; + if P2 > PlayersPlay then P2 := 0; + CaptureCard(SC, P1, P2); + end; } + // 0.5.2: new + for SC := 0 to High(Ini.CardList) do begin + P1 := Ini.CardList[SC].ChannelL; + P2 := Ini.CardList[SC].ChannelR; + if P1 > PlayersPlay then P1 := 0; + if P2 > PlayersPlay then P2 := 0; + if (P1 > 0) or (P2 > 0) then + CaptureCard(SC, P1, P2); + end; +end; + +procedure TMusic.CaptureStop; +var + SC: integer; + P1: integer; + P2: integer; +begin +{ if RecordSystem = 1 then begin + case PlayersPlay of + 1: begin + StopCard(0); + end; + 2: begin + if Ini.TwoPlayerMode = 0 then begin + StopCard(0); + end else begin + StopCard(0); + StopCard(1); + end; + end; + 3: begin + StopCard(0); + StopCard(1); + end; + end; + end;} + + {for SC := 0 to High(SoundCard) do begin + StopCard(SC); + end; } + + // 0.5.2 + for SC := 0 to High(Ini.CardList) do begin + P1 := Ini.CardList[SC].ChannelL; + P2 := Ini.CardList[SC].ChannelR; + if P1 > PlayersPlay then P1 := 0; + if P2 > PlayersPlay then P2 := 0; + if (P1 > 0) or (P2 > 0) then StopCard(SC); + end; + +end; + +//procedure TMusic.CaptureCard(RecordI, SoundNum, PlayerLeft, PlayerRight: byte); +procedure TMusic.CaptureCard(RecordI, PlayerLeft, PlayerRight: byte); +var + Error: integer; + ErrorMsg: string; +begin + if not BASS_RecordInit(RecordI) then begin + Error := BASS_ErrorGetCode; + + ErrorMsg := IntToStr(Error); + if Error = BASS_ERROR_DX then ErrorMsg := 'No DX5'; + if Error = BASS_ERROR_ALREADY then ErrorMsg := 'The device has already been initialized'; + if Error = BASS_ERROR_DEVICE then ErrorMsg := 'The device number specified is invalid'; + if Error = BASS_ERROR_DRIVER then ErrorMsg := 'There is no available device driver'; + + {Log.LogAnalyze('Error initializing record [' + IntToStr(RecordI) + ', ' + + IntToStr(PlayerLeft) + ', '+ IntToStr(PlayerRight) + ']: ' + + ErrorMsg);} + Log.LogError('Error initializing record [' + IntToStr(RecordI) + ', ' + + IntToStr(PlayerLeft) + ', '+ IntToStr(PlayerRight) + ']: ' + + ErrorMsg); + Log.LogError('Music -> CaptureCard: Error initializing record: ' + ErrorMsg); + + + end else begin + + //SoundCard[RecordI].BassRecordStream := BASS_RecordStart(44100, 2, MakeLong(0, 20) , @GetMicrophone, PlayerLeft + PlayerRight*256); + Recording.SoundCard[RecordI].BassRecordStream := BASS_RecordStart(44100, 2, MakeLong(0, 20) , @GetMicrophone, PlayerLeft + PlayerRight*256); + + {if SoundCard[RecordI].BassRecordStream = 0 then begin + Error := BASS_ErrorGetCode; + + ErrorMsg := IntToStr(Error); + if Error = BASS_ERROR_INIT then ErrorMsg := 'Not successfully called'; + if Error = BASS_ERROR_ALREADY then ErrorMsg := 'Recording is already in progress'; + if Error = BASS_ERROR_NOTAVAIL then ErrorMsg := 'The recording device is not available'; + if Error = BASS_ERROR_FORMAT then ErrorMsg := 'The specified format is not supported'; + if Error = BASS_ERROR_MEM then ErrorMsg := 'There is insufficent memory'; + if Error = BASS_ERROR_UNKNOWN then ErrorMsg := 'Unknown'; + + Log.LogError('Error creating record stream [' + IntToStr(RecordI) + ', ' + + IntToStr(PlayerLeft) + ', '+ IntToStr(PlayerRight) + ']: ' + + ErrorMsg); + end; } + end; +end; + +procedure TMusic.StopCard(Card: byte); +begin + BASS_RecordSetDevice(Card); + BASS_RecordFree; +end; + +function TMusic.LoadPlayerFromFile(var MediaPlayer: TMediaPlayer; Name: string): boolean; +begin + Log.LogStatus('Loading Sound: "' + Name + '"', 'LoadPlayerFromFile'); + if FileExists(Name) then begin + try + MediaPlayer := TMediaPlayer.Create( nil ); + except + Log.LogError('Failed to create MediaPlayer', 'LoadPlayerFromFile'); + end; + try + MediaPlayer.ParentWindow := fHWND; + MediaPlayer.Wait := true; + MediaPlayer.FileName := Name; + MediaPlayer.DeviceType := dtAutoSelect; + MediaPlayer.Display := nil; + except + Log.LogError('Failed setting MediaPlayer: ' + MediaPlayer.ErrorMessage, 'LoadPlayerFromFile'); + end; + try + MediaPlayer.Open; + except + Log.LogError('Failed to open using MediaPlayer', 'LoadPlayerFromFile'); + end; + end else begin + Log.LogError('Sound not found: "' + Name + '"', 'LoadPlayerFromFile'); + exit; + end; +end; + +function TMusic.LoadSoundFromFile(var hStream: hStream; Name: string): boolean; +begin + if FileExists(Name) then begin + Log.LogStatus('Loading Sound: "' + Name + '"', 'LoadPlayerFromFile'); + try + hStream := BASS_StreamCreateFile(False, pchar(Name), 0, 0, 0); + except + Log.LogError('Failed to open using BASS', 'LoadPlayerFromFile'); + end; + end else begin + Log.LogError('Sound not found: "' + Name + '"', 'LoadPlayerFromFile'); + exit; + end; +end; + +//Equalizer +function TMusic.GetFFTData: TFFTData; +var +Data: TFFTData; +begin + //Get Channel Data Mono and 256 Values + BASS_ChannelGetData(Bass, @Result, BASS_DATA_FFT512); + //Result := Data; +end; + +function TMusic.LoadCustomSound(const Filename: String): Cardinal; +var + S: hStream; + I: Integer; + F: String; +begin + //Search for Sound in already loaded Sounds + F := UpperCase(FileName); + For I := 0 to High(CustomSounds) do + begin + if (UpperCase(CustomSounds[I].Filename) = F) then + begin + Result := I; + Exit; + end; + end; + + if LoadSoundFromFile(S, Filename) then + Result := High(CustomSounds) + else + Result := 0; +end; + +procedure TMusic.PlayCustomSound(const Index: Cardinal); +begin +if Index <= High(CustomSounds) then + BASS_ChannelPlay(CustomSounds[Index].Handle, True); +end; + + +end. diff --git a/Game/Code/Classes/UParty.dcu b/Game/Code/Classes/UParty.dcu new file mode 100644 index 00000000..e3e1a901 Binary files /dev/null and b/Game/Code/Classes/UParty.dcu differ diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas new file mode 100644 index 00000000..da89ca8a --- /dev/null +++ b/Game/Code/Classes/UParty.pas @@ -0,0 +1,204 @@ +unit UParty; + +interface + +uses ModiSDK; + +type + TRoundInfo = record + Plugin: Word; + Winner: Byte; + end; + + TParty_Session = class + private + function GetRandomPlayer(Team: Byte): Byte; + function IsWinner(Player, Winner: Byte): boolean; + procedure GenScores; + public + Teams: TTeamInfo; + Rounds: array of TRoundInfo; + CurRound: Byte; + + constructor Create; + + procedure StartNewParty; + procedure StartRound; + procedure EndRound; + function GetWinner: Byte; + function GetWinnerString(Round: Byte): String; + end; + +var + PartySession: TParty_Session; + +implementation + +uses UDLLManager, UGraphic, UMain, ULanguage, ULog; + +//---------- +//Constructor - Prepares the Class +//---------- +constructor TParty_Session.Create; +begin +// - Nothing in here atm +end; + +//---------- +//StartNewParty - Clears the Class and Prepares for new Party +//---------- +procedure TParty_Session.StartNewParty; +begin +//Set cur Round to Round 1 +CurRound := 255; + +PlayersPlay := Teams.NumTeams; +if isWinner(0,9) then + Log.LogError('Test'); +end; + +//---------- +//GetRandomPlayer - Gives back a Random Player to Play next Round +//---------- +function TParty_Session.GetRandomPlayer(Team: Byte): Byte; +var + I, J: Integer; + lowestTP: Byte; +begin + //Get lowest TP + lowestTP := high(Byte); + J := -1; + for I := 0 to Teams.Teaminfo[Team].NumPlayers do + begin + if (Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed < lowestTP) then + begin + lowestTP := Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed; + J := I; + end + else if (Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed = lowestTP) then + begin + J := -1; + end; + end; + + //If more than one Person has lowestTP then Select Random Player + if (J < 0) then + repeat + Result := Random(Teams.Teaminfo[Team].NumPlayers); + until (Teams.Teaminfo[Team].Playerinfo[Result].TimesPlayed = lowestTP) + else //Else Select the one wth lowest TP + Result:= J; +end; + +//---------- +//StartNextRound - Prepares ScreenSingModi for Next Round And Load Plugin +//---------- +procedure TParty_Session.StartRound; +var + I: Integer; +begin + if ((CurRound < high(Rounds)) OR (CurRound = high(CurRound))) then + begin + //Increase Current Round + Inc (CurRound); + + Rounds[CurRound].Winner := 0; + DllMan.LoadPlugin(Rounds[CurRound].Plugin); + + //Select Players + for I := 0 to Teams.NumTeams do + Teams.Teaminfo[I].CurPlayer := GetRandomPlayer(I); + + //Set ScreenSingModie Variables + ScreenSingModi.TeamInfo := Teams; + + //Set + end; +end; + +//---------- +//IsWinner - Returns True if the Players Bit is set in the Winner Byte +//---------- +function TParty_Session.IsWinner(Player, Winner: Byte): boolean; +var + Bit: Byte; +begin + Case Player of + 0: Bit := 1; + 1: Bit := 2; + 2: Bit := 4; + 3: Bit := 8; + 4: Bit := 16; + 5: Bit := 32; + end; + + Result := ((Winner AND Bit) = Bit); +end; + +//---------- +//GenScores - Inc Scores for Cur. Round +//---------- +procedure TParty_Session.GenScores; +var + I: Byte; +begin + for I := 0 to Teams.NumTeams do + begin + if isWinner(I, Rounds[CurRound].Winner) then + Inc(Teams.Teaminfo[I].Score); + end; +end; + +//---------- +//GetWinnerString - Get String with WinnerTeam Name, when there is more than one Winner than Connect with and or , +//---------- +function TParty_Session.GetWinnerString(Round: Byte): String; +var + Winners: Array of String; + I: Integer; +begin + if (Rounds[Round].Winner = 0) then + begin + Result := 'Nobody'; + exit; + end; + + SetLength(Winners, 0); + for I := 0 to Teams.NumTeams do + begin + if isWinner(I, Rounds[Round].Winner) then + begin + SetLength(Winners, Length(Winners) + 1); + Winners[high(Winners)] := Teams.TeamInfo[I].Name; + end; + end; + Result := Language.Implode(Winners); +end; + +//---------- +//EndRound - Get Winner from ScreenSingModi and Save Data to RoundArray +//---------- +procedure TParty_Session.EndRound; +var + I: Integer; +begin + //Copy Winner + Rounds[CurRound].Winner := ScreenSingModi.Winner; + //Set Scores + GenScores; + + //Increase TimesPlayed 4 all Players + For I := 0 to Teams.NumTeams do + Inc(Teams.Teaminfo[I].Playerinfo[Teams.Teaminfo[0].CurPlayer].TimesPlayed); + +end; + +//---------- +//Get Winner - Gives back the Number of the total Winner +//---------- +function TParty_Session.GetWinner: Byte; +begin + +end; + +end. diff --git a/Game/Code/Classes/UPliki.dcu b/Game/Code/Classes/UPliki.dcu new file mode 100644 index 00000000..1798b6f8 Binary files /dev/null and b/Game/Code/Classes/UPliki.dcu differ diff --git a/Game/Code/Classes/UPliki.pas b/Game/Code/Classes/UPliki.pas new file mode 100644 index 00000000..475a3752 --- /dev/null +++ b/Game/Code/Classes/UPliki.pas @@ -0,0 +1,830 @@ +unit UPliki; + +interface + +uses USongs, SysUtils, ULog, UMusic; + +procedure InitializePaths; +function ReadHeader(var Song: TSong): boolean; +function SkanujPlik(var Song: TSong): boolean; +procedure CzyscNuty; +function WczytajCzesci(Name: string): boolean; +function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; +function SaveSongDebug(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; + +var + GamePath: string; + SoundPath: string; + SongPath: string; + LogPath: string; + ThemePath: string; + ScreenshotsPath: string; + CoversPath: string; + LanguagesPath: string; + PluginPath: string; + + Plik: TextFile; // all procedures in this unit operates on this file + PlikC: char; + Lineno: integer; + + // variables available for all procedures + Base: array[0..1] of integer; + Rel: array[0..1] of integer; + Mult: integer; + MultBPM: integer; + +implementation +uses TextGL, UIni, UMain, math; + +procedure InitializePaths; +begin + GamePath := ExtractFilePath(ParamStr(0)); + SoundPath := GamePath + 'Sounds\'; + SongPath := GamePath + 'Songs\'; + LogPath := GamePath; + ThemePath := GamePath + 'Themes\'; + ScreenshotsPath := GamePath + 'Screenshots\'; + CoversPath := GamePath + 'Covers\'; + LanguagesPath := GamePath + 'Languages\'; + //Modi Loader + PluginPath := GamePath + 'Plugins\'; + + DecimalSeparator := ','; +end; + +function ReadHeader(var Song: TSong): boolean; +var + TempC: char; + Tekst: string; + Done: integer; +begin + // clear + Song.Title := ''; + Song.Artist := ''; + Song.Genre := 'Unknown'; + Song.Edition := 'Unknown'; + Song.Language := 'Unknown'; //Language Patch + Song.Mp3 := ''; + Song.BPM := 0; + Song.GAP := 0; + Song.Start := 0; + Song.Finish := 0; + Song.Background := ''; + Song.Video := ''; + Song.VideoGAP := 0; + Song.NotesGAP := 0; + Song.Resolution := 4; + + //Creator Patch + Song.Creator := ''; + + Done := 0; + + //Editor Error Reporting Hack + LineNo := 0; + try + + // read + Read(Plik, PlikC); + while (PlikC = '#') do begin + ReadLn(Plik, Tekst); + + //Editor Error Reporting Hack + Inc (LineNo); + + //Header Improvements Patch + + if UpperCase(Copy(Tekst, 1, 6)) = 'TITLE:' then begin + Delete(Tekst, 1, 6); + Song.Title := Trim(Tekst); + Tekst := ''; + Done := Done or 1; + end + + else if UpperCase(Copy(Tekst, 1, 7)) = 'ARTIST:' then begin + Delete(Tekst, 1, 7); + Song.Artist := Trim(Tekst); + Tekst := ''; + Done := Done or 2; + end + + else if UpperCase(Copy(Tekst, 1, 4)) = 'MP3:' then begin + Delete(Tekst, 1, 4); + Song.Mp3 := Trim(Tekst); + Tekst := ''; + Done := Done or 4; + end + + else if UpperCase(Copy(Tekst, 1, 8)) = 'CREATOR:' then begin // this goes for edit + Delete(Tekst, 1, 8); + Song.Creator := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 6)) = 'GENRE:' then begin // this goes for edit + Delete(Tekst, 1, 6); + Song.Genre := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 8)) = 'EDITION:' then begin // this goes for edit + Delete(Tekst, 1, 8); + Song.Edition := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 9)) = 'LANGUAGE:' then begin // this goes for edit + Delete(Tekst, 1, 9); + Song.Language := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 6)) = 'COVER:' then begin + Delete(Tekst, 1, 6); + Song.Cover := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 11)) = 'BACKGROUND:' then begin + Delete(Tekst, 1, 11); + Song.Background := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 6)) = 'VIDEO:' then begin + Delete(Tekst, 1, 6); + Song.Video := Trim(Tekst); + Tekst := ''; + end + + else if UpperCase(Copy(Tekst, 1, 9)) = 'VIDEOGAP:' then begin + Delete(Tekst, 1, 9); + + //Change . to , Mod by Whiteshark :P + if (Pos('.',Tekst) <> 0) then + begin + Tekst[Pos('.',Tekst)] := ','; + //Little Annonce for the User + Log.LogError('VideoGap Seperator wrong in SongHeader: ' + Song.FileName + ' [Corrected for this Session]'); + end; + + Song.VideoGAP := StrToFloat(Tekst); + Tekst := '' + end + + else if UpperCase(Copy(Tekst, 1, 9)) = 'NOTESGAP:' then begin + Delete(Tekst, 1, 9); + Song.NotesGAP := StrToInt(Tekst); + Tekst := '' + end + + else if UpperCase(Copy(Tekst, 1, 9)) = 'RELATIVE:' then begin + Delete(Tekst, 1, 9); + if LowerCase(Tekst) = 'yes' then Song.Relative := true; + end + + else if UpperCase(Copy(Tekst, 1, 6)) = 'START:' then begin + Delete(Tekst, 1, 6); + Song.Start := StrToFloat(Tekst); +// Muzyka.Start := StrToInt(Tekst); + end + + else if UpperCase(Copy(Tekst, 1, 4)) = 'END:' then begin + Delete(Tekst, 1, 4); + Song.Finish := StrToInt(Tekst); + end + + else if UpperCase(Copy(Tekst, 1, 11)) = 'RESOLUTION:' then begin + Delete(Tekst, 1, 11); + Song.Resolution := StrToInt(Tekst); + end + + else if UpperCase(Copy(Tekst, 1, 4)) = 'BPM:' then begin + Delete(Tekst, 1, 4); + +// Muzyka.BPMOld := StrToFloat(Tekst) * Mult * MultBPM; // old system + + (* new system with variable BPM *) +// Muzyka.BPMOld := 50; + + //Change . to , Mod by Whiteshark :P + if (Pos('.',Tekst) <> 0) then + begin + Tekst[Pos('.',Tekst)] := ','; + //Little Annonce for the User + Log.LogError('BPM Seperator wrong in SongHeader: ' + Song.FileName + ' [Corrected for this Session]'); + end; + + SetLength(Song.BPM, 1); + Song.BPM[0].StartBeat := 0; + Song.BPM[0].BPM := StrToFloat(Tekst) * Mult * MultBPM; + Tekst := ''; + Done := Done or 8; + end + + else if UpperCase(Copy(Tekst, 1, 4)) = 'GAP:' then begin + Delete(Tekst, 1, 4); + Song.GAP := StrToFloat(Tekst); + Tekst := ''; +// Muzyka.GAP := StrToFloat(Tekst); +// Done := Done or 16; + end; + + //Header Improvements Patch Ende + + Read(Plik, PlikC); + end; + + //Editor Error Reporting Hack + except //An Error happened<- bad english :P + Log.LogError('An Error occured reading Line ' + inttostr(LineNo) + ' from SongHeader: ' + Song.FileName); + Halt; + end; + //Editor Error Reporting Hack End + + if Song.Background = '' then begin + Song.Background := Songs.FindSongFile(Song.Path, '*[BG].jpg'); + end; + + if (Done and 15) = 15 then Result := true + else Result := false; +end; + +function SkanujPlik(var Song: TSong): boolean; +var + Done: integer; + Tekst: string; + C: integer; // category + P: integer; // position +begin +// try + AssignFile(Plik, Song.Path + Song.FileName); + Reset(Plik); + + Result := ReadHeader(Song); + +{ ReadLn(Plik, Tekst); + while (Copy(Tekst, 1, 1) = '#') do begin + if Copy(Tekst, 1, 10) = '#CATEGORY:' then begin + Delete(Tekst, 1, 10); + + Trim(Tekst); + while (Length(Tekst) > 0) do begin + C := Length(Song.Category); + SetLength(Song.Category, C+1); + + P := Pos(',', Tekst); + if P = 0 then P := Length(Tekst); + Song.Category[C] := Copy(Tekst, 1, P); + + Delete(Tekst, 1, P); + Trim(Tekst); + end; + + end;} + + +end; + +procedure CzyscNuty; +var + Pet: integer; +begin + SetLength(Czesci, Length(Player)); + SetLength(AktSong.BPM, 0); + for Pet := 0 to High(Player) do begin + SetLength(Czesci[Pet].Czesc, 1); + SetLength(Czesci[Pet].Czesc[0].Nuta, 0); + Czesci[Pet].Czesc[0].Lyric := ''; + Czesci[Pet].Czesc[0].LyricWidth := 0; + Player[pet].Score := 0; + Player[pet].IlNut := 0; + Player[pet].HighNut := -1; + end; +end; + +procedure DodajNute(NrCzesci: integer; TypeP: char; StartP, DurationP, NoteP: integer; LyricS: string); +var + Space: boolean; +begin + case Ini.Solmization of + 1: // european + begin + case (NoteP mod 12) of + 0..1: LyricS := ' do '; + 2..3: LyricS := ' re '; + 4: LyricS := ' mi '; + 5..6: LyricS := ' fa '; + 7..8: LyricS := ' sol '; + 9..10: LyricS := ' la '; + 11: LyricS := ' si '; + end; + end; + 2: // japanese + begin + case (NoteP mod 12) of + 0..1: LyricS := ' do '; + 2..3: LyricS := ' re '; + 4: LyricS := ' mi '; + 5..6: LyricS := ' fa '; + 7..8: LyricS := ' so '; + 9..10: LyricS := ' la '; + 11: LyricS := ' shi '; + end; + end; + 3: // american + begin + case (NoteP mod 12) of + 0..1: LyricS := ' do '; + 2..3: LyricS := ' re '; + 4: LyricS := ' mi '; + 5..6: LyricS := ' fa '; + 7..8: LyricS := ' sol '; + 9..10: LyricS := ' la '; + 11: LyricS := ' ti '; + end; + end; + end; // case + +// Log.LogStatus('Czesc: ' + IntToStr(Czesci[NrCzesci].High), 'DodajNute'); +// Log.LogStatus('Dodano: [' + IntToStr(NrCzesci) + '] ' + IntToStr(StartP) + ' ' +// + IntToStr(DurationP) + ' '+ IntToStr(NoteP) + ' ' + LyricS, 'DodajNute'); + +{ Delete(LyricS, 1, 1); + Space := false; + if Copy(LyricS, Length(LyricS), 1) = ' ' then begin + Space := true; + Delete(LyricS, Length(LyricS), 1); + end; + if LyricS = 'a' then LyricS := chr($B1); + if LyricS = 'i' then LyricS := chr($B2); + if LyricS = 'u' then LyricS := chr($B3); + if LyricS = 'e' then LyricS := chr($B4); + if LyricS = 'o' then LyricS := chr($B5); + + if LyricS = 'ka' then LyricS := chr($B6); + if LyricS = 'ki' then LyricS := chr($B7); + if LyricS = 'ku' then LyricS := chr($B8); + if LyricS = 'ke' then LyricS := chr($B9); + if LyricS = 'ko' then LyricS := chr($BA); + + if LyricS = 'ga' then LyricS := chr($B6) + chr($DE); + if LyricS = 'gi' then LyricS := chr($B7) + chr($DE); + if LyricS = 'gu' then LyricS := chr($B8) + chr($DE); + if LyricS = 'ge' then LyricS := chr($B9) + chr($DE); + if LyricS = 'go' then LyricS := chr($BA) + chr($DE); + + if LyricS = 'sa' then LyricS := chr($BB); + if LyricS = 'shi' then LyricS := chr($BC); + if LyricS = 'su' then LyricS := chr($BD); + if LyricS = 'se' then LyricS := chr($BE); + if LyricS = 'so' then LyricS := chr($BF); + + if LyricS = 'za' then LyricS := chr($BB) + chr($DE); + if LyricS = 'ji' then LyricS := chr($BC) + chr($DE); + if LyricS = 'zu' then LyricS := chr($BD) + chr($DE); + if LyricS = 'ze' then LyricS := chr($BE) + chr($DE); + if LyricS = 'zo' then LyricS := chr($BF) + chr($DE); + + if LyricS = 'ta' then LyricS := chr($C0); + if LyricS = 'chi' then LyricS := chr($C1); + if LyricS = 'tsu' then LyricS := chr($C2); + if LyricS = 'te' then LyricS := chr($C3); + if LyricS = 'to' then LyricS := chr($C4); + + if LyricS = 'da' then LyricS := chr($C0) + chr($DE); +// if LyricS = 'ji' then LyricS := chr($C1) + chr($DE); +// if LyricS = 'zu' then LyricS := chr($C2) + chr($DE); + if LyricS = 'de' then LyricS := chr($C3) + chr($DE); + if LyricS = 'do' then LyricS := chr($C4) + chr($DE); + + if LyricS = 'na' then LyricS := chr($C5); + if LyricS = 'ni' then LyricS := chr($C6); + if LyricS = 'nu' then LyricS := chr($C7); + if LyricS = 'ne' then LyricS := chr($C8); + if LyricS = 'no' then LyricS := chr($C9); + + if LyricS = 'ha' then LyricS := chr($CA); + if LyricS = 'hi' then LyricS := chr($CB); + if LyricS = 'hu' then LyricS := chr($CC); + if LyricS = 'he' then LyricS := chr($CD); + if LyricS = 'ho' then LyricS := chr($CE); + + if LyricS = 'ba' then LyricS := chr($CA) + chr($DE); + if LyricS = 'bi' then LyricS := chr($CB) + chr($DE); + if LyricS = 'bu' then LyricS := chr($CC) + chr($DE); + if LyricS = 'be' then LyricS := chr($CD) + chr($DE); + if LyricS = 'bo' then LyricS := chr($CE) + chr($DE); + + if LyricS = 'pa' then LyricS := chr($CA) + chr($DF); + if LyricS = 'pi' then LyricS := chr($CB) + chr($DF); + if LyricS = 'pu' then LyricS := chr($CC) + chr($DF); + if LyricS = 'pe' then LyricS := chr($CD) + chr($DF); + if LyricS = 'po' then LyricS := chr($CE) + chr($DF); + + if LyricS = 'ma' then LyricS := chr($CF); + if LyricS = 'mi' then LyricS := chr($D0); + if LyricS = 'mu' then LyricS := chr($D1); + if LyricS = 'me' then LyricS := chr($D2); + if LyricS = 'mo' then LyricS := chr($D3); + + if LyricS = 'ya' then LyricS := chr($D4); + if LyricS = 'yu' then LyricS := chr($D5); + if LyricS = 'yo' then LyricS := chr($D6); + + if LyricS = 'ra' then LyricS := chr($D7); + if LyricS = 'ri' then LyricS := chr($D8); + if LyricS = 'ru' then LyricS := chr($D9); + if LyricS = 're' then LyricS := chr($DA); + if LyricS = 'ro' then LyricS := chr($DB); + + if LyricS = 'wa' then LyricS := chr($DC); + if LyricS = 'n' then LyricS := chr($DD); + + LyricS := ' ' + LyricS; + if Space then LyricS := LyricS + ' ';} + + + + with Czesci[NrCzesci].Czesc[Czesci[NrCzesci].High] do begin + SetLength(Nuta, Length(Nuta) + 1); + IlNut := IlNut + 1; + HighNut := HighNut + 1; + Muzyka.IlNut := Muzyka.IlNut + 1; + + Nuta[HighNut].Start := StartP; + if IlNut = 1 then begin + StartNote := Nuta[HighNut].Start; + if Czesci[NrCzesci].Ilosc = 1 then + Start := -100; +// Start := Nuta[HighNut].Start; + end; + + Nuta[HighNut].Dlugosc := DurationP; + Muzyka.DlugoscNut := Muzyka.DlugoscNut + Nuta[HighNut].Dlugosc; + + // back to the normal system with normal, golden and now freestyle notes + case TypeP of + 'F': Nuta[HighNut].Wartosc := 0; + ':': Nuta[HighNut].Wartosc := 1; + '*': Nuta[HighNut].Wartosc := 2; + end; + Czesci[NrCzesci].Wartosc := Czesci[NrCzesci].Wartosc + Nuta[HighNut].Dlugosc * Nuta[HighNut].Wartosc; + + Nuta[HighNut].Ton := NoteP; + if Nuta[HighNut].Ton < Base[NrCzesci] then Base[NrCzesci] := Nuta[HighNut].Ton; + Nuta[HighNut].TonGamy := Nuta[HighNut].TonGamy mod 12; + + Nuta[HighNut].Tekst := Copy(LyricS, 2, 100); + Lyric := Lyric + Nuta[HighNut].Tekst; + + if TypeP = 'F' then + Nuta[HighNut].FreeStyle := true; + + Koniec := Nuta[HighNut].Start + Nuta[HighNut].Dlugosc; + end; // with +end; + +procedure NewSentence(NrCzesciP: integer; Param1, Param2: integer); +var +I: Integer; +begin +// Log.LogStatus('IlCzesci: ' + IntToStr(Czesci[NrCzesciP].Ilosc), 'NewSentece'); +// Log.LogStatus('Dane: ' + IntToStr(NrCzesciP) + ' ' + IntToStr(Param1) + ' ' + IntToStr(Param2) , 'NewSentece'); + + // stara czesc //Alter Satz //Update Old Part + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].BaseNote := Base[NrCzesciP]; + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].LyricWidth := glTextWidth(PChar(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Lyric)); + + //Total Notes Patch + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes := 0; + for I := low(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta) to high(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta) do + begin + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes := Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta[I].Dlugosc * Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta[I].Wartosc; + end; + //Log.LogError('Total Notes(' + inttostr(Czesci[NrCzesciP].High) +'): ' + inttostr(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes)); + //Total Notes Patch End + + + // nowa czesc //Neuer Satz //Update New Part + SetLength(Czesci[NrCzesciP].Czesc, Czesci[NrCzesciP].Ilosc + 1); + Czesci[NrCzesciP].High := Czesci[NrCzesciP].High + 1; + Czesci[NrCzesciP].Ilosc := Czesci[NrCzesciP].Ilosc + 1; + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].HighNut := -1; + + if not AktSong.Relative then + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Start := Param1; + + if AktSong.Relative then begin + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Start := Param1; + Rel[NrCzesciP] := Rel[NrCzesciP] + Param2; + end; + + Base[NrCzesciP] := 100; // high number +end; + +function WczytajCzesci(Name: string): boolean; +var + TempC: char; + Tekst: string; + CP: integer; // Current Player (0 or 1) + Pet: integer; + Both: boolean; + Param1: integer; + Param2: integer; + Param3: integer; + ParamS: string; + I: Integer; +begin + Result := false; + + if not FileExists(Name) then begin + Log.LogError('File not found: "' + Name + '"', 'WczytajCzesci'); + exit; + end; + + try + MultBPM := 4; // 4 - mnoznik dla czasu nut + Mult := 1; // 4 - dokladnosc pomiaru nut + Base[0] := 100; // high number +// Base[1] := 100; // high number + Czesci[0].Wartosc := 0; +// Czesci[1].Wartosc := 0; // here was the error in 0.3.2 + AktSong.Relative := false; + + Rel[0] := 0; +// Rel[1] := 0; + CP := 0; + Both := false; + if Length(Player) = 2 then Both := true; + + FileMode := fmOpenRead; + AssignFile(Plik, Name); + Reset(Plik); + + ReadHeader(AktSong); +(* if AktSong.Title = 'Hubba Hubba Zoot Zoot' then begin + Mult := 2; + AktSong.BPM[0].BPM := AktSong.BPM[0].BPM * 2; + end;*) + + SetLength(Czesci, 2); + for Pet := 0 to High(Czesci) do begin + SetLength(Czesci[Pet].Czesc, 1); + Czesci[Pet].High := 0; + Czesci[Pet].Ilosc := 1; + Czesci[Pet].Akt := 0; + Czesci[Pet].Resolution := AktSong.Resolution; + Czesci[Pet].NotesGAP := AktSong.NotesGAP; + Czesci[Pet].Czesc[0].IlNut := 0; + Czesci[Pet].Czesc[0].HighNut := -1; + end; + +// TempC := ':'; + TempC := PlikC; // read from backup variable, don't use default ':' value + + while (TempC <> 'E') do begin + Inc(LineNo); + if (TempC = ':') or (TempC = '*') or (TempC = 'F') then begin + // wczytuje nute + Read(Plik, Param1); + Read(Plik, Param2); + Read(Plik, Param3); + Read(Plik, ParamS); + + // dodaje nute + if not Both then + // P1 + DodajNute(0, TempC, (Param1+Rel[0]) * Mult, Param2 * Mult, Param3, ParamS) + else begin + // P1 + P2 + DodajNute(0, TempC, (Param1+Rel[0]) * Mult, Param2 * Mult, Param3, ParamS); + DodajNute(1, TempC, (Param1+Rel[1]) * Mult, Param2 * Mult, Param3, ParamS); + end; + end; // if + if TempC = '-' then begin + // reads sentence + Read(Plik, Param1); + if AktSong.Relative then Read(Plik, Param2); // read one more data for relative system + + // new sentence + if not Both then + // P1 + NewSentence(0, (Param1 + Rel[0]) * Mult, Param2) + else begin + // P1 + P2 + NewSentence(0, (Param1 + Rel[0]) * Mult, Param2); + NewSentence(1, (Param1 + Rel[1]) * Mult, Param2); + end; + + end; // if + + if TempC = 'B' then begin + SetLength(AktSong.BPM, Length(AktSong.BPM) + 1); + Read(Plik, AktSong.BPM[High(AktSong.BPM)].StartBeat); + AktSong.BPM[High(AktSong.BPM)].StartBeat := AktSong.BPM[High(AktSong.BPM)].StartBeat + Rel[0]; + + Read(Plik, Tekst); + AktSong.BPM[High(AktSong.BPM)].BPM := StrToFloat(Tekst); + AktSong.BPM[High(AktSong.BPM)].BPM := AktSong.BPM[High(AktSong.BPM)].BPM * Mult * MultBPM; + end; + + + if not Both then begin + Czesci[CP].Czesc[Czesci[CP].High].BaseNote := Base[CP]; + Czesci[CP].Czesc[Czesci[CP].High].LyricWidth := glTextWidth(PChar(Czesci[CP].Czesc[Czesci[CP].High].Lyric)); + //Total Notes Patch + Czesci[CP].Czesc[Czesci[CP].High].TotalNotes := 0; + for I := low(Czesci[CP].Czesc[Czesci[CP].High].Nuta) to high(Czesci[CP].Czesc[Czesci[CP].High].Nuta) do + begin + Czesci[CP].Czesc[Czesci[CP].High].TotalNotes := Czesci[CP].Czesc[Czesci[CP].High].TotalNotes + Czesci[CP].Czesc[Czesci[CP].High].Nuta[I].Dlugosc * Czesci[CP].Czesc[Czesci[CP].High].Nuta[I].Wartosc; + end; + //Total Notes Patch End + end else begin + for Pet := 0 to High(Czesci) do begin + Czesci[Pet].Czesc[Czesci[Pet].High].BaseNote := Base[Pet]; + Czesci[Pet].Czesc[Czesci[Pet].High].LyricWidth := glTextWidth(PChar(Czesci[Pet].Czesc[Czesci[Pet].High].Lyric)); + //Total Notes Patch + Czesci[Pet].Czesc[Czesci[Pet].High].TotalNotes := 0; + for I := low(Czesci[Pet].Czesc[Czesci[Pet].High].Nuta) to high(Czesci[Pet].Czesc[Czesci[Pet].High].Nuta) do + begin + Czesci[Pet].Czesc[Czesci[Pet].High].TotalNotes := Czesci[Pet].Czesc[Czesci[Pet].High].TotalNotes + Czesci[Pet].Czesc[Czesci[Pet].High].Nuta[I].Dlugosc * Czesci[Pet].Czesc[Czesci[Pet].High].Nuta[I].Wartosc; + end; + //Total Notes Patch End + end; + end; + + Read(Plik, TempC); + end; // while} + + CloseFile(Plik); + except + Log.LogError('Error Loading File: "' + Name + '" in Line ' + inttostr(LineNo)); + exit; + end; + + Result := true; +end; + +function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; +var + C: integer; + N: integer; + S: string; + B: integer; + RelativeSubTime: integer; + NoteState: String; + +begin +// Relative := true; // override (idea - use shift+S to save with relative) + AssignFile(Plik, Name); + Rewrite(Plik); + + WriteLn(Plik, '#TITLE:' + Song.Title + ''); + WriteLn(Plik, '#ARTIST:' + Song.Artist); + + if Song.Creator <> '' then WriteLn(Plik, '#CREATOR:' + Song.Creator); + if Song.Edition <> 'Unknown' then WriteLn(Plik, '#EDITION:' + Song.Edition); + if Song.Genre <> 'Unknown' then WriteLn(Plik, '#GENRE:' + Song.Genre); + if Song.Language <> 'Unknown' then WriteLn(Plik, '#LANGUAGE:' + Song.Language); + if Song.Cover <> '' then WriteLn(Plik, '#COVER:' + Song.Cover); + + WriteLn(Plik, '#MP3:' + Song.Mp3); + + if Song.Background <> '' then WriteLn(Plik, '#BACKGROUND:' + Song.Background); + if Song.Video <> '' then WriteLn(Plik, '#VIDEO:' + Song.Video); + if Song.VideoGAP <> 0 then WriteLn(Plik, '#VIDEOGAP:' + FloatToStr(Song.VideoGAP)); + if Song.Resolution <> 4 then WriteLn(Plik, '#RESOLUTION:' + IntToStr(Song.Resolution)); + if Song.NotesGAP <> 0 then WriteLn(Plik, '#NOTESGAP:' + IntToStr(Song.NotesGAP)); + if Song.Start <> 0 then WriteLn(Plik, '#START:' + FloatToStr(Song.Start)); + if Song.Finish <> 0 then WriteLn(Plik, '#END:' + IntToStr(Song.Finish)); + if Relative then WriteLn(Plik, '#RELATIVE:yes'); + + WriteLn(Plik, '#BPM:' + FloatToStr(Song.BPM[0].BPM / 4)); + WriteLn(Plik, '#GAP:' + FloatToStr(Song.GAP)); + + RelativeSubTime := 0; + for B := 1 to High(AktSong.BPM) do + WriteLn(Plik, 'B ' + FloatToStr(AktSong.BPM[B].StartBeat) + ' ' + FloatToStr(AktSong.BPM[B].BPM/4)); + + for C := 0 to Czesc.High do begin + for N := 0 to Czesc.Czesc[C].HighNut do begin + with Czesc.Czesc[C].Nuta[N] do begin + + + //Golden + Freestyle Note Patch + case Czesc.Czesc[C].Nuta[N].Wartosc of + 0: NoteState := 'F '; + 1: NoteState := ': '; + 2: NoteState := '* '; + end; // case + S := NoteState + IntToStr(Start-RelativeSubTime) + ' ' + IntToStr(Dlugosc) + ' ' + IntToStr(Ton) + ' ' + Tekst; + + + WriteLn(Plik, S); + end; // with + end; // N + + if C < Czesc.High then begin // don't write end of last sentence + if not Relative then + S := '- ' + IntToStr(Czesc.Czesc[C+1].Start) + else begin + S := '- ' + IntToStr(Czesc.Czesc[C+1].Start - RelativeSubTime) + + ' ' + IntToStr(Czesc.Czesc[C+1].Start - RelativeSubTime); + RelativeSubTime := Czesc.Czesc[C+1].Start; + end; + WriteLn(Plik, S); + end; + + end; // C + + + WriteLn(Plik, 'E'); + CloseFile(Plik); +end; + +function SaveSongDebug(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; +var + C: integer; + N: integer; + S: string; + STon: integer; + SLen: integer; + NTot: integer; + PlikB: TextFile; + LastTime: integer; +begin + AssignFile(Plik, Name); + Rewrite(Plik); + + AssignFile(PlikB, 'C:\song db.asm'); + Rewrite(PlikB); + + NTot := 0; + LastTime := 0; + + for C := 0 to Czesc.High do begin + WriteLn(Plik, '; ' + IntToStr(C)); + + for N := 0 to Czesc.Czesc[C].HighNut do begin + with Czesc.Czesc[C].Nuta[N] do begin + + // timespace + if LastTime < Start then begin + STon := 0; + SLen := Round((Start - LastTime) * 16320 / 255 / 12); + WriteLn(PlikB, ' .dw ' + IntToStr(STon + SLen*256) + ' ; timespace (0, ' + IntToStr(SLen) + ')'); + + end; + + + + // ton + STon := Round(98940/(2*261.62*Power(1.05946309436, Ton))); + S := ' ldi R18, ' + IntToStr(STon); + if STon > 255 then begin + beep; + S := '!!!!' + S; + end; + WriteLn(Plik, S); + + // length + //ldi R19, 43 + SLen := Round(Dlugosc * 16320 / STon / 12); + S := ' ldi R19, ' + IntToStr(SLen); + if SLen > 255 then begin + beep; + S := '!!!!' + S; + end; + WriteLn(Plik, S); + + // function + S := ' rcall playtone'; + WriteLn(Plik, S); + + // song dw + WriteLn(PlikB, ' .dw ' + IntToStr(STon + SLen*256)); + + + LastTime := Start + Dlugosc; + Inc(NTot); + + end; // with + end; // N + WriteLn(Plik, ''); + WriteLn(PlikB, ''); + end; // C + + WriteLn(Plik, '; nut ' + IntToStr(NTot)); + WriteLn(Plik, '; bajtów ' + IntToStr(8*NTot)); + + WriteLn(PlikB, ' .dw 0'); + WriteLn(PlikB, '; nut ' + IntToStr(NTot)); + WriteLn(PlikB, '; bajtów ' + IntToStr(2*NTot)); + + + CloseFile(Plik); + CloseFile(PlikB); +end; + +end. diff --git a/Game/Code/Classes/URecord.dcu b/Game/Code/Classes/URecord.dcu new file mode 100644 index 00000000..d28aa4b1 Binary files /dev/null and b/Game/Code/Classes/URecord.dcu differ diff --git a/Game/Code/Classes/URecord.pas b/Game/Code/Classes/URecord.pas new file mode 100644 index 00000000..2ec5439a --- /dev/null +++ b/Game/Code/Classes/URecord.pas @@ -0,0 +1,371 @@ +unit URecord; + +interface +uses Classes, Math, SysUtils, {DXSounds, Wave, }UMusic, UIni, BASS; + +type + TSound = class + BufferNew: TMemoryStream; // buffer for newest sample + BufferArray: array[1..4096] of smallint; // (Signal) newest 4096 samples + BufferLong: array of TMemoryStream; // full buffer + + Num: integer; + n: integer; // length of Signal to analyze +// Spectrum: array[1..8192] of single; // sound buffer from above as FFT +// Spektogram: array[0..100] of TSpekt; // FFT(t) + + // pitch detection + SzczytJest: boolean; // czy jest szczyt + Szczyt: integer; // pozycja szczytu na osi poziomej + TonDokl: real; // ton aktualnego szczytu + Ton: integer; // ton bez ulamka + TonGamy: integer; // ton w gamie. wartosci: 0-11 + Skala: real; // skala FFT + + // procedures + procedure ProcessNewBuffer; + procedure AnalizujBufor; // use to analyze sound from buffers to get new pitch + procedure AnalizujByAutocorrelation; // we call it to analyze sound by checking Autocorrelation + function AnalyzeAutocorrelationFreq(Freq: real): real; // use this to check one frequency by Autocorrelation + end; + + TSoundCardInput = record + Name: string; + end; + + TSoundCard = record + // here can be the soundcard information - whole database from which user will select recording source + Description: string; + Input: array of TSoundCardInput; + InputSeleceted: integer; + + // bass record + BassRecordStream: hStream; + end; + + TRecord = class + SoundCard: array of TSoundCard; + constructor Create; + end; + + smallintarray = array [0..maxInt shr 1-1] of smallInt; + psmallintarray = ^smallintarray; + + // procedures - bass record + function GetMicrophone(handle: HSTREAM; buffer: Pointer; len: DWORD; user: DWORD): boolean; stdcall; + + +var + Sound: array of TSound; + SoundCard: array of TSoundCard; + Poz: integer; + Recording: TRecord; + +implementation +uses UMain, ULog; + +procedure TSound.ProcessNewBuffer; +var + S: integer; + L: integer; + A: integer; +begin + // process BufferArray + S := 0; + L := BufferNew.Size div 2; + if L > n then begin + S := L - n; + L := n; + end; + + // copy to array + for A := L+1 to n do + BufferArray[A-L] := BufferArray[A]; + + BufferNew.Seek(2*S, soBeginning); + BufferNew.ReadBuffer(BufferArray[1+n-L], 2*L); + + // process BufferLong + if Ini.SavePlayback = 1 then begin + BufferNew.Seek(0, soBeginning); + BufferLong[0].CopyFrom(BufferNew, BufferNew.Size); + end; +end; + +procedure TSound.AnalizujBufor; +begin + AnalizujByAutocorrelation; +end; + +procedure TSound.AnalizujByAutocorrelation; +var + T: integer; // tone + F: real; // freq + Wages: array[0..35] of real; // wages + MaxT: integer; // max tone + MaxW: real; // max wage + V: real; // volume + MaxV: real; // max volume + S: integer; // Signal + Threshold: real; // threshold +begin +// Log.LogAnalyze('[Analyze by Autocorrelation]'); + SzczytJest := false; + + // find maximum volume of first 1024 words of signal + MaxV := 0; + for S := 1 to 1024 do begin // 0.5.2: fix. was from 0 to 1023 +// Log.LogDebug('1'); +// Log.LogDebug(IntTostr(S)); + V := Abs(BufferArray[S]) / $10000; +// Log.LogDebug('2'); +// Log.LogDebug(IntTostr(S) + ': ' + FloatToStr(V) + ', MaxV='+floattostr(maxv)+', buf='+inttostr(length(BufferArray))); + if V > MaxV then MaxV := V; +// Log.LogDebug('3'); +// Log.LogDebug(IntTostr(S) + ': ' + FloatToStr(V) + ', MaxV='+floattostr(maxv)+', buf='+inttostr(length(BufferArray))); + end; + + + // prepare to analyze + MaxW := 0; + + // analyze all 12 halftones + for T := 0 to 35 do begin // to 11, then 23, now 35 (for Whitney and my high voice) + F := 130.81*Power(1.05946309436, T)/2; // let's analyze below 130.81 + Wages[T] := AnalyzeAutocorrelationFreq(F); + + if Wages[T] > MaxW then begin // this frequency has better wage + MaxW := Wages[T]; + MaxT := T; + end; + end; // for T + + Threshold := 0.1; + case Ini.Threshold of + 0: Threshold := 0.05; + 1: Threshold := 0.1; + 2: Threshold := 0.15; + 3: Threshold := 0.2; + end; + + //Log.LogDebug('Sound -> AnalyzeByAutocorrelation: MaxV='+floattostr(maxv)+', Threshold='+floattostr(threshold)); + if MaxV >= Threshold then begin // found acceptable volume // 0.1 + SzczytJest := true; + TonGamy := MaxT mod 12; + Ton := MaxT mod 12; + end; + +// Log.LogAnalyze('--> Weight: ') +// Log.LogAnalyze('--> Selected: ' + BoolToStr(SzczytJest, true) + +// ', TonGamy: ' + IntToStr(Ton) + +// ', MaxV: ' + FloatToStr(MaxV)); +// Log.LogAnalyze(''); + + +end; + +function TSound.AnalyzeAutocorrelationFreq(Freq: real): real; // result medium difference +var + Count: real; + Src: integer; + Dst: integer; + Move: integer; + Il: integer; // how many counts were done +begin + // we use Signal as source + Count := 0; + Il := 0; + Src := 1; + Move := Round(44100/Freq); + Dst := Src + Move; + + // ver 1 - sample 1 and compare n-times +{ while (Src <= Move) do begin // process by moving Src by one + while (Dst < n) do begin // process up to n (4KB) of Signal + Count := Count + Abs(Signal[Src] - Signal[Dst]) / $10000; + Inc(Dst, Move); + Inc(Il); + end; + + Inc(Src); + Dst := Src + Move; + end;} + + // ver 2 - compare in vertical + while (Dst < n) do begin // process up to n (4KB) of Signal + Count := Count + Abs(BufferArray[Src] - BufferArray[Dst]) / $10000; + Inc(Src); + Inc(Dst); + Inc(Il); + end; + + Result := 1 - Count / Il; +end; + +function GetMicrophone(handle: HSTREAM; buffer: Pointer; len: DWORD; user: DWORD): boolean; stdcall; +var + L: integer; + S: integer; + PB: pbytearray; + PW: pwordarray; + SI: smallintarray; + PSI: psmallintarray; + I: integer; + Skip: integer; + P1: integer; + P2: integer; + Boost: byte; +begin +// Log.LogDebug('Record -> GetMicrophone: len='+inttstr(len)); + + // set boost + case Ini.MicBoost of + 0: Boost := 1; + 1: Boost := 2; + 2: Boost := 4; + 3: Boost := 8; + end; + + // boost buffer + L := Len div 2; // number of samples + PSI := Buffer; + for S := 0 to L-1 do begin + I := PSI^[S] * Boost; + if I > 32767 then I := 32767; // 0.5.0: limit + if I < -32768 then I := -32768; // 0.5.0: limit + PSI^[S] := I; + end; + + // decode user + P1 := (user and 255) - 1; + P2 := (user div 256) - 1; + +// Log.LogDebug('Record -> GetMicrophone: P1='+inttostr(p1)+', P2='+inttostr(p2)); + + // 2 players USB mic, left channel + if P1 >= 0 then begin + L := Len div 4; // number of samples + PB := Buffer; +// Log.LogDebug('Record -> GetMicrophone -> Sound[P1].BufferNew.Clear'); + Sound[P1].BufferNew.Clear; // 0.5.2: problem on exiting + for S := 1 to L do begin + Sound[P1].BufferNew.Write(PB[(S-1)*4], 2); + end; + Sound[P1].ProcessNewBuffer; + end; + + // 2 players USB mic, right channel +// if Ini.Debug = 0 then Skip := 2 +// else Skip := 0; + Skip := 2; + + if P2 >= 0 then begin + L := Len div 4; // number of samples + PB := Buffer; + Sound[P2].BufferNew.Clear; + for S := 1 to L do begin + Sound[P2].BufferNew.Write(PB[Skip + (S-1)*4], 2); + end; + Sound[P2].ProcessNewBuffer; + end; + +// Log.LogDebug('Record -> GetMicrophone -> Finish'); + + Result := true; +end; + +constructor TRecord.Create; +var + SC: integer; // soundcard + SCI: integer; // soundcard input + Descr: string; + InputName: string; + Flags: integer; + No: integer; + function isDuplicate(Desc: String): Boolean; + var + I: Integer; + begin + Result := False; + //Check for Soundcard with same Description + For I := 0 to SC-1 do + begin + if (SoundCard[I].Description = Desc) then + begin + Result := True; + Break; + end; + end; + end; + +// mic: array[0..15] of integer; +begin + // checks for recording devices and puts them into array; + SetLength(SoundCard, 0); + + SC := 0; + Descr := BASS_RecordGetDeviceDescription(SC); + + while (Descr <> '') do begin + + //If there is another SoundCard with the Same ID, Search an available Name + if (IsDuplicate(Descr)) then + begin + No:= 1; //Count of SoundCards with same Name + Repeat + Inc(No) + Until not IsDuplicate(Descr + ' (' + InttoStr(No) + ')'); + //Set Description + Descr := Descr + ' (' + InttoStr(No) + ')'; + end; + + SetLength(SoundCard, SC+1); +// Log.LogError('Device #' + IntToStr(SC+1) + ': ' + Descr); + SoundCard[SC].Description := Descr; + + // check for recording inputs +// mic[device] := -1; // default to no change + SCI := 0; + BASS_RecordInit(SC); + Flags := BASS_RecordGetInput(SCI); + InputName := BASS_RecordGetInputName(SCI); +// Log.LogError('Input #' + IntToStr(SCI) + ' (' + IntToStr(Flags) + '): ' + InputName); + + SetLength(SoundCard[SC].Input, 1); + SoundCard[SC].Input[SCI].Name := InputName; + + // process each input + while (Flags <> -1) do begin + if SCI >= 1 then begin + SetLength(SoundCard[SC].Input, SCI+1); + InputName := BASS_RecordGetInputName(SCI); + SoundCard[SC].Input[SCI].Name := InputName; +// Log.LogError('Input #' + IntToStr(SCI) + ' (' + IntToStr(Flags) + '): ' + InputName); + end; + +{ if (flags and BASS_INPUT_TYPE_MASK) = BASS_INPUT_TYPE_MIC then begin + mic[device] := input; // auto set microphone + end;} + + Inc(SCI); + Flags := BASS_RecordGetInput(SCI); + end; + +{ if mic[device] <> -1 then begin + Log.LogAnalyze('Found the mic at input ' + IntToStr(Mic[device])) + end else begin + Log.LogAnalyze('Mic not found'); + mic[device] := 0; // setting to the first one (for kxproject) + end; + SoundCard[SC].InputSeleceted := Mic[Device];} + + + BASS_RecordFree; + + Inc(SC); + Descr := BASS_RecordGetDeviceDescription(SC); + end; // while +end; +end. + + diff --git a/Game/Code/Classes/UScores.dcu b/Game/Code/Classes/UScores.dcu new file mode 100644 index 00000000..16454265 Binary files /dev/null and b/Game/Code/Classes/UScores.dcu differ diff --git a/Game/Code/Classes/UScores.pas b/Game/Code/Classes/UScores.pas new file mode 100644 index 00000000..f1243868 --- /dev/null +++ b/Game/Code/Classes/UScores.pas @@ -0,0 +1,144 @@ +unit UScores; + +interface + +uses USongs, SQLiteTable3; + +procedure InitScore(const Filename: string); +procedure ReadScore(var Song: TSong); +procedure WriteScore(var Song: TSong); +procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); + +var +ScoreDB: TSqliteDatabase; +sFilename: string; + +implementation + +uses IniFiles, SysUtils; + +procedure InitScore(const Filename: string); +//var + //TableData: TSqliteTable; +begin + //Open Database + ScoreDB := TSqliteDatabase.Create(Filename); + sFilename := Filename; + + try + //Look for Tables => When not exist Create them + if not ScoreDB.TableExists('US_Scores') then + ScoreDB.execsql('CREATE TABLE `US_Scores` (`SongID` INT( 11 ) NOT NULL , `Difficulty` INT( 1 ) NOT NULL , `Player` VARCHAR( 150 ) NOT NULL , `Score` INT( 5 ) NOT NULL );'); + + if not ScoreDB.TableExists('US_Songs') then + ScoreDB.execsql('CREATE TABLE `US_Songs` (`ID` INTEGER PRIMARY KEY, `Artist` VARCHAR( 255 ) NOT NULL , `Title` VARCHAR( 255 ) NOT NULL );'); + + finally + //ScoreDB.Free; + end; + +end; + +procedure ReadScore(var Song: TSong); +var + TableData: TSqliteTable; + Dif: Byte; +begin + //ScoreDB := TSqliteDatabase.Create(sFilename); + try + try + //Search Song in DB + TableData := ScoreDB.GetTable('SELECT `Difficulty`, `Player`, `Score` FROM `us_scores` WHERE `SongID` = (SELECT `ID` FROM `us_songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '" LIMIT 1) ORDER BY `Score` DESC LIMIT 15'); + //Empty Old Scores + SetLength (Song.Score[0], 0); + SetLength (Song.Score[1], 0); + SetLength (Song.Score[2], 0); + + while not TableData.Eof do//Go through all Entrys + begin//Add one Entry to Array + Dif := StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Difficulty'])); + if (Dif>=0) AND (Dif<=2) then + begin + SetLength(Song.Score[Dif], Length(Song.Score[Dif]) + 1); + + Song.Score[Dif, high(Song.Score[Dif])].Name := TableData.FieldAsString(TableData.FieldIndex['Player']); + Song.Score[Dif, high(Song.Score[Dif])].Score:= StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Score'])); + end; + TableData.Next; + end; + + except //Im Fehlerfall + for Dif := 0 to 2 do + begin + SetLength(Song.Score[Dif], 1); + Song.Score[Dif, 1].Name := 'Error Reading ScoreDB'; + end; + end; + finally + //ScoreDb.Free; + end; +end; + +procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); +var +ID: Integer; +TableData: TSqliteTable; +begin + //ScoreDB := TSqliteDatabase.Create(sFilename); + try + + ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); + if ID = 0 then //Song doesn't exist -> Create + begin + ScoreDB.ExecSQL ('INSERT INTO `US_Songs` ( `ID` , `Artist` , `Title` ) VALUES (NULL , "' + Song.Artist + '", "' + Song.Title + '");'); + ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); + if ID = 0 then //Could not Create Table + exit; + end; + //Create new Entry + ScoreDB.ExecSQL('INSERT INTO `US_Scores` ( `SongID` , `Difficulty` , `Player` , `Score` ) VALUES ("' + InttoStr(ID) + '", "' + InttoStr(Level) + '", "' + Name + '", "' + InttoStr(Score) + '");'); + + //Delete Last Position when there are more than 5 Entrys + if ScoreDB.GetTableValue('SELECT COUNT(`SongID`) FROM `US_Scores` WHERE `SongID` = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'"') > 5 then + begin + TableData := ScoreDB.GetTable('SELECT `Player`, `Score` FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" ORDER BY `Score` ASC LIMIT 1'); + ScoreDB.ExecSQL('DELETE FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" AND `Player` = "' + TableData.FieldAsString(TableData.FieldIndex['Player']) + '" AND `Score` = "' + TableData.FieldAsString(TableData.FieldIndex['Score']) + '"'); + end; + + finally + //ScoreDB.Free; + end; +end; + +//Not used with new SQLLite DB System +procedure WriteScore(var Song: TSong); +{var + F: TIniFile; + S: integer; + Lev: integer; + LevS: string; + FileName: string;} +begin + {FileName := Song.Path + ChangeFileExt(Song.FileName, '.sco'); + if (not FileExists(FileName)) or (FileExists(FileName) and DeleteFile(FileName)) then begin + // file has been deleted -> creating new file + F := TIniFile.Create(FileName); + + for Lev := 0 to 2 do begin + case Lev of + 0: LevS := 'Easy'; + 1: LevS := 'Normal'; + 2: LevS := 'Hard'; + end; + + for S := 0 to high(Song.Score[Lev]) do begin + F.WriteString(LevS + IntToStr(S+1), 'Name', Song.Score[Lev, S].Name); + F.WriteInteger(LevS + IntToStr(S+1), 'Score', Song.Score[Lev, S].Score); + + end; // for S + end; // for Lev + F.Free; + end; // if} +end; + +end. diff --git a/Game/Code/Classes/USkins.dcu b/Game/Code/Classes/USkins.dcu new file mode 100644 index 00000000..89ea67c0 Binary files /dev/null and b/Game/Code/Classes/USkins.dcu differ diff --git a/Game/Code/Classes/USkins.pas b/Game/Code/Classes/USkins.pas new file mode 100644 index 00000000..6cd4a1db --- /dev/null +++ b/Game/Code/Classes/USkins.pas @@ -0,0 +1,158 @@ +unit USkins; + +interface + +type + TSkinTexture = record + Name: string; + FileName: string; + end; + + TSkinEntry = record + Theme: string; + Name: string; + Path: string; + FileName: string; + Creator: string; // not used yet + end; + + TSkin = class + Skin: array of TSkinEntry; + SkinTexture: array of TSkinTexture; + SkinPath: string; + Color: integer; + constructor Create; + procedure LoadList; + procedure ParseDir(Dir: string); + procedure LoadHeader(FileName: string); + procedure LoadSkin(Name: string); + function GetTextureFileName(TextureName: string): string; + function GetSkinNumber(Name: string): integer; + procedure onThemeChange; + end; + +var + Skin: TSkin; + +implementation + +uses IniFiles, Classes, SysUtils, ULog, UIni; + +constructor TSkin.Create; +begin + LoadList; +// LoadSkin('Lisek'); +// SkinColor := Color; +end; + +procedure TSkin.LoadList; +var + SR: TSearchRec; + SR2: TSearchRec; + SLen: integer; +begin + if FindFirst('Skins\*', faDirectory, SR) = 0 then begin + repeat + if (SR.Name <> '.') and (SR.Name <> '..') then + ParseDir('Skins\' + SR.Name + '\'); + until FindNext(SR) <> 0; + end; // if + FindClose(SR); +end; + +procedure TSkin.ParseDir(Dir: string); +var + SR: TSearchRec; + SLen: integer; +begin + if FindFirst(Dir + '*.ini', faAnyFile, SR) = 0 then begin + repeat + if (SR.Name <> '.') and (SR.Name <> '..') then + LoadHeader(Dir + SR.Name); + //Log.LogError(SR.Name); + until FindNext(SR) <> 0; + end; +end; + +procedure TSkin.LoadHeader(FileName: string); +var + SkinIni: TMemIniFile; + S: integer; +begin + SkinIni := TMemIniFile.Create(FileName); + + S := Length(Skin); + SetLength(Skin, S+1); + Skin[S].Path := IncludeTrailingBackslash(ExtractFileDir(FileName)); + Skin[S].FileName := ExtractFileName(FileName); + Skin[S].Theme := SkinIni.ReadString('Skin', 'Theme', ''); + Skin[S].Name := SkinIni.ReadString('Skin', 'Name', ''); + Skin[S].Creator := SkinIni.ReadString('Skin', 'Creator', ''); + + SkinIni.Free; +end; + +procedure TSkin.LoadSkin(Name: string); +var + SkinIni: TMemIniFile; + SL: TStringList; + T: integer; + S: integer; +begin + S := GetSkinNumber(Name); + SkinPath := Skin[S].Path; + + SkinIni := TMemIniFile.Create(SkinPath + Skin[S].FileName); + + SL := TStringList.Create; + SkinIni.ReadSection('Textures', SL); + + SetLength(SkinTexture, SL.Count); + for T := 0 to SL.Count-1 do begin + SkinTexture[T].Name := SL.Strings[T]; + SkinTexture[T].FileName := SkinIni.ReadString('Textures', SL.Strings[T], ''); + end; + + SL.Free; + SkinIni.Free; +end; + +function TSkin.GetTextureFileName(TextureName: string): string; +var + T: integer; +begin + Result := ''; + for T := 0 to High(SkinTexture) do + if SkinTexture[T].Name = TextureName then Result := SkinPath + SkinTexture[T].FileName; + +{ Result := SkinPath + 'Bar.jpg'; + if TextureName = 'Ball' then Result := SkinPath + 'Ball.bmp'; + if Copy(TextureName, 1, 4) = 'Gray' then Result := SkinPath + 'Ball.bmp'; + if Copy(TextureName, 1, 6) = 'NoteBG' then Result := SkinPath + 'Ball.bmp';} +end; + +function TSkin.GetSkinNumber(Name: string): integer; +var + S: integer; +begin + Result := 0; // set default to the first available skin + for S := 0 to High(Skin) do + if Skin[S].Name = Name then Result := S; +end; + +procedure TSkin.onThemeChange; +var + S: integer; + Name: String; +begin + SetLength(ISkin, 0); + Name := Uppercase(ITheme[Ini.Theme]); + for S := 0 to High(Skin) do + if Name = Uppercase(Skin[S].Theme) then begin + SetLength(ISkin, Length(ISkin)+1); + ISkin[High(ISkin)] := Skin[S].Name; + end; + +end; + +end. diff --git a/Game/Code/Classes/USongs.dcu b/Game/Code/Classes/USongs.dcu new file mode 100644 index 00000000..e58c47d8 Binary files /dev/null and b/Game/Code/Classes/USongs.dcu differ diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas new file mode 100644 index 00000000..c2532a03 --- /dev/null +++ b/Game/Code/Classes/USongs.pas @@ -0,0 +1,667 @@ +unit USongs; + +interface +uses SysUtils, ULog, UTexture, UCatCovers; + +type + TBPM = record + BPM: real; + StartBeat: real; + end; + + TScore = record + Name: string; + Score: integer; + Length: string; + end; + + TSong = record + Path: string; + Folder: string; // for sorting by folder + FileName: string; + + // sorting methods + Category: array of string; // I think I won't need this + Genre: string; + Edition: string; + Language: string; // 0.5.0: new + + Title: string; + Artist: string; + + Text: string; + Creator: string; + + Cover: string; + CoverTex: TTexture; + Mp3: string; + Background: string; + Video: string; + VideoGAP: real; + VideoLoaded: boolean; // 0.5.0: true if the video has been loaded + NotesGAP: integer; + Start: real; // in seconds + Finish: integer; // in miliseconds + Relative: boolean; + Resolution: integer; + BPM: array of TBPM; + GAP: real; // in miliseconds + + Score: array[0..2] of array of TScore; + + // these are used when sorting is enabled + Visible: boolean; // false if hidden, true if visible + Main: boolean; // false for songs, true for category buttons + OrderNum: integer; // has a number of category for category buttons and songs + OrderTyp: integer; // type of sorting for this button (0=name) + CatNumber: integer; // Count of Songs in Category for Cats and Number of Song in Category for Songs + end; + + TSongs = class + Song: array of TSong; // array of songs + Selected: integer; // selected song index + procedure LoadSongList; // load all songs + procedure BrowseDir(Dir: string); // should return number of songs in the future + procedure Sort(Order: integer); + function FindSongFile(Dir, Mask: string): string; + end; + + TCatSongs = class + Song: array of TSong; // array of categories with songs + Selected: integer; // selected song index + Order: integer; // order type (0=title) + CatNumShow: integer; // Category Number being seen + CatCount: integer; //Number of Categorys + + procedure Refresh; // refreshes arrays by recreating them from Songs array +// procedure Sort(Order: integer); + procedure ShowCategory(Index: integer); // expands all songs in category + procedure HideCategory(Index: integer); // hides all songs in category + procedure ClickCategoryButton(Index: integer); // uses ShowCategory and HideCategory when needed + procedure ShowCategoryList; //Hides all Songs And Show the List of all Categorys + function FindNextVisible(SearchFrom:integer): integer; //Find Next visible Song + function VisibleSongs: integer; // returns number of visible songs (for tabs) + function VisibleIndex(Index: integer): integer; // returns visible song index (skips invisible) + end; + +var + Songs: TSongs; // all songs + CatSongs: TCatSongs; // categorized songs + AktSong: TSong; // one song *unknown use) + +implementation + +uses UPliki, UIni, UFiles; + +procedure TSongs.LoadSongList; +begin + Log.LogStatus('Initializing', 'LoadSongList'); + + // clear + Setlength(Song, 0); + + // browse directories + BrowseDir(SongPath); +// if Ini.Debug = 1 then BrowseDir('D:\Extract\Songs\'); +end; + +procedure TSongs.BrowseDir(Dir: string); +var + SR: TSearchRec; // for parsing Songs Directory + SLen: integer; +begin + if FindFirst(Dir + '*', faDirectory, SR) = 0 then begin + repeat + if (SR.Name <> '.') and (SR.Name <> '..') then + BrowseDir(Dir + Sr.Name + '\'); + until FindNext(SR) <> 0; + end; // if + FindClose(SR); + +// Log.LogStatus('Parsing directory: ' + Dir + SR.Name, 'LoadSongList'); + + if FindFirst(Dir + '*.txt', 0, SR) = 0 then begin +// Log.LogStatus('Parsing file: ' + Dir + SR.Name + '\' + SRD.Name, 'LoadSongList'); + repeat + SLen := Length(Song); + SetLength(Song, SLen + 1); + Song[SLen].Path := Dir; + Song[SLen].Folder := Copy(Dir, Length(SongPath)+1, 10000); + Song[SLen].Folder := Copy(Song[SLen].Folder, 1, Pos('\', Song[SLen].Folder)-1); + Song[SLen].FileName := SR.Name; + + if (AnalyseFile(Song[SLen]) = false) then SetLength(Song, SLen) + else begin + // scanning complete, file is good + // if there is no cover then try to find it + if Song[SLen].Cover = '' then Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg'); +// if Song[SLen].Background = '' then begin +// Song[SLen].Background := FindSongFile(Dir, '*[BG].jpg'); +// end; // no needed here} + + // fix by adding path. no, don't fix it. +// if Song[SLen].Cover <> '' then +// Song[SLen].Cover := Song[SLen].Path + Song[SLen].Cover; + end; + + until FindNext(SR) <> 0; + end; // if FindFirst + FindClose(SR); +end; + +procedure TSongs.Sort(Order: integer); +var + S: integer; + S2: integer; + TempSong: TSong; +begin + case Order of + sEdition: // by edition + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Edition < Song[S-1].Edition then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + end; + sGenre: // by genre + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Genre < Song[S-1].Genre then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + end; + sTitle: // by title + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Title < Song[S-1].Title then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + + end; + sArtist: // by artist + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Artist < Song[S-1].Artist then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + end; + sFolder: // by folder + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Folder < Song[S-1].Folder then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + end; + sTitle2: // by title2 + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Title < Song[S-1].Title then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + + end; + sArtist2: // by artist2 + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Artist < Song[S-1].Artist then begin + // zamiana miejscami + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + end; + sLanguage: // by Language + begin + for S2 := 0 to Length(Song)-1 do + for S := 1 to Length(Song)-1 do + if Song[S].Language < Song[S-1].Language then begin + TempSong := Song[S-1]; + Song[S-1] := Song[S]; + Song[S] := TempSong; + end; + end; + + end; // case +end; + +function TSongs.FindSongFile(Dir, Mask: string): string; +var + SR: TSearchRec; // for parsing song directory +begin + Result := ''; + if FindFirst(Dir + Mask, faDirectory, SR) = 0 then begin + Result := SR.Name; + end; // if + FindClose(SR); +end; + +procedure TCatSongs.Refresh; +var + S: integer; // temporary song index + CatLen: integer; // length of CatSongs.Song + Letter: char; // current letter for sorting using letter + SS: string; // current edition for sorting using edition, genre etc. + Order: integer; // number used for ordernum + Letter2: char; // + CatNumber:integer; // Number of Song in Category +begin + CatNumShow := -1; +// Songs.Sort(0); // by title + +case Ini.Sorting of + sEdition: begin + Songs.Sort(sArtist); + Songs.Sort(sEdition); + end; + sGenre: begin + Songs.Sort(sArtist); + Songs.Sort(sGenre); + end; + sLanguage: begin + Songs.Sort(sArtist); + Songs.Sort(sLanguage); + end; + sFolder: begin + Songs.Sort(sArtist); + Songs.Sort(sFolder); + end; + sTitle: Songs.Sort(sTitle); + sArtist: Songs.Sort(sArtist); + sTitle2: Songs.Sort(sTitle2); // by title2 + sArtist2: Songs.Sort(sArtist2); // by artist2 + + end; // case + + + Letter := ' '; + SS := ''; + Order := 0; + CatNumber := 0; + + //Songs leeren + SetLength (Song, 0); + + for S := Low(Songs.Song) to High(Songs.Song) do begin + if (Ini.Tabs = 1) then + if (Ini.Sorting = sEdition) and (SS <> Songs.Song[S].Edition) then begin + // add Category Button + Inc(Order); + SS := Songs.Song[S].Edition; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := '[' + SS + ']'; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; + CatSongs.Song[CatLen].OrderNum := Order; + + + + // 0.4.3 + // if SS = 'Singstar' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar.jpg'; + // if SS = 'Singstar Part 2' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar.jpg'; + // if SS = 'Singstar German' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar.jpg'; + // if SS = 'Singstar Spanish' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar.jpg'; + // if SS = 'Singstar Italian' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar.jpg'; + // if SS = 'Singstar French' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar.jpg'; + // if SS = 'Singstar Party' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar Party.jpg'; + // if SS = 'Singstar Popworld' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar Popworld.jpg'; + // if SS = 'Singstar 80s' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar 80s.jpg'; + // if SS = 'Singstar 80s Polish' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar 80s.jpg'; + // if SS = 'Singstar Rocks' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar Rocks.jpg'; + // if SS = 'Singstar Anthems' then CatSongs.Song[CatLen].Cover := CoversPath + 'Singstar Anthems.jpg'; + + {// cover-patch + if FileExists(CoversPath + SS + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + SS + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';//} + + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, SS); + + //CatNumber Patch + if (SS <> '') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end + + else if (Ini.Sorting = sGenre) and (SS <> Songs.Song[S].Genre) then begin + // add Genre Button + Inc(Order); + SS := Songs.Song[S].Genre; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := SS; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; + CatSongs.Song[CatLen].OrderNum := Order; + + {// cover-patch + if FileExists(CoversPath + SS + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + SS + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, SS); + + //CatNumber Patch + if (SS <> '') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end + + else if (Ini.Sorting = sLanguage) and (SS <> Songs.Song[S].Language) then begin + // add Language Button + Inc(Order); + SS := Songs.Song[S].Language; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := SS; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; + CatSongs.Song[CatLen].OrderNum := Order; + + {// cover-patch + if FileExists(CoversPath + SS + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + SS + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, SS); + + //CatNumber Patch + if (SS <> '') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end + + else if (Ini.Sorting = sTitle) and (Length(Songs.Song[S].Title)>=1) and (Letter <> Songs.Song[S].Title[1]) then begin + // add a letter Category Button + Inc(Order); + Letter := Songs.Song[S].Title[1]; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := '[' + Letter + ']'; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; +// Order := ord(Letter); + CatSongs.Song[CatLen].OrderNum := Order; + + + {// cover-patch + if FileExists(CoversPath + 'Title' + Letter + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'Title' + Letter + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, Letter); + + //CatNumber Patch + if (Letter <> ' ') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end + + else if (Ini.Sorting = sArtist) and (Length(Songs.Song[S].Artist)>=1) and (Letter <> Songs.Song[S].Artist[1]) then begin + // add a letter Category Button + Inc(Order); + Letter := Songs.Song[S].Artist[1]; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := '[' + Letter + ']'; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; +// Order := ord(Letter); + CatSongs.Song[CatLen].OrderNum := Order; + + {// cover-patch + if FileExists(CoversPath + 'Artist' + Letter + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'Artist' + Letter + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, Letter); + + //CatNumber Patch + if (Letter <> ' ') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end + + else if (Ini.Sorting = sFolder) and (SS <> Songs.Song[S].Folder) then begin + // 0.5.0: add folder tab + Inc(Order); + SS := Songs.Song[S].Folder; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := SS; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; + CatSongs.Song[CatLen].OrderNum := Order; + + {// cover-patch + if FileExists(CoversPath + SS + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + SS + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, SS); + + //CatNumber Patch + if (SS <> '') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end + + else if (Ini.Sorting = sTitle2) AND (Length(Songs.Song[S].Title)>=1) then begin + if (ord(Songs.Song[S].Title[1]) > 47) and (ord(Songs.Song[S].Title[1]) < 58) then Letter2 := '#' else Letter2 := Songs.Song[S].Title[1]; + if (Letter <> Letter2) then begin + // add a letter Category Button + Inc(Order); + Letter := Letter2; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := '[' + Letter + ']'; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; +// Order := ord(Letter); + CatSongs.Song[CatLen].OrderNum := Order; + + {// cover-patch + if FileExists(CoversPath + 'Title' + Letter + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'Title' + Letter + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, Letter); + + //CatNumber Patch + if (Letter <> ' ') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end; + end + + else if (Ini.Sorting = sArtist2) AND (Length(Songs.Song[S].Artist)>=1) then begin + if (ord(Songs.Song[S].Artist[1]) > 47) and (ord(Songs.Song[S].Artist[1]) < 58) then Letter2 := '#' else Letter2 := Songs.Song[S].Artist[1]; + if (Letter <> Letter2) then begin + // add a letter Category Button + Inc(Order); + Letter := Letter2; + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + CatSongs.Song[CatLen].Artist := '[' + Letter + ']'; + CatSongs.Song[CatLen].Main := true; + CatSongs.Song[CatLen].OrderTyp := 0; +// Order := ord(Letter); + CatSongs.Song[CatLen].OrderNum := Order; + + {// cover-patch + if FileExists(CoversPath + 'Artist' + Letter + '.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'Artist' + Letter + '.jpg' + else if FileExists(CoversPath + 'NoCover.jpg') then CatSongs.Song[CatLen].Cover := CoversPath + 'NoCover.jpg';} + CatSongs.Song[CatLen].Cover := CatCovers.GetCover(Ini.Sorting, Letter); + + //CatNumber Patch + if (Letter <> ' ') then + begin + Song[CatLen - CatNumber - 1].CatNumber := CatNumber;//Set CatNumber of Categroy + CatNumber := 0; + end; + + CatSongs.Song[CatLen].Visible := true; + end; + end; + + + CatLen := Length(CatSongs.Song); + SetLength(CatSongs.Song, CatLen+1); + + Inc (CatNumber); //Increase Number in Cat + + CatSongs.Song[CatLen] := Songs.Song[S]; + CatSongs.Song[CatLen].OrderNum := Order; // assigns category + CatSongs.Song[CatLen].CatNumber := CatNumber; + + if (Ini.Tabs = 0) then CatSongs.Song[CatLen].Visible := true + else if (Ini.Tabs = 1) then CatSongs.Song[CatLen].Visible := false; +// if (Ini.Tabs = 1) and (Order = 1) then CatSongs.Song[CatLen].Visible := true; // open first tab +//CatSongs.Song[CatLen].Visible := true; + + end; +//CatNumber Patch - Set CatNumber of Last Category +if (ini.Tabs_at_startup = 1) And (high(Song) >=1) then + Song[CatLen - CatNumber].CatNumber := CatNumber;//Set CatNumber of Categroy +//CatCount Patch +CatCount := Order; +end; + +procedure TCatSongs.ShowCategory(Index: integer); +var + S: integer; // song +begin + CatNumShow := Index; + for S := 0 to high(CatSongs.Song) do begin + if CatSongs.Song[S].OrderNum = Index then + CatSongs.Song[S].Visible := true + else + if not CatSongs.Song[S].Main then + CatSongs.Song[S].Visible := false; + end; +end; + +procedure TCatSongs.HideCategory(Index: integer); // hides all songs in category +var + S: integer; // song +begin + for S := 0 to high(CatSongs.Song) do begin + if not CatSongs.Song[S].Main then + CatSongs.Song[S].Visible := false // hides all at now + end; +end; + +procedure TCatSongs.ClickCategoryButton(Index: integer); +var + Num, S: integer; +begin + Num := CatSongs.Song[Index].OrderNum; + if Num <> CatNumShow then + begin + ShowCategory(Num); + //Hide Categorys when in Category Hack + for S := low(CatSongs.Song) to high(CatSongs.Song) do begin + if CatSongs.Song[S].Main then //Hide all Cats + CatSongs.Song[S].Visible := false + end; + //Hide Categorys when in Category Hack End + end + else begin + ShowCategoryList; + end; +end; + +//Hide Categorys when in Category Hack +procedure TCatSongs.ShowCategoryList; +var + Num, S: integer; +begin + //Hide All Songs Show All Cats + for S := 0 to high(CatSongs.Song) do begin + if CatSongs.Song[S].Main then + CatSongs.Song[S].Visible := true + else + CatSongs.Song[S].Visible := false + end; + CatSongs.Selected := CatNumShow; //Show last shown Category + CatNumShow := -1; +end; +//Hide Categorys when in Category Hack End + +//Wrong song selected when tabs on bug +function TCatSongs.FindNextVisible(SearchFrom:integer): integer;//Find next Visible Song +var + I: Integer; + begin + Result := -1; + I := SearchFrom + 1; + while not CatSongs.Song[I].Visible do + begin + Inc (I); + if (I>high(CatSongs.Song)) then + I := low(CatSongs.Song); + if (I = SearchFrom) then //Make One Round and no song found->quit + break; + end; + end; +//Wrong song selected when tabs on bug End + +function TCatSongs.VisibleSongs: integer; +var + S: integer; // song +begin + Result := 0; + for S := 0 to high(CatSongs.Song) do + if CatSongs.Song[S].Visible = true then Inc(Result); +end; + +function TCatSongs.VisibleIndex(Index: integer): integer; +var + S: integer; // song +begin + Result := 0; + for S := 0 to Index-1 do + if CatSongs.Song[S].Visible = true then Inc(Result); +end; + +end. diff --git a/Game/Code/Classes/UTexture.dcu b/Game/Code/Classes/UTexture.dcu new file mode 100644 index 00000000..ec06b7e4 Binary files /dev/null and b/Game/Code/Classes/UTexture.dcu differ diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas new file mode 100644 index 00000000..767d53ec --- /dev/null +++ b/Game/Code/Classes/UTexture.pas @@ -0,0 +1,811 @@ +unit UTexture; + +// Plain (alpha = 1) +// Transparent +// Transparent Range +// Font (white is drawn, black is transparent) +// Font Outline (Font with darker outline) +// Font Outline 2 (Font with darker outline) +// Font Black (black is drawn, white is transparent) +// Font Gray (gray is drawn, white is transparent) +// Arrow (for arrows, white is white, gray has color, black is transparent); + +interface +uses OpenGL12, Windows, Math, Classes, SysUtils, Graphics, JPEG, UThemes; + +procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32; +//procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32; +//function gluBuild2DMipmaps (target: GLenum; components, width, height: GLint; +// format, atype: GLenum; data: Pointer): Integer; stdcall; external glu32; +//procedure glCopyTexImage2D(target: GLenum; level: GLint; internalFormat: GLenum; x, y: GLint; width, height: GLsizei; border: GLint); stdcall; external opengl32; + + +type + TTexture = record + TexNum: integer; + X: real; + Y: real; + Z: real; // new + W: real; + H: real; + ScaleW: real; // for dynamic scalling while leaving width constant + ScaleH: real; // for dynamic scalling while leaving height constant + Rot: real; // 0 - 2*pi + Int: real; // intensity + ColR: real; + ColG: real; + ColB: real; + TexW: real; // used? + TexH: real; // used? + TexX1: real; + TexY1: real; + TexX2: real; + TexY2: real; + Alpha: real; + Name: string; // 0.5.0: experimental for handling cache images. maybe it's useful for dynamic skins + end; + + TTextureEntry = record + Name: string; + Typ: string; + + // we use normal TTexture, it's easier to implement and if needed - we copy ready data + Texture: TTexture; + TextureCache: TTexture; // 0.5.0 + end; + + TTextureDatabase = record + Texture: array of TTextureEntry; + end; + + TTextureUnit = class + Limit: integer; + CreateCacheMipmap: boolean; + +// function GetNumberFor + function GetTexture(Name, Typ: string): TTexture; overload; + function GetTexture(Name, Typ: string; FromCache: boolean): TTexture; overload; + function FindTexture(Name: string): integer; + function LoadTexture(FromRegistry: boolean; Nazwa, Format, Typ: PChar; Col: LongWord): TTexture; overload; + function LoadTexture(Nazwa, Format, Typ: PChar; Col: LongWord): TTexture; overload; + function LoadTexture(Nazwa: string): TTexture; overload; + function CreateTexture(var Data: array of byte; Name: string; W, H: word; Bits: byte): TTexture; + procedure UnloadTexture(Name: string; FromCache: boolean); + end; + +var + Texture: TTextureUnit; + TextureDatabase: TTextureDatabase; + + + // for print screens +// PrintScreenTex: GLuint; +// PrintScreenData: array[0..480-1, 0..640-1] of longword; + PrintScreenData: array[0..1024*768-1] of longword; + +// Tekstur: Gluint; + ActTex: GLuint;//integer; + +{ Tekstura: array[1..32] of TTekstura; + Mipmapping: boolean = true;} + + TexOrygW: integer; + TexOrygH: integer; + TexNewW: integer; + TexNewH: integer; +{ RLE: array[1..128*128] of byte; + RLE2: array[1..128*128] of byte;} + + TexFitW: integer; + TexFitH: integer; // new for limit + + TextureD8: array[1..1024*1024] of byte; // 1MB + TextureD16: array[1..1024*1024, 1..2] of byte; // luminance/alpha tex (2MB) + TextureD24: array[1..1024*1024, 1..3] of byte; // normal 24-bit tex (3MB) + TextureD242: array[1..512*512, 1..3] of byte; // normal 24-bit tex (0,75MB) + TextureD32: array[1..1024*1024, 1..4] of byte; // transparent 32-bit tex (4MB) + // total 40MB at 2048*2048 + // total 10MB at 1024*1024 + +{ Paleta: array[0..255, 1..4] of byte; + Len: integer;} + Mipmapping: Boolean; + + CacheMipmap: array[0..256*256*3-1] of byte; // 3KB + + +implementation +uses ULog, DateUtils, UCovers; + +function TTextureUnit.GetTexture(Name, Typ: string): TTexture; +begin + Result := GetTexture(Name, Typ, true); +end; + +function TTextureUnit.GetTexture(Name, Typ: string; FromCache: boolean): TTexture; +var + T: integer; // texture + C: integer; // cover + Data: array of byte; +begin + // find texture entry + T := FindTexture(Name); + + if T = -1 then begin + // create texture entry + T := Length(TextureDatabase.Texture); + SetLength(TextureDatabase.Texture, T+1); + TextureDatabase.Texture[T].Name := Name; + TextureDatabase.Texture[T].Typ := Typ; + + // inform database that not textures has been loaded into memory + TextureDatabase.Texture[T].Texture.TexNum := -1; + TextureDatabase.Texture[T].TextureCache.TexNum := -1; + end; + + // use preloaded texture + if (not FromCache) or (FromCache and not Covers.CoverExists(Name)) then begin + // use full texture + if TextureDatabase.Texture[T].Texture.TexNum = -1 then begin + // load texture + TextureDatabase.Texture[T].Texture := LoadTexture(false, pchar(Name), 'JPG', pchar(Typ), $0); + end; + + // use texture + Result := TextureDatabase.Texture[T].Texture; + + end; + + if FromCache and Covers.CoverExists(Name) then begin + // use cache texture + C := Covers.CoverNumber(Name); + + if TextureDatabase.Texture[T].TextureCache.TexNum = -1 then begin + // load texture + Covers.PrepareData(Name); +{ Covers.Data[0] := 0; + Covers.Data[1] := 0; + Covers.Data[2] := 0; + Covers.Data[3] := 255; + Covers.Data[4] := 255; + Covers.Data[5] := 255;} + TextureDatabase.Texture[T].TextureCache := CreateTexture(Covers.Data, Name, Covers.Cover[C].W, Covers.Cover[C].H, 24); + end; + + // use texture + Result := TextureDatabase.Texture[T].TextureCache; + end; +end; + +function TTextureUnit.FindTexture(Name: string): integer; +var + T: integer; // texture +begin + Result := -1; + for T := 0 to high(TextureDatabase.Texture) do + if TextureDatabase.Texture[T].Name = Name then + Result := T; +end; + +function TTextureUnit.LoadTexture(FromRegistry: boolean; Nazwa, Format, Typ: PChar; Col: LongWord): TTexture; +var + Res: TResourceStream; + TextureB: TBitmap; + TextureJ: TJPEGImage; + + Pet: integer; + Pet2: integer; + Pix: integer; + ColInt: real; + PPix: PByteArray; + TempA: integer; + Error: integer; + SkipX: integer; +begin + Log.BenchmarkStart(4); + Mipmapping := true; + + if FromRegistry then begin + try + Res := TResourceStream.Create(HInstance, Nazwa, Format); + except + beep; + Exit; + end; + end; + + if FromRegistry or ((not FromRegistry) and FileExists(Nazwa)) then begin + + TextureB := TBitmap.Create; + + if Format = 'JPG' then begin + TextureJ := TJPEGImage.Create; + if FromRegistry then TextureJ.LoadFromStream(Res) + else begin + if FileExists(Nazwa) then + TextureJ.LoadFromFile(Nazwa) + else + Exit; + end; + TextureB.Assign(TextureJ); + TextureJ.Free; + end; + if Format = 'BMP' then begin + if FromRegistry then TextureB.LoadFromStream(Res) + else TextureB.LoadFromFile(Nazwa); + end; + + if FromRegistry then Res.Free; + + if (TextureB.Width > 1024) or (TextureB.Height > 1024) then begin // will be fixed in 0.5.1 and dynamically extended to 8192x8192 depending on the driver + Log.LogError('Image ' + Nazwa + ' is too big (' + IntToStr(TextureB.Width) + 'x' + IntToStr(TextureB.Height) + ')'); + Result.TexNum := -1; + end else begin + + glGenTextures(1, ActTex); + glBindTexture(GL_TEXTURE_2D, ActTex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + if Typ = 'Plain' then begin + // wymiary + TexOrygW := TextureB.Width; + TexOrygH := TextureB.Height; + TexNewW := Round(Power(2, Ceil(Log2(TexOrygW)))); + TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); + + // kopiowanie + TextureB.PixelFormat := pf24bit; +{ if (TextureB.PixelFormat = pf8bit) then begin + for Pet := 0 to TexOrygH-1 do begin + for Pet2 := 0 to TexOrygW-1 do begin + Pix := TextureB.Canvas.Pixels[Pet2, Pet]; + TextureD24[Pet*TexNewW + Pet2+1, 1] := Pix; + TextureD24[Pet*TexNewW + Pet2+1, 2] := Pix div 256; + TextureD24[Pet*TexNewW + Pet2+1, 3] := Pix div (256*256); + end; + end; + end;} + if (TexOrygW <= Limit) and (TexOrygW <= Limit) then begin + if (TextureB.PixelFormat = pf24bit) then begin + for Pet := 0 to TexOrygH-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TexOrygW-1 do begin + TextureD24[Pet*TexNewW + Pet2+1, 1] := PPix[Pet2*3+2]; + TextureD24[Pet*TexNewW + Pet2+1, 2] := PPix[Pet2*3+1]; + TextureD24[Pet*TexNewW + Pet2+1, 3] := PPix[Pet2*3]; + end; + end; + end; + end else begin + // limit + TexFitW := 4 * (TexOrygW div 4); // fix for bug in gluScaleImage + TexFitH := TexOrygH; + if (TextureB.PixelFormat = pf24bit) then begin + for Pet := 0 to TexOrygH-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TexOrygW-1 do begin + TextureD24[Pet*TexFitW + Pet2+1, 1] := PPix[Pet2*3+2]; + TextureD24[Pet*TexFitW + Pet2+1, 2] := PPix[Pet2*3+1]; + TextureD24[Pet*TexFitW + Pet2+1, 3] := PPix[Pet2*3]; + end; + end; + end; + gluScaleImage(GL_RGB, TexFitW, TexFitH, GL_UNSIGNED_BYTE, @TextureD24, + Limit, Limit, GL_UNSIGNED_BYTE, @TextureD24); // takes some time + + TexNewW := Limit; + TexNewH := Limit; + TexOrygW := Limit; + TexOrygH := Limit; + end; + + // creating cache mipmap + if CreateCacheMipmap then begin + if (TexOrygW <> TexNewW) or (TexOrygH <> TexNewH) then begin + // texture only uses some of it's space. there's a need for resize to fit full size + // and get best quality + TexFitW := 4 * (TexOrygW div 4); // 0.5.0: fix for bug in gluScaleImage + SkipX := (TexOrygW div 2) mod 2; // 0.5.0: try to center image + + TexFitH := TexOrygH; + for Pet := 0 to TexOrygH-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TexOrygW-1 do begin + TextureD242[Pet*TexFitW + Pet2+1, 1] := PPix[(Pet2+SkipX)*3+2]; + TextureD242[Pet*TexFitW + Pet2+1, 2] := PPix[(Pet2+SkipX)*3+1]; + TextureD242[Pet*TexFitW + Pet2+1, 3] := PPix[(Pet2+SkipX)*3]; + end; + end; + gluScaleImage(GL_RGB, TexFitW, TexFitH, GL_UNSIGNED_BYTE, @TextureD242, + Covers.W, Covers.H, GL_UNSIGNED_BYTE, @CacheMipmap[0]); // takes some time + + end else begin + // texture fits perfectly + gluScaleImage(GL_RGB, TexOrygW, TexOrygH, GL_UNSIGNED_BYTE, @TextureD24, + Covers.W, Covers.H, GL_UNSIGNED_BYTE, @CacheMipmap[0]); // takes some time + end; + end; + + glTexImage2D(GL_TEXTURE_2D, 0, 3, TexNewW, TexNewH, 0, GL_RGB, GL_UNSIGNED_BYTE, @TextureD24); + if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TexNewW, TexNewH, GL_RGB, GL_UNSIGNED_BYTE, @TextureD24); + if Error > 0 then beep; + end + end; + + if Typ = 'Transparent' then begin + // wymiary + TexOrygW := TextureB.Width; + TexOrygH := TextureB.Height; + TexNewW := Round(Power(2, Ceil(Log2(TexOrygW)))); + TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); + TextureB.Width := TexNewW; + TextureB.Height := TexNewH; + // kopiowanie + for Pet := 0 to TexOrygH-1 do begin + for Pet2 := 0 to TexOrygW-1 do begin + Pix := TextureB.Canvas.Pixels[Pet2, Pet]; + if Pix = Col then begin + TextureD32[Pet*TexNewW + Pet2 + 1, 1] := 0; + TextureD32[Pet*TexNewW + Pet2 + 1, 2] := 0; + TextureD32[Pet*TexNewW + Pet2 + 1, 3] := 0; + TextureD32[Pet*TexNewW + Pet2 + 1, 4] := 0; + end else begin + TextureD32[Pet*TexNewW + Pet2+1, 1] := Pix; + TextureD32[Pet*TexNewW + Pet2+1, 2] := Pix div 256; + TextureD32[Pet*TexNewW + Pet2+1, 3] := Pix div (256*256); + TextureD32[Pet*TexNewW + Pet2+1, 4] := 255; + end; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TexNewW, TexNewH, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); +{ if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 4, TextureB.Width, TextureB.Height, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + if Error > 0 then beep; + end;} + end; + + if Typ = 'Transparent Range' then begin + // wymiary + TexOrygW := TextureB.Width; + TexOrygH := TextureB.Height; + TexNewW := Round(Power(2, Ceil(Log2(TexOrygW)))); + TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); + TextureB.Width := TexNewW; + TextureB.Height := TexNewH; + // kopiowanie + for Pet := 0 to TexOrygH-1 do begin + for Pet2 := 0 to TexOrygW-1 do begin + Pix := TextureB.Canvas.Pixels[Pet2, Pet]; + TextureD32[Pet*TexNewW + Pet2+1, 1] := Pix; + TextureD32[Pet*TexNewW + Pet2+1, 2] := Pix div 256; + TextureD32[Pet*TexNewW + Pet2+1, 3] := Pix div (256*256); + TextureD32[Pet*TexNewW + Pet2+1, 4] := 256 - Pix div 256; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TexNewW, TexNewH, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); +{ if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 4, TextureB.Width, TextureB.Height, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + if Error > 0 then beep; + end;} + end; + + if Typ = 'Font' then begin + TextureB.PixelFormat := pf24bit; + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := PPix[Pet2 * 3]; + TextureD16[Pet*TextureB.Width + Pet2 + 1, 1] := 255; + TextureD16[Pet*TextureB.Width + Pet2 + 1, 2] := Pix; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 2, TextureB.Width, TextureB.Height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, @TextureD16); + + if Mipmapping then glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 2, TextureB.Width, TextureB.Height, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, @TextureD16); + if Error > 0 then beep; + end; + end; + + if Typ = 'Font Outline' then begin + TextureB.PixelFormat := pf24bit; + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := PPix[Pet2 * 3]; + + Col := Pix; + if Col < 127 then Col := 127; + + TempA := Pix; + if TempA >= 95 then TempA := 255; + if TempA >= 31 then TempA := 255; + if Pix < 95 then TempA := (Pix * 256) div 96; + + + TextureD16[Pet*TextureB.Width + Pet2 + 1, 1] := Col; + TextureD16[Pet*TextureB.Width + Pet2 + 1, 2] := TempA; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 2, TextureB.Width, TextureB.Height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, @TextureD16); + + if Mipmapping then glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 2, TextureB.Width, TextureB.Height, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, @TextureD16); + if Error > 0 then beep; + end; + end; + + if Typ = 'Font Outline 2' then begin + TextureB.PixelFormat := pf24bit; + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := PPix[Pet2 * 3]; + + Col := Pix; + if Col < 31 then Col := 31; + + TempA := Pix; + if TempA >= 31 then TempA := 255; + if Pix < 31 then TempA := Pix * (256 div 32); + + TextureD16[Pet*TextureB.Width + Pet2 + 1, 1] := Col; + TextureD16[Pet*TextureB.Width + Pet2 + 1, 2] := TempA; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 2, TextureB.Width, TextureB.Height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, @TextureD16); + + if Mipmapping then glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 2, TextureB.Width, TextureB.Height, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, @TextureD16); + if Error > 0 then beep; + end; + end; + + if Typ = 'Font Black' then begin + // normalnie 0,125s bez niczego 0,015s - 0,030s z pix 0,125s + // wymiary + TextureB.PixelFormat := pf24bit; + TexOrygW := TextureB.Width; + TexOrygH := TextureB.Height; + TexNewW := Round(Power(2, Ceil(Log2(TexOrygW)))); + TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); + TextureB.Width := TexNewW; + TextureB.Height := TexNewH; + // kopiowanie + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := PPix[Pet2*3]; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 1] := 255; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 2] := 255; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 3] := 255; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 4] := 255 - (Pix mod 256); + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureB.Width, TextureB.Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + end; + + if Typ = 'Alpha Black Colored' then begin + TextureB.PixelFormat := pf24bit; + TexOrygW := TextureB.Width; + TexOrygH := TextureB.Height; + TexNewW := Round(Power(2, Ceil(Log2(TexOrygW)))); + TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); + TextureB.Width := TexNewW; + TextureB.Height := TexNewH; + // kopiowanie + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := PPix[Pet2*3]; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 1] := (Col div $10000) and $FF; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 2] := (Col div $100) and $FF; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 3] := Col and $FF; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 4] := 255 - (Pix mod 256); + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureB.Width, TextureB.Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + end; + + if Typ = 'Font Gray' then begin + // wymiary + TexOrygW := TextureB.Width; + TexOrygH := TextureB.Height; + TexNewW := Round(Power(2, Ceil(Log2(TexOrygW)))); + TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); + TextureB.Width := TexNewW; + TextureB.Height := TexNewH; + // kopiowanie + for Pet := 0 to TextureB.Height-1 do begin + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := TextureB.Canvas.Pixels[Pet2, Pet]; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 1] := 127; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 2] := 127; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 3] := 127; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 4] := 255 - (Pix mod 256); + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureB.Width, TextureB.Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); +{ if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 4, TextureB.Width, TextureB.Height, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + if Error > 0 then beep; + end;} + end; + + if Typ = 'Arrow' then begin + TextureB.PixelFormat := pf24bit; + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + Pix := PPix[Pet2 * 3]; + + // transparency + if Pix >= 127 then TempA := 255; + if Pix < 127 then TempA := Pix * 2; + + // ColInt = color intensity + if Pix < 127 then ColInt := 1; + if Pix >= 127 then ColInt := 2 - Pix / 128; + //0.75, 0.6, 0.25 + + TextureD32[Pet*TextureB.Width + Pet2 + 1, 1] := Round(ColInt * 0.75 * 255 + (1 - ColInt) * 255); + TextureD32[Pet*TextureB.Width + Pet2 + 1, 2] := Round(ColInt * 0.6 * 255 + (1 - ColInt) * 255); + TextureD32[Pet*TextureB.Width + Pet2 + 1, 3] := Round(ColInt * 0.25 * 255 + (1 - ColInt) * 255); + TextureD32[Pet*TextureB.Width + Pet2 + 1, 4] := TempA; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureB.Width, TextureB.Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + + if Mipmapping then glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 4, TextureB.Width, TextureB.Height, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + if Error > 0 then beep; + end; + end; + + if Typ = 'Note Plain' then begin + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + + + + // Skin Patch + // 0-191= Fade Black to Col, 192= Col, 193-254 Fade Col to White, 255= White + case PPix[Pet2*3] of + 0..191: Pix := $10000 * ((((Col div $10000) and $FF) * PPix[Pet2*3]) div $Bf) + $100 * ((((Col div $100) and $FF) * PPix[Pet2*3]) div $Bf) + (((Col and $FF) * PPix[Pet2*3]) div $Bf); + 192: Pix := Col; + 193..254: Pix := Col + ($10000 * ((($FF - ((Col div $10000) and $FF)) * ((PPix[Pet2*3] - $C0) * 4) ) div $FF) + $100 * ((($FF - ((Col div $100) and $FF)) * ((PPix[Pet2*3] - $C0) * 4)) div $FF) + ((($FF - (Col and $FF)) * ((PPix[Pet2*3] - $C0) * 4)) div $FF)); + 255: Pix := $FFFFFF; + end; +// 0.5.0. Original +// case PPix[Pet2*3] of +// 128: Pix := $10000 * ((Col div $10000) div 2) + $100 * (((Col div $100) and $FF) div 2) + (Col and $FF) div 2; +// 192: Pix := Col; +// 255: Pix := $FFFFFF; +// end; + + + + + + TextureD24[Pet*TextureB.Width + Pet2 + 1, 1] := Pix div $10000; + TextureD24[Pet*TextureB.Width + Pet2 + 1, 2] := (Pix div $100) and $FF; + TextureD24[Pet*TextureB.Width + Pet2 + 1, 3] := Pix and $FF; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureB.Width, TextureB.Height, 0, GL_RGB, GL_UNSIGNED_BYTE, @TextureD24); + end; + + if Typ = 'Note Transparent' then begin + for Pet := 0 to TextureB.Height-1 do begin + PPix := TextureB.ScanLine[Pet]; + for Pet2 := 0 to TextureB.Width-1 do begin + TempA := 255; + + + + //Skin Patch + // 0= Transparent, 1-191= Fade Black to Col, 192= Col, 193-254 Fade Col to White, 255= White + case PPix[Pet2*3] of + 0: TempA := 0; + 1..191: Pix := $10000 * ((((Col div $10000) and $FF) * PPix[Pet2*3]) div $Bf) + $100 * ((((Col div $100) and $FF) * PPix[Pet2*3]) div $Bf) + (((Col and $FF) * PPix[Pet2*3]) div $Bf); + 192: Pix := Col; + 193..254: Pix := Col + ($10000 * ((($FF - ((Col div $10000) and $FF)) * ((PPix[Pet2*3] - $C0) * 4) ) div $FF) + $100 * ((($FF - ((Col div $100) and $FF)) * ((PPix[Pet2*3] - $C0) * 4)) div $FF) + ((($FF - (Col and $FF)) * ((PPix[Pet2*3] - $C0) * 4)) div $FF)); + 255: Pix := $FFFFFF; + end; +// 0.5.0 Original +// case PPix[Pet2*3] of +// 0: TempA := 0; +// 128: Pix := $10000 * ((Col div $10000) div 2) + $100 * (((Col div $100) and $FF) div 2) + (Col and $FF) div 2; +// 192: Pix := Col; +// 255: Pix := $FFFFFF; +// end; + + + + + TextureD32[Pet*TextureB.Width + Pet2 + 1, 1] := Pix div $10000; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 2] := (Pix div $100) and $FF; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 3] := Pix and $FF; + TextureD32[Pet*TextureB.Width + Pet2 + 1, 4] := TempA; + end; + end; + glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureB.Width, TextureB.Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, @TextureD32); + end; + + + + + TextureB.Free; +// Inc(ActTex); +{ Tekst.Tekstura := ActTex; + Tekst.W := TexOrygW; + Tekst.H := TexOrygH; + Tekst.X2 := TexOrygW/TexNewW; + Tekst.Y2 := TexOrygH/TexNewH;} + Result.X := 0; + Result.Y := 0; + Result.W := 0; + Result.H := 0; + Result.ScaleW := 1; + Result.ScaleH := 1; + Result.Rot := 0; + Result.TexNum := ActTex; + Result.TexW := TexOrygW / TexNewW; + Result.TexH := TexOrygH / TexNewH; + + Result.Int := 1; + Result.ColR := 1; + Result.ColG := 1; + Result.ColB := 1; + Result.Alpha := 1; + + // 0.4.2 new test - default use whole texure, taking TexW and TexH as const and changing these + Result.TexX1 := 0; + Result.TexY1 := 0; + Result.TexX2 := 1; + Result.TexY2 := 1; + + // 0.5.0 + Result.Name := Nazwa; + + end; + + Log.BenchmarkEnd(4); + if Log.BenchmarkTimeLength[4] >= 1 then + Log.LogBenchmark('**********> Texture Load Time Warning - ' + Format + '/' + Nazwa + '/' + Typ, 4); + + end; // logerror +end; + +{procedure ResizeTexture(s: pbytearray; d: pbytearray); +var + Pet: integer; + Pet2: integer; +begin + for Pet := 0 to TexNewH*4-1 do + for Pet2 := 0 to TexNewW-1 do + d[Pet*TexNewW + Pet2] := 0; + + for Pet := 0 to TexOrygH-1 do begin + for Pet2 := 0 to TexOrygW-1 do begin + d[(Pet*TexNewW + Pet2)*4] := Paleta[s[Pet*TexOrygW + Pet2], 1]; + d[(Pet*TexNewW + Pet2)*4+1] := Paleta[s[Pet*TexOrygW + Pet2], 2]; + d[(Pet*TexNewW + Pet2)*4+2] := Paleta[s[Pet*TexOrygW + Pet2], 3]; + d[(Pet*TexNewW + Pet2)*4+3] := Paleta[s[Pet*TexOrygW + Pet2], 4]; + end; + end; +end;} + +{procedure SetTexture(p: pointer); +begin + glGenTextures(1, Tekstur); + glBindTexture(GL_TEXTURE_2D, Tekstur); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexImage2D(GL_TEXTURE_2D, 0, 4, TexNewW, TexNewH, 0, GL_RGBA, GL_UNSIGNED_BYTE, p); +end;} + +function TTextureUnit.LoadTexture(Nazwa, Format, Typ: PChar; Col: LongWord): TTexture; +begin + Result := LoadTexture(false, Nazwa, Format, Typ, Col); +// Result := LoadTexture(SkinReg, Nazwa, Format, Typ, Col); // default to SkinReg + +end; + +function TTextureUnit.LoadTexture(Nazwa: string): TTexture; +begin + Result := LoadTexture(false, pchar(Nazwa), 'JPG', 'Plain', 0); +end; + +function TTextureUnit.CreateTexture(var Data: array of byte; Name: string; W, H: word; Bits: byte): TTexture; +var + Pet: integer; + Pet2: integer; + Pix: integer; + ColInt: real; + PPix: PByteArray; + TempA: integer; + Error: integer; +begin + Mipmapping := false; + + glGenTextures(1, ActTex); // ActText = new texture number + glBindTexture(GL_TEXTURE_2D, ActTex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + glTexImage2D(GL_TEXTURE_2D, 0, 3, W, H, 0, GL_RGB, GL_UNSIGNED_BYTE, @Data[0]); + if Mipmapping then begin + Error := gluBuild2DMipmaps(GL_TEXTURE_2D, 3, W, H, GL_RGB, GL_UNSIGNED_BYTE, @Data[0]); + if Error > 0 then beep; + end; + + +// Inc(ActTex); +{ Tekst.Tekstura := ActTex; + Tekst.W := TexOrygW; + Tekst.H := TexOrygH; + Tekst.X2 := TexOrygW/TexNewW; + Tekst.Y2 := TexOrygH/TexNewH;} + Result.X := 0; + Result.Y := 0; + Result.W := 0; + Result.H := 0; + Result.ScaleW := 1; + Result.ScaleH := 1; + Result.Rot := 0; + Result.TexNum := ActTex; + Result.TexW := 1; + Result.TexH := 1; + + Result.Int := 1; + Result.ColR := 1; + Result.ColG := 1; + Result.ColB := 1; + Result.Alpha := 1; + + // 0.4.2 new test - default use whole texure, taking TexW and TexH as const and changing these + Result.TexX1 := 0; + Result.TexY1 := 0; + Result.TexX2 := 1; + Result.TexY2 := 1; + + // 0.5.0 + Result.Name := Name; +end; + +procedure TTextureUnit.UnloadTexture(Name: string; FromCache: boolean); +var + T: integer; + TexNum: GLuint; +begin + T := FindTexture(Name); + + if not FromCache then begin + TexNum := TextureDatabase.Texture[T].Texture.TexNum; + if TexNum >= 0 then begin + glDeleteTextures(1, @TexNum); + TextureDatabase.Texture[T].Texture.TexNum := -1; +// Log.LogError('Unload texture no '+IntToStr(TexNum)); + end; + end else begin + TexNum := TextureDatabase.Texture[T].TextureCache.TexNum; + if TexNum >= 0 then begin + glDeleteTextures(1, @TexNum); + TextureDatabase.Texture[T].TextureCache.TexNum := -1; +// Log.LogError('Unload texture cache no '+IntToStr(TexNum)); + end; + end; +end; + +end. \ No newline at end of file diff --git a/Game/Code/Classes/UThemes.dcu b/Game/Code/Classes/UThemes.dcu new file mode 100644 index 00000000..eb5ec8d4 Binary files /dev/null and b/Game/Code/Classes/UThemes.dcu differ diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas new file mode 100644 index 00000000..29647db6 --- /dev/null +++ b/Game/Code/Classes/UThemes.pas @@ -0,0 +1,1837 @@ +unit UThemes; + +interface + +uses IniFiles, SysUtils, Classes; + +type + TRGB = record + R: single; + G: single; + B: single; + end; + + {TSkin = record + GrayLeft: string; + GrayMid: string; + GrayRight: string; + + NoteBGLeft: string; + NoteBGMid: string; + NoteBGRight: string; + + NoteStar: string; + + Ball: string; + + + + //SingBar Mod + SingBarBack: string; + SingBarBar: string; + SingBarFront: string; + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + SingLineBonusBack: string; + //PhrasenBonus - Line Bonus Mod + + + + WelcomeBG: string; + + Background: string; + ScoreBG: string; + MainStart: string; + MainEditor: string; + MainOptions: string; + MainExit: string; + MainBar: string; + Cursor: string; + + SongFade: string; + SongCover: string; + SongSelection: string; + + SelectSong: string; + Button: string; + Bar: string; + P: string; + Arrow: string; + Arrow2: string; + ButtonF: string; + Star: string; + Line: string; + +// ThemePath: string; + SkinReg: boolean; + SkinName: string; + SkinPath: string; + SkinColor: integer; + end;} + + TThemeBackground = record + Tex: string; + end; + + TThemeStatic = record + X: integer; + Y: integer; + Z: real; + W: integer; + H: integer; + Color: string; + ColR: real; + ColG: real; + ColB: real; + Tex: string; + Typ: string; + TexX1: real; + TexY1: real; + TexX2: real; + TexY2: real; + end; + AThemeStatic = array of TThemeStatic; + + TThemeText = record + X: integer; + Y: integer; + Color: string; + ColR: real; + ColG: real; + ColB: real; + Font: integer; + Size: integer; + Align: integer; + Text: string; + end; + AThemeText = array of TThemeText; + + TThemeButton = record + Text: AThemeText; + X: integer; + Y: integer; + W: integer; + H: integer; + Color: string; + ColR: real; + ColG: real; + ColB: real; + Int: real; + DColor: string; + DColR: real; + DColG: real; + DColB: real; + DInt: real; + Tex: string; + Typ: string; + //Reflection Mod + Reflection: Boolean; + end; + + TThemeSelect = record + Tex: string; + TexSBG: string; + X: integer; + Y: integer; + W: integer; + H: integer; + Text: string; + ColR, ColG, ColB, Int: real; + DColR, DColG, DColB, DInt: real; + TColR, TColG, TColB, TInt: real; + TDColR, TDColG, TDColB, TDInt: real; + SBGColR, SBGColG, SBGColB, SBGInt: real; + SBGDColR, SBGDColG, SBGDColB, SBGDInt: real; + STColR, STColG, STColB, STInt: real; + STDColR, STDColG, STDColB, STDInt: real; + SkipX: integer; + end; + + TThemeSelectSlide = record + Tex: string; + TexSBG: string; + X: integer; + Y: integer; + W: integer; + H: integer; + Text: string; + ColR, ColG, ColB, Int: real; + DColR, DColG, DColB, DInt: real; + TColR, TColG, TColB, TInt: real; + TDColR, TDColG, TDColB, TDInt: real; + SBGColR, SBGColG, SBGColB, SBGInt: real; + SBGDColR, SBGDColG, SBGDColB, SBGDInt: real; + STColR, STColG, STColB, STInt: real; + STDColR, STDColG, STDColB, STDInt: real; + SkipX: integer; + end; + + TThemeBasic = class + Background: TThemeBackground; + Text: AThemeText; + Static: AThemeStatic; + end; + + TThemeLoading = class(TThemeBasic) + end; + + TThemeMain = class(TThemeBasic) + ButtonSolo: TThemeButton; +// ButtonMulti: TThemeButton; + ButtonEditor: TThemeButton; + ButtonOptions: TThemeButton; + ButtonExit: TThemeButton; + + TextDescription: TThemeText; + TextDescriptionLong: TThemeText; + Description: array[0..4] of string; + DescriptionLong: array[0..4] of string; + end; + + TThemeName = class(TThemeBasic) + ButtonPlayer: array[1..6] of TThemeButton; + end; + + TThemeLevel = class(TThemeBasic) + ButtonEasy: TThemeButton; + ButtonMedium: TThemeButton; + ButtonHard: TThemeButton; + end; + + TThemeSong = class(TThemeBasic) + TextArtist: TThemeText; + TextTitle: TThemeText; + TextNumber: TThemeText; + + //Show Cat in TopLeft Mod + TextCat: TThemeText; + StaticCat: TThemeStatic; + + //Cover Mod + Cover: record + Reflections: Boolean; + X: Integer; + Y: Integer; + Z: Integer; + W: Integer; + H: Integer; + Style: Integer; + end; + + //Equalizer Mod + Equalizer: record + Visible: Boolean; + Direction: Boolean; + Alpha: real; + X: Integer; + Y: Integer; + Z: Real; + W: Integer; + H: Integer; + Space: Integer; + Bands: Integer; + Length: Integer; + ColR, ColG, ColB: Real; + end; + + //Party Mode + StaticTeam1Joker1: TThemeStatic; + StaticTeam1Joker2: TThemeStatic; + StaticTeam1Joker3: TThemeStatic; + StaticTeam1Joker4: TThemeStatic; + StaticTeam1Joker5: TThemeStatic; + StaticTeam2Joker1: TThemeStatic; + StaticTeam2Joker2: TThemeStatic; + StaticTeam2Joker3: TThemeStatic; + StaticTeam2Joker4: TThemeStatic; + StaticTeam2Joker5: TThemeStatic; + StaticTeam3Joker1: TThemeStatic; + StaticTeam3Joker2: TThemeStatic; + StaticTeam3Joker3: TThemeStatic; + StaticTeam3Joker4: TThemeStatic; + StaticTeam3Joker5: TThemeStatic; + end; + + TThemeSing = class(TThemeBasic) + StaticP1: TThemeStatic; + StaticP1ScoreBG: TThemeStatic; //Static for ScoreBG + TextP1: TThemeText; + TextP1Score: TThemeText; + + + StaticP2R: TThemeStatic; + StaticP2RScoreBG: TThemeStatic; //Static for ScoreBG + TextP2R: TThemeText; + TextP2RScore: TThemeText; + + StaticP2M: TThemeStatic; + StaticP2MScoreBG: TThemeStatic; //Static for ScoreBG + TextP2M: TThemeText; + TextP2MScore: TThemeText; + + StaticP3R: TThemeStatic; + StaticP3RScoreBG: TThemeStatic; //Static for ScoreBG + TextP3R: TThemeText; + TextP3RScore: TThemeText; + end; + + TThemeScore = class(TThemeBasic) + TextArtist: TThemeText; + TextTitle: TThemeText; + + PlayerStatic: array[1..6] of AThemeStatic; + + TextName: array[1..6] of TThemeText; + TextScore: array[1..6] of TThemeText; + + TextNotes: array[1..6] of TThemeText; + TextNotesScore: array[1..6] of TThemeText; + TextLineBonus: array[1..6] of TThemeText; + TextLineBonusScore: array[1..6] of TThemeText; + TextGoldenNotes: array[1..6] of TThemeText; + TextGoldenNotesScore: array[1..6] of TThemeText; + TextTotal: array[1..6] of TThemeText; + TextTotalScore: array[1..6] of TThemeText; + + StaticBoxLightest: array[1..6] of TThemeStatic; + StaticBoxLight: array[1..6] of TThemeStatic; + StaticBoxDark: array[1..6] of TThemeStatic; + + StaticBackLevel: array[1..6] of TThemeStatic; + StaticBackLevelRound: array[1..6] of TThemeStatic; + StaticLevel: array[1..6] of TThemeStatic; + StaticLevelRound: array[1..6] of TThemeStatic; + +// Description: array[0..5] of string;} + end; + + TThemeTop5 = class(TThemeBasic) + TextLevel: TThemeText; + TextArtistTitle: TThemeText; + + StaticNumber: AThemeStatic; + TextNumber: AThemeText; + TextName: AThemeText; + TextScore: AThemeText; + end; + + TThemeOptions = class(TThemeBasic) + ButtonGame: TThemeButton; + ButtonGraphics: TThemeButton; + ButtonSound: TThemeButton; + ButtonLyrics: TThemeButton; + ButtonThemes: TThemeButton; + ButtonRecord: TThemeButton; + ButtonExit: TThemeButton; + + TextDescription: TThemeText; + Description: array[0..6] of string; + end; + + TThemeOptionsGame = class(TThemeBasic) + SelectPlayers: TThemeSelect; + SelectDifficulty: TThemeSelect; + SelectLanguage: TThemeSelectSlide; + SelectTabs: TThemeSelect; + SelectSorting: TThemeSelectSlide; + SelectDebug: TThemeSelect; + ButtonExit: TThemeButton; + end; + + TThemeOptionsGraphics = class(TThemeBasic) + SelectFullscreen: TThemeSelect; + SelectSlideResolution: TThemeSelectSlide; + SelectDepth: TThemeSelect; + SelectOscilloscope: TThemeSelect; + SelectLineBonus: TThemeSelect; + SelectMovieSize: TThemeSelect; + ButtonExit: TThemeButton; + end; + + TThemeOptionsSound = class(TThemeBasic) + SelectMicBoost: TThemeSelect; + SelectClickAssist: TThemeSelect; + SelectBeatClick: TThemeSelect; + SelectThreshold: TThemeSelect; + //SelectTwoPlayerMode: TThemeSelect; + ButtonExit: TThemeButton; + end; + + TThemeOptionsLyrics = class(TThemeBasic) + SelectLyricsFont: TThemeSelect; + SelectLyricsEffect: TThemeSelect; + SelectSolmization: TThemeSelect; + ButtonExit: TThemeButton; + end; + + TThemeOptionsThemes = class(TThemeBasic) + SelectTheme: TThemeSelectSlide; + SelectSkin: TThemeSelectSlide; + SelectColor: TThemeSelectSlide; + ButtonExit: TThemeButton; + end; + + TThemeOptionsRecord = class(TThemeBasic) + SelectSlideCard: TThemeSelectSlide; + SelectSlideInput: TThemeSelectSlide; + SelectSlideChannelL: TThemeSelectSlide; + SelectSlideChannelR: TThemeSelectSlide; + ButtonExit: TThemeButton; + end; + + //ScreenSong Menue + TThemeSongMenu = class(TThemeBasic) + Button1: TThemeButton; + Button2: TThemeButton; + Button3: TThemeButton; + Button4: TThemeButton; + + SelectSlide3: TThemeSelectSlide; + + TextMenu: TThemeText; + end; + + //Party Screens + TThemePartyNewRound = class(TThemeBasic) + TextRound1: TThemeText; + TextRound2: TThemeText; + TextRound3: TThemeText; + TextRound4: TThemeText; + TextRound5: TThemeText; + TextRound6: TThemeText; + TextRound7: TThemeText; + TextWinner1: TThemeText; + TextWinner2: TThemeText; + TextWinner3: TThemeText; + TextWinner4: TThemeText; + TextWinner5: TThemeText; + TextWinner6: TThemeText; + TextWinner7: TThemeText; + TextNextRound: TThemeText; + TextNextRoundNo: TThemeText; + TextNextPlayer1: TThemeText; + TextNextPlayer2: TThemeText; + TextNextPlayer3: TThemeText; + + StaticRound1: TThemeStatic; + StaticRound2: TThemeStatic; + StaticRound3: TThemeStatic; + StaticRound4: TThemeStatic; + StaticRound5: TThemeStatic; + StaticRound6: TThemeStatic; + StaticRound7: TThemeStatic; + + TextScoreTeam1: TThemeText; + TextScoreTeam2: TThemeText; + TextScoreTeam3: TThemeText; + TextNameTeam1: TThemeText; + TextNameTeam2: TThemeText; + TextNameTeam3: TThemeText; + StaticTeam1: TThemeStatic; + StaticTeam2: TThemeStatic; + StaticTeam3: TThemeStatic; + + ButtonNext: TThemeButton; + end; + + TThemePartyScore = class(TThemeBasic) + TextScoreTeam1: TThemeText; + TextScoreTeam2: TThemeText; + TextScoreTeam3: TThemeText; + TextNameTeam1: TThemeText; + TextNameTeam2: TThemeText; + TextNameTeam3: TThemeText; + StaticTeam1: TThemeStatic; + StaticTeam2: TThemeStatic; + StaticTeam3: TThemeStatic; + + TextWinner: TThemeText; + end; + + TThemePartyWin = class(TThemeBasic) + TextScoreTeam1: TThemeText; + TextScoreTeam2: TThemeText; + TextScoreTeam3: TThemeText; + TextNameTeam1: TThemeText; + TextNameTeam2: TThemeText; + TextNameTeam3: TThemeText; + StaticTeam1: TThemeStatic; + StaticTeam2: TThemeStatic; + StaticTeam3: TThemeStatic; + + TextWinner: TThemeText; + end; + + TThemePartyOptions = class(TThemeBasic) + SelectLevel: TThemeSelectSlide; + SelectPlayList: TThemeSelectSlide; + SelectPlayList2: TThemeSelectSlide; + SelectRounds: TThemeSelectSlide; + SelectTeams: TThemeSelectSlide; + SelectPlayers1: TThemeSelectSlide; + SelectPlayers2: TThemeSelectSlide; + SelectPlayers3: TThemeSelectSlide; + + {ButtonNext: TThemeButton; + ButtonPrev: TThemeButton;} + end; + + TThemePartyPlayer = class(TThemeBasic) + Team1Name: TThemeButton; + Player1Name: TThemeButton; + Player2Name: TThemeButton; + Player3Name: TThemeButton; + Player4Name: TThemeButton; + + Team2Name: TThemeButton; + Player5Name: TThemeButton; + Player6Name: TThemeButton; + Player7Name: TThemeButton; + Player8Name: TThemeButton; + + Team3Name: TThemeButton; + Player9Name: TThemeButton; + Player10Name: TThemeButton; + Player11Name: TThemeButton; + Player12Name: TThemeButton; + + {ButtonNext: TThemeButton; + ButtonPrev: TThemeButton;} + end; + + TTheme = class + {$IFDEF THEMESAVE} + ThemeIni: TIniFile; + {$ELSE} + ThemeIni: TMemIniFile; + {$ENDIF} + + Loading: TThemeLoading; + Main: TThemeMain; + Name: TThemeName; + Level: TThemeLevel; + Song: TThemeSong; + Sing: TThemeSing; + Score: TThemeScore; + Top5: TThemeTop5; + Options: TThemeOptions; + OptionsGame: TThemeOptionsGame; + OptionsGraphics: TThemeOptionsGraphics; + OptionsSound: TThemeOptionsSound; + OptionsLyrics: TThemeOptionsLyrics; + OptionsThemes: TThemeOptionsThemes; + OptionsRecord: TThemeOptionsRecord; + //Menu + SongMenu: TThemeSongMenu; + //Party Screens: + PartyNewRound: TThemePartyNewRound; + PartyScore: TThemePartyScore; + PartyWin: TThemePartyWin; + PartyOptions: TThemePartyOptions; + PartyPlayer: TThemePartyPlayer; + + constructor Create(FileName: string); overload; // Initialize theme system + constructor Create(FileName: string; Color: integer); overload; // Initialize theme system with color + function LoadTheme(FileName: string; sColor: integer): boolean; // Load some theme settings from file + + procedure LoadColors; + + procedure ThemeLoadBasic(Theme: TThemeBasic; Name: string); + procedure ThemeLoadBackground(var ThemeBackground: TThemeBackground; Name: string); + procedure ThemeLoadText(var ThemeText: TThemeText; Name: string); + procedure ThemeLoadTexts(var ThemeText: AThemeText; Name: string); + procedure ThemeLoadStatic(var ThemeStatic: TThemeStatic; Name: string); + procedure ThemeLoadStatics(var ThemeStatic: AThemeStatic; Name: string); + procedure ThemeLoadButton(var ThemeButton: TThemeButton; Name: string); + procedure ThemeLoadSelect(var ThemeSelect: TThemeSelect; Name: string); + procedure ThemeLoadSelectSlide(var ThemeSelectS: TThemeSelectSlide; Name: string); + + procedure ThemeSave(FileName: string); + procedure ThemeSaveBasic(Theme: TThemeBasic; Name: string); + procedure ThemeSaveBackground(ThemeBackground: TThemeBackground; Name: string); + procedure ThemeSaveStatic(ThemeStatic: TThemeStatic; Name: string); + procedure ThemeSaveStatics(ThemeStatic: AThemeStatic; Name: string); + procedure ThemeSaveText(ThemeText: TThemeText; Name: string); + procedure ThemeSaveTexts(ThemeText: AThemeText; Name: string); + procedure ThemeSaveButton(ThemeButton: TThemeButton; Name: string); + + end; + + TColor = record + Name: string; + RGB: TRGB; + end; + +function ColorExists(Name: string): integer; +procedure LoadColor(var R, G, B: real; ColorName: string); +function GetSystemColor(Color: integer): TRGB; +function ColorSqrt(RGB: TRGB): TRGB; + +var + //Skin: TSkin; + Theme: TTheme; + Color: array of TColor; + +implementation + +uses +{$IFDEF TRANSLATE} + ULanguage, +{$ENDIF} +USkins, UIni; + +constructor TTheme.Create(FileName: string); +begin + Create(FileName, 0); +end; + +constructor TTheme.Create(FileName: string; Color: integer); +begin + Loading := TThemeLoading.Create; + Main := TThemeMain.Create; + Name := TThemeName.Create; + Level := TThemeLevel.Create; + Song := TThemeSong.Create; + Sing := TThemeSing.Create; + Score := TThemeScore.Create; + Top5 := TThemeTop5.Create; + Options := TThemeOptions.Create; + OptionsGame := TThemeOptionsGame.Create; + OptionsGraphics := TThemeOptionsGraphics.Create; + OptionsSound := TThemeOptionsSound.Create; + OptionsLyrics := TThemeOptionsLyrics.Create; + OptionsThemes := TThemeOptionsThemes.Create; + OptionsRecord := TThemeOptionsRecord.Create; + + SongMenu := TThemeSongMenu.Create; + //Party Screens + PartyNewRound := TThemePartyNewRound.Create; + PartyWin := TThemePartyWin.Create; + PartyScore := TThemePartyScore.Create; + PartyOptions := TThemePartyOptions.Create; + PartyPlayer := TThemePartyPlayer.Create; + + LoadTheme(FileName, Color); + + + {Skin.GrayLeft := 'Left Gray.bmp'; + Skin.GrayMid := 'Mid Gray.bmp'; + Skin.GrayRight := 'Right Gray.bmp'; + + Skin.NoteBGLeft := 'Note BG Left.bmp'; + Skin.NoteBGMid := 'Note BG Mid.bmp'; + Skin.NoteBGRight := 'Note BG Right.bmp'; + + Skin.NoteStar := 'Note Star.jpg'; + + + + //SingBar Mod + Skin.SingBarBack := 'Sing Bar Back.jpg'; + Skin.SingBarBar := 'Sing Bar Bar.jpg'; + Skin.SingBarFront := 'Sing Bar Front.jpg'; + //end Singbar Mod + + //PhrasenBonus - Line Bonus Mod + Skin.SingLineBonusBack := 'Line Bonus PopUp.jpg'; + + + + +{ Skin.WelcomeBG := SkinPath + 'Welcome BG.jpg'; +// Skin.Background := SkinPath + 'Background.jpg'; + Skin.ScoreBG := SkinPath + 'Score BG.jpg'; +// Skin.GameStart := SkinPath + 'Game Start.jpg'; +// Skin.Editor := SkinPath + 'Editor.jpg'; +// Skin.Options := SkinPath + 'Options.jpg'; +// Skin.Exit := SkinPath + 'Exit.jpg'; + + Skin.MainStart := SkinPath + 'Main Solo.jpg'; + Skin.MainEditor := SkinPath + 'Main Multi.jpg'; + Skin.MainOptions := SkinPath + 'Main Options.jpg'; + Skin.MainExit := SkinPath + 'Main Exit.jpg'; + Skin.MainBar := SkinPath + 'Main Bar.jpg'; + Skin.Cursor := SkinPath + 'Main Cursor.jpg'; + + Skin.SongFade := SkinPath + 'Song Fade.jpg';}{ + Skin.SongCover := 'Song Cover.jpg'; + {Skin.SongSelection := SkinPath + 'Song Selection.jpg'; + + Skin.SelectSong := SkinPath + 'Select Song.jpg';}{ +// Skin.Button := SkinPath + 'MusicWheelItem song.jpg'; + Skin.Bar := 'Bar.jpg'; +{ Skin.P := SkinPath + 'P.jpg'; + Skin.Arrow := SkinPath + 'Arrow.jpg'; + Skin.Arrow2 := SkinPath + 'Arrow 2.jpg';}{ + Skin.ButtonF := 'Button.jpg'; + Skin.Ball := 'Ball3.bmp'; +{ Skin.Star := SkinPath + 'Star.bmp'; + Skin.Line := SkinPath + 'Line.jpg';} +end; + + +function TTheme.LoadTheme(FileName: string; sColor: integer): boolean; +var + I: integer; + Path: string; +begin + Result := false; + if FileExists(FileName) then begin + Result := true; + + {$IFDEF THEMESAVE} + ThemeIni := TIniFile.Create(FileName); + {$ELSE} + ThemeIni := TMemIniFile.Create(FileName); + {$ENDIF} + + if ThemeIni.ReadString('Theme', 'Name', '') <> '' then begin + + {Skin.SkinName := ThemeIni.ReadString('Theme', 'Name', 'Singstar'); + Skin.SkinPath := 'Skins\' + Skin.SkinName + '\'; + Skin.SkinReg := false; } + Skin.Color := sColor; + + Skin.LoadSkin(ISkin[Ini.SkinNo]); + + LoadColors; + +// ThemeIni.Free; +// ThemeIni := TIniFile.Create('Themes\Singstar\Main.ini'); + + // Loading + ThemeLoadBasic(Loading, 'Loading'); + + // Main + ThemeLoadBasic(Main, 'Main'); + + ThemeLoadText(Main.TextDescription, 'MainTextDescription'); + ThemeLoadText(Main.TextDescriptionLong, 'MainTextDescriptionLong'); + ThemeLoadButton(Main.ButtonSolo, 'MainButtonSolo'); + ThemeLoadButton(Main.ButtonEditor, 'MainButtonEditor'); + ThemeLoadButton(Main.ButtonOptions, 'MainButtonOptions'); + ThemeLoadButton(Main.ButtonExit, 'MainButtonExit'); + + //Score Text Translation Start + + {$IFDEF TRANSLATE} + Main.Description[0] := Language.Translate('SING_SING'); + Main.DescriptionLong[0] := Language.Translate('SING_SING_DESC'); + Main.Description[1] := Language.Translate('SING_EDITOR'); + Main.DescriptionLong[1] := Language.Translate('SING_EDITOR_DESC'); + Main.Description[2] := Language.Translate('SING_GAME_OPTIONS'); + Main.DescriptionLong[2] := Language.Translate('SING_GAME_OPTIONS_DESC'); + Main.Description[3] := Language.Translate('SING_EXIT'); + Main.DescriptionLong[3] := Language.Translate('SING_EXIT_DESC'); + {$ENDIF} + + //Score Text Translation End + + Main.TextDescription.Text := Main.Description[0]; + Main.TextDescriptionLong.Text := Main.DescriptionLong[0]; + + // Name + ThemeLoadBasic(Name, 'Name'); + + for I := 1 to 6 do + ThemeLoadButton(Name.ButtonPlayer[I], 'NameButtonPlayer'+IntToStr(I)); + + // Level + ThemeLoadBasic(Level, 'Level'); + + ThemeLoadButton(Level.ButtonEasy, 'LevelButtonEasy'); + ThemeLoadButton(Level.ButtonMedium, 'LevelButtonMedium'); + ThemeLoadButton(Level.ButtonHard, 'LevelButtonHard'); + + + // Song + ThemeLoadBasic(Song, 'Song'); + + ThemeLoadText(Song.TextArtist, 'SongTextArtist'); + ThemeLoadText(Song.TextTitle, 'SongTextTitle'); + ThemeLoadText(Song.TextNumber, 'SongTextNumber'); + + //Show Cat in TopLeft Mod + ThemeLoadStatic(Song.StaticCat, 'SongStaticCat'); + ThemeLoadText(Song.TextCat, 'SongTextCat'); + + //Load Cover Pos and Size from Theme Mod + Song.Cover.X := ThemeIni.ReadInteger('SongCover', 'X', 400); + Song.Cover.Y := ThemeIni.ReadInteger('SongCover', 'Y', 100); + Song.Cover.Z := ThemeIni.ReadInteger('SongCover', 'Z', 250); + Song.Cover.W := ThemeIni.ReadInteger('SongCover', 'W', 200); + Song.Cover.H := ThemeIni.ReadInteger('SongCover', 'H', 200); + Song.Cover.Style := ThemeIni.ReadInteger('SongCover', 'Style', 5); + Song.Cover.Reflections := (ThemeIni.ReadInteger('SongCover', 'Reflections', 0) = 1); + //Load Cover Pos and Size from Theme Mod End + + //Load Equalizer Pos and Size from Theme Mod + Song.Equalizer.Visible := (ThemeIni.ReadInteger('SongEqualizer', 'Visible', 0) = 1); + Song.Equalizer.Direction := (ThemeIni.ReadInteger('SongEqualizer', 'Direction', 0) = 1); + Song.Equalizer.Alpha := ThemeIni.ReadInteger('SongEqualizer', 'Alpha', 1); + Song.Equalizer.Space := ThemeIni.ReadInteger('SongEqualizer', 'Space', 1); + Song.Equalizer.X := ThemeIni.ReadInteger('SongEqualizer', 'X', 650); + Song.Equalizer.Y := ThemeIni.ReadInteger('SongEqualizer', 'Y', 430); + Song.Equalizer.Z := ThemeIni.ReadInteger('SongEqualizer', 'Z', 1); + Song.Equalizer.W := ThemeIni.ReadInteger('SongEqualizer', 'PieceW', 8); + Song.Equalizer.H := ThemeIni.ReadInteger('SongEqualizer', 'PieceH', 8); + Song.Equalizer.Bands := ThemeIni.ReadInteger('SongEqualizer', 'Bands', 5); + Song.Equalizer.Length := ThemeIni.ReadInteger('SongEqualizer', 'Length', 12); + + //Party Mode + ThemeLoadStatic(Song.StaticTeam1Joker1, 'SongStaticTeam1Joker1'); + ThemeLoadStatic(Song.StaticTeam1Joker2, 'SongStaticTeam1Joker2'); + ThemeLoadStatic(Song.StaticTeam1Joker3, 'SongStaticTeam1Joker3'); + ThemeLoadStatic(Song.StaticTeam1Joker4, 'SongStaticTeam1Joker4'); + ThemeLoadStatic(Song.StaticTeam1Joker5, 'SongStaticTeam1Joker5'); + + ThemeLoadStatic(Song.StaticTeam2Joker1, 'SongStaticTeam2Joker1'); + ThemeLoadStatic(Song.StaticTeam2Joker2, 'SongStaticTeam2Joker2'); + ThemeLoadStatic(Song.StaticTeam2Joker3, 'SongStaticTeam2Joker3'); + ThemeLoadStatic(Song.StaticTeam2Joker4, 'SongStaticTeam2Joker4'); + ThemeLoadStatic(Song.StaticTeam2Joker5, 'SongStaticTeam2Joker5'); + + ThemeLoadStatic(Song.StaticTeam3Joker1, 'SongStaticTeam3Joker1'); + ThemeLoadStatic(Song.StaticTeam3Joker2, 'SongStaticTeam3Joker2'); + ThemeLoadStatic(Song.StaticTeam3Joker3, 'SongStaticTeam3Joker3'); + ThemeLoadStatic(Song.StaticTeam3Joker4, 'SongStaticTeam3Joker4'); + ThemeLoadStatic(Song.StaticTeam3Joker5, 'SongStaticTeam3Joker5'); + + //Color + I := ColorExists(ThemeIni.ReadString('SongEqualizer', 'Color', 'Black')); + if I >= 0 then begin + Song.Equalizer.ColR := Color[I].RGB.R; + Song.Equalizer.ColG := Color[I].RGB.G; + Song.Equalizer.ColB := Color[I].RGB.B; + end; + //Load Equalizer Pos and Size from Theme Mod End + + // Sing + ThemeLoadBasic(Sing, 'Sing'); + + ThemeLoadStatic(Sing.StaticP1, 'SingP1Static'); + + + //ScoreBG Mod + ThemeLoadStatic(Sing.StaticP1ScoreBG, 'SingP1Static2');//ScoreBG + //end ScoreBG Mod + + + ThemeLoadText(Sing.TextP1, 'SingP1Text'); + ThemeLoadText(Sing.TextP1Score, 'SingP1TextScore'); + + ThemeLoadStatic(Sing.StaticP2R, 'SingP2RStatic'); + + + + //ScoreBG Mod + ThemeLoadStatic(Sing.StaticP2RScoreBG, 'SingP2RStatic2'); + //end ScoreBG Mod + + + + ThemeLoadText(Sing.TextP2R, 'SingP2RText'); + ThemeLoadText(Sing.TextP2RScore, 'SingP2RTextScore'); + + ThemeLoadStatic(Sing.StaticP2M, 'SingP2MStatic'); + + + //ScoreBG Mod + ThemeLoadStatic(Sing.StaticP2MScoreBG, 'SingP2MStatic2'); + //end ScoreBG Mod + + + + ThemeLoadText(Sing.TextP2M, 'SingP2MText'); + ThemeLoadText(Sing.TextP2MScore, 'SingP2MTextScore'); + + ThemeLoadStatic(Sing.StaticP3R, 'SingP3RStatic'); + + + //ScoreBG Mod + ThemeLoadStatic(Sing.StaticP3RScoreBG, 'SingP3RStatic2'); + //end ScoreBG Mod + + + + ThemeLoadText(Sing.TextP3R, 'SingP3RText'); + ThemeLoadText(Sing.TextP3RScore, 'SingP3RTextScore'); + + // Score + ThemeLoadBasic(Score, 'Score'); + + ThemeLoadText(Score.TextArtist, 'ScoreTextArtist'); + ThemeLoadText(Score.TextTitle, 'ScoreTextTitle'); + + for I := 1 to 6 do begin + ThemeLoadStatics(Score.PlayerStatic[I], 'ScorePlayer' + IntToStr(I) + 'Static'); + + ThemeLoadText(Score.TextName[I], 'ScoreTextName' + IntToStr(I)); + ThemeLoadText(Score.TextScore[I], 'ScoreTextScore' + IntToStr(I)); + ThemeLoadText(Score.TextNotes[I], 'ScoreTextNotes' + IntToStr(I)); + ThemeLoadText(Score.TextNotesScore[I], 'ScoreTextNotesScore' + IntToStr(I)); + ThemeLoadText(Score.TextLineBonus[I], 'ScoreTextLineBonus' + IntToStr(I)); + ThemeLoadText(Score.TextLineBonusScore[I], 'ScoreTextLineBonusScore' + IntToStr(I)); + ThemeLoadText(Score.TextGoldenNotes[I], 'ScoreTextGoldenNotes' + IntToStr(I)); + ThemeLoadText(Score.TextGoldenNotesScore[I], 'ScoreTextGoldenNotesScore' + IntToStr(I)); + ThemeLoadText(Score.TextTotal[I], 'ScoreTextTotal' + IntToStr(I)); + ThemeLoadText(Score.TextTotalScore[I], 'ScoreTextTotalScore' + IntToStr(I)); + + ThemeLoadStatic(Score.StaticBoxLightest[I], 'ScoreStaticBoxLightest' + IntToStr(I)); + ThemeLoadStatic(Score.StaticBoxLight[I], 'ScoreStaticBoxLight' + IntToStr(I)); + ThemeLoadStatic(Score.StaticBoxDark[I], 'ScoreStaticBoxDark' + IntToStr(I)); + + ThemeLoadStatic(Score.StaticBackLevel[I], 'ScoreStaticBackLevel' + IntToStr(I)); + ThemeLoadStatic(Score.StaticBackLevelRound[I], 'ScoreStaticBackLevelRound' + IntToStr(I)); + ThemeLoadStatic(Score.StaticLevel[I], 'ScoreStaticLevel' + IntToStr(I)); + ThemeLoadStatic(Score.StaticLevelRound[I], 'ScoreStaticLevelRound' + IntToStr(I)); + end; + + // Top5 + ThemeLoadBasic(Top5, 'Top5'); + + ThemeLoadText(Top5.TextLevel, 'Top5TextLevel'); + ThemeLoadText(Top5.TextArtistTitle, 'Top5TextArtistTitle'); + ThemeLoadStatics(Top5.StaticNumber, 'Top5StaticNumber'); + ThemeLoadTexts(Top5.TextNumber, 'Top5TextNumber'); + ThemeLoadTexts(Top5.TextName, 'Top5TextName'); + ThemeLoadTexts(Top5.TextScore, 'Top5TextScore'); + + // Options + ThemeLoadBasic(Options, 'Options'); + + ThemeLoadButton(Options.ButtonGame, 'OptionsButtonGame'); + ThemeLoadButton(Options.ButtonGraphics, 'OptionsButtonGraphics'); + ThemeLoadButton(Options.ButtonSound, 'OptionsButtonSound'); + ThemeLoadButton(Options.ButtonLyrics, 'OptionsButtonLyrics'); + ThemeLoadButton(Options.ButtonThemes, 'OptionsButtonThemes'); + ThemeLoadButton(Options.ButtonRecord, 'OptionsButtonRecord'); + ThemeLoadButton(Options.ButtonExit, 'OptionsButtonExit'); + + {$IFDEF TRANSLATE} + Options.Description[0] := Language.Translate('SING_OPTIONS_GAME'); + Options.Description[1] := Language.Translate('SING_OPTIONS_GRAPHICS'); + Options.Description[2] := Language.Translate('SING_OPTIONS_SOUND'); + Options.Description[3] := Language.Translate('SING_OPTIONS_LYRICS'); + Options.Description[4] := Language.Translate('SING_OPTIONS_THEMES'); + Options.Description[5] := Language.Translate('SING_OPTIONS_RECORD'); + Options.Description[6] := Language.Translate('SING_OPTIONS_EXIT'); + {$ENDIF} + + ThemeLoadText(Options.TextDescription, 'OptionsTextDescription'); + Options.TextDescription.Text := Options.Description[0]; + + // Options Game + ThemeLoadBasic(OptionsGame, 'OptionsGame'); + + ThemeLoadSelect(OptionsGame.SelectPlayers, 'OptionsGameSelectPlayers'); + ThemeLoadSelect(OptionsGame.SelectDifficulty, 'OptionsGameSelectDifficulty'); + ThemeLoadSelectSlide(OptionsGame.SelectLanguage, 'OptionsGameSelectSlideLanguage'); + ThemeLoadSelect(OptionsGame.SelectTabs, 'OptionsGameSelectTabs'); + ThemeLoadSelectSlide(OptionsGame.SelectSorting, 'OptionsGameSelectSlideSorting'); + ThemeLoadSelect(OptionsGame.SelectDebug, 'OptionsGameSelectDebug'); + ThemeLoadButton(OptionsGame.ButtonExit, 'OptionsGameButtonExit'); + + // Options Graphics + ThemeLoadBasic(OptionsGraphics, 'OptionsGraphics'); + + ThemeLoadSelect(OptionsGraphics.SelectFullscreen, 'OptionsGraphicsSelectFullscreen'); + ThemeLoadSelectSlide(OptionsGraphics.SelectSlideResolution, 'OptionsGraphicsSelectSlideResolution'); + ThemeLoadSelect(OptionsGraphics.SelectDepth, 'OptionsGraphicsSelectDepth'); + ThemeLoadSelect(OptionsGraphics.SelectOscilloscope, 'OptionsGraphicsSelectOscilloscope'); + ThemeLoadSelect(OptionsGraphics.SelectLineBonus, 'OptionsGraphicsSelectLineBonus'); + ThemeLoadSelect(OptionsGraphics.SelectMovieSize, 'OptionsGraphicsSelectMovieSize'); + ThemeLoadButton(OptionsGraphics.ButtonExit, 'OptionsGraphicsButtonExit'); + + // Options Sound + ThemeLoadBasic(OptionsSound, 'OptionsSound'); + + ThemeLoadSelect(OptionsSound.SelectMicBoost, 'OptionsSoundSelectMicBoost'); + ThemeLoadSelect(OptionsSound.SelectClickAssist, 'OptionsSoundSelectClickAssist'); + ThemeLoadSelect(OptionsSound.SelectBeatClick, 'OptionsSoundSelectBeatClick'); + ThemeLoadSelect(OptionsSound.SelectThreshold, 'OptionsSoundSelectThreshold'); + //ThemeLoadSelect(OptionsSound.SelectTwoPlayerMode, 'OptionsSoundSelectTwoPlayerMode'); + ThemeLoadButton(OptionsSound.ButtonExit, 'OptionsSoundButtonExit'); + + // Options Lyrics + ThemeLoadBasic(OptionsLyrics, 'OptionsLyrics'); + + ThemeLoadSelect(OptionsLyrics.SelectLyricsFont, 'OptionsLyricsSelectLyricsFont'); + ThemeLoadSelect(OptionsLyrics.SelectLyricsEffect, 'OptionsLyricsSelectLyricsEffect'); + ThemeLoadSelect(OptionsLyrics.SelectSolmization, 'OptionsLyricsSelectSolmization'); + ThemeLoadButton(OptionsLyrics.ButtonExit, 'OptionsLyricsButtonExit'); + + // Options Themes + ThemeLoadBasic(OptionsThemes, 'OptionsThemes'); + + ThemeLoadSelectSlide(OptionsThemes.SelectTheme, 'OptionsThemesSelectTheme'); + ThemeLoadSelectSlide(OptionsThemes.SelectSkin, 'OptionsThemesSelectSkin'); + ThemeLoadSelectSlide(OptionsThemes.SelectColor, 'OptionsThemesSelectColor'); + ThemeLoadButton(OptionsThemes.ButtonExit, 'OptionsThemesButtonExit'); + + // Options Record + ThemeLoadBasic(OptionsRecord, 'OptionsRecord'); + + ThemeLoadSelectSlide(OptionsRecord.SelectSlideCard, 'OptionsRecordSelectSlideCard'); + ThemeLoadSelectSlide(OptionsRecord.SelectSlideInput, 'OptionsRecordSelectSlideInput'); + ThemeLoadSelectSlide(OptionsRecord.SelectSlideChannelL, 'OptionsRecordSelectSlideChannelL'); + ThemeLoadSelectSlide(OptionsRecord.SelectSlideChannelR, 'OptionsRecordSelectSlideChannelR'); + ThemeLoadButton(OptionsRecord.ButtonExit, 'OptionsRecordButtonExit'); + + //Song Menu + ThemeLoadBasic (SongMenu, 'SongMenu'); + ThemeLoadButton(SongMenu.Button1, 'SongMenuButton1'); + ThemeLoadButton(SongMenu.Button2, 'SongMenuButton2'); + ThemeLoadButton(SongMenu.Button3, 'SongMenuButton3'); + ThemeLoadButton(SongMenu.Button4, 'SongMenuButton4'); + ThemeLoadSelectSlide(SongMenu.SelectSlide3, 'SongMenuSelectSlide3'); + + ThemeLoadText(SongMenu.TextMenu, 'SongMenuTextMenu'); + + //Party Screens: + //Party NewRound + ThemeLoadBasic(PartyNewRound, 'PartyNewRound'); + + ThemeLoadText (PartyNewRound.TextRound1, 'PartyNewRoundTextRound1'); + ThemeLoadText (PartyNewRound.TextRound2, 'PartyNewRoundTextRound2'); + ThemeLoadText (PartyNewRound.TextRound3, 'PartyNewRoundTextRound3'); + ThemeLoadText (PartyNewRound.TextRound4, 'PartyNewRoundTextRound4'); + ThemeLoadText (PartyNewRound.TextRound5, 'PartyNewRoundTextRound5'); + ThemeLoadText (PartyNewRound.TextRound6, 'PartyNewRoundTextRound6'); + ThemeLoadText (PartyNewRound.TextRound7, 'PartyNewRoundTextRound7'); + ThemeLoadText (PartyNewRound.TextWinner1, 'PartyNewRoundTextWinner1'); + ThemeLoadText (PartyNewRound.TextWinner2, 'PartyNewRoundTextWinner2'); + ThemeLoadText (PartyNewRound.TextWinner3, 'PartyNewRoundTextWinner3'); + ThemeLoadText (PartyNewRound.TextWinner4, 'PartyNewRoundTextWinner4'); + ThemeLoadText (PartyNewRound.TextWinner5, 'PartyNewRoundTextWinner5'); + ThemeLoadText (PartyNewRound.TextWinner6, 'PartyNewRoundTextWinner6'); + ThemeLoadText (PartyNewRound.TextWinner7, 'PartyNewRoundTextWinner7'); + ThemeLoadText (PartyNewRound.TextNextRound, 'PartyNewRoundTextNextRound'); + ThemeLoadText (PartyNewRound.TextNextRoundNo, 'PartyNewRoundTextNextRoundNo'); + ThemeLoadText (PartyNewRound.TextNextPlayer1, 'PartyNewRoundTextNextPlayer1'); + ThemeLoadText (PartyNewRound.TextNextPlayer2, 'PartyNewRoundTextNextPlayer2'); + ThemeLoadText (PartyNewRound.TextNextPlayer3, 'PartyNewRoundTextNextPlayer3'); + + ThemeLoadStatic (PartyNewRound.StaticRound1, 'PartyNewRoundStaticRound1'); + ThemeLoadStatic (PartyNewRound.StaticRound2, 'PartyNewRoundStaticRound2'); + ThemeLoadStatic (PartyNewRound.StaticRound3, 'PartyNewRoundStaticRound3'); + ThemeLoadStatic (PartyNewRound.StaticRound4, 'PartyNewRoundStaticRound4'); + ThemeLoadStatic (PartyNewRound.StaticRound5, 'PartyNewRoundStaticRound5'); + ThemeLoadStatic (PartyNewRound.StaticRound6, 'PartyNewRoundStaticRound6'); + ThemeLoadStatic (PartyNewRound.StaticRound7, 'PartyNewRoundStaticRound7'); + + ThemeLoadText (PartyNewRound.TextScoreTeam1, 'PartyNewRoundTextScoreTeam1'); + ThemeLoadText (PartyNewRound.TextScoreTeam2, 'PartyNewRoundTextScoreTeam2'); + ThemeLoadText (PartyNewRound.TextScoreTeam3, 'PartyNewRoundTextScoreTeam3'); + ThemeLoadText (PartyNewRound.TextNameTeam1, 'PartyNewRoundTextNameTeam1'); + ThemeLoadText (PartyNewRound.TextNameTeam2, 'PartyNewRoundTextNameTeam2'); + ThemeLoadText (PartyNewRound.TextNameTeam3, 'PartyNewRoundTextNameTeam3'); + + ThemeLoadStatic (PartyNewRound.StaticTeam1, 'PartyNewRoundStaticTeam1'); + ThemeLoadStatic (PartyNewRound.StaticTeam2, 'PartyNewRoundStaticTeam2'); + ThemeLoadStatic (PartyNewRound.StaticTeam3, 'PartyNewRoundStaticTeam3'); + + ThemeLoadButton (PartyNewRound.ButtonNext, 'PartyNewRoundButtonNext'); + + //Party Score + ThemeLoadBasic(PartyScore, 'PartyScore'); + + ThemeLoadText (PartyScore.TextScoreTeam1, 'PartyScoreTextScoreTeam1'); + ThemeLoadText (PartyScore.TextScoreTeam2, 'PartyScoreTextScoreTeam2'); + ThemeLoadText (PartyScore.TextScoreTeam3, 'PartyScoreTextScoreTeam3'); + ThemeLoadText (PartyScore.TextNameTeam1, 'PartyScoreTextNameTeam1'); + ThemeLoadText (PartyScore.TextNameTeam2, 'PartyScoreTextNameTeam2'); + ThemeLoadText (PartyScore.TextNameTeam3, 'PartyScoreTextNameTeam3'); + + ThemeLoadStatic (PartyScore.StaticTeam1, 'PartyScoreStaticTeam1'); + ThemeLoadStatic (PartyScore.StaticTeam2, 'PartyScoreStaticTeam2'); + ThemeLoadStatic (PartyScore.StaticTeam3, 'PartyScoreStaticTeam3'); + + ThemeLoadText (PartyScore.TextWinner, 'PartyScoreTextWinner'); + + //Party Win + ThemeLoadBasic(PartyWin, 'PartyWin'); + + ThemeLoadText (PartyWin.TextScoreTeam1, 'PartyWinTextScoreTeam1'); + ThemeLoadText (PartyWin.TextScoreTeam2, 'PartyWinTextScoreTeam2'); + ThemeLoadText (PartyWin.TextScoreTeam3, 'PartyWinTextScoreTeam3'); + ThemeLoadText (PartyWin.TextNameTeam1, 'PartyWinTextNameTeam1'); + ThemeLoadText (PartyWin.TextNameTeam2, 'PartyWinTextNameTeam2'); + ThemeLoadText (PartyWin.TextNameTeam3, 'PartyWinTextNameTeam3'); + + ThemeLoadStatic (PartyWin.StaticTeam1, 'PartyWinStaticTeam1'); + ThemeLoadStatic (PartyWin.StaticTeam2, 'PartyWinStaticTeam2'); + ThemeLoadStatic (PartyWin.StaticTeam3, 'PartyWinStaticTeam3'); + + ThemeLoadText (PartyWin.TextWinner, 'PartyWinTextWinner'); + + //Party Options + ThemeLoadBasic(PartyOptions, 'PartyOptions'); + ThemeLoadSelectSlide(PartyOptions.SelectLevel, 'PartyOptionsSelectLevel'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayList, 'PartyOptionsSelectPlayList'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayList2, 'PartyOptionsSelectPlayList2'); + ThemeLoadSelectSlide(PartyOptions.SelectRounds, 'PartyOptionsSelectRounds'); + ThemeLoadSelectSlide(PartyOptions.SelectTeams, 'PartyOptionsSelectTeams'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayers1, 'PartyOptionsSelectPlayers1'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayers2, 'PartyOptionsSelectPlayers2'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayers3, 'PartyOptionsSelectPlayers3'); + + {ThemeLoadButton (ButtonNext, 'ButtonNext'); + ThemeLoadButton (ButtonPrev, 'ButtonPrev');} + + //Party Player + ThemeLoadBasic(PartyPlayer, 'PartyPlayer'); + ThemeLoadButton(PartyPlayer.Team1Name, 'PartyPlayerTeam1Name'); + ThemeLoadButton(PartyPlayer.Player1Name, 'PartyPlayerPlayer1Name'); + ThemeLoadButton(PartyPlayer.Player2Name, 'PartyPlayerPlayer2Name'); + ThemeLoadButton(PartyPlayer.Player3Name, 'PartyPlayerPlayer3Name'); + ThemeLoadButton(PartyPlayer.Player4Name, 'PartyPlayerPlayer4Name'); + + ThemeLoadButton(PartyPlayer.Team2Name, 'PartyPlayerTeam2Name'); + ThemeLoadButton(PartyPlayer.Player5Name, 'PartyPlayerPlayer5Name'); + ThemeLoadButton(PartyPlayer.Player6Name, 'PartyPlayerPlayer6Name'); + ThemeLoadButton(PartyPlayer.Player7Name, 'PartyPlayerPlayer7Name'); + ThemeLoadButton(PartyPlayer.Player8Name, 'PartyPlayerPlayer8Name'); + + ThemeLoadButton(PartyPlayer.Team3Name, 'PartyPlayerTeam3Name'); + ThemeLoadButton(PartyPlayer.Player9Name, 'PartyPlayerPlayer9Name'); + ThemeLoadButton(PartyPlayer.Player10Name, 'PartyPlayerPlayer10Name'); + ThemeLoadButton(PartyPlayer.Player11Name, 'PartyPlayerPlayer11Name'); + ThemeLoadButton(PartyPlayer.Player12Name, 'PartyPlayerPlayer12Name'); + + {ThemeLoadButton(ButtonNext, 'PartyPlayerButtonNext'); + ThemeLoadButton(ButtonPrev, 'PartyPlayerButtonPrev');} + end; + + ThemeIni.Free; + end; +end; + +procedure TTheme.ThemeLoadBasic(Theme: TThemeBasic; Name: string); +begin + ThemeLoadBackground(Theme.Background, Name); + ThemeLoadTexts(Theme.Text, Name + 'Text'); + ThemeLoadStatics(Theme.Static, Name + 'Static'); +end; + +procedure TTheme.ThemeLoadBackground(var ThemeBackground: TThemeBackground; Name: string); +begin + ThemeBackground.Tex := ThemeIni.ReadString(Name + 'Background', 'Tex', ''); +end; + +procedure TTheme.ThemeLoadText(var ThemeText: TThemeText; Name: string); +var + C: integer; +begin + DecimalSeparator := '.'; + ThemeText.X := ThemeIni.ReadInteger(Name, 'X', 0); + ThemeText.Y := ThemeIni.ReadInteger(Name, 'Y', 0); + + ThemeText.ColR := ThemeIni.ReadFloat(Name, 'ColR', 0); + ThemeText.ColG := ThemeIni.ReadFloat(Name, 'ColG', 0); + ThemeText.ColB := ThemeIni.ReadFloat(Name, 'ColB', 0); + + ThemeText.Font := ThemeIni.ReadInteger(Name, 'Font', 0); + ThemeText.Size := ThemeIni.ReadInteger(Name, 'Size', 0); + ThemeText.Align := ThemeIni.ReadInteger(Name, 'Align', 0); + + {$IFDEF TRANSLATE} + ThemeText.Text := Language.Translate(ThemeIni.ReadString(Name, 'Text', '')); + {$ELSE} + ThemeText.Text := ThemeIni.ReadString(Name, 'Text', ''); + {$ENDIF} + + ThemeText.Color := ThemeIni.ReadString(Name, 'Color', ''); + + C := ColorExists(ThemeText.Color); + if C >= 0 then begin + ThemeText.ColR := Color[C].RGB.R; + ThemeText.ColG := Color[C].RGB.G; + ThemeText.ColB := Color[C].RGB.B; + end; + + DecimalSeparator := ','; +end; + +procedure TTheme.ThemeLoadTexts(var ThemeText: AThemeText; Name: string); +var + T: integer; +begin + T := 1; + while ThemeIni.SectionExists(Name + IntToStr(T)) do begin + SetLength(ThemeText, T); + ThemeLoadText(ThemeText[T-1], Name + IntToStr(T)); + Inc(T); + end; +end; + +procedure TTheme.ThemeLoadStatic(var ThemeStatic: TThemeStatic; Name: string); +var + C: integer; +begin + DecimalSeparator := '.'; + + ThemeStatic.Tex := ThemeIni.ReadString(Name, 'Tex', ''); + + ThemeStatic.X := ThemeIni.ReadInteger(Name, 'X', 0); + ThemeStatic.Y := ThemeIni.ReadInteger(Name, 'Y', 0); + ThemeStatic.Z := ThemeIni.ReadFloat(Name, 'Z', 0); + ThemeStatic.W := ThemeIni.ReadInteger(Name, 'W', 0); + ThemeStatic.H := ThemeIni.ReadInteger(Name, 'H', 0); + + ThemeStatic.Typ := ThemeIni.ReadString(Name, 'Type', ''); + ThemeStatic.Color := ThemeIni.ReadString(Name, 'Color', ''); + + C := ColorExists(ThemeStatic.Color); + if C >= 0 then begin + ThemeStatic.ColR := Color[C].RGB.R; + ThemeStatic.ColG := Color[C].RGB.G; + ThemeStatic.ColB := Color[C].RGB.B; + end; + + ThemeStatic.TexX1 := ThemeIni.ReadFloat(Name, 'TexX1', 0); + ThemeStatic.TexY1 := ThemeIni.ReadFloat(Name, 'TexY1', 0); + ThemeStatic.TexX2 := ThemeIni.ReadFloat(Name, 'TexX2', 1); + ThemeStatic.TexY2 := ThemeIni.ReadFloat(Name, 'TexY2', 1); + + DecimalSeparator := ','; +end; + +procedure TTheme.ThemeLoadStatics(var ThemeStatic: AThemeStatic; Name: string); +var + S: integer; +begin + S := 1; + while ThemeIni.SectionExists(Name + IntToStr(S)) do begin + SetLength(ThemeStatic, S); + ThemeLoadStatic(ThemeStatic[S-1], Name + IntToStr(S)); + Inc(S); + end; +end; + +procedure TTheme.ThemeLoadButton(var ThemeButton: TThemeButton; Name: string); +var + C: integer; + TLen: integer; + T: integer; +begin + DecimalSeparator := '.'; + ThemeButton.Tex := ThemeIni.ReadString(Name, 'Tex', ''); + ThemeButton.X := ThemeIni.ReadInteger(Name, 'X', 0); + ThemeButton.Y := ThemeIni.ReadInteger(Name, 'Y', 0); + ThemeButton.W := ThemeIni.ReadInteger(Name, 'W', 0); + ThemeButton.H := ThemeIni.ReadInteger(Name, 'H', 0); + + ThemeButton.Typ := ThemeIni.ReadString(Name, 'Type', ''); + + //Reflection Mod + ThemeButton.Reflection := (ThemeIni.ReadInteger(Name, 'Reflection', 0) = 1); + + ThemeButton.ColR := ThemeIni.ReadFloat(Name, 'ColR', 1); + ThemeButton.ColG := ThemeIni.ReadFloat(Name, 'ColG', 1); + ThemeButton.ColB := ThemeIni.ReadFloat(Name, 'ColB', 1); + ThemeButton.Int := ThemeIni.ReadFloat(Name, 'Int', 1); + ThemeButton.DColR := ThemeIni.ReadFloat(Name, 'DColR', 1); + ThemeButton.DColG := ThemeIni.ReadFloat(Name, 'DColG', 1); + ThemeButton.DColB := ThemeIni.ReadFloat(Name, 'DColB', 1); + ThemeButton.DInt := ThemeIni.ReadFloat(Name, 'DInt', 1); + + ThemeButton.Color := ThemeIni.ReadString(Name, 'Color', ''); + C := ColorExists(ThemeButton.Color); + if C >= 0 then begin + ThemeButton.ColR := Color[C].RGB.R; + ThemeButton.ColG := Color[C].RGB.G; + ThemeButton.ColB := Color[C].RGB.B; + end; + + ThemeButton.DColor := ThemeIni.ReadString(Name, 'DColor', ''); + C := ColorExists(ThemeButton.DColor); + if C >= 0 then begin + ThemeButton.DColR := Color[C].RGB.R; + ThemeButton.DColG := Color[C].RGB.G; + ThemeButton.DColB := Color[C].RGB.B; + end; + + TLen := ThemeIni.ReadInteger(Name, 'Texts', 0); + SetLength(ThemeButton.Text, TLen); + for T := 1 to TLen do + ThemeLoadText(ThemeButton.Text[T-1], Name + 'Text' + IntToStr(T)); + + DecimalSeparator := ','; +end; + +procedure TTheme.ThemeLoadSelect(var ThemeSelect: TThemeSelect; Name: string); +var + C: integer; +begin + DecimalSeparator := '.'; + + {$IFDEF TRANSLATE} + ThemeSelect.Text := Language.Translate(ThemeIni.ReadString(Name, 'Text', '')); + {$ELSE} + ThemeSelect.Text := ThemeIni.ReadString(Name, 'Text', ''); + {$ENDIF} + + ThemeSelect.Tex := {Skin.SkinPath + }ThemeIni.ReadString(Name, 'Tex', ''); + ThemeSelect.TexSBG := {Skin.SkinPath + }ThemeIni.ReadString(Name, 'TexSBG', ''); + + ThemeSelect.X := ThemeIni.ReadInteger(Name, 'X', 0); + ThemeSelect.Y := ThemeIni.ReadInteger(Name, 'Y', 0); + ThemeSelect.W := ThemeIni.ReadInteger(Name, 'W', 0); + ThemeSelect.H := ThemeIni.ReadInteger(Name, 'H', 0); + ThemeSelect.SkipX := ThemeIni.ReadInteger(Name, 'SkipX', 0); + + + LoadColor(ThemeSelect.ColR, ThemeSelect.ColG, ThemeSelect.ColB, ThemeIni.ReadString(Name, 'Color', '')); + ThemeSelect.Int := ThemeIni.ReadFloat(Name, 'Int', 1); + LoadColor(ThemeSelect.DColR, ThemeSelect.DColG, ThemeSelect.DColB, ThemeIni.ReadString(Name, 'DColor', '')); + ThemeSelect.DInt := ThemeIni.ReadFloat(Name, 'DInt', 1); + + LoadColor(ThemeSelect.TColR, ThemeSelect.TColG, ThemeSelect.TColB, ThemeIni.ReadString(Name, 'TColor', '')); + ThemeSelect.TInt := ThemeIni.ReadFloat(Name, 'TInt', 1); + LoadColor(ThemeSelect.TDColR, ThemeSelect.TDColG, ThemeSelect.TDColB, ThemeIni.ReadString(Name, 'TDColor', '')); + ThemeSelect.TDInt := ThemeIni.ReadFloat(Name, 'TDInt', 1); + + LoadColor(ThemeSelect.SBGColR, ThemeSelect.SBGColG, ThemeSelect.SBGColB, ThemeIni.ReadString(Name, 'SBGColor', '')); + ThemeSelect.SBGInt := ThemeIni.ReadFloat(Name, 'SBGInt', 1); + LoadColor(ThemeSelect.SBGDColR, ThemeSelect.SBGDColG, ThemeSelect.SBGDColB, ThemeIni.ReadString(Name, 'SBGDColor', '')); + ThemeSelect.SBGDInt := ThemeIni.ReadFloat(Name, 'SBGDInt', 1); + + LoadColor(ThemeSelect.STColR, ThemeSelect.STColG, ThemeSelect.STColB, ThemeIni.ReadString(Name, 'STColor', '')); + ThemeSelect.STInt := ThemeIni.ReadFloat(Name, 'STInt', 1); + LoadColor(ThemeSelect.STDColR, ThemeSelect.STDColG, ThemeSelect.STDColB, ThemeIni.ReadString(Name, 'STDColor', '')); + ThemeSelect.STDInt := ThemeIni.ReadFloat(Name, 'STDInt', 1); + + + DecimalSeparator := ','; +end; + +procedure TTheme.ThemeLoadSelectSlide(var ThemeSelectS: TThemeSelectSlide; Name: string); +var + C: integer; +begin + DecimalSeparator := '.'; + + {$IFDEF TRANSLATE} + ThemeSelectS.Text := Language.Translate(ThemeIni.ReadString(Name, 'Text', '')); + {$ELSE} + ThemeSelectS.Text := ThemeIni.ReadString(Name, 'Text', ''); + {$ENDIF} + + ThemeSelectS.Tex := {Skin.SkinPath + }ThemeIni.ReadString(Name, 'Tex', ''); + ThemeSelectS.TexSBG := {Skin.SkinPath + }ThemeIni.ReadString(Name, 'TexSBG', ''); + + ThemeSelectS.X := ThemeIni.ReadInteger(Name, 'X', 0); + ThemeSelectS.Y := ThemeIni.ReadInteger(Name, 'Y', 0); + ThemeSelectS.W := ThemeIni.ReadInteger(Name, 'W', 0); + ThemeSelectS.H := ThemeIni.ReadInteger(Name, 'H', 0); + ThemeSelectS.SkipX := ThemeIni.ReadInteger(Name, 'SkipX', 0); + + + LoadColor(ThemeSelectS.ColR, ThemeSelectS.ColG, ThemeSelectS.ColB, ThemeIni.ReadString(Name, 'Color', '')); + ThemeSelectS.Int := ThemeIni.ReadFloat(Name, 'Int', 1); + LoadColor(ThemeSelectS.DColR, ThemeSelectS.DColG, ThemeSelectS.DColB, ThemeIni.ReadString(Name, 'DColor', '')); + ThemeSelectS.DInt := ThemeIni.ReadFloat(Name, 'DInt', 1); + + LoadColor(ThemeSelectS.TColR, ThemeSelectS.TColG, ThemeSelectS.TColB, ThemeIni.ReadString(Name, 'TColor', '')); + ThemeSelectS.TInt := ThemeIni.ReadFloat(Name, 'TInt', 1); + LoadColor(ThemeSelectS.TDColR, ThemeSelectS.TDColG, ThemeSelectS.TDColB, ThemeIni.ReadString(Name, 'TDColor', '')); + ThemeSelectS.TDInt := ThemeIni.ReadFloat(Name, 'TDInt', 1); + + LoadColor(ThemeSelectS.SBGColR, ThemeSelectS.SBGColG, ThemeSelectS.SBGColB, ThemeIni.ReadString(Name, 'SBGColor', '')); + ThemeSelectS.SBGInt := ThemeIni.ReadFloat(Name, 'SBGInt', 1); + LoadColor(ThemeSelectS.SBGDColR, ThemeSelectS.SBGDColG, ThemeSelectS.SBGDColB, ThemeIni.ReadString(Name, 'SBGDColor', '')); + ThemeSelectS.SBGDInt := ThemeIni.ReadFloat(Name, 'SBGDInt', 1); + + LoadColor(ThemeSelectS.STColR, ThemeSelectS.STColG, ThemeSelectS.STColB, ThemeIni.ReadString(Name, 'STColor', '')); + ThemeSelectS.STInt := ThemeIni.ReadFloat(Name, 'STInt', 1); + LoadColor(ThemeSelectS.STDColR, ThemeSelectS.STDColG, ThemeSelectS.STDColB, ThemeIni.ReadString(Name, 'STDColor', '')); + ThemeSelectS.STDInt := ThemeIni.ReadFloat(Name, 'STDInt', 1); + + + DecimalSeparator := ','; +end; + +procedure TTheme.LoadColors; +var + SL: TStringList; + C: integer; + S: string; + Col: integer; + RGB: TRGB; +begin + SL := TStringList.Create; + ThemeIni.ReadSection('Colors', SL); + + // normal colors + SetLength(Color, SL.Count); + for C := 0 to SL.Count-1 do begin + Color[C].Name := SL.Strings[C]; + + S := ThemeIni.ReadString('Colors', SL.Strings[C], ''); + + Color[C].RGB.R := StrToInt(Copy(S, 1, Pos(' ' , S)-1))/255; + Delete(S, 1, Pos(' ', S)); + + Color[C].RGB.G := StrToInt(Copy(S, 1, Pos(' ' , S)-1))/255; + Delete(S, 1, Pos(' ', S)); + + Color[C].RGB.B := StrToInt(S)/255; + end; + + // skin color + SetLength(Color, SL.Count + 3); + C := SL.Count; + Color[C].Name := 'ColorDark'; + Color[C].RGB := GetSystemColor(Skin.Color); //Ini.Color); + + C := C+1; + Color[C].Name := 'ColorLight'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'ColorLightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + // players colors + SetLength(Color, Length(Color)+18); + + // P1 + C := C+1; + Color[C].Name := 'P1Dark'; + Color[C].RGB := GetSystemColor(0); // 0 - blue + + C := C+1; + Color[C].Name := 'P1Light'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'P1Lightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + // P2 + C := C+1; + Color[C].Name := 'P2Dark'; + Color[C].RGB := GetSystemColor(3); // 3 - red + + C := C+1; + Color[C].Name := 'P2Light'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'P2Lightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + // P3 + C := C+1; + Color[C].Name := 'P3Dark'; + Color[C].RGB := GetSystemColor(1); // 1 - green + + C := C+1; + Color[C].Name := 'P3Light'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'P3Lightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + // P4 + C := C+1; + Color[C].Name := 'P4Dark'; + Color[C].RGB := GetSystemColor(4); // 4 - brown + + C := C+1; + Color[C].Name := 'P4Light'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'P4Lightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + // P5 + C := C+1; + Color[C].Name := 'P5Dark'; + Color[C].RGB := GetSystemColor(5); // 5 - yellow + + C := C+1; + Color[C].Name := 'P5Light'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'P5Lightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + // P6 + C := C+1; + Color[C].Name := 'P6Dark'; + Color[C].RGB := GetSystemColor(6); // 6 - violet + + C := C+1; + Color[C].Name := 'P6Light'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + C := C+1; + Color[C].Name := 'P6Lightest'; + Color[C].RGB := ColorSqrt(Color[C-1].RGB); + + + SL.Free; +end; + +function ColorExists(Name: string): integer; +var + C: integer; +begin + Result := -1; + for C := 0 to High(Color) do + if Color[C].Name = Name then Result := C; +end; + +procedure LoadColor(var R, G, B: real; ColorName: string); +var + C: integer; +begin + C := ColorExists(ColorName); + if C >= 0 then begin + R := Color[C].RGB.R; + G := Color[C].RGB.G; + B := Color[C].RGB.B; + end; +end; + +function GetSystemColor(Color: integer): TRGB; +begin + case Color of + 0: begin + // blue + Result.R := 71/255; + Result.G := 175/255; + Result.B := 247/255; + end; + 1: begin + // green + Result.R := 63/255; + Result.G := 191/255; + Result.B := 63/255; + end; + 2: begin + // pink + Result.R := 255/255; +{ Result.G := 63/255; + Result.B := 192/255;} + Result.G := 175/255; + Result.B := 247/255; + end; + 3: begin + // red + Result.R := 247/255; + Result.G := 71/255; + Result.B := 71/255; + end; + //'Violet', 'Orange', 'Yellow', 'Brown', 'Black' + //New Theme-Color Patch + 4: begin + // violet + Result.R := 230/255; + Result.G := 63/255; + Result.B := 230/255; + end; + 5: begin + // orange + Result.R := 255/255; + Result.G := 144/255; + Result.B := 0; + end; + 6: begin + // yellow + Result.R := 230/255; + Result.G := 230/255; + Result.B := 95/255; + end; + 7: begin + // brown + Result.R := 192/255; + Result.G := 127/255; + Result.B := 31/255; + end; + 8: begin + // black + Result.R := 0; + Result.G := 0; + Result.B := 0; + end; + //New Theme-Color Patch End + + end; + + // pink +// Col := clRed; +// Color[C].ColR := (32 + Col and $FF) / (255 + 32); +// Color[C].ColG := (32 + Col div 256 and $FF) / (255 + 32); +// Color[C].ColB := (32 + Col div (256*256) and $FF) / (255 + 32); + + // purple +// Color[C].ColR := 220/255; +// Color[C].ColG := 95/255; +// Color[C].ColB := 220/255;} + +end; + +function ColorSqrt(RGB: TRGB): TRGB; +begin + Result.R := sqrt(RGB.R); + Result.G := sqrt(RGB.G); + Result.B := sqrt(RGB.B); +end; + +procedure TTheme.ThemeSave(FileName: string); +var + I: integer; +begin + {$IFDEF THEMESAVE} + ThemeIni := TIniFile.Create(FileName); + {$ELSE} + ThemeIni := TMemIniFile.Create(FileName); + {$ENDIF} + + ThemeSaveBasic(Loading, 'Loading'); + + ThemeSaveBasic(Main, 'Main'); + ThemeSaveText(Main.TextDescription, 'MainTextDescription'); + ThemeSaveText(Main.TextDescriptionLong, 'MainTextDescriptionLong'); + ThemeSaveButton(Main.ButtonSolo, 'MainButtonSolo'); + ThemeSaveButton(Main.ButtonEditor, 'MainButtonEditor'); + ThemeSaveButton(Main.ButtonOptions, 'MainButtonOptions'); + ThemeSaveButton(Main.ButtonExit, 'MainButtonExit'); + + ThemeSaveBasic(Name, 'Name'); + for I := 1 to 6 do + ThemeSaveButton(Name.ButtonPlayer[I], 'NameButtonPlayer' + IntToStr(I)); + + ThemeSaveBasic(Level, 'Level'); + ThemeSaveButton(Level.ButtonEasy, 'LevelButtonEasy'); + ThemeSaveButton(Level.ButtonMedium, 'LevelButtonMedium'); + ThemeSaveButton(Level.ButtonHard, 'LevelButtonHard'); + + ThemeSaveBasic(Song, 'Song'); + ThemeSaveText(Song.TextArtist, 'SongTextArtist'); + ThemeSaveText(Song.TextTitle, 'SongTextTitle'); + ThemeSaveText(Song.TextNumber, 'SongTextNumber'); + + //Show CAt in Top Left Mod + ThemeSaveText(Song.TextCat, 'SongTextCat'); + ThemeSaveStatic(Song.StaticCat, 'SongStaticCat'); + + ThemeSaveBasic(Sing, 'Sing'); + ThemeSaveStatic(Sing.StaticP1, 'SingP1Static'); + + + + //ScoreBG Mod + ThemeSaveStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); + //end ScoreBG Mod + + + + ThemeSaveText(Sing.TextP1, 'SingP1Text'); + ThemeSaveText(Sing.TextP1Score, 'SingP1TextScore'); + + ThemeSaveStatic(Sing.StaticP2R, 'SingP2RStatic'); + + + + //ScoreBG Mod + ThemeSaveStatic(Sing.StaticP2RScoreBG, 'SingP2RStatic2'); + //end ScoreBG Mod + + + + ThemeSaveText(Sing.TextP2R, 'SingP2RText'); + ThemeSaveText(Sing.TextP2RScore, 'SingP2RTextScore'); + + ThemeSaveStatic(Sing.StaticP2M, 'SingP2MStatic'); + + + + //ScoreBG Mod + ThemeSaveStatic(Sing.StaticP2MScoreBG, 'SingP2MStatic2'); + //end ScoreBG Mod + + + + + ThemeSaveText(Sing.TextP2M, 'SingP2MText'); + ThemeSaveText(Sing.TextP2MScore, 'SingP2MTextScore'); + + ThemeSaveStatic(Sing.StaticP3R, 'SingP3RStatic'); + + + + //ScoreBG Mod + ThemeSaveStatic(Sing.StaticP3RScoreBG, 'SingP3RStatic2'); + //end ScoreBG Mod + + + + + ThemeSaveText(Sing.TextP3R, 'SingP3RText'); + ThemeSaveText(Sing.TextP3RScore, 'SingP3RTextScore'); + + ThemeSaveBasic(Score, 'Score'); + ThemeSaveText(Score.TextArtist, 'ScoreTextArtist'); + ThemeSaveText(Score.TextTitle, 'ScoreTextTitle'); + + for I := 1 to 6 do begin + ThemeSaveStatics(Score.PlayerStatic[I], 'ScorePlayer' + IntToStr(I) + 'Static'); + + ThemeSaveText(Score.TextName[I], 'ScoreTextName' + IntToStr(I)); + ThemeSaveText(Score.TextScore[I], 'ScoreTextScore' + IntToStr(I)); + ThemeSaveText(Score.TextNotes[I], 'ScoreTextNotes' + IntToStr(I)); + ThemeSaveText(Score.TextNotesScore[I], 'ScoreTextNotesScore' + IntToStr(I)); + ThemeSaveText(Score.TextLineBonus[I], 'ScoreTextLineBonus' + IntToStr(I)); + ThemeSaveText(Score.TextLineBonusScore[I], 'ScoreTextLineBonusScore' + IntToStr(I)); + ThemeSaveText(Score.TextGoldenNotes[I], 'ScoreTextGoldenNotes' + IntToStr(I)); + ThemeSaveText(Score.TextGoldenNotesScore[I], 'ScoreTextGoldenNotesScore' + IntToStr(I)); + ThemeSaveText(Score.TextTotal[I], 'ScoreTextTotal' + IntToStr(I)); + ThemeSaveText(Score.TextTotalScore[I], 'ScoreTextTotalScore' + IntToStr(I)); + + ThemeSaveStatic(Score.StaticBackLevel[I], 'ScoreStaticBackLevel' + IntToStr(I)); + ThemeSaveStatic(Score.StaticBackLevelRound[I], 'ScoreStaticBackLevelRound' + IntToStr(I)); + ThemeSaveStatic(Score.StaticLevel[I], 'ScoreStaticLevel' + IntToStr(I)); + ThemeSaveStatic(Score.StaticLevelRound[I], 'ScoreStaticLevelRound' + IntToStr(I)); + end; + + ThemeSaveBasic(Top5, 'Top5'); + ThemeSaveText(Top5.TextLevel, 'Top5TextLevel'); + ThemeSaveText(Top5.TextArtistTitle, 'Top5TextArtistTitle'); + ThemeSaveStatics(Top5.StaticNumber, 'Top5StaticNumber'); + ThemeSaveTexts(Top5.TextNumber, 'Top5TextNumber'); + ThemeSaveTexts(Top5.TextName, 'Top5TextName'); + ThemeSaveTexts(Top5.TextScore, 'Top5TextScore'); + + + ThemeIni.Free; +end; + +procedure TTheme.ThemeSaveBasic(Theme: TThemeBasic; Name: string); +begin + ThemeIni.WriteInteger(Name, 'Texts', Length(Theme.Text)); + + ThemeSaveBackground(Theme.Background, Name + 'Background'); + ThemeSaveStatics(Theme.Static, Name + 'Static'); + ThemeSaveTexts(Theme.Text, Name + 'Text'); +end; + +procedure TTheme.ThemeSaveBackground(ThemeBackground: TThemeBackground; Name: string); +begin + if ThemeBackground.Tex <> '' then + ThemeIni.WriteString(Name, 'Tex', ThemeBackground.Tex) + else begin + ThemeIni.EraseSection(Name); + end; +end; + +procedure TTheme.ThemeSaveStatic(ThemeStatic: TThemeStatic; Name: string); +begin + DecimalSeparator := '.'; + ThemeIni.WriteInteger(Name, 'X', ThemeStatic.X); + ThemeIni.WriteInteger(Name, 'Y', ThemeStatic.Y); + ThemeIni.WriteInteger(Name, 'W', ThemeStatic.W); + ThemeIni.WriteInteger(Name, 'H', ThemeStatic.H); + + ThemeIni.WriteString(Name, 'Tex', ThemeStatic.Tex); + ThemeIni.WriteString(Name, 'Type', ThemeStatic.Typ); + ThemeIni.WriteString(Name, 'Color', ThemeStatic.Color); + + ThemeIni.WriteFloat(Name, 'TexX1', ThemeStatic.TexX1); + ThemeIni.WriteFloat(Name, 'TexY1', ThemeStatic.TexY1); + ThemeIni.WriteFloat(Name, 'TexX2', ThemeStatic.TexX2); + ThemeIni.WriteFloat(Name, 'TexY2', ThemeStatic.TexY2); + + DecimalSeparator := ','; +end; + +procedure TTheme.ThemeSaveStatics(ThemeStatic: AThemeStatic; Name: string); +var + S: integer; +begin + for S := 0 to Length(ThemeStatic)-1 do + ThemeSaveStatic(ThemeStatic[S], Name + {'Static' +} IntToStr(S+1)); + + ThemeIni.EraseSection(Name + {'Static' + }IntToStr(S+1)); +end; + +procedure TTheme.ThemeSaveText(ThemeText: TThemeText; Name: string); +begin + DecimalSeparator := '.'; + ThemeIni.WriteInteger(Name, 'X', ThemeText.X); + ThemeIni.WriteInteger(Name, 'Y', ThemeText.Y); + + ThemeIni.WriteInteger(Name, 'Font', ThemeText.Font); + ThemeIni.WriteInteger(Name, 'Size', ThemeText.Size); + ThemeIni.WriteInteger(Name, 'Align', ThemeText.Align); + + ThemeIni.WriteString(Name, 'Text', ThemeText.Text); + ThemeIni.WriteString(Name, 'Color', ThemeText.Color); + + DecimalSeparator := ','; +end; + +procedure TTheme.ThemeSaveTexts(ThemeText: AThemeText; Name: string); +var + T: integer; +begin + for T := 0 to Length(ThemeText)-1 do + ThemeSaveText(ThemeText[T], Name + {'Text' + }IntToStr(T+1)); + + ThemeIni.EraseSection(Name + {'Text' + }IntToStr(T+1)); +end; + +procedure TTheme.ThemeSaveButton(ThemeButton: TThemeButton; Name: string); +var + T: integer; +begin + DecimalSeparator := '.'; + ThemeIni.WriteString(Name, 'Tex', ThemeButton.Tex); + ThemeIni.WriteInteger(Name, 'X', ThemeButton.X); + ThemeIni.WriteInteger(Name, 'Y', ThemeButton.Y); + ThemeIni.WriteInteger(Name, 'W', ThemeButton.W); + ThemeIni.WriteInteger(Name, 'H', ThemeButton.H); + + ThemeIni.WriteString(Name, 'Type', ThemeButton.Typ); + ThemeIni.WriteInteger(Name, 'Texts', Length(ThemeButton.Text)); + + ThemeIni.WriteString(Name, 'Color', ThemeButton.Color); + +{ ThemeButton.ColR := ThemeIni.ReadFloat(Name, 'ColR', 1); + ThemeButton.ColG := ThemeIni.ReadFloat(Name, 'ColG', 1); + ThemeButton.ColB := ThemeIni.ReadFloat(Name, 'ColB', 1); + ThemeButton.Int := ThemeIni.ReadFloat(Name, 'Int', 1); + ThemeButton.DColR := ThemeIni.ReadFloat(Name, 'DColR', 1); + ThemeButton.DColG := ThemeIni.ReadFloat(Name, 'DColG', 1); + ThemeButton.DColB := ThemeIni.ReadFloat(Name, 'DColB', 1); + ThemeButton.DInt := ThemeIni.ReadFloat(Name, 'DInt', 1);} + +{ C := ColorExists(ThemeIni.ReadString(Name, 'Color', '')); + if C >= 0 then begin + ThemeButton.ColR := Color[C].RGB.R; + ThemeButton.ColG := Color[C].RGB.G; + ThemeButton.ColB := Color[C].RGB.B; + end; + + C := ColorExists(ThemeIni.ReadString(Name, 'DColor', '')); + if C >= 0 then begin + ThemeButton.DColR := Color[C].RGB.R; + ThemeButton.DColG := Color[C].RGB.G; + ThemeButton.DColB := Color[C].RGB.B; + end;} + + for T := 0 to High(ThemeButton.Text) do + ThemeSaveText(ThemeButton.Text[T], Name + 'Text' + IntToStr(T+1)); + + DecimalSeparator := ','; +end; + + +end. diff --git a/Game/Code/Classes/UTime.dcu b/Game/Code/Classes/UTime.dcu new file mode 100644 index 00000000..f69b60f7 Binary files /dev/null and b/Game/Code/Classes/UTime.dcu differ diff --git a/Game/Code/Classes/UTime.pas b/Game/Code/Classes/UTime.pas new file mode 100644 index 00000000..29e972ae --- /dev/null +++ b/Game/Code/Classes/UTime.pas @@ -0,0 +1,81 @@ +unit UTime; + +interface + +type + TTime = class + constructor Create; + function GetTime: real; + end; + +procedure CountSkipTimeSet; +procedure CountSkipTime; +procedure CountMidTime; +procedure TimeSleep(ms: real); + +var + USTime: TTime; + + TimeFreq: int64; + TimeNew: int64; + TimeOld: int64; + TimeSkip: real; + TimeMid: real; + TimeMidTemp: int64; + +implementation + +uses Windows; + +constructor TTime.Create; +begin + CountSkipTimeSet; +end; + +procedure CountSkipTimeSet; +begin + QueryPerformanceFrequency(TimeFreq); + QueryPerformanceCounter(TimeNew); +end; + +procedure CountSkipTime; +begin + TimeOld := TimeNew; + QueryPerformanceCounter(TimeNew); + TimeSkip := (TimeNew-TimeOld)/TimeFreq; +end; + +procedure CountMidTime; +begin + QueryPerformanceCounter(TimeMidTemp); + TimeMid := (TimeMidTemp-TimeNew)/TimeFreq; +end; + +procedure TimeSleep(ms: real); +var + TimeStart: int64; + TimeHalf: int64; + Time: real; + Stop: boolean; +begin + QueryPerformanceCounter(TimeStart); + + Stop := false; + while (not Stop) do begin + QueryPerformanceCounter(TimeHalf); + Time := 1000 * (TimeHalf-TimeStart)/TimeFreq; + if Time > ms then Stop := true; + end; + +end; + +function TTime.GetTime: real; +var + TimeTemp: int64; +begin + QueryPerformanceCounter(TimeTemp); + Result := TimeTemp/TimeFreq; +end; + + +end. diff --git a/Game/Code/Menu/UDisplay.dcu b/Game/Code/Menu/UDisplay.dcu new file mode 100644 index 00000000..f4f89245 Binary files /dev/null and b/Game/Code/Menu/UDisplay.dcu differ diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas new file mode 100644 index 00000000..6d0443cc --- /dev/null +++ b/Game/Code/Menu/UDisplay.pas @@ -0,0 +1,289 @@ +unit UDisplay; + +interface + +uses Windows, SDL, UMenu, OpenGL12, SysUtils; + +type + TDisplay = class + ActualScreen: PMenu; + NextScreen: PMenu; + + h_DC: HDC; + h_RC: HGLRC; + +// FadeType: integer; + FadeTex: glUInt; + LastFade: real; + Fade: real; + function Draw: Boolean; + procedure PrintScreen; + constructor Create; + procedure ScreenShot; + end; + +var + Display: TDisplay; +// ActualScreen: PMenu; +// NextScreen: PMenu; + +implementation + +uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture; + +constructor TDisplay.Create; +begin + inherited Create; +// FadeType := 0; + Fade := 0; +end; + +function TDisplay.Draw: Boolean; +var + S: integer; + Col: real; + Surface: PSDL_Surface; +begin + Result := True; + + Col := 1; + if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then + Col := 0; + + glClearColor(Col, Col, Col , 1); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + + for S := 1 to Screens do begin + ScreenAct := S; + +// if Screens = 1 then ScreenX := 0; +// if (Screens = 2) and (S = 1) then ScreenX := -1; +// if (Screens = 2) and (S = 2) then ScreenX := 1; + ScreenX := 0; + + + if S = 2 then TimeSkip := 0; // it's easier than rewriting code + glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); + + ActualScreen.SetAnimationProgress(1); + if not assigned (NextScreen) then Result := ActualScreen.Draw + else begin + LastFade := Fade; + Fade := Fade + TimeSkip * 6; // * 4 + + {//Create Fading texture + if Fade = 0 then + begin + Surface := SDL_GetVideoSurface; + glGenTextures(1, FadeTex); + + glBindTexture(GL_TEXTURE_2D, FadeTex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glPixelStorei(GL_UNPACK_ROW_LENGTH, Surface.pitch div Surface.format.BytesPerPixel); + glTexImage2D(GL_TEXTURE_2D, 0, 3, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, Surface.pixels); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + end;} + + ActualScreen.ShowFinish := false; + + //Fade = 2 (Belnding) Mod + if (FadeTex > 0) then + begin + ActualScreen.SetAnimationProgress(Fade-1); + ActualScreen.Draw; + glBindTexture(GL_TEXTURE_2D, FadeTex); + glColor4f(Col, Col, Col, 1-Fade); // 0 + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glVertex2f(0, 0); + glVertex2f(0, 600); + glVertex2f(800, 600); + glVertex2f(800, 0); + glEnd; + glDisable(GL_BLEND); + end + else + begin + case ActualScreen.Fade of + 0: begin + if Fade < 1 then begin + ActualScreen.SetAnimationProgress(1-Fade); + ActualScreen.Draw; + glColor4f(Col, Col, Col, Fade); // 0 + end else begin + ActualScreen.SetAnimationProgress(Fade-1); + ActualScreen.Draw; + glColor4f(Col, Col, Col, 1-Fade); // 0 + end; + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glVertex2f(0, 0); + glVertex2f(0, 600); + glVertex2f(800, 600); + glVertex2f(800, 0); + glEnd; + glDisable(GL_BLEND); + end; + 2: begin + if Fade < 1 then begin + ActualScreen.SetAnimationProgress(1-Fade); + ActualScreen.Draw; + //glColor4f(Col, Col, Col, Fade); // 0 + glColor4f(1, 1, 1, 1); // 0 + //Fade := 1 + end; + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glVertex2f(0, 0); + glVertex2f(0, 600); + glVertex2f(800, 600); + glVertex2f(800, 0); + glEnd; + glDisable(GL_BLEND); + end; + end; // case + end; + + if (LastFade < 1 ) and (Fade >= 1) then begin + if (ActualScreen.Fade = 2) then + begin + ScreenShot; + //Create Fading Texture + Surface := SDL_GetVideoSurface; + glGenTextures(1, FadeTex); + + glBindTexture(GL_TEXTURE_2D, FadeTex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glPixelStorei(GL_UNPACK_ROW_LENGTH, Surface.pitch div Surface.format.BytesPerPixel); + glTexImage2D(GL_TEXTURE_2D, 0, 3, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, Surface.pixels); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + end; + + // pokazuje 2 ekran, ale nie kasuje informacji o NextScreen + ActualScreen.onHide; + ActualScreen := NextScreen; + ActualScreen.onShow; + end; + + if Fade >= 2 then begin + if (FadeTex > 0) then //Delete Fade Tex + begin + glDeleteTextures(1, @FadeTex); + FadeTex := 0; + end; + + // koniec fade'a + ActualScreen := NextScreen; + NextScreen := nil; + ActualScreen.onShowFinish; + ActualScreen.ShowFinish := true; + end; + end; // if + end; // for +// SwapBuffers(h_DC); +end; + +{function TDisplay.Fade(FadeIn : Boolean; Steps : UInt8): UInt8; +begin + Self.FadeIn := FadeIn; + FadeStep := (SizeOf(FadeStep) * $FF) div Steps; + ActualStep := $FF; + Result := $FF div FadeStep; +end;} + +procedure TDisplay.PrintScreen; +var + Bitmap: TBitmap; + Jpeg: TJpegImage; + X, Y: integer; + Num: integer; + FileName: string; +begin + for Num := 1 to 9999 do begin + FileName := IntToStr(Num); + while Length(FileName) < 4 do FileName := '0' + FileName; + FileName := ScreenshotsPath + 'screenshot' + FileName + '.jpg'; + if not FileExists(FileName) then break + end; + + glReadPixels(0, 0, ScreenW, ScreenH, GL_RGBA, GL_UNSIGNED_BYTE, @PrintScreenData[0]); + Bitmap := TBitmap.Create; + Bitmap.Width := ScreenW; + Bitmap.Height := ScreenH; + + for Y := 0 to ScreenH-1 do + for X := 0 to ScreenW-1 do + Bitmap.Canvas.Pixels[X, Y] := PrintScreenData[(ScreenH-1-Y) * ScreenW + X] and $00FFFFFF; + + Jpeg := TJpegImage.Create; + Jpeg.Assign(Bitmap); + Bitmap.Free; + Jpeg.CompressionQuality := 95;//90; + ForceDirectories(ScreenshotsPath); + Jpeg.SaveToFile(FileName); + Jpeg.Free; +end; + +procedure TDisplay.ScreenShot; + var F : file; + FileInfo: BITMAPINFOHEADER; + FileHeader : BITMAPFILEHEADER; + pPicData:Pointer; + FileName: String; + Num: Integer; +begin + //bilddatei Suchen + for Num := 1 to 9999 do begin + FileName := IntToStr(Num); + while Length(FileName) < 4 do FileName := '0' + FileName; + FileName := {ScreenshotsPath + }'screenshot' + FileName + '.BMP'; + if not FileExists(FileName) then break + end; + + //Speicher für die Speicherung der Header-Informationen vorbereiten + ZeroMemory(@FileHeader, SizeOf(BITMAPFILEHEADER)); + ZeroMemory(@FileInfo, SizeOf(BITMAPINFOHEADER)); + + //Initialisieren der Daten des Headers + FileHeader.bfType := 19778; //$4D42 = 'BM' + FileHeader.bfOffBits := SizeOf(BITMAPINFOHEADER)+SizeOf(BITMAPFILEHEADER); + + //Schreiben der Bitmap-Informationen + FileInfo.biSize := SizeOf(BITMAPINFOHEADER); + FileInfo.biWidth := ScreenH; + FileInfo.biHeight := ScreenW; + FileInfo.biPlanes := 1; + FileInfo.biBitCount := 32; + FileInfo.biSizeImage := FileInfo.biWidth*FileInfo.biHeight*(FileInfo.biBitCount div 8); + + //Größenangabe auch in den Header übernehmen + FileHeader.bfSize := FileHeader.bfOffBits + FileInfo.biSizeImage; + + //Speicher für die Bilddaten reservieren + GetMem(pPicData, FileInfo.biSizeImage); + try + //Bilddaten von OpenGL anfordern (siehe oben) + glReadPixels(0, 0, ScreenW, ScreenH, GL_BGRA, GL_UNSIGNED_BYTE, pPicData); + + //Und den ganzen Müll in die Datei schieben ;-) + //Moderne Leute nehmen dafür auch Streams ... + AssignFile(f, Filename); + Rewrite( f,1 ); + try + BlockWrite(F, FileHeader, SizeOf(BITMAPFILEHEADER)); + BlockWrite(F, FileInfo, SizeOf(BITMAPINFOHEADER)); + BlockWrite(F, pPicData^, FileInfo.biSizeImage ); + finally + CloseFile(f); + end; + finally + //Und den angeforderten Speicher wieder freigeben ... + FreeMem(pPicData, FileInfo.biSizeImage); + end; +end; + + +end. diff --git a/Game/Code/Menu/UDrawTexture.dcu b/Game/Code/Menu/UDrawTexture.dcu new file mode 100644 index 00000000..9e6402a9 Binary files /dev/null and b/Game/Code/Menu/UDrawTexture.dcu differ diff --git a/Game/Code/Menu/UDrawTexture.pas b/Game/Code/Menu/UDrawTexture.pas new file mode 100644 index 00000000..5a543f33 --- /dev/null +++ b/Game/Code/Menu/UDrawTexture.pas @@ -0,0 +1,101 @@ +unit UDrawTexture; + +interface +uses UTexture; + +procedure DrawLine(X1, Y1, X2, Y2, ColR, ColG, ColB: real); +procedure DrawQuad(X, Y, W, H, ColR, ColG, ColB: real); +procedure DrawTexture(Texture: TTexture); + +implementation +uses OpenGL12; + +procedure DrawLine(X1, Y1, X2, Y2, ColR, ColG, ColB: real); +begin + glColor3f(ColR, ColG, ColB); + glBegin(GL_LINES); + glVertex2f(x1, y1); + glVertex2f(x2, y2); + glEnd; +end; + +procedure DrawQuad(X, Y, W, H, ColR, ColG, ColB: real); +begin + glColor3f(ColR, ColG, ColB); + glBegin(GL_QUADS); + glVertex2f(x, y); + glVertex2f(x, y+h); + glVertex2f(x+w, y+h); + glVertex2f(x+w, y); + glEnd; +end; + +procedure DrawTexture(Texture: TTexture); +var + x1, x2, x3, x4: real; + y1, y2, y3, y4: real; + xt1, xt2, xt3, xt4: real; + yt1, yt2, yt3, yt4: real; +begin + with Texture do begin + // rysuje paski gracza + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glDepthRange(0, 10); + glDepthFunc(GL_LEQUAL); +// glDepthFunc(GL_GEQUAL); + glEnable(GL_DEPTH_TEST); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +// glBlendFunc(GL_SRC_COLOR, GL_ZERO); + glBindTexture(GL_TEXTURE_2D, TexNum); + + x1 := x; + x2 := x; + x3 := x+w*scaleW; + x4 := x+w*scaleW; + y1 := y; + y2 := y+h*scaleH; + y3 := y+h*scaleH; + y4 := y; + if Rot <> 0 then begin + xt1 := x1 - (x + w/2); + xt2 := x2 - (x + w/2); + xt3 := x3 - (x + w/2); + xt4 := x4 - (x + w/2); + yt1 := y1 - (y + h/2); + yt2 := y2 - (y + h/2); + yt3 := y3 - (y + h/2); + yt4 := y4 - (y + h/2); + + x1 := (x + w/2) + xt1 * cos(Rot) - yt1 * sin(Rot); + x2 := (x + w/2) + xt2 * cos(Rot) - yt2 * sin(Rot); + x3 := (x + w/2) + xt3 * cos(Rot) - yt3 * sin(Rot); + x4 := (x + w/2) + xt4 * cos(Rot) - yt4 * sin(Rot); + + y1 := (y + h/2) + yt1 * cos(Rot) + xt1 * sin(Rot); + y2 := (y + h/2) + yt2 * cos(Rot) + xt2 * sin(Rot); + y3 := (y + h/2) + yt3 * cos(Rot) + xt3 * sin(Rot); + y4 := (y + h/2) + yt4 * cos(Rot) + xt4 * sin(Rot); + + end; + +{ glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex3f(x1, y1, z); + glTexCoord2f(0, TexH); glVertex3f(x2, y2, z); + glTexCoord2f(TexW, TexH); glVertex3f(x3, y3, z); + glTexCoord2f(TexW, 0); glVertex3f(x4, y4, z); + glEnd;} + + glBegin(GL_QUADS); + glTexCoord2f(TexX1*TexW, TexY1*TexH); glVertex3f(x1, y1, z); + glTexCoord2f(TexX1*TexW, TexY2*TexH); glVertex3f(x2, y2, z); + glTexCoord2f(TexX2*TexW, TexY2*TexH); glVertex3f(x3, y3, z); + glTexCoord2f(TexX2*TexW, TexY1*TexH); glVertex3f(x4, y4, z); + glEnd; + end; + glDisable(GL_DEPTH_TEST); + glDisable(GL_TEXTURE_2D); +end; + +end. diff --git a/Game/Code/Menu/UMenu.dcu b/Game/Code/Menu/UMenu.dcu new file mode 100644 index 00000000..126834d8 Binary files /dev/null and b/Game/Code/Menu/UMenu.dcu differ diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas new file mode 100644 index 00000000..7c256b5c --- /dev/null +++ b/Game/Code/Menu/UMenu.pas @@ -0,0 +1,1136 @@ +unit UMenu; + +interface + +uses OpenGL12, SysUtils, UTexture, UMenuStatic, UMenuText, UMenuButton, UMenuSelect, UMenuSelectSlide, + UMenuInteract, UThemes; + +type +{ Int16 = SmallInt;} + + PMenu = ^TMenu; + TMenu = class + protected + Interactions: array of TInteract; + SelInteraction: integer; + Static: array of TStatic; + Button: array of TButton; + Selects: array of TSelect; + SelectsS: array of TSelectSlide; + BackImg: TTexture; + BackW: integer; + BackH: integer; + public + Text: array of TText; + mX: integer; // mouse X + mY: integer; // mouse Y + + Fade: integer; // fade type + ShowFinish: boolean; // true if there is no fade + + + destructor Destroy; override; + constructor Create; overload; virtual; + constructor Create(Back: string); overload; virtual; // Back is a JPG resource name for background + constructor Create(Back: string; W, H: integer); overload; virtual; // W and H are the number of overlaps + + // interaction + procedure AddInteraction(Typ, Num: integer); + procedure SetInteraction(Num: integer); + property Interaction: integer read SelInteraction write SetInteraction; + + // background + procedure AddBackground(Name: string); + + // static + function AddStatic(ThemeStatic: TThemeStatic): integer; overload; + function AddStatic(X, Y, W, H: real; Name: string): integer; overload; + function AddStatic(X, Y, W, H: real; Name, Format, Typ: string): integer; overload; + function AddStatic(X, Y, W, H: real; ColR, ColG, ColB: real; Name, Format, Typ: string): integer; overload; + function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string): integer; overload; + function AddStatic(X, Y, W, H: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; overload; + function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; overload; + function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Name, Format, Typ: string; Color: integer): integer; overload; + + // text + function AddText(ThemeText: TThemeText): integer; overload; + function AddText(X, Y: real; Tekst: string): integer; overload; + function AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Tekst: string): integer; overload; + function AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; overload; + + // 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; + function AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean): integer; overload; + procedure ClearButtons; + procedure AddButtonText(AddX, AddY: real; AddText: string); overload; + procedure AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; AddText: string); overload; + procedure AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; Font: integer; Size: integer; Align: integer; AddText: string); overload; + + // select + function AddSelect(ThemeSelect: TThemeSelect; var Data: integer; Values: array of string): integer; overload; + function AddSelect(X, Y, W, H, SkipX, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, + TColR, TColG, TColB, TInt, TDColR, TDColG, TDColB, TDInt, + SBGColR, SBGColG, SBGColB, SBGInt, SBGDColR, SBGDColG, SBGDColB, SBGDInt, + STColR, STColG, STColB, STInt, STDColR, STDColG, STDColB, STDInt: real; + Name, Typ: String; SBGName, SBGTyp: String; + Caption: string; var Data: integer): integer; overload; + procedure AddSelectOption(AddX, AddY: real; AddText: string); overload; + procedure AddSelectOption(SelectNo: Cardinal; AddX, AddY: real; AddText: string); overload; + procedure UpdateSelectOptions(ThemeSelect: TThemeSelect; SelectNum: integer; Values: array of string; var Data: integer); + + // select slide + function AddSelectSlide(ThemeSelectS: TThemeSelectSlide; var Data: integer; Values: array of string): integer; overload; + function AddSelectSlide(X, Y, W, H, SkipX, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, + TColR, TColG, TColB, TInt, TDColR, TDColG, TDColB, TDInt, + SBGColR, SBGColG, SBGColB, SBGInt, SBGDColR, SBGDColG, SBGDColB, SBGDInt, + STColR, STColG, STColB, STInt, STDColR, STDColG, STDColB, STDInt: real; + Name, Typ: String; SBGName, SBGTyp: String; + Caption: string; var Data: integer): integer; overload; + procedure AddSelectSlideOption(AddText: string); overload; + procedure AddSelectSlideOption(SelectNo: Cardinal; AddText: string); overload; + procedure UpdateSelectSlideOptions(ThemeSelectSlide: TThemeSelectSlide; SelectNum: integer; Values: array of string; var Data: integer); + + +// function AddWidget(X, Y : UInt16; WidgetSrc : PSDL_Surface): Int16; +// procedure ClearWidgets(MinNumber : Int16); + procedure FadeTo(Screen: PMenu); + + function DrawBG: boolean; virtual; + function DrawFG: boolean; virtual; + function Draw: boolean; virtual; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown : Boolean): Boolean; virtual; + function ParseMouse(Typ: integer; X: integer; Y: integer): Boolean; virtual; abstract; + function InRegion(X1, Y1, X2, Y2, X, Y: real): Boolean; + function InStaticRegion(StaticNr: integer; X, Y: integer): Boolean; + procedure onShow; virtual; + procedure onShowFinish; virtual; + procedure onHide; virtual; + + procedure SetAnimationProgress(Progress: real); virtual; + + + procedure InteractNext; virtual; + procedure InteractCustom(CustomSwitch: integer); virtual; + procedure InteractPrev; virtual; + procedure InteractInc; virtual; + procedure InteractDec; virtual; + + procedure AddBox(X, Y, W, H: real); + end; + +const + pmMove = 1; + pmClick = 2; + pmUnClick = 3; + + iButton = 0; // interaction type + iSelect = 1; + iText = 2; + iSelectS = 3; + +// fBlack = 0; // fade type +// fWhite = 1; + +implementation + +uses UMain, UDrawTexture, UGraphic, UDisplay, UCovers, USkins; + +destructor TMenu.Destroy; +begin + inherited; +end; + +constructor TMenu.Create; +begin + Fade := 0;//fWhite; + + SetLength(Static, 0); + SetLength(Button, 0); + + BackImg.TexNum := -1; +end; + +constructor TMenu.Create(Back: String); +begin + inherited Create; + + if Back <> '' then begin +// BackImg := Texture.LoadTexture(true, PChar(Back), 'JPG', 'Plain', 0); + BackImg := Texture.LoadTexture(PChar(Back), 'JPG', 'Plain', 0); // new theme system + BackImg.W := 800;//640; + BackImg.H := 600;//480; + BackW := 1; + BackH := 1; + end else + BackImg.TexNum := -1; +end; + +constructor TMenu.Create(Back: string; W, H: integer); +begin + Create(Back); + BackImg.W := BackImg.W / W; + BackImg.H := BackImg.H / H; + BackW := W; + BackH := H; +end; + +procedure TMenu.AddInteraction(Typ, Num: integer); +var + IntNum: integer; +begin + IntNum := Length(Interactions); + SetLength(Interactions, IntNum+1); + Interactions[IntNum].Typ := Typ; + Interactions[IntNum].Num := Num; + Interaction := 0; +end; + +procedure TMenu.SetInteraction(Num: integer); +var + OldNum, OldTyp: integer; + NewNum, NewTyp: integer; +begin + // set inactive + OldNum := Interactions[Interaction].Num; + OldTyp := Interactions[Interaction].Typ; + case OldTyp of + iButton: Button[OldNum].Selected := False; + iSelect: Selects[OldNum].Selected := False; + iText: Text[OldNum].Selected := False; + iSelectS: SelectsS[OldNum].Selected := False; + end; + + // set active + SelInteraction := Num; + NewNum := Interactions[Interaction].Num; + NewTyp := Interactions[Interaction].Typ; + case NewTyp of + iButton: Button[NewNum].Selected := True; + iSelect: Selects[NewNum].Selected := True; + iText: Text[NewNum].Selected := True; + iSelectS: SelectsS[NewNum].Selected := True; + end; +end; + +procedure TMenu.AddBackground(Name: string); +begin + if Name <> '' then begin +// BackImg := Texture.LoadTexture(false, PChar(Skin.SkinPath + FileName), 'JPG', 'Plain', 0); // new theme system + BackImg := Texture.GetTexture(Skin.GetTextureFileName(Name), 'Plain'); + BackImg.W := 800; + BackImg.H := 600; + BackW := 1; + BackH := 1; + end; +end; + +function TMenu.AddStatic(ThemeStatic: TThemeStatic): integer; +begin + Result := AddStatic(ThemeStatic.X, ThemeStatic.Y, ThemeStatic.W, ThemeStatic.H, ThemeStatic.Z, + ThemeStatic.ColR, ThemeStatic.ColG, ThemeStatic.ColB, + ThemeStatic.TexX1, ThemeStatic.TexY1, ThemeStatic.TexX2, ThemeStatic.TexY2, + {<0.5.1: Skin.SkinPath + ThemeStatic.Tex, 0.5.1:} Skin.GetTextureFileName(ThemeStatic.Tex), + 'JPG', ThemeStatic.Typ, $FFFFFF); + //'Font Black'); +end; + +function TMenu.AddStatic(X, Y, W, H: real; Name: string): integer; +begin + Result := AddStatic(X, Y, W, H, Name, 'JPG', 'Plain'); +end; + +function TMenu.AddStatic(X, Y, W, H: real; ColR, ColG, ColB: real; Name, Format, Typ: string): integer; +var + StatNum: integer; +begin + Result := AddStatic(X, Y, W, H, ColR, ColG, ColB, Name, Format, Typ, $FFFFFF); +end; + +function TMenu.AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string): integer; +var + StatNum: integer; +begin + Result := AddStatic(X, Y, W, H, Z, ColR, ColG, ColB, Name, Format, Typ, $FFFFFF); +end; + +function TMenu.AddStatic(X, Y, W, H: real; Name, Format, Typ: string): integer; +var + StatNum: integer; +begin + // adds static + StatNum := Length(Static); + SetLength(Static, StatNum + 1); +// Static[StatNum] := TStatic.Create(Texture.LoadTexture(PChar(Name), PChar(Format), PChar(Typ), $FF00FF)); // $FFFFFF +// Static[StatNum] := TStatic.Create(Texture.LoadTexture(Skin.SkinReg, PChar(Name), PChar(Format), PChar(Typ), $FF00FF)); // new skin system + Static[StatNum] := TStatic.Create(Texture.LoadTexture(PChar(Name), PChar(Format), PChar(Typ), $FF00FF)); // new skin + + // configures static + Static[StatNum].Texture.X := X; + Static[StatNum].Texture.Y := Y; + Static[StatNum].Texture.W := W; + Static[StatNum].Texture.H := H; + Static[StatNum].Visible := true; + Result := StatNum; +end; + +function TMenu.AddStatic(X, Y, W, H: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; +var + StatNum: integer; +begin + Result := AddStatic(X, Y, W, H, 0, ColR, ColG, ColB, Name, Format, Typ, Color); +end; + +function TMenu.AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; +begin + Result := AddStatic(X, Y, W, H, Z, ColR, ColG, ColB, 0, 0, 1, 1, Name, Format, Typ, Color); +// +end; + +function TMenu.AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Name, Format, Typ: string; Color: integer): integer; +var + StatNum: integer; +begin + // adds static + StatNum := Length(Static); + SetLength(Static, StatNum + 1); +// Static[StatNum] := TStatic.Create(Texture.LoadTexture(PChar(Name), PChar(Format), PChar(Typ), Color)); +// Static[StatNum] := TStatic.Create(Texture.LoadTexture(Skin.SkinReg, PChar(Name), PChar(Format), PChar(Typ), Color)); // new skin system +Static[StatNum] := TStatic.Create(Texture.LoadTexture(PChar(Name), PChar(Format), PChar(Typ), Color)); // new skin +// Static[StatNum] := TStatic.Create(Texture.GetTexture(Name, Typ)); + + // configures static + Static[StatNum].Texture.X := X; + Static[StatNum].Texture.Y := Y; + Static[StatNum].Texture.W := W; + Static[StatNum].Texture.H := H; + Static[StatNum].Texture.Z := Z; + Static[StatNum].Texture.ColR := ColR; + Static[StatNum].Texture.ColG := ColG; + Static[StatNum].Texture.ColB := ColB; + Static[StatNum].Texture.TexX1 := TexX1; + Static[StatNum].Texture.TexY1 := TexY1; + Static[StatNum].Texture.TexX2 := TexX2; + Static[StatNum].Texture.TexY2 := TexY2; + Static[StatNum].Texture.Alpha := 1; + Static[StatNum].Visible := true; + Result := StatNum; +end; + +function TMenu.AddText(ThemeText: TThemeText): integer; +begin + Result := AddText(ThemeText.X, ThemeText.Y, ThemeText.Font, ThemeText.Size, + ThemeText.ColR, ThemeText.ColG, ThemeText.ColB, ThemeText.Align, ThemeText.Text); +end; + +function TMenu.AddText(X, Y: real; Tekst: string): integer; +var + TextNum: integer; +begin + // adds text + TextNum := Length(Text); + SetLength(Text, TextNum + 1); + Text[TextNum] := TText.Create(X, Y, Tekst); + Result := TextNum; +end; + +function TMenu.AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Tekst: string): integer; +begin + Result := AddText(X, Y, Style, Size, ColR, ColG, ColB, 0, Tekst); +end; + +function TMenu.AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; +var + TextNum: integer; +begin + // adds text + TextNum := Length(Text); + SetLength(Text, TextNum + 1); + Text[TextNum] := TText.Create(X, Y, Style, Size, ColR, ColG, ColB, Align, Tekst); + Result := TextNum; +end; + + +// Method to add a button in our TMenu. It returns the assigned ButtonNumber +function TMenu.AddButton(ThemeButton: TThemeButton): integer; +var + BT: integer; + BTLen: integer; + temp: integer; +begin +{ Result := AddButton(ThemeButton.X, ThemeButton.Y, ThemeButton.W, ThemeButton.H, + ThemeButton.ColR, ThemeButton.ColG, ThemeButton.ColB, ThemeButton.Int, + ThemeButton.DColR, ThemeButton.DColG, ThemeButton.DColB, ThemeButton.DInt, + ThemeButton.Tex, 'JPG', 'Font Black');} + + Result := AddButton(ThemeButton.X, ThemeButton.Y, ThemeButton.W, ThemeButton.H, + ThemeButton.ColR, ThemeButton.ColG, ThemeButton.ColB, ThemeButton.Int, + ThemeButton.DColR, ThemeButton.DColG, ThemeButton.DColB, ThemeButton.DInt, + Skin.GetTextureFileName(ThemeButton.Tex), 'JPG', ThemeButton.Typ, ThemeButton.Reflection); + + + BTLen := Length(ThemeButton.Text); + for BT := 0 to BTLen-1 do begin + AddButtonText(ThemeButton.Text[BT].X, ThemeButton.Text[BT].Y, + ThemeButton.Text[BT].ColR, ThemeButton.Text[BT].ColG, ThemeButton.Text[BT].ColB, + ThemeButton.Text[BT].Font, ThemeButton.Text[BT].Size, ThemeButton.Text[BT].Align, + ThemeButton.Text[BT].Text); + end; +end; + +function TMenu.AddButton(X, Y, W, H: real; Name: String): integer; +begin + Result := AddButton(X, Y, W, H, Name, 'JPG', 'Plain', False); +end; + +function TMenu.AddButton(X, Y, W, H: real; Name, Format, Typ: String; Reflection: Boolean): integer; +begin + Result := AddButton(X, Y, W, H, 1, 1, 1, 1, 1, 1, 1, 0.5, Name, 'JPG', 'Plain', Reflection); +end; + +function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean): integer; +var + ButNum : integer; +begin + // adds button + ButNum := Length(Button); + SetLength(Button, ButNum + 1); +// Button[ButNum] := TButton.Create(Texture.GetTexture(Name, Typ)); + + // check here for cache +// Texture.GetTexture(Name, Typ, false); // preloads textures and creates cahce mipmap when needed +// if Covers.CoverExists(Name) then + Button[ButNum] := TButton.Create(Texture.GetTexture(Name, Typ, true)); // use cache texture +// else +// Button[ButNum] := TButton.Create(Texture.GetTexture(Name, Typ, false)); // don't use cache texture} + + // configures button + Button[ButNum].Texture.X := X; + Button[ButNum].Texture.Y := Y; + Button[ButNum].Texture.W := W; + Button[ButNum].Texture.H := H; + Button[ButNum].SelectColR := ColR; + Button[ButNum].SelectColG := ColG; + Button[ButNum].SelectColB := ColB; + Button[ButNum].SelectInt := Int; + Button[ButNum].DeselectColR := DColR; + Button[ButNum].DeselectColG := DColG; + Button[ButNum].DeselectColB := DColB; + Button[ButNum].DeselectInt := DInt; + Button[ButNum].Texture.TexX1 := 0; + Button[ButNum].Texture.TexY1 := 0; + Button[ButNum].Texture.TexX2 := 1; + Button[ButNum].Texture.TexY2 := 1; + Button[ButNum].SetSelect(false); + + Button[ButNum].Reflection := Reflection; + + // adds interaction + AddInteraction(iButton, ButNum); + Interaction := 0; +end; + +procedure TMenu.ClearButtons; +begin + Setlength(Button, 0); +end; + +// Method to draw our TMenu and all his child buttons +function TMenu.DrawBG: boolean; +var + PetX: integer; + PetY: integer; +begin +// glClearColor(1, 1, 1, 1); +// glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity; + glOrtho(0, RenderW, RenderH, 0, -1, 100); + glMatrixMode(GL_MODELVIEW); + + BackImg.ColR := 1; + BackImg.ColG := 1; + BackImg.ColB := 1; + BackImg.TexX1 := 0; + BackImg.TexY1 := 0; + BackImg.TexX2 := 1; + BackImg.TexY2 := 1; + if (BackImg.TexNum <> -1) then begin + // draw texture with overlapping + for PetY := 1 to BackH do + for PetX := 1 to BackW do begin + BackImg.X := (PetX-1)/BackW * 800; //640 + BackImg.Y := (PetY-1)/BackH * 600; //480 + DrawTexture(BackImg); + end; // for PetX + end; // if +end; + +function TMenu.DrawFG: boolean; +var + J: Integer; +begin + // We don't forget about newly implemented static for nice skin ... + for J := 0 to Length(Static) - 1 do + Static[J].Draw; + + // ... and slightly implemented menutext unit + for J := 0 to Length(Text) - 1 do + Text[J].Draw; + + // Second, we draw all of our buttons + for J := 0 to Length(Button) - 1 do + Button[J].Draw; + + // Third, we draw all of our selects + for J := 0 to Length(Selects) - 1 do + Selects[J].Draw(1); + + for J := 0 to Length(SelectsS) - 1 do + SelectsS[J].Draw; + + // Third, we draw all our widgets +// for J := 0 to Length(WidgetsSrc) - 1 do +// SDL_BlitSurface(WidgetsSrc[J], nil, ParentBackBuf, WidgetsRect[J]); + Result := True; +end; + +function TMenu.Draw: boolean; +begin + DrawBG; + DrawFG; + Result := True; +end; + +{function TMenu.GetNextScreen(): PMenu; +begin + Result := NextScreen; +end;} + +{function TMenu.AddWidget(X, Y : UInt16; WidgetSrc : PSDL_Surface): Int16; +var + WidgetNum : Int16; + +begin + If (Assigned(WidgetSrc)) Then + begin + WidgetNum := Length(WidgetsSrc); + + SetLength(WidgetsSrc, WidgetNum + 1); + SetLength(WidgetsRect, WidgetNum + 1); + + WidgetsSrc[WidgetNum] := WidgetSrc; + WidgetsRect[WidgetNum] := new(PSDL_Rect); + WidgetsRect[WidgetNum]^.x := X; + WidgetsRect[WidgetNum]^.y := Y; + WidgetsRect[WidgetNum]^.w := WidgetSrc^.w; + WidgetsRect[WidgetNum]^.h := WidgetSrc^.h; + + Result := WidgetNum; + end + else + Result := -1; +end;} + +{procedure TMenu.ClearWidgets(MinNumber : Int16); +var + J : Int16; +begin + For J := MinNumber to (Length(WidgetsSrc) - 1) do + begin + SDL_FreeSurface(WidgetsSrc[J]); + dispose(WidgetsRect[J]); + end; + + SetLength(WidgetsSrc, MinNumber); + SetLength(WidgetsRect, MinNumber); +end;} + +procedure TMenu.InteractNext; +var + Num: integer; + Typ: integer; + Again: boolean; +begin + Again := true; + + // change interaction as long as it's needed + while (Again = true) do begin + Num := (Interaction + 1) Mod Length(Interactions); + Interaction := Num; + Again := false; // reset, default to accept changing interaction + + + // checking newly interacted element + Num := Interactions[Interaction].Num; + Typ := Interactions[Interaction].Typ; + case Typ of + iButton: + begin + if Button[Num].Selectable = false then Again := True; + end; + end; // case + end; // while +end; + + +procedure TMenu.InteractPrev; +var + Num: integer; + Typ: integer; + Again: boolean; +begin + Again := true; + + // change interaction as long as it's needed + while (Again = true) do begin + Num := SelInteraction - 1; + if Num = -1 then Num := High(Interactions); + Interaction := Num; + Again := false; // reset, default to accept changing interaction + + // checking newly interacted element + Num := Interactions[Interaction].Num; + Typ := Interactions[Interaction].Typ; + case Typ of + iButton: + begin + if Button[Num].Selectable = false then Again := True; + end; + end; // case + end; // while + +end; + + +procedure TMenu.InteractCustom(CustomSwitch: integer); +var + Num: integer; + Typ: integer; + Again: boolean; +begin + if num<0 then begin + CustomSwitch:= CustomSwitch*(-1); + Again := true; + // change interaction as long as it's needed + while (Again = true) do begin + Num := SelInteraction - CustomSwitch; + if Num = -1 then Num := High(Interactions); + Interaction := Num; + Again := false; // reset, default to accept changing interaction + + // checking newly interacted element + Num := Interactions[Interaction].Num; + Typ := Interactions[Interaction].Typ; + case Typ of + iButton: + begin + if Button[Num].Selectable = false then Again := True; + end; + end; // case + end; // while + end + else if num>0 then begin + Again := true; + // change interaction as long as it's needed + while (Again = true) do begin + Num := (Interaction + CustomSwitch) Mod Length(Interactions); + Interaction := Num; + Again := false; // reset, default to accept changing interaction + + + // checking newly interacted element + Num := Interactions[Interaction].Num; + Typ := Interactions[Interaction].Typ; + case Typ of + iButton: + begin + if Button[Num].Selectable = false then Again := True; + end; + end; // case + end; // while + end +end; + + +procedure TMenu.FadeTo(Screen: PMenu); +begin + Display.Fade := 0; + Display.NextScreen := Screen; +end; + +procedure TMenu.AddButtonText(AddX, AddY: real; AddText: string); +begin + AddButtonText(AddX, AddY, 1, 1, 1, AddText); +end; + +procedure TMenu.AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; AddText: string); +var + Il: integer; +begin + with Button[High(Button)] do begin + Il := Length(Text); + SetLength(Text, Il+1); + Text[Il] := TText.Create(X + AddX, Y + AddY, AddText); + Text[Il].ColR := ColR; + Text[Il].ColG := ColG; + Text[Il].ColB := ColB; + Text[Il].Int := 1;//0.5; + end; +end; + +procedure TMenu.AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; Font: integer; Size: integer; Align: integer; AddText: string); +var + Il: integer; +begin + with Button[High(Button)] do begin + Il := Length(Text); + SetLength(Text, Il+1); + Text[Il] := TText.Create(X + AddX, Y + AddY, AddText); + Text[Il].ColR := ColR; + Text[Il].ColG := ColG; + Text[Il].ColB := ColB; + Text[Il].Int := 1;//0.5; + Text[Il].Style := Font; + Text[Il].Size := Size; + Text[Il].Align := Align; + end; +end; + +function TMenu.AddSelect(ThemeSelect: TThemeSelect; var Data: integer; Values: array of string): integer; +var + SO: integer; +begin + Result := AddSelect(ThemeSelect.X, ThemeSelect.Y, ThemeSelect.W, ThemeSelect.H, ThemeSelect.SkipX, + ThemeSelect.ColR, ThemeSelect.ColG, ThemeSelect.ColB, ThemeSelect.Int, + ThemeSelect.DColR, ThemeSelect.DColG, ThemeSelect.DColB, ThemeSelect.DInt, + ThemeSelect.TColR, ThemeSelect.TColG, ThemeSelect.TColB, ThemeSelect.TInt, + ThemeSelect.TDColR, ThemeSelect.TDColG, ThemeSelect.TDColB, ThemeSelect.TDInt, + ThemeSelect.SBGColR, ThemeSelect.SBGColG, ThemeSelect.SBGColB, ThemeSelect.SBGInt, + ThemeSelect.SBGDColR, ThemeSelect.SBGDColG, ThemeSelect.SBGDColB, ThemeSelect.SBGDInt, + ThemeSelect.STColR, ThemeSelect.STColG, ThemeSelect.STColB, ThemeSelect.STInt, + ThemeSelect.STDColR, ThemeSelect.STDColG, ThemeSelect.STDColB, ThemeSelect.STDInt, + Skin.GetTextureFileName(ThemeSelect.Tex), 'Font Black', + Skin.GetTextureFileName(ThemeSelect.TexSBG), 'Font Black', + ThemeSelect.Text, Data); + for SO := 0 to High(Values) do + AddSelectOption(ThemeSelect.X + ThemeSelect.W + ThemeSelect.SkipX + SO * 100 + 20, ThemeSelect.Y + 20, Values[SO]); +end; + +function TMenu.AddSelect(X, Y, W, H, SkipX, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, + TColR, TColG, TColB, TInt, TDColR, TDColG, TDColB, TDInt, + SBGColR, SBGColG, SBGColB, SBGInt, SBGDColR, SBGDColG, SBGDColB, SBGDInt, + STColR, STColG, STColB, STInt, STDColR, STDColG, STDColB, STDInt: real; + Name, Typ: String; SBGName, SBGTyp: String; + Caption: string; var Data: integer): integer; +var + S: integer; +begin + S := Length(Selects); + SetLength(Selects, S + 1); + Selects[S] := TSelect.Create; + + Selects[S].Texture := Texture.GetTexture(Name, Typ); + Selects[S].X := X; + Selects[S].Y := Y; + Selects[S].W := W; + Selects[S].H := H; + Selects[S].ColR := ColR; + Selects[S].ColG := ColG; + Selects[S].ColB := ColB; + Selects[S].Int := Int; + Selects[S].DColR := DColR; + Selects[S].DColG := DColG; + Selects[S].DColB := DColB; + Selects[S].DInt := DInt; + + Selects[S].TextureSBG := Texture.GetTexture(SBGName, SBGTyp); + Selects[S].TextureSBG.X := X + W + SkipX; + Selects[S].TextureSBG.Y := Y; + Selects[S].TextureSBG.W := 450; + Selects[S].TextureSBG.H := H; + Selects[S].SBGColR := SBGColR; + Selects[S].SBGColG := SBGColG; + Selects[S].SBGColB := SBGColB; + Selects[S].SBGInt := SBGInt; + Selects[S].SBGDColR := SBGDColR; + Selects[S].SBGDColG := SBGDColG; + Selects[S].SBGDColB := SBGDColB; + Selects[S].SBGDInt := SBGDInt; + + Selects[S].Text.X := X + 20; + Selects[S].Text.Y := Y + 20; + Selects[S].Text.Text := Caption; + Selects[S].Text.Size := 10; + Selects[S].Text.Visible := true; + Selects[S].TColR := TColR; + Selects[S].TColG := TColG; + Selects[S].TColB := TColB; + Selects[S].TInt := TInt; + Selects[S].TDColR := TDColR; + Selects[S].TDColG := TDColG; + Selects[S].TDColB := TDColB; + Selects[S].TDInt := TDInt; + + Selects[S].STColR := STColR; + Selects[S].STColG := STColG; + Selects[S].STColB := STColB; + Selects[S].STInt := STInt; + Selects[S].STDColR := STDColR; + Selects[S].STDColG := STDColG; + Selects[S].STDColB := STDColB; + Selects[S].STDInt := STDInt; + + // new + Selects[S].Texture.TexX1 := 0; + Selects[S].Texture.TexY1 := 0; + Selects[S].Texture.TexX2 := 1; + Selects[S].Texture.TexY2 := 1; + Selects[S].TextureSBG.TexX1 := 0; + Selects[S].TextureSBG.TexY1 := 0; + Selects[S].TextureSBG.TexX2 := 1; + Selects[S].TextureSBG.TexY2 := 1; + + // Sets Data to copy the value of selectops to global value; + Selects[S].PData := @Data; + + // Sets default value of selectopt from Data; + Selects[S].SelectedOption := Data; + + // Disables default selection + Selects[S].SetSelect(false); + + // adds interaction + AddInteraction(iSelect, S); +end; + +procedure TMenu.AddSelectOption(AddX, AddY: real; AddText: string); +begin + AddSelectOption (High(Selects), AddX, AddY, AddText); +end; + +procedure TMenu.AddSelectOption(SelectNo: Cardinal; AddX, AddY: real; AddText: string); +var + SO: integer; +begin + SO := Length(Selects[SelectNo].TextOpt); + SetLength(Selects[SelectNo].TextOpt, SO + 1); + + Selects[SelectNo].TextOpt[SO] := TText.Create; + + Selects[SelectNo].TextOpt[SO].X := AddX; + Selects[SelectNo].TextOpt[SO].Y := AddY; + Selects[SelectNo].TextOpt[SO].Text := AddText; + Selects[SelectNo].TextOpt[SO].Size := 10; + Selects[SelectNo].TextOpt[SO].ColR := Selects[SelectNo].STDColR; + Selects[SelectNo].TextOpt[SO].ColG := Selects[SelectNo].STDColG; + Selects[SelectNo].TextOpt[SO].ColB := Selects[SelectNo].STDColB; + Selects[SelectNo].TextOpt[SO].Int := Selects[SelectNo].STDInt; + Selects[SelectNo].TextOpt[SO].Visible := true; + + if SO = Selects[SelectNo].PData^ then Selects[SelectNo].SelectedOption := SO; +end; + +procedure TMenu.UpdateSelectOptions(ThemeSelect: TThemeSelect; SelectNum: integer; Values: array of string; var Data: integer); +var + SO: integer; +begin + SetLength(Selects[SelectNum].TextOpt, 0); + for SO := 0 to High(Values) do + AddSelectOption(SelectNum, ThemeSelect.X + ThemeSelect.W + ThemeSelect.SkipX + SO * 100 + 20, ThemeSelect.Y + 20, Values[SO]); +end; + +function TMenu.AddSelectSlide(ThemeSelectS: TThemeSelectSlide; var Data: integer; Values: array of string): integer; +var + SO: integer; +begin + Result := AddSelectSlide(ThemeSelectS.X, ThemeSelectS.Y, ThemeSelectS.W, ThemeSelectS.H, ThemeSelectS.SkipX, + ThemeSelectS.ColR, ThemeSelectS.ColG, ThemeSelectS.ColB, ThemeSelectS.Int, + ThemeSelectS.DColR, ThemeSelectS.DColG, ThemeSelectS.DColB, ThemeSelectS.DInt, + ThemeSelectS.TColR, ThemeSelectS.TColG, ThemeSelectS.TColB, ThemeSelectS.TInt, + ThemeSelectS.TDColR, ThemeSelectS.TDColG, ThemeSelectS.TDColB, ThemeSelectS.TDInt, + ThemeSelectS.SBGColR, ThemeSelectS.SBGColG, ThemeSelectS.SBGColB, ThemeSelectS.SBGInt, + ThemeSelectS.SBGDColR, ThemeSelectS.SBGDColG, ThemeSelectS.SBGDColB, ThemeSelectS.SBGDInt, + ThemeSelectS.STColR, ThemeSelectS.STColG, ThemeSelectS.STColB, ThemeSelectS.STInt, + ThemeSelectS.STDColR, ThemeSelectS.STDColG, ThemeSelectS.STDColB, ThemeSelectS.STDInt, + Skin.GetTextureFileName(ThemeSelectS.Tex), 'Font Black', + Skin.GetTextureFileName(ThemeSelectS.TexSBG), 'Font Black', + ThemeSelectS.Text, Data); + for SO := 0 to High(Values) do + AddSelectSlideOption(Values[SO]); + + //Generate Lines + SelectsS[High(SelectsS)].GenLines; + + SelectsS[High(SelectsS)].SelectedOption := SelectsS[High(SelectsS)].SelectOptInt; // refresh +end; + +function TMenu.AddSelectSlide(X, Y, W, H, SkipX, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, + TColR, TColG, TColB, TInt, TDColR, TDColG, TDColB, TDInt, + SBGColR, SBGColG, SBGColB, SBGInt, SBGDColR, SBGDColG, SBGDColB, SBGDInt, + STColR, STColG, STColB, STInt, STDColR, STDColG, STDColB, STDInt: real; + Name, Typ: String; SBGName, SBGTyp: String; + Caption: string; var Data: integer): integer; +var + S: integer; + I: integer; +begin + S := Length(SelectsS); + SetLength(SelectsS, S + 1); + SelectsS[S] := TSelectSlide.Create; + + SelectsS[S].Texture := Texture.GetTexture(Name, Typ); + SelectsS[S].X := X; + SelectsS[S].Y := Y; + SelectsS[S].W := W; + SelectsS[S].H := H; + SelectsS[S].ColR := ColR; + SelectsS[S].ColG := ColG; + SelectsS[S].ColB := ColB; + SelectsS[S].Int := Int; + SelectsS[S].DColR := DColR; + SelectsS[S].DColG := DColG; + SelectsS[S].DColB := DColB; + SelectsS[S].DInt := DInt; + + SelectsS[S].TextureSBG := Texture.GetTexture(SBGName, SBGTyp); + SelectsS[S].TextureSBG.X := X + W + SkipX; + SelectsS[S].TextureSBG.Y := Y; + SelectsS[S].TextureSBG.W := 450; + SelectsS[S].TextureSBG.H := H; + SelectsS[S].SBGColR := SBGColR; + SelectsS[S].SBGColG := SBGColG; + SelectsS[S].SBGColB := SBGColB; + SelectsS[S].SBGInt := SBGInt; + SelectsS[S].SBGDColR := SBGDColR; + SelectsS[S].SBGDColG := SBGDColG; + SelectsS[S].SBGDColB := SBGDColB; + SelectsS[S].SBGDInt := SBGDInt; + + SelectsS[S].Text.X := X + 20; + SelectsS[S].Text.Y := Y + 20; + SelectsS[S].Text.Text := Caption; + SelectsS[S].Text.Size := 10; + SelectsS[S].Text.Visible := true; + SelectsS[S].TColR := TColR; + SelectsS[S].TColG := TColG; + SelectsS[S].TColB := TColB; + SelectsS[S].TInt := TInt; + SelectsS[S].TDColR := TDColR; + SelectsS[S].TDColG := TDColG; + SelectsS[S].TDColB := TDColB; + SelectsS[S].TDInt := TDInt; + + SelectsS[S].STColR := STColR; + SelectsS[S].STColG := STColG; + SelectsS[S].STColB := STColB; + SelectsS[S].STInt := STInt; + SelectsS[S].STDColR := STDColR; + SelectsS[S].STDColG := STDColG; + SelectsS[S].STDColB := STDColB; + SelectsS[S].STDInt := STDInt; + + // new + SelectsS[S].Texture.TexX1 := 0; + SelectsS[S].Texture.TexY1 := 0; + SelectsS[S].Texture.TexX2 := 1; + SelectsS[S].Texture.TexY2 := 1; + SelectsS[S].TextureSBG.TexX1 := 0; + SelectsS[S].TextureSBG.TexY1 := 0; + SelectsS[S].TextureSBG.TexX2 := 1; + SelectsS[S].TextureSBG.TexY2 := 1; + + // Sets Data to copy the value of selectops to global value; + SelectsS[S].PData := @Data; + // Configures Select options + {//SelectsS[S].TextOpt[0].Text := IntToStr(I+1); + SelectsS[S].TextOpt[0].Size := 10; + SelectsS[S].TextOpt[0].Align := 1; + + SelectsS[S].TextOpt[0].ColR := SelectsS[S].STDColR; + SelectsS[S].TextOpt[0].ColG := SelectsS[S].STDColG; + SelectsS[S].TextOpt[0].ColB := SelectsS[S].STDColB; + SelectsS[S].TextOpt[0].Int := SelectsS[S].STDInt; + SelectsS[S].TextOpt[0].Visible := true; } + + // Sets default value of selectopt from Data; + SelectsS[S].SelectedOption := Data; + + // Disables default selection + SelectsS[S].SetSelect(false); + + {// Configures 3 select options + for I := 0 to 2 do begin + SelectsS[S].TextOpt[I].X := SelectsS[S].TextureSBG.X + 20 + (50 + 20) + (150 - 20) * I; + SelectsS[S].TextOpt[I].Y := SelectsS[S].TextureSBG.Y + 20; + SelectsS[S].TextOpt[I].Text := IntToStr(I+1); + SelectsS[S].TextOpt[I].Size := 10; + SelectsS[S].TextOpt[I].Align := 1; + + + SelectsS[S].TextOpt[I].ColR := SelectsS[S].STDColR; + SelectsS[S].TextOpt[I].ColG := SelectsS[S].STDColG; + SelectsS[S].TextOpt[I].ColB := SelectsS[S].STDColB; + SelectsS[S].TextOpt[I].Int := SelectsS[S].STDInt; + SelectsS[S].TextOpt[I].Visible := true; + end;} + + + // adds interaction + AddInteraction(iSelectS, S); + Result := S; +end; + +procedure TMenu.AddSelectSlideOption(AddText: string); +begin + AddSelectSlideOption(High(SelectsS), AddText); +end; + +procedure TMenu.AddSelectSlideOption(SelectNo: Cardinal; AddText: string); +var + SO: integer; +begin + SO := Length(SelectsS[SelectNo].TextOptT); + + SetLength(SelectsS[SelectNo].TextOptT, SO + 1); + SelectsS[SelectNo].TextOptT[SO] := AddText; + + //SelectsS[S].SelectedOption := SelectsS[S].SelectOptInt; // refresh + + //if SO = Selects[S].PData^ then Selects[S].SelectedOption := SO; +end; + +procedure TMenu.UpdateSelectSlideOptions(ThemeSelectSlide: TThemeSelectSlide; SelectNum: integer; Values: array of string; var Data: integer); +var + SO: integer; +begin + SetLength(SelectsS[SelectNum].TextOptT, 0); + for SO := 0 to High(Values) do + AddSelectSlideOption(SelectNum, Values[SO]); + + SelectsS[SelectNum].GenLines; + +// SelectsS[SelectNum].SelectedOption := SelectsS[SelectNum].SelectOptInt; // refresh +// SelectS[SelectNum].SetSelectOpt(Data); +// SelectS[SelectNum].SelectedOption := 0;//Data; + +// Log.LogError(IntToStr(High(SelectsS[SelectNum].TextOptT))); +// if 0 <= High(SelectsS[SelectNum].TextOptT) then + + SelectsS[SelectNum].PData := @Data; + SelectsS[SelectNum].SelectedOption := Data; +end; + +function TMenu.InRegion(X1, Y1, X2, Y2, X, Y: real): Boolean; +begin + Result := false; + X1 := X1 * RenderW/640; + X2 := X2 * RenderW/640; + Y1 := Y1 * RenderH/480; + Y2 := Y2 * RenderH/480; + if (X >= X1) and (X <= X2) and (Y >= Y1) and (Y <= Y2) then + Result := true; +end; + +function TMenu.InStaticRegion(StaticNr: integer; X, Y: integer): Boolean; +begin + Result := InRegion(Static[StaticNr].Texture.X, + Static[StaticNr].Texture.Y, + Static[StaticNr].Texture.X + Static[StaticNr].Texture.W - 1, + Static[StaticNr].Texture.Y + Static[StaticNr].Texture.H - 1, + X, Y); +end; + +procedure TMenu.InteractInc; +var + Num: integer; + Value: integer; +begin + case Interactions[Interaction].Typ of + iSelect: begin + Num := Interactions[Interaction].Num; + Value := Selects[Num].SelectedOption; + Value := (Value + 1) Mod (Length(Selects[Num].TextOpt)); + Selects[Num].SelectedOption := Value; + end; + iSelectS: begin + Num := Interactions[Interaction].Num; + Value := SelectsS[Num].SelectedOption; +// Value := (Value + 1) Mod (Length(SelectsS[Num].TextOptT)); + + // limit + Value := Value + 1; + if Value <= High(SelectsS[Num].TextOptT) then + SelectsS[Num].SelectedOption := Value; + end; + end; +end; + +procedure TMenu.InteractDec; +var + Num: integer; + Value: integer; +begin + case Interactions[Interaction].Typ of + iSelect: begin + Num := Interactions[Interaction].Num; + Value := Selects[Num].SelectedOption; + Value := Value - 1; + if Value = -1 then + Value := High(Selects[Num].TextOpt); + Selects[Num].SelectedOption := Value; + end; + iSelectS: begin + Num := Interactions[Interaction].Num; + Value := SelectsS[Num].SelectedOption; + Value := Value - 1; +// if Value = -1 then +// Value := High(SelectsS[Num].TextOptT); + + if Value >= 0 then + SelectsS[Num].SelectedOption := Value; + end; + end +end; + +procedure TMenu.AddBox(X, Y, W, H: real); +begin + AddStatic(X, Y, W, H, 0, 0, 0, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); + AddStatic(X+2, Y+2, W-4, H-4, 1, 1, 1, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); +end; + +procedure TMenu.onShow; +begin +// nothing +// beep; +end; + +procedure TMenu.onShowFinish; +begin +// nothing +// beep; +end; + +procedure TMenu.onHide; +begin +// nothing +// beep; +end; + +function TMenu.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin +// nothing +// Beep; + Result := true; +end; + +procedure TMenu.SetAnimationProgress(Progress: real); +begin +// nothing +//beep; +end; + +end. + diff --git a/Game/Code/Menu/UMenuButton.dcu b/Game/Code/Menu/UMenuButton.dcu new file mode 100644 index 00000000..b97d1670 Binary files /dev/null and b/Game/Code/Menu/UMenuButton.dcu differ diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas new file mode 100644 index 00000000..e42a5488 --- /dev/null +++ b/Game/Code/Menu/UMenuButton.pas @@ -0,0 +1,238 @@ +unit UMenuButton; + +interface +uses TextGL, UTexture, OpenGL12, UMenuText; + +type + TButton = class + private + SelectBool: Boolean; + constructor Create(); overload; + public + Text: Array of TText; + Texture: TTexture; // Button Screen position and size + Texture2: TTexture; // second texture only used for fading full resolution covers +// Texture2Blend: real; // blending factor for second texture (0=invisible, 1=visible) + // now uses alpha + + DeselectType: integer; // not used yet + Visible: boolean; + //Reflection Mod + Reflection: boolean; + + Selectable: boolean; + + SelectColR: real; + SelectColG: real; + SelectColB: real; + SelectInt: real; + SelectTInt: real; + + DeselectColR: real; + DeselectColG: real; + DeselectColB: real; + DeselectInt: real; + DeselectTInt: real; + + procedure SetY(Value: real); + procedure SetSelect(Value: Boolean); + property X: real read Texture.x write Texture.x; + property Y: real read Texture.y write SetY; + property Z: real read Texture.z write Texture.z; + property W: real read Texture.w write Texture.w; + property H: real read Texture.h write Texture.h; + property Selected: Boolean read SelectBool write SetSelect; + + procedure Draw; + + constructor Create(Textura: TTexture); overload; + destructor Destroy; override; + end; + +implementation +uses UDrawTexture, SysUtils; + +procedure TButton.SetY(Value: real); +var + dY: real; + T: integer; // text +begin + dY := Value - Texture.y; + + Texture.y := Value; + + for T := 0 to High(Text) do + Text[T].Y := Text[T].Y + dY; + +end; + +procedure TButton.SetSelect(Value : Boolean); +var + T: integer; +begin + SelectBool := Value; + if (Value) then begin + Texture.ColR := SelectColR; + Texture.ColG := SelectColG; + Texture.ColB := SelectColB; + Texture.Int := SelectInt; + + Texture2.ColR := SelectColR; + Texture2.ColG := SelectColG; + Texture2.ColB := SelectColB; + Texture2.Int := SelectInt; + + for T := 0 to High(Text) do + Text[T].Int := SelectTInt; + end else begin + Texture.ColR := DeselectColR; + Texture.ColG := DeselectColG; + Texture.ColB := DeselectColB; + Texture.Int := DeselectInt; + + Texture2.ColR := DeselectColR; + Texture2.ColG := DeselectColG; + Texture2.ColB := DeselectColB; + Texture2.Int := DeselectInt; + + for T := 0 to High(Text) do + Text[T].Int := DeselectTInt; + end; +end; + +constructor TButton.Create(); +begin + inherited Create; + // We initialize all to 0, nil or false + Visible := true; + SelectBool := false; + DeselectType := 0; + Selectable := true; + //Reflection Mod + Reflection := true; + + // Default +// SelectInt := 1; +// DeselectInt := 0.5; + +{ SelectColR := 0.5; + SelectColG := 0.75; + SelectColB := 0; + SelectInt := 1; + SelectTInt := 1; + + DeselectColR := 1; + DeselectColG := 1; + DeselectColB := 1; + DeselectInt := 0.5; + DeselectTInt := 1;} + + SelectColR := 1; + SelectColG := 1; + SelectColB := 1; + SelectInt := 1; + SelectTInt := 1; + + DeselectColR := 1; + DeselectColG := 1; + DeselectColB := 1; + DeselectInt := 0.5; + DeselectTInt := 1; + + +end; + +// ***** Public methods ****** // + +procedure TButton.Draw; +var + T: integer; +begin + if Visible then begin + DrawTexture(Texture); + + if Texture2.Alpha > 0 then begin + Texture2.ScaleW := Texture.ScaleW; + Texture2.ScaleH := Texture.ScaleH; + + Texture2.X := Texture.X; + Texture2.Y := Texture.Y; + Texture2.W := Texture.W; + Texture2.H := Texture.H; + + Texture2.ColR := Texture.ColR; + Texture2.ColG := Texture.ColG; + Texture2.ColB := Texture.ColB; + Texture2.Int := Texture.Int; + + Texture2.Z := Texture.Z; + + DrawTexture(Texture2); + end; + + //Reflection Mod + if (Reflection) then // Draw Reflections + begin + with Texture do + begin + //Bind Tex and GL Attributes + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glDepthRange(0, 10); + glDepthFunc(GL_LEQUAL); + //glDepthFunc(GL_GEQUAL); + glEnable(GL_DEPTH_TEST); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + //glBlendFunc(GL_SRC_COLOR, GL_ZERO); + glBindTexture(GL_TEXTURE_2D, TexNum); + + //Draw + glBegin(GL_QUADS);//Top Left + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); + glTexCoord2f(TexX1*TexW, TexY2*TexH); + glVertex3f(x, y+h*scaleH+ 15, z); + + //Bottom Left + glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); + glTexCoord2f(TexX1*TexW, {TexY1*TexH*}0.5); + glVertex3f(x, y+h*scaleH + h*scaleH/2 + 15, z); + + + //Bottom Right + glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); + glTexCoord2f(TexX2*TexW, {TexY1*TexH*}0.5); + glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + 15, z); + + //Top Right + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); + glTexCoord2f(TexX2*TexW, TexY2*TexH); + glVertex3f(x+w*scaleW, y+h*scaleH + 15, z); + glEnd; + end; + end; + + for T := 0 to High(Text) do begin + Text[T].Draw; + end; + end; +end; + +// ***** ****** // + +destructor TButton.Destroy; +begin + inherited; +end; + +constructor TButton.Create(Textura: TTexture); +begin + Create(); + Texture := Textura; + Texture.ColR := 0; + Texture.ColG := 0.5; + Texture.ColB := 0; + Texture.Int := 1; +end; + + +end. diff --git a/Game/Code/Menu/UMenuInteract.dcu b/Game/Code/Menu/UMenuInteract.dcu new file mode 100644 index 00000000..785be771 Binary files /dev/null and b/Game/Code/Menu/UMenuInteract.dcu differ diff --git a/Game/Code/Menu/UMenuInteract.pas b/Game/Code/Menu/UMenuInteract.pas new file mode 100644 index 00000000..3f2960b8 --- /dev/null +++ b/Game/Code/Menu/UMenuInteract.pas @@ -0,0 +1,14 @@ +unit UMenuInteract; + +interface + +type + TInteract = record // for moving thru menu + Typ: integer; // 0 - button, 1 - select + Num: integer; // number of this item in proper list like buttons, selects + end; + +implementation + +end. + \ No newline at end of file diff --git a/Game/Code/Menu/UMenuSelect.dcu b/Game/Code/Menu/UMenuSelect.dcu new file mode 100644 index 00000000..9d483c33 Binary files /dev/null and b/Game/Code/Menu/UMenuSelect.dcu differ diff --git a/Game/Code/Menu/UMenuSelect.pas b/Game/Code/Menu/UMenuSelect.pas new file mode 100644 index 00000000..f7bb871f --- /dev/null +++ b/Game/Code/Menu/UMenuSelect.pas @@ -0,0 +1,198 @@ +unit UMenuSelect; + +interface +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. diff --git a/Game/Code/Menu/UMenuSelectSlide.dcu b/Game/Code/Menu/UMenuSelectSlide.dcu new file mode 100644 index 00000000..1475c1ac Binary files /dev/null and b/Game/Code/Menu/UMenuSelectSlide.dcu differ diff --git a/Game/Code/Menu/UMenuSelectSlide.pas b/Game/Code/Menu/UMenuSelectSlide.pas new file mode 100644 index 00000000..7850cdf6 --- /dev/null +++ b/Game/Code/Menu/UMenuSelectSlide.pas @@ -0,0 +1,335 @@ +unit UMenuSelectSlide; + +interface +uses TextGL, UTexture, OpenGL12, UMenuText; + +type + PSelectSlide = ^TSelectSlide; + TSelectSlide = class + private + SelectBool: boolean; + public + // objects + Text: TText; // Main text describing option + TextOpt: array of TText; // 3 texts in the position of possible options + TextOptT: array of string; // array of names for possible options + + Texture: TTexture; // Select Texture + TextureSBG: TTexture; // Background Selections Texture +// TextureS: array of TTexture; // Selections Texture (not used) + +// TextureArrowL: TTexture; // Texture for left arrow (not used yet) +// TextureArrowR: TTexture; // Texture for right arrow (not used yet) + + SelectOptInt: integer; + PData: ^integer; + + //For automatically Setting LineCount + Lines: Byte; + + //Visibility + Visible: Boolean; + + // 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 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; + constructor Create; + + //Automatically Generate Lines (Texts) + procedure genLines; + end; + +implementation +uses UDrawTexture, math, ULog, SysUtils; + +// ------------ Select +constructor TSelectSlide.Create; +begin + inherited Create; + Text := TText.Create; + SetLength(TextOpt, 1); + TextOpt[0] := TText.Create; + + Visible := True; + {SetLength(TextOpt, 3); + TextOpt[0] := TText.Create; + TextOpt[1] := TText.Create; + TextOpt[2] := TText.Create;} +end; + +procedure TSelectSlide.SetSelect(Value: boolean); +var + SO: integer; + I: integer; +begin + 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 I := 0 to High(TextOpt) do begin + TextOpt[I].ColR := STColR; + TextOpt[I].ColG := STColG; + TextOpt[I].ColB := STColB; + TextOpt[I].Int := STInt; + 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 I := 0 to High(TextOpt) do begin + TextOpt[I].ColR := STDColR; + TextOpt[I].ColG := STDColG; + TextOpt[I].ColB := STDColB; + TextOpt[I].Int := STDInt; + end;} + end; +end; + +procedure TSelectSlide.SetSelectOpt(Value: integer); +var + SO: integer; + Sel: integer; + HalfL: integer; + HalfR: integer; + +procedure DoSelection(Sel: Cardinal); + var I: Integer; + begin + for I := low(TextOpt) to high(TextOpt) do + begin + TextOpt[I].ColR := STDColR; + TextOpt[I].ColG := STDColG; + TextOpt[I].ColB := STDColB; + TextOpt[I].Int := STDInt; + end; + if (Sel <= high(TextOpt)) then + begin + TextOpt[Sel].ColR := STColR; + TextOpt[Sel].ColG := STColG; + TextOpt[Sel].ColB := STColB; + TextOpt[Sel].Int := STInt; + end; + end; +begin + SelectOptInt := Value; + PData^ := Value; +// SetSelect(true); // reset all colors + + if (Length(TextOpt)>0) AND (Length(TextOptT)>0) then + begin + + if (Value <= 0) then + begin //First Option Selected + Value := 0; + + for SO := low (TextOpt) to high(TextOpt) do + begin + TextOpt[SO].Text := TextOptT[SO]; + end; + + DoSelection(0); + end + else if (Value >= high(TextOptT)) then + begin //Last Option Selected + Value := high(TextOptT); + + for SO := high(TextOpt) downto low (TextOpt) do + begin + TextOpt[SO].Text := TextOptT[high(TextOptT)-(Lines-SO-1)]; + end; + DoSelection(Lines-1); + end + else + begin + HalfL := Ceil((Lines-1)/2); + HalfR := Lines-1-HalfL; + + if (Value <= HalfL) then + begin //Selected Option is near to the left side + {HalfL := Value; + HalfR := Lines-1-HalfL;} + //Change Texts + for SO := low (TextOpt) to high(TextOpt) do + begin + TextOpt[SO].Text := TextOptT[SO]; + end; + + DoSelection(Value); + end + else if (Value > High(TextOptT)-HalfR) then + begin //Selected is too near to the right border + HalfR := high(TextOptT) - Value; + HalfL := Lines-1-HalfR; + //Change Texts + for SO := high(TextOpt) downto low (TextOpt) do + begin + TextOpt[SO].Text := TextOptT[high(TextOptT)-(Lines-SO-1)]; + end; + + DoSelection (HalfL); + end + else + begin + //Change Texts + for SO := low (TextOpt) to high(TextOpt) do + begin + TextOpt[SO].Text := TextOptT[Value - HalfL + SO]; + end; + + DoSelection(HalfL); + end; + + end; + + end; + +end; + +procedure TSelectSlide.Draw; +var + SO: integer; +begin + if Visible then + begin + DrawTexture(Texture); + DrawTexture(TextureSBG); + + Text.Draw; + + for SO := low(TextOpt) to high(TextOpt) do + TextOpt[SO].Draw; + end; +end; + +procedure TSelectSlide.GenLines; +var +maxlength: Real; +I: Integer; +begin + SetFontStyle(TextOpt[0].Style); + SetFontSize(TextOpt[0].Size); + maxlength := 0; + + for I := low(TextOptT) to high (TextOptT) do + begin + if (glTextWidth(PChar(TextOptT[I])) > maxlength) then + maxlength := glTextWidth(PChar(TextOptT[I])); + end; + + Lines := floor((TextureSBG.W-40) / (maxlength+7)); + if (Lines > Length(TextOptT)) then + Lines := Length(TextOptT); + + if (Lines <= 0) then + Lines := 1; + + setLength (TextOpt, Lines); + + for I := low(TextOpt) to high(TextOpt) do + begin + + //TextOpt[I] := TextOpt[0]; + TextOpt[I] := TText.Create; + TextOpt[I].Size := 10; + //TextOpt[I].Align := 1; + TextOpt[I].Align := 0; + TextOpt[I].Visible := True; + + TextOpt[I].ColR := STDColR; + TextOpt[I].ColG := STDColG; + TextOpt[I].ColB := STDColB; + TextOpt[I].Int := STDInt; + + //Generate Positions + //TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * (I + 0.5); + TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * I; + TextOpt[I].Y := TextureSBG.Y + 20; + + //Better Look with 2 Options + if (Lines=2) then + TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W -40 - glTextWidth(PChar(TextOptT[1]))) * I; + end; + //TextOpt[I] := TextOpt[0]; +end; + +end. diff --git a/Game/Code/Menu/UMenuStatic.dcu b/Game/Code/Menu/UMenuStatic.dcu new file mode 100644 index 00000000..901fa2c7 Binary files /dev/null and b/Game/Code/Menu/UMenuStatic.dcu differ diff --git a/Game/Code/Menu/UMenuStatic.pas b/Game/Code/Menu/UMenuStatic.pas new file mode 100644 index 00000000..4b10e54c --- /dev/null +++ b/Game/Code/Menu/UMenuStatic.pas @@ -0,0 +1,32 @@ +unit UMenuStatic; + +interface +uses UTexture, OpenGL12; + +type + TStatic = class + public + Texture: TTexture; // Button Screen position and size + Visible: boolean; + procedure Draw; + constructor Create(Textura: TTexture); overload; + end; + +implementation +uses UDrawTexture; + +procedure TStatic.Draw; +var + Pet: integer; +begin + if Visible then + DrawTexture(Texture); +end; + +constructor TStatic.Create(Textura: TTexture); +begin + inherited Create; + Texture := Textura; +end; + +end. diff --git a/Game/Code/Menu/UMenuText.dcu b/Game/Code/Menu/UMenuText.dcu new file mode 100644 index 00000000..7cfe0316 Binary files /dev/null and b/Game/Code/Menu/UMenuText.dcu differ diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas new file mode 100644 index 00000000..5c435a18 --- /dev/null +++ b/Game/Code/Menu/UMenuText.pas @@ -0,0 +1,96 @@ +unit UMenuText; + +interface +uses TextGL, UTexture, OpenGL12, SysUtils; + +type + TText = class + private + SelectBool: boolean; + public + X: real; + Y: real; +// W: real; // if text is wider than W then it is streched (not yet implemented) +// H: real; + Size: real; + Text: string; + ColR: real; + ColG: real; + ColB: real; + Int: real; + Style: integer; + Visible: boolean; + Align: integer; // 0 = left, 1 = center, 2 = right + + procedure SetSelect(Value: Boolean); + property Selected: Boolean read SelectBool write SetSelect; + + procedure Draw; + constructor Create; overload; + constructor Create(X, Y: real; Tekst: string); overload; + constructor Create(ParX, ParY: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); overload; + end; + +implementation +uses UGraphic; + +procedure TText.SetSelect(Value: Boolean); +begin + SelectBool := Value; +end; + +procedure TText.Draw; +var + X2: real; + Text2: string; +begin + if Visible then begin + SetFontStyle(Style); + SetFontSize(Size); + glColor3f(ColR*Int, ColG*Int, ColB*Int); + if not SelectBool then + Text2 := Text + else + Text2 := Text + '|'; + + case Align of + 0: X2 := X; + 1: X2 := X - glTextWidth(pchar(Text2))/2; + 2: X2 := X - glTextWidth(pchar(Text2)); + end; + + SetFontPos(X2, Y); + glPrint(PChar(Text2)); + SetFontStyle(0); // reset to default + end; +end; + +constructor TText.Create; +begin + Create(0, 0, ''); +end; + +constructor TText.Create(X, Y: real; Tekst: string); +begin + Create(X, Y, 0, 10, 0, 0, 0, 0, Tekst); +end; + +constructor TText.Create(ParX, ParY: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); +begin + inherited Create; + X := ParX; + Y := ParY; + Style := ParStyle; + Size := ParSize; + Text := ParTekst; + ColR := ParColR; + ColG := ParColG; + ColB := ParColB; + Int := 1; + Align := ParAlign; + SelectBool := false; + Visible := true; +end; + + +end. diff --git a/Game/Code/SMpeg/USmpeg.alt.pas b/Game/Code/SMpeg/USmpeg.alt.pas new file mode 100644 index 00000000..94ad69c8 --- /dev/null +++ b/Game/Code/SMpeg/USmpeg.alt.pas @@ -0,0 +1,292 @@ +unit USmpeg; + +interface +uses SDL, smpeg, OpenGL12, SysUtils, UIni; + +procedure OpenSmpeg(FileName: string); +procedure SkipSmpeg(Time: single); +procedure PlaySmpeg; +procedure UpdateSmpeg; +procedure CloseSmpeg; +function glmovie_init(Width : GLuint; Height : TGLuint ) : TGLenum; +procedure glmpeg_update(surface: PSDL_Surface; x: Sint32; y: Sint32; w: Uint32; h: Uint32); cdecl; +procedure DrawSmpeg(frame: PGLubyte); +procedure glmovie_resize( width : GLuint; height : GLuint ); +procedure glmovie_quit; + +var + mpeg: PSMPEG; + mpeg_info: TSMPEG_Info; + surface: PSDL_Surface; + +type + { Some data is redundant at this stage. } + PGLMovieTexture = ^TGLMovieTexture; + TGLMovieTexture = record + id : TGLuint; (* OpenGL texture id. *) + poly_width : TGLuint; (* Quad width for tile. *) + poly_height : TGLuint; (* Quad height for tile. *) + movie_width : TGLuint; (* Width of movie inside tile. *) + movie_height : TGLuint; (* Height of movie inside tile. *) + skip_rows : TGLuint; (* Number of rows of movie to skip *) + skip_pixels : TGLuint; (* Number of columns of movie to skip *) + row : TGLuint; (* Row number of tile in scheme. *) + col : TGLuint; (* Column number of tile in scheme. *) + end; + +type + TGLuintArray = array of TGLuint; + PGLuintArray = ^TGLuintArray; + TGLMovieTextureArray = array of TGLMovieTexture; + PGLMovieTextureArray = ^TGLMovieTextureArray; + +var + (* Our evil maximum texture size. Boo 3Dfxnot *) + texture_size : TGLuint = 1024;//512; + texture_ids : TGLuint; + textures: TGLMovieTexture; + tiled_width : TGLuint = 0; + tiled_height : TGLuint = 0; + movie_width : TGLuint = 0; + movie_height : TGLuint = 0; + +implementation + +procedure OpenSmpeg(FileName: string); +begin + mpeg := SMPEG_new(PChar(FileName), @mpeg_info, 0); // audio + if ( mpeg = nil ) then begin + SDL_Quit; + Exit; + end; + +// SMPEG_setvolume(mpeg, 50); + SMPEG_enableaudio(mpeg, 0); + + (* Everything needs to be in RGB for GL, but needs to be 32-bit for SMPEG. *) + surface := SDL_AllocSurface( SDL_SWSURFACE, + mpeg_info.width, + mpeg_info.height, + 32, + $000000FF, + $0000FF00, + $00FF0000, + $FF000000 ); + + if ( surface = nil ) then begin + SDL_Quit; + Exit; + end; + + (* *Initialize* with mpeg size. *) + if (glmovie_init( mpeg_info.width, mpeg_info.height ) <> GL_NO_ERROR ) then begin + SDL_Quit; + Exit; + end; + + SMPEG_setdisplay(mpeg, surface, nil, @glmpeg_update); +end; + +procedure SkipSmpeg(Time: single); +begin + SMPEG_skip(mpeg, Time); +end; + +procedure PlaySmpeg; +begin + SMPEG_play(mpeg); +end; + +procedure UpdateSmpeg; +begin +// glmpeg_update(surface,0,0,0,0); + DrawSmpeg( PGLubyte( surface.pixels ) ); +end; + +procedure CloseSmpeg; +begin +// glmovie_quit; + SMPEG_delete(mpeg); +end; + +function glmovie_init( Width : GLuint; Height : TGLuint ) : TGLenum; +type + PGLubyteArray = ^TGLubyteArray; + TGLubyteArray = array of TGLubyte; +var + (* Initial black texels. *) + pixels : TGLubyteArray; + (* Absolute offsets from within tiled frame. *) + //offset_x: GLuint; + //offset_y: GLuint; + skip_rows : GLuint; + skip_pixels : GLuint; + i, j, current : GLuint; +begin + skip_rows := 0; + current := 0; + (* Save original movie dimensions. *) + movie_width := width; + movie_height := height; + + (* Get the power of 2 dimensions. *) + tiled_width := 1024{512}; + tiled_height := 1024{512}; + + texture_size := 1024{512}; + + (* Time for fun with data type = record *) + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glEnable(GL_TEXTURE_2D); + glEnable(GL_DITHER); + + glGenTextures(1, @texture_ids); + + current := 0; + (* Setup texture. *) + textures.id := texture_ids; + textures.poly_width := texture_size; + textures.poly_height := texture_size; + textures.movie_width := movie_width - 2; + textures.movie_height := movie_height - 2; + textures.row := i; + textures.col := j; + textures.skip_pixels := skip_pixels; + textures.skip_rows := skip_rows; + + SetLength( pixels, textures.poly_width * textures.poly_height * 4 ); + if ( pixels = nil ) then + begin + glDeleteTextures(1, @texture_ids); + result := GL_OUT_OF_MEMORY; + exit; + end; + //FillChar( pixels^, textures[ current ].poly_width * textures[ current ].poly_height * 4, 0 ); + + (* Do all of our useful binding. *) + glBindTexture(GL_TEXTURE_2D, texture_ids); +// glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + (* Specify our 256x256 black texture. *) + glTexImage2D( GL_TEXTURE_2D, + 0, + GL_RGB, + 1024{512},//textures.poly_width, + 1024{512},//textures.poly_height, + 0, + GL_RGBA, + GL_UNSIGNED_BYTE, + @pixels[0] ); + SetLength( pixels, 0 ); + + + (* Simple state setup at the end. *) + result := glGetError( ); +end; + +procedure glmpeg_update( surface : PSDL_Surface; x : Sint32; y : Sint32; w : Uint32; + h : Uint32 ); cdecl; +var + error : TGLenum; +begin + glClear( GL_COLOR_BUFFER_BIT ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity; + DrawSmpeg( PGLubyte( surface.pixels ) ); + error := glGetError( ); + if ( error <> GL_NO_ERROR ) then Exit; + SDL_GL_SwapBuffers; +end; + +procedure DrawSmpeg(frame: PGLubyte); +var + Shift: TGLdouble; + CropT: real; + CropB: real; + TexT: real; + TexB: real; + TexL: real; + TexR: real; + Wide: boolean; +begin + (* full screen mpeg *) +{ CropT := 0; + CropB := 600; + TexT := 0; + TexB := 1; + TexL := 0; + TexW := 1;} + + // set movie texture crop + Wide := false; + if (textures.movie_width = 720-2) and (textures.movie_height = 344-2) then begin + TexT := 0; + TexB := 342/1024; + Wide := true; + end; + if textures.movie_height = 304-2 then begin + TexT := 0; + TexB := 304/1024; + Wide := true; + end; + if textures.movie_height = 152-2 then begin + TexT := 0; + TexB := 152/1024; + Wide := true; + end; + + CropT := 110; // (110/800 = 13,75% max crop) + CropB := 490; // (110/800 = 13,75% max crop) + + if (textures.movie_height <> 304-2) and (textures.movie_height <> 152-2) and (textures.movie_height <> 344-2) then begin + TexT := 110 / 600 * (textures.movie_height / 1024{512}); + TexB := 490 / 600 * (textures.movie_height / 1024{512}); + + if Ini.MovieSize = 1 then begin + // full screen size + CropT := 0; + CropB := 600; + TexT := 0; + TexB := textures.movie_height / 1024{512}; + end; + end; + + TexL := {10}0/600 * (textures.movie_width / 1024{512}); + TexR := {590}600/600 * (textures.movie_width / 1024{512}); + + glEnable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glColor3f(1, 1, 1); + glBindTexture( GL_TEXTURE_2D, texture_ids ); +// glPixelStorei( GL_UNPACK_ROW_LENGTH, movie_width ); + glPixelStorei( GL_UNPACK_SKIP_ROWS, 0); + glPixelStorei( GL_UNPACK_SKIP_PIXELS, 0); + glTexSubImage2D( GL_TEXTURE_2D, 0, 0, (* offset_x *) 0, (* offset_y *) textures.movie_width + 2, textures.movie_height + 2, GL_RGBA, GL_UNSIGNED_BYTE, frame ); + + // draw + glBegin( GL_QUADS ); + glTexCoord2f(TexL, TexT); glVertex2f(0, CropT); + glTexCoord2f(TexL, TexB); glVertex2f(0, CropB); + glTexCoord2f(TexR, TexB); glVertex2f(800, CropB); + glTexCoord2f(TexR, TexT); glVertex2f(800, CropT); + glEnd; + glDisable(GL_TEXTURE_2D); +end; + +procedure glmovie_resize( width : GLuint; height : GLuint ); +begin + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity; + gluOrtho2D(0, 800, 600, 0); +end; + +procedure glmovie_quit; +begin + glDeleteTextures(1, @texture_ids); +end; + +end. diff --git a/Game/Code/SMpeg/USmpeg.dcu b/Game/Code/SMpeg/USmpeg.dcu new file mode 100644 index 00000000..d31948ea Binary files /dev/null and b/Game/Code/SMpeg/USmpeg.dcu differ diff --git a/Game/Code/SMpeg/USmpeg.pas b/Game/Code/SMpeg/USmpeg.pas new file mode 100644 index 00000000..c7f756db --- /dev/null +++ b/Game/Code/SMpeg/USmpeg.pas @@ -0,0 +1,299 @@ +unit USmpeg; + +interface +uses SDL, smpeg, OpenGL12, SysUtils, UIni; + +procedure OpenSmpeg(FileName: string); +procedure SkipSmpeg(Time: single); +procedure PlaySmpeg; +procedure PauseSmpeg; //PauseMod +procedure UpdateSmpeg; +procedure CloseSmpeg; +function glmovie_init(Width : GLuint; Height : TGLuint ) : TGLenum; +procedure glmpeg_update(surface: PSDL_Surface; x: Sint32; y: Sint32; w: Uint32; h: Uint32); cdecl; +procedure DrawSmpeg(frame: PGLubyte); +procedure glmovie_resize( width : GLuint; height : GLuint ); +procedure glmovie_quit; + +var + mpeg: PSMPEG; + mpeg_info: TSMPEG_Info; + surface: PSDL_Surface; + +type + { Some data is redundant at this stage. } + PGLMovieTexture = ^TGLMovieTexture; + TGLMovieTexture = record + id : TGLuint; (* OpenGL texture id. *) + poly_width : TGLuint; (* Quad width for tile. *) + poly_height : TGLuint; (* Quad height for tile. *) + movie_width : TGLuint; (* Width of movie inside tile. *) + movie_height : TGLuint; (* Height of movie inside tile. *) + skip_rows : TGLuint; (* Number of rows of movie to skip *) + skip_pixels : TGLuint; (* Number of columns of movie to skip *) + row : TGLuint; (* Row number of tile in scheme. *) + col : TGLuint; (* Column number of tile in scheme. *) + end; + +type + TGLuintArray = array of TGLuint; + PGLuintArray = ^TGLuintArray; + TGLMovieTextureArray = array of TGLMovieTexture; + PGLMovieTextureArray = ^TGLMovieTextureArray; + +var + (* Our evil maximum texture size. Boo 3Dfxnot *) + texture_size : TGLuint = 1024;//512; + texture_ids : TGLuint; + textures: TGLMovieTexture; + tiled_width : TGLuint = 0; + tiled_height : TGLuint = 0; + movie_width : TGLuint = 0; + movie_height : TGLuint = 0; + +implementation + +procedure OpenSmpeg(FileName: string); +begin + mpeg := SMPEG_new(PChar(FileName), @mpeg_info, 0); // audio + if ( mpeg = nil ) then begin + SDL_Quit; + Exit; + end; + +// SMPEG_setvolume(mpeg, 50); + SMPEG_enableaudio(mpeg, 0); + + (* Everything needs to be in RGB for GL, but needs to be 32-bit for SMPEG. *) + surface := SDL_AllocSurface( SDL_SWSURFACE, + mpeg_info.width, + mpeg_info.height, + 32, + $000000FF, + $0000FF00, + $00FF0000, + $FF000000 ); + + if ( surface = nil ) then begin + SDL_Quit; + Exit; + end; + + (* *Initialize* with mpeg size. *) + if (glmovie_init( mpeg_info.width, mpeg_info.height ) <> GL_NO_ERROR ) then begin + SDL_Quit; + Exit; + end; + + SMPEG_setdisplay(mpeg, surface, nil, @glmpeg_update); +end; + +procedure SkipSmpeg(Time: single); +begin + SMPEG_skip(mpeg, Time); +end; + +procedure PlaySmpeg; +begin + SMPEG_play(mpeg); +end; + +//Pause Mod +procedure PauseSmpeg; +begin + SMPEG_pause(mpeg); +end; + +procedure UpdateSmpeg; +begin +// glmpeg_update(surface,0,0,0,0); + DrawSmpeg( PGLubyte( surface.pixels ) ); +end; + +procedure CloseSmpeg; +begin +// glmovie_quit; + SMPEG_delete(mpeg); +end; + +function glmovie_init( Width : GLuint; Height : TGLuint ) : TGLenum; +type + PGLubyteArray = ^TGLubyteArray; + TGLubyteArray = array of TGLubyte; +var + (* Initial black texels. *) + pixels : TGLubyteArray; + (* Absolute offsets from within tiled frame. *) + //offset_x: GLuint; + //offset_y: GLuint; + skip_rows : GLuint; + skip_pixels : GLuint; + i, j, current : GLuint; +begin + skip_rows := 0; + current := 0; + (* Save original movie dimensions. *) + movie_width := width; + movie_height := height; + + (* Get the power of 2 dimensions. *) + tiled_width := 1024{512}; + tiled_height := 1024{512}; + + texture_size := 1024{512}; + + (* Time for fun with data type = record *) + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glEnable(GL_TEXTURE_2D); + glEnable(GL_DITHER); + + glGenTextures(1, @texture_ids); + + current := 0; + (* Setup texture. *) + textures.id := texture_ids; + textures.poly_width := texture_size; + textures.poly_height := texture_size; + textures.movie_width := movie_width - 2; + textures.movie_height := movie_height - 2; + textures.row := i; + textures.col := j; + textures.skip_pixels := skip_pixels; + textures.skip_rows := skip_rows; + + SetLength( pixels, textures.poly_width * textures.poly_height * 4 ); + if ( pixels = nil ) then + begin + glDeleteTextures(1, @texture_ids); + result := GL_OUT_OF_MEMORY; + exit; + end; + //FillChar( pixels^, textures[ current ].poly_width * textures[ current ].poly_height * 4, 0 ); + + (* Do all of our useful binding. *) + glBindTexture(GL_TEXTURE_2D, texture_ids); +// glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + (* Specify our 256x256 black texture. *) + glTexImage2D( GL_TEXTURE_2D, + 0, + GL_RGB, + 1024{512},//textures.poly_width, + 1024{512},//textures.poly_height, + 0, + GL_RGBA, + GL_UNSIGNED_BYTE, + @pixels[0] ); + SetLength( pixels, 0 ); + + + (* Simple state setup at the end. *) + result := glGetError( ); +end; + +procedure glmpeg_update( surface : PSDL_Surface; x : Sint32; y : Sint32; w : Uint32; + h : Uint32 ); cdecl; +var + error : TGLenum; +begin + glClear( GL_COLOR_BUFFER_BIT ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity; + DrawSmpeg( PGLubyte( surface.pixels ) ); + error := glGetError( ); + if ( error <> GL_NO_ERROR ) then Exit; + SDL_GL_SwapBuffers; +end; + +procedure DrawSmpeg(frame: PGLubyte); +var + Shift: TGLdouble; + CropT: real; + CropB: real; + TexT: real; + TexB: real; + TexL: real; + TexR: real; + Wide: boolean; +begin + (* full screen mpeg *) +{ CropT := 0; + CropB := 600; + TexT := 0; + TexB := 1; + TexL := 0; + TexW := 1;} + + // set movie texture crop + Wide := false; + if (textures.movie_width = 720-2) and (textures.movie_height = 344-2) then begin + TexT := 0; + TexB := 342/1024; + Wide := true; + end; + if textures.movie_height = 304-2 then begin + TexT := 0; + TexB := 304/1024; + Wide := true; + end; + if textures.movie_height = 152-2 then begin + TexT := 0; + TexB := 152/1024; + Wide := true; + end; + + CropT := 110; // (110/800 = 13,75% max crop) + CropB := 490; // (110/800 = 13,75% max crop) + + if (textures.movie_height <> 304-2) and (textures.movie_height <> 152-2) and (textures.movie_height <> 344-2) then begin + TexT := 110 / 600 * (textures.movie_height / 1024{512}); + TexB := 490 / 600 * (textures.movie_height / 1024{512}); + + if Ini.MovieSize = 1 then begin + // full screen size + CropT := 0; + CropB := 600; + TexT := 0; + TexB := textures.movie_height / 1024{512}; + end; + end; + + TexL := {10}0/600 * (textures.movie_width / 1024{512}); + TexR := {590}600/600 * (textures.movie_width / 1024{512}); + + glEnable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glColor3f(1, 1, 1); + glBindTexture( GL_TEXTURE_2D, texture_ids ); +// glPixelStorei( GL_UNPACK_ROW_LENGTH, movie_width ); + glPixelStorei( GL_UNPACK_SKIP_ROWS, 0); + glPixelStorei( GL_UNPACK_SKIP_PIXELS, 0); + glTexSubImage2D( GL_TEXTURE_2D, 0, 0, (* offset_x *) 0, (* offset_y *) textures.movie_width + 2, textures.movie_height + 2, GL_RGBA, GL_UNSIGNED_BYTE, frame ); + + // draw + glBegin( GL_QUADS ); + glTexCoord2f(TexL, TexT); glVertex2f(0, CropT); + glTexCoord2f(TexL, TexB); glVertex2f(0, CropB); + glTexCoord2f(TexR, TexB); glVertex2f(800, CropB); + glTexCoord2f(TexR, TexT); glVertex2f(800, CropT); + glEnd; + glDisable(GL_TEXTURE_2D); +end; + +procedure glmovie_resize( width : GLuint; height : GLuint ); +begin + glViewport(0, 0, width, height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity; + gluOrtho2D(0, 800, 600, 0); +end; + +procedure glmovie_quit; +begin + glDeleteTextures(1, @texture_ids); +end; + +end. diff --git a/Game/Code/Screens/UScreenEdit.dcu b/Game/Code/Screens/UScreenEdit.dcu new file mode 100644 index 00000000..1b9c7bb9 Binary files /dev/null and b/Game/Code/Screens/UScreenEdit.dcu differ diff --git a/Game/Code/Screens/UScreenEdit.pas b/Game/Code/Screens/UScreenEdit.pas new file mode 100644 index 00000000..aa3301a7 --- /dev/null +++ b/Game/Code/Screens/UScreenEdit.pas @@ -0,0 +1,104 @@ +unit UScreenEdit; + +interface + +uses UMenu, SDL, UThemes; + +type + TScreenEdit = class(TMenu) + public +{ Tex_Background: TTexture; + FadeOut: boolean; + Path: string; + FileName: string;} + constructor Create(Back: String); override; + procedure onShow; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; +{ function Draw: boolean; override; + procedure Finish;} + end; + +implementation + +uses UGraphic, UMusic, USkins; + +function TScreenEdit.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Music.PlayBack; + FadeTo(@ScreenMain); +// Result := false; + end; + SDLK_RETURN: + begin + if Interaction = 0 then begin + Music.PlayStart; + FadeTo(@ScreenEditConvert); + end; +// if Interaction = 1 then begin +// Music.PlayStart; +// FadeTo(@ScreenEditHeader); +// end; + + if Interaction = 1 then begin + Music.PlayBack; + FadeTo(@ScreenMain); + end; + end; + + SDLK_DOWN: + begin + InteractNext; + end; + SDLK_UP: + begin + InteractPrev; + end; + end; + end; +end; + +constructor TScreenEdit.Create(Back: String); +begin + inherited Create(Back); + AddButton(400-200, 100 + 0*70, 400, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(10, 5, 0, 0, 0, 'Convert Midi to Txt'); +// Button[High(Button)].Text[0].Size := 11; + +// AddButton(400-200, 100 + 1*60, 400, 40, 'ButtonF'); +// AddButtonText(10, 5, 0, 0, 0, 'Edit Headers'); + +// AddButton(400-200, 100 + 2*60, 400, 40, 'ButtonF'); +// AddButtonText(10, 5, 0, 0, 0, 'Set GAP'); + + AddButton(400-200, 100 + 3*60, 400, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(10, 5, 0, 0, 0, 'Exit'); + +end; + +procedure TScreenEdit.onShow; +begin +// Interaction := 0; +end; + +(*function TScreenEdit.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + Pet: integer; + AktBeat: integer; +begin +end; + +procedure TScreenEdit.Finish; +begin +// +end;*) + +end. diff --git a/Game/Code/Screens/UScreenEditConvert.dcu b/Game/Code/Screens/UScreenEditConvert.dcu new file mode 100644 index 00000000..1839ad6b Binary files /dev/null and b/Game/Code/Screens/UScreenEditConvert.dcu differ diff --git a/Game/Code/Screens/UScreenEditConvert.pas b/Game/Code/Screens/UScreenEditConvert.pas new file mode 100644 index 00000000..68742535 --- /dev/null +++ b/Game/Code/Screens/UScreenEditConvert.pas @@ -0,0 +1,500 @@ +unit UScreenEditConvert; + +interface + +uses UMenu, SDL, MidiFile, MidiOut, ULog, USongs, UMusic, UThemes; + +type + TNote = record + Event: integer; + EventType: integer; + Channel: integer; + Start: real; + Len: real; + Data1: integer; + Data2: integer; + Str: string; + end; + + TTrack = record + Note: array of TNote; + Name: string; + Hear: boolean; + Status: byte; // 0 - none, 1 - notes, 2 - lyrics, 3 - notes + lyrics + end; + + TNuta = record + Start: integer; + Len: integer; + Tone: integer; + Lyric: string; + NewSentence: boolean; + end; + + TArrayTrack = array of TTrack; + + TScreenEditConvert = class(TMenu) + public + ATrack: TArrayTrack; // actual track +// Track: TArrayTrack; + Channel: TArrayTrack; + ColR: array[0..100] of real; + ColG: array[0..100] of real; + ColB: array[0..100] of real; + Len: real; + Sel: integer; + Selected: boolean; +// FileName: string; + MidiFile: TMidiFile; + MidiTrack: TMidiTrack; + MidiEvent: pMidiEvent; + MidiOut: TMidiOutput; + Song: TSong; + Czesc: TCzesci; + BPM: real; + Ticks: real; + Nuta: array of TNuta; + procedure AddLyric(Start: integer; Tekst: string); + procedure Extract; + procedure MidiFile1MidiEvent(event: PMidiEvent); + function SelectedNumber: integer; + constructor Create(Back: String); override; + procedure onShow; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function Draw: boolean; override; + procedure onHide; override; + end; + +implementation +uses UGraphic, SysUtils, UDrawTexture, TextGL, UPliki, UMain, UIni, OpenGL, USkins; + +function TScreenEditConvert.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + T: integer; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE: + begin + MidiFile.StopPlaying; + Music.PlayBack; + FadeTo(@ScreenEdit); + end; + + SDLK_RETURN: + begin + if Interaction = 0 then begin + Music.PlayStart; + ScreenOpen.BackScreen := @ScreenEditConvert; + FadeTo(@ScreenOpen); + end; + + if Interaction = 1 then begin + Selected := false; + MidiFile.OnMidiEvent := MidiFile1MidiEvent; +// MidiFile.GoToTime(MidiFile.GetTrackLength div 2); + MidiFile.StartPlaying; + end; + + if Interaction = 2 then begin + Selected := true; + MidiFile.OnMidiEvent := nil; + {for T := 0 to High(ATrack) do begin + if ATrack[T].Hear then begin + MidiTrack := MidiFile.GetTrack(T); + MidiTrack.OnMidiEvent := MidiFile1MidiEvent; + end; + end; + MidiFile.StartPlaying;//} + end; + + if Interaction = 3 then begin + if SelectedNumber > 0 then begin + Extract; + SaveSong(Song, Czesc, ChangeFileExt(FileName, '.txt'), false); + end; + end; + + end; + + SDLK_SPACE: + begin +// ATrack[Sel].Hear := not ATrack[Sel].Hear; + ATrack[Sel].Status := (ATrack[Sel].Status + 1) mod 4; + +{ if Selected then begin + MidiTrack := MidiFile.GetTrack(Sel); + if Track[Sel].Hear then + MidiTrack.OnMidiEvent := MidiFile1MidiEvent + else + MidiTrack.OnMidiEvent := nil; + end;} + end; + + SDLK_RIGHT: + begin + InteractNext; + end; + + SDLK_LEFT: + begin + InteractPrev; + end; + + SDLK_DOWN: + begin + Inc(Sel); + if Sel > High(ATrack) then Sel := 0; + end; + SDLK_UP: + begin + Dec(Sel); + if Sel < 0 then Sel := High(ATrack); + end; + end; + end; +end; + +procedure TScreenEditConvert.AddLyric(Start: integer; Tekst: string); +var + N: integer; +begin + for N := 0 to High(Nuta) do begin + if Nuta[N].Start = Start then begin + // check for new sentece + if Copy(Tekst, 1, 1) = '\' then Delete(Tekst, 1, 1); + if Copy(Tekst, 1, 1) = '/' then begin + Delete(Tekst, 1, 1); + Nuta[N].NewSentence := true; + end; + + // overwrite lyric od append + if Nuta[N].Lyric = '-' then + Nuta[N].Lyric := Tekst + else + Nuta[N].Lyric := Nuta[N].Lyric + Tekst; + end; + end; +end; + +procedure TScreenEditConvert.Extract; +var + T: integer; + C: integer; + N: integer; + Nu: integer; + NutaTemp: TNuta; + Move: integer; +begin + // song info + Song.Title := ''; + Song.Artist := ''; + Song.Mp3 := ''; + Song.Resolution := 4; + SetLength(Song.BPM, 1); + Song.BPM[0].BPM := BPM*4; + + // extract notes + for T := 0 to High(ATrack) do begin +// if ATrack[T].Hear then begin + if ((ATrack[T].Status div 1) and 1) = 1 then begin + for N := 0 to High(ATrack[T].Note) do begin + if (ATrack[T].Note[N].EventType = 9) and (ATrack[T].Note[N].Data2 > 0) then begin + Nu := Length(Nuta); + SetLength(Nuta, Nu + 1); + Nuta[Nu].Start := Round(ATrack[T].Note[N].Start / Ticks); + Nuta[Nu].Len := Round(ATrack[T].Note[N].Len / Ticks); + Nuta[Nu].Tone := ATrack[T].Note[N].Data1 - 12*5; + Nuta[Nu].Lyric := '-'; + end; + end; + end; + end; + + // extract lyrics + for T := 0 to High(ATrack) do begin +// if ATrack[T].Hear then begin + if ((ATrack[T].Status div 2) and 1) = 1 then begin + for N := 0 to High(ATrack[T].Note) do begin + if (ATrack[T].Note[N].EventType = 15) then begin +// Log.LogStatus('<' + Track[T].Note[N].Str + '>', 'MIDI'); + AddLyric(Round(ATrack[T].Note[N].Start / Ticks), ATrack[T].Note[N].Str); + end; + end; + end; + end; + + // sort notes + for N := 0 to High(Nuta) do + for Nu := 0 to High(Nuta)-1 do + if Nuta[Nu].Start > Nuta[Nu+1].Start then begin + NutaTemp := Nuta[Nu]; + Nuta[Nu] := Nuta[Nu+1]; + Nuta[Nu+1] := NutaTemp; + end; + + // move to 0 at beginning + Move := Nuta[0].Start; + for N := 0 to High(Nuta) do + Nuta[N].Start := Nuta[N].Start - Move; + + // copy notes + SetLength(Czesc.Czesc, 1); + Czesc.Ilosc := 1; + Czesc.High := 0; + + C := 0; + N := 0; + Czesc.Czesc[C].IlNut := 0; + Czesc.Czesc[C].HighNut := -1; + + for Nu := 0 to High(Nuta) do begin + if Nuta[Nu].NewSentence then begin // nowa linijka + SetLength(Czesc.Czesc, Length(Czesc.Czesc)+1); + Czesc.Ilosc := Czesc.Ilosc + 1; + Czesc.High := Czesc.High + 1; + C := C + 1; + N := 0; + SetLength(Czesc.Czesc[C].Nuta, 0); + Czesc.Czesc[C].IlNut := 0; + Czesc.Czesc[C].HighNut := -1; + end; + + // tworzy miejsce na nowa nute + SetLength(Czesc.Czesc[C].Nuta, Length(Czesc.Czesc[C].Nuta)+1); + Czesc.Czesc[C].IlNut := Czesc.Czesc[C].IlNut + 1; + Czesc.Czesc[C].HighNut := Czesc.Czesc[C].HighNut + 1; + + // dopisuje + Czesc.Czesc[C].Nuta[N].Start := Nuta[Nu].Start; + Czesc.Czesc[C].Nuta[N].Dlugosc := Nuta[Nu].Len; + Czesc.Czesc[C].Nuta[N].Ton := Nuta[Nu].Tone; + Czesc.Czesc[C].Nuta[N].Tekst := Nuta[Nu].Lyric; + //All Notes are Freestyle when Converted Fix: + Czesc.Czesc[C].Nuta[N].Wartosc := 1; + Inc(N); + end; +end; + +function TScreenEditConvert.SelectedNumber: integer; +var + T: integer; // track +begin + Result := 0; + for T := 0 to High(ATrack) do +// if ATrack[T].Hear then Inc(Result); + if ((ATrack[T].Status div 1) and 1) = 1 then Inc(Result); +end; + +procedure TScreenEditConvert.MidiFile1MidiEvent(event: PMidiEvent); +begin +// Log.LogStatus(IntToStr(event.event), 'MIDI'); + MidiOut.PutShort(event.event, event.data1, event.data2); +end; + +constructor TScreenEditConvert.Create(Back: String); +var + P: integer; +begin + inherited Create(Back); + AddButton(40, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(15, 5, 0, 0, 0, 'Open'); +// Button[High(Button)].Text[0].Size := 11; + + AddButton(160, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(25, 5, 0, 0, 0, 'Play'); + + AddButton(280, 20, 200, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(25, 5, 0, 0, 0, 'Play Selected'); + + AddButton(500, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(20, 5, 0, 0, 0, 'Save'); + + +{ MidiOut := TMidiOutput.Create(nil); +// MidiOut.Close; +// MidiOut.DeviceID := 0; + if Ini.Debug = 1 then + MidiOut.ProductName := 'Microsoft GS Wavetable SW Synth'; // for my kxproject without midi table + Log.LogStatus(MidiOut.ProductName, 'MIDI'); + MidiOut.Open; +// MidiOut.SetVolume(100, 100); // temporary} + + FileName := GamePath + 'file.mid'; + MidiFile := TMidiFile.Create(nil); + + for P := 0 to 100 do begin + ColR[P] := Random(10)/10; + ColG[P] := Random(10)/10; + ColB[P] := Random(10)/10; + end; + +end; + +procedure TScreenEditConvert.onShow; +var + T: integer; // track + N: integer; // note + C: integer; // channel + CN: integer; // channel note +begin + MidiOut := TMidiOutput.Create(nil); + if Ini.Debug = 1 then + MidiOut.ProductName := 'Microsoft GS Wavetable SW Synth'; // for my kxproject without midi table + Log.LogStatus(MidiOut.ProductName, 'MIDI'); + MidiOut.Open; + + + if FileExists(FileName) then begin + MidiFile.Filename := FileName; + MidiFile.ReadFile; + + + Len := 0; + Sel := 0; + BPM := MidiFile.Bpm; + Ticks := MidiFile.TicksPerQuarter / 4; + +{ for T := 0 to MidiFile.NumberOfTracks-1 do begin + SetLength(Track, Length(Track)+1); + MidiTrack := MidiFile.GetTrack(T); + MidiTrack.OnMidiEvent := MidiFile1MidiEvent; + Track[T].Name := MidiTrack.getName; + + for N := 0 to MidiTrack.getEventCount-1 do begin + SetLength(Track[T].Note, Length(Track[T].Note)+1); + MidiEvent := MidiTrack.GetEvent(N); + Track[T].Note[N].Start := MidiEvent.time; + Track[T].Note[N].Len := MidiEvent.len; + Track[T].Note[N].Event := MidiEvent.event; + Track[T].Note[N].EventType := MidiEvent.event div 16; + Track[T].Note[N].Channel := MidiEvent.event and 15; + Track[T].Note[N].Data1 := MidiEvent.data1; + Track[T].Note[N].Data2 := MidiEvent.data2; + Track[T].Note[N].Str := MidiEvent.str; + + if Track[T].Note[N].Start + Track[T].Note[N].Len > Len then + Len := Track[T].Note[N].Start + Track[T].Note[N].Len; + end; + end;} + + + SetLength(Channel, 16); + for T := 0 to 15 do + Channel[T].Name := IntToStr(T+1); + + for T := 0 to MidiFile.NumberOfTracks-1 do begin + MidiTrack := MidiFile.GetTrack(T); + MidiTrack.OnMidiEvent := MidiFile1MidiEvent; + + for N := 0 to MidiTrack.getEventCount-1 do begin + MidiEvent := MidiTrack.GetEvent(N); + C := MidiEvent.event and 15; + + CN := Length(Channel[C].Note); + SetLength(Channel[C].Note, CN+1); + + Channel[C].Note[CN].Start := MidiEvent.time; + Channel[C].Note[CN].Len := MidiEvent.len; + Channel[C].Note[CN].Event := MidiEvent.event; + Channel[C].Note[CN].EventType := MidiEvent.event div 16; + Channel[C].Note[CN].Channel := MidiEvent.event and 15; + Channel[C].Note[CN].Data1 := MidiEvent.data1; + Channel[C].Note[CN].Data2 := MidiEvent.data2; + Channel[C].Note[CN].Str := MidiEvent.str; + + if Channel[C].Note[CN].Start + Channel[C].Note[CN].Len > Len then + Len := Channel[C].Note[CN].Start + Channel[C].Note[CN].Len; + end; + end; + ATrack := Channel; + + end; + + Interaction := 0; +end; + +function TScreenEditConvert.Draw: boolean; +var + Pet: integer; + Pet2: integer; + Bottom: real; + X: real; + Y: real; + H: real; + YSkip: real; +begin + // draw static menu + inherited Draw; + + Y := 100; + + H := Length(ATrack)*40; + if H > 480 then H := 480; + Bottom := Y + H; + + YSkip := H / Length(ATrack); + + // select + DrawQuad(10, Y+Sel*YSkip, 780, YSkip, 0.8, 0.8, 0.8); + + // selected - now me use Status System + for Pet := 0 to High(ATrack) do + if ATrack[Pet].Hear then + DrawQuad(10, Y+Pet*YSkip, 50, YSkip, 0.8, 0.3, 0.3); + glColor3f(0, 0, 0); + for Pet := 0 to High(ATrack) do begin + if ((ATrack[Pet].Status div 1) and 1) = 1 then begin + SetFontPos(25, Y + Pet*YSkip + 10); + SetFontSize(5); + glPrint('N'); + end; + if ((ATrack[Pet].Status div 2) and 1) = 1 then begin + SetFontPos(40, Y + Pet*YSkip + 10); + SetFontSize(5); + glPrint('L'); + end; + end; + + DrawLine(10, Y, 10, Bottom, 0, 0, 0); + DrawLine(60, Y, 60, Bottom, 0, 0, 0); + DrawLine(790, Y, 790, Bottom, 0, 0, 0); + + for Pet := 0 to Length(ATrack) do + DrawLine(10, Y+Pet*YSkip, 790, Y+Pet*YSkip, 0, 0, 0); + + for Pet := 0 to High(ATrack) do begin + SetFontPos(11, Y + 10 + Pet*YSkip); + SetFontSize(5); + glPrint(pchar(ATrack[Pet].Name)); + end; + + for Pet := 0 to High(ATrack) do + for Pet2 := 0 to High(ATrack[Pet].Note) do begin + if ATrack[Pet].Note[Pet2].EventType = 9 then + DrawQuad(60 + ATrack[Pet].Note[Pet2].Start/Len * 725, Y + (Pet+1)*YSkip - ATrack[Pet].Note[Pet2].Data1*35/127, 3, 3, ColR[Pet], ColG[Pet], ColB[Pet]); + if ATrack[Pet].Note[Pet2].EventType = 15 then + DrawLine(60 + ATrack[Pet].Note[Pet2].Start/Len * 725, Y + 0.75 * YSkip + Pet*YSkip, 60 + ATrack[Pet].Note[Pet2].Start/Len * 725, Y + YSkip + Pet*YSkip, ColR[Pet], ColG[Pet], ColB[Pet]); + end; + + // playing line + X := 60+MidiFile.GetCurrentTime/MidiFile.GetTrackLength*730; + DrawLine(X, Y, X, Bottom, 0.3, 0.3, 0.3); + + +end; + +procedure TScreenEditConvert.onHide; +begin + MidiOut.Close; + MidiOut.Free; +end; + +end. diff --git a/Game/Code/Screens/UScreenEditHeader.dcu b/Game/Code/Screens/UScreenEditHeader.dcu new file mode 100644 index 00000000..9508e841 Binary files /dev/null and b/Game/Code/Screens/UScreenEditHeader.dcu differ diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas new file mode 100644 index 00000000..65f39e44 --- /dev/null +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -0,0 +1,362 @@ +unit UScreenEditHeader; + +interface + +uses UMenu, SDL, USongs, UThemes; + +type + TScreenEditHeader = class(TMenu) + public + AktSong: TSong; + TextTitle: integer; + TextArtist: integer; + TextMp3: integer; + TextBackground: integer; + TextVideo: integer; + TextVideoGAP: integer; + TextRelative: integer; + TextResolution: integer; + TextNotesGAP: integer; + TextStart: integer; + TextGAP: integer; + TextBPM: integer; + StaticTitle: integer; + StaticArtist: integer; + StaticMp3: integer; + StaticBackground: integer; + StaticVideo: integer; + StaticVideoGAP: integer; + StaticRelative: integer; + StaticResolution: integer; + StaticNotesGAP: integer; + StaticStart: integer; + StaticGAP: integer; + StaticBPM: integer; + Sel: array[0..11] of boolean; + procedure SetRoundButtons; + + constructor Create(Back: String); override; + procedure onShow; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; +{ function Draw: boolean; override; + procedure Finish;} + end; + +implementation + +uses UGraphic, UMusic, SysUtils, UPliki, USkins; + +function TScreenEditHeader.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + T: integer; +begin + Result := true; + If (PressedDown) Then begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin +// Music.PlayBack; +// FadeTo(@MainScreen); + Result := false; + end; + + SDLK_RETURN: + begin + if Interaction = 1 then begin +// Save; + end; + end; + + SDLK_RIGHT: + begin + case Interaction of + 0..0: InteractNext; + 1: Interaction := 0; + end; + end; + + SDLK_LEFT: + begin + case Interaction of + 0: Interaction := 1; + 1..1: InteractPrev; + end; + end; + + SDLK_DOWN: + begin + case Interaction of + 0..1: Interaction := 2; + 2..12: InteractNext; + 13: Interaction := 0; + end; + end; + + SDLK_UP: + begin + case Interaction of + 0..1: Interaction := 13; + 2: Interaction := 0; + 3..13: InteractPrev; + end; + end; + + SDLK_BACKSPACE: + begin + T := Interaction - 2 + TextTitle; + if (Interaction >= 2) and (Interaction <= 13) and (Length(Text[T].Text) >= 1) then begin + Delete(Text[T].Text, Length(Text[T].Text), 1); + SetRoundButtons; + end; + end; + + end; + case ScanCode of + 32..255: + begin + if (Interaction >= 2) and (Interaction <= 13) then begin + Text[Interaction - 2 + TextTitle].Text := + Text[Interaction - 2 + TextTitle].Text + chr(ScanCode); + SetRoundButtons; + end; + end; + end; + end; +end; + +constructor TScreenEditHeader.Create(Back: String); +begin + inherited Create(Back); + + AddButton(40, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(15, 5, 'Open'); + + AddButton(160, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(20, 5, 'Save'); + + AddBox(80, 60, 640, 550); + + AddText(160, 110 + 0*30, 0, 10, 0, 0, 0, 'Title:'); + AddText(160, 110 + 1*30, 0, 10, 0, 0, 0, 'Artist:'); + AddText(160, 110 + 2*30, 0, 10, 0, 0, 0, 'MP3:'); + + AddText(160, 110 + 4*30, 0, 10, 0, 0, 0, 'Background:'); + AddText(160, 110 + 5*30, 0, 10, 0, 0, 0, 'Video:'); + AddText(160, 110 + 6*30, 0, 10, 0, 0, 0, 'VideoGAP:'); + + AddText(160, 110 + 8*30, 0, 10, 0, 0, 0, 'Relative:'); + AddText(160, 110 + 9*30, 0, 10, 0, 0, 0, 'Resolution:'); + AddText(160, 110 + 10*30, 0, 10, 0, 0, 0, 'NotesGAP:'); + + AddText(160, 110 + 12*30, 0, 10, 0, 0, 0, 'Start:'); + AddText(160, 110 + 13*30, 0, 10, 0, 0, 0, 'GAP:'); + AddText(160, 110 + 14*30, 0, 10, 0, 0, 0, 'BPM:'); + + TextTitle := AddText(340, 110 + 0*30, 0, 10, 0, 0, 0, ''); + TextArtist := AddText(340, 110 + 1*30, 0, 10, 0, 0, 0, ''); + TextMp3 := AddText(340, 110 + 2*30, 0, 10, 0, 0, 0, ''); + + TextBackground := AddText(340, 110 + 4*30, 0, 10, 0, 0, 0, ''); + TextVideo := AddText(340, 110 + 5*30, 0, 10, 0, 0, 0, ''); + TextVideoGAP := AddText(340, 110 + 6*30, 0, 10, 0, 0, 0, ''); + + TextRelative := AddText(340, 110 + 8*30, 0, 10, 0, 0, 0, ''); + TextResolution := AddText(340, 110 + 9*30, 0, 10, 0, 0, 0, ''); + TextNotesGAP := AddText(340, 110 + 10*30, 0, 10, 0, 0, 0, ''); + + TextStart := AddText(340, 110 + 12*30, 0, 10, 0, 0, 0, ''); + TextGAP := AddText(340, 110 + 13*30, 0, 10, 0, 0, 0, ''); + TextBPM := AddText(340, 110 + 14*30, 0, 10, 0, 0, 0, ''); + + StaticTitle := AddStatic(130, 115 + 0*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticArtist := AddStatic(130, 115 + 1*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticMp3 := AddStatic(130, 115 + 2*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticBackground := AddStatic(130, 115 + 4*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticVideo := AddStatic(130, 115 + 5*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticVideoGAP := AddStatic(130, 115 + 6*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticRelative := AddStatic(130, 115 + 8*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticResolution := AddStatic(130, 115 + 9*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticNotesGAP := AddStatic(130, 115 + 10*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticStart := AddStatic(130, 115 + 12*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticGAP := AddStatic(130, 115 + 13*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + StaticBPM := AddStatic(130, 115 + 14*30, 20, 20, 1, 1, 1, 'RoundButton', 'BMP', 'Transparent', $FF00FF); + + AddInteraction(iText, TextTitle); + AddInteraction(iText, TextArtist); + AddInteraction(iText, TextMp3); + AddInteraction(iText, TextBackground); + AddInteraction(iText, TextVideo); + AddInteraction(iText, TextVideoGAP); + AddInteraction(iText, TextRelative); + AddInteraction(iText, TextResolution); + AddInteraction(iText, TextNotesGAP); + AddInteraction(iText, TextStart); + AddInteraction(iText, TextGAP); + AddInteraction(iText, TextBPM); +end; + +procedure TScreenEditHeader.onShow; +begin +{ if FileExists(FileName) then begin // load file + AktSong.FileName := FileName; + SkanujPlik(AktSong); + + SetLength(TrueBoolStrs, 1); + TrueBoolStrs[0] := 'yes'; + SetLength(FalseBoolStrs, 1); + FalseBoolStrs[0] := 'no'; + + Text[TextTitle].Text := AktSong.Title; + Text[TextArtist].Text := AktSong.Artist; + Text[TextMP3].Text := AktSong.Mp3; + Text[TextBackground].Text := AktSong.Background; + Text[TextVideo].Text := AktSong.Video; + Text[TextVideoGAP].Text := FloatToStr(AktSong.VideoGAP); + Text[TextRelative].Text := BoolToStr(AktSong.Relative, true); + Text[TextResolution].Text := IntToStr(AktSong.Resolution); + Text[TextNotesGAP].Text := IntToStr(AktSong.NotesGAP); + Text[TextStart].Text := FloatToStr(AktSong.Start); + Text[TextGAP].Text := FloatToStr(AktSong.GAP); + Text[TextBPM].Text := FloatToStr(AktSong.BPM[0].BPM); + SetRoundButtons; + end;} + + Interaction := 0; +end; + +(*function TScreenEdit.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + Pet: integer; + AktBeat: integer; +begin +{ glClearColor(1,1,1,1); + + // control music + if PlaySentence then begin + // stop the music + if (Music.Position > PlayStopTime) then begin + Music.Stop; + PlaySentence := false; + end; + + // click + if (Click) and (PlaySentence) then begin + AktBeat := Floor(AktSong.BPM[0].BPM * (Music.Position - AktSong.GAP / 1000) / 60); + Text[TextDebug].Text := IntToStr(AktBeat); + if AktBeat <> LastClick then begin + for Pet := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Start = AktBeat) then begin + Music.PlayClick; + LastClick := AktBeat; + end; + end; + end; // click + end; // if PlaySentence + + Text[TextSentence].Text := IntToStr(Czesci[0].Akt + 1) + ' / ' + IntToStr(Czesci[0].Ilosc); + Text[TextNote].Text := IntToStr(AktNuta + 1) + ' / ' + IntToStr(Czesci[0].Czesc[Czesci[0].Akt].IlNut); + + // Song info + Text[TextBPM].Text := FloatToStr(AktSong.BPM[0].BPM / 4); + Text[TextGAP].Text := FloatToStr(AktSong.GAP); + + // Note info + Text[TextNStart].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + Text[TextNDlugosc].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + Text[TextNTon].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton); + Text[TextNText].Text := Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst; + + // draw static menu + inherited Draw; + + // draw notes + SingDrawNoteLines(20, 300, 780, 15); + SingDrawBeatDelimeters(40, 300, 760, 0); + SingDrawCzesc(40, 405, 760, 0); + + // draw text + Lyric.Draw;} + +end;*) + +procedure TScreenEditHeader.SetRoundButtons; +begin + if Length(Text[TextTitle].Text) > 0 then Static[StaticTitle].Visible := true + else Static[StaticTitle].Visible := false; + + if Length(Text[TextArtist].Text) > 0 then Static[StaticArtist].Visible := true + else Static[StaticArtist].Visible := false; + + if Length(Text[TextMp3].Text) > 0 then Static[StaticMp3].Visible := true + else Static[StaticMp3].Visible := false; + + if Length(Text[TextBackground].Text) > 0 then Static[StaticBackground].Visible := true + else Static[StaticBackground].Visible := false; + + if Length(Text[TextVideo].Text) > 0 then Static[StaticVideo].Visible := true + else Static[StaticVideo].Visible := false; + + try + StrToFloat(Text[TextVideoGAP].Text); + if StrToFloat(Text[TextVideoGAP].Text)<> 0 then Static[StaticVideoGAP].Visible := true + else Static[StaticVideoGAP].Visible := false; + except + Static[StaticVideoGAP].Visible := false; + end; + + if LowerCase(Text[TextRelative].Text) = 'yes' then Static[StaticRelative].Visible := true + else Static[StaticRelative].Visible := false; + + try + StrToInt(Text[TextResolution].Text); + if (StrToInt(Text[TextResolution].Text) <> 0) and (StrToInt(Text[TextResolution].Text) >= 1) + then Static[StaticResolution].Visible := true + else Static[StaticResolution].Visible := false; + except + Static[StaticResolution].Visible := false; + end; + + try + StrToInt(Text[TextNotesGAP].Text); + Static[StaticNotesGAP].Visible := true; + except + Static[StaticNotesGAP].Visible := false; + end; + + // start + try + StrToFloat(Text[TextStart].Text); + if (StrToFloat(Text[TextStart].Text) > 0) then Static[StaticStart].Visible := true + else Static[StaticStart].Visible := false; + except + Static[StaticStart].Visible := false; + end; + + // GAP + try + StrToFloat(Text[TextGAP].Text); + Static[StaticGAP].Visible := true; + except + Static[StaticGAP].Visible := false; + end; + + // BPM + try + StrToFloat(Text[TextBPM].Text); + if (StrToFloat(Text[TextBPM].Text) > 0) then Static[StaticBPM].Visible := true + else Static[StaticBPM].Visible := false; + except + Static[StaticBPM].Visible := false; + end; + +end; + +(*procedure TScreenEdit.Finish; +begin +// +end;*) + +end. diff --git a/Game/Code/Screens/UScreenEditSub.dcu b/Game/Code/Screens/UScreenEditSub.dcu new file mode 100644 index 00000000..6b6b6e35 Binary files /dev/null and b/Game/Code/Screens/UScreenEditSub.dcu differ diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas new file mode 100644 index 00000000..7bdbac0d --- /dev/null +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -0,0 +1,1236 @@ +unit UScreenEditSub; + +interface + +uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, UMenuText, + ULyrics, Math, OpenGL12, UThemes, MidiOut; + +type + TScreenEditSub = class(TMenu) + private + TextNote: integer; + TextSentence: integer; + TextTitle: integer; + TextArtist: integer; + TextMp3: integer; + TextBPM: integer; + TextGAP: integer; + TextDebug: integer; + TextNStart: integer; + TextNDlugosc: integer; + TextNTon: integer; + TextNText: integer; + AktNuta: integer; + PlaySentence: boolean; + PlaySentenceMidi: boolean; + PlayStopTime: real; + LastClick: integer; + Click: boolean; + CopySrc: integer; + + MidiOut: TMidiOutput; + MidiStart: real; + MidiStop: real; + MidiTime: real; + MidiPos: real; + MidiLastNote: integer; + + TextEditMode: boolean; + + procedure NewBeat; + procedure CzesciDivide; + procedure CzesciMultiply; + procedure LyricsCapitalize; + procedure LyricsCorrectSpaces; + procedure FixTimings; + procedure DivideSentence; + procedure JoinSentence; + procedure DivideNote; + procedure DeleteNote; + procedure TransposeNote(Transpose: integer); + procedure ChangeWholeTone(Tone: integer); + procedure MoveAllToEnd(Move: integer); + procedure MoveTextToRight; + procedure MarkSrc; + procedure PasteText; + procedure CopySentence(Src, Dst: integer); + procedure CopySentences(Src, Dst, Num: integer); + public + Tex_Background: TTexture; + FadeOut: boolean; + Path: string; + FileName: string; + constructor Create(Back: String); override; + procedure onShow; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function ParseInputEditText(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; + function Draw: boolean; override; + procedure onHide; override; + end; + +implementation +uses UGraphic, UDraw, UMain, USkins; + +// Method for input parsing. If False is returned, GetNextWindow +// should be checked to know the next window to load; +function TScreenEditSub.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + SDL_ModState: Word; + R: real; +begin + Result := true; + + if TextEditMode then begin + Result := ParseInputEditText(PressedKey, ScanCode, PressedDown); + end else begin + + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT {+ KMOD_CAPS}); + + If (PressedDown) then begin // Key Down + case PressedKey of + SDLK_ESCAPE: + begin + FadeTo(@ScreenSong); + end; + + SDLK_Q: + begin + Result := false; + end; + + SDLK_BACKQUOTE: + begin + // Increase Note Length (same as Alt + Right) + Inc(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].HighNut then + Inc(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + end; + + SDLK_EQUALS: + begin + // Increase BPM + if SDL_ModState = 0 then + AktSong.BPM[0].BPM := Round((AktSong.BPM[0].BPM * 5) + 1) / 5; // (1/20) + if SDL_ModState = KMOD_LSHIFT then + AktSong.BPM[0].BPM := AktSong.BPM[0].BPM + 4; // (1/1) + if SDL_ModState = KMOD_LCTRL then + AktSong.BPM[0].BPM := Round((AktSong.BPM[0].BPM * 25) + 1) / 25; // (1/100) + end; + + SDLK_MINUS: + begin + // Decrease BPM + if SDL_ModState = 0 then + AktSong.BPM[0].BPM := Round((AktSong.BPM[0].BPM * 5) - 1) / 5; + if SDL_ModState = KMOD_LSHIFT then + AktSong.BPM[0].BPM := AktSong.BPM[0].BPM - 4; + if SDL_ModState = KMOD_LCTRL then + AktSong.BPM[0].BPM := Round((AktSong.BPM[0].BPM * 25) - 1) / 25; + end; + + SDLK_0: + begin + // Increase GAP + if SDL_ModState = 0 then + AktSong.GAP := AktSong.GAP + 10; + if SDL_ModState = KMOD_LSHIFT then + AktSong.GAP := AktSong.GAP + 1000; + end; + + SDLK_9: + begin + // Decrease GAP + if SDL_ModState = 0 then + AktSong.GAP := AktSong.GAP - 10; + if SDL_ModState = KMOD_LSHIFT then + AktSong.GAP := AktSong.GAP - 1000; + end; + + SDLK_KP_PLUS: + begin + // Increase tone of all notes + if SDL_ModState = 0 then + ChangeWholeTone(1); + if SDL_ModState = KMOD_LSHIFT then + ChangeWholeTone(12); + end; + + SDLK_KP_MINUS: + begin + // Decrease tone of all notes + if SDL_ModState = 0 then + ChangeWholeTone(-1); + if SDL_ModState = KMOD_LSHIFT then + ChangeWholeTone(-12); + end; + + SDLK_SLASH: + begin + if SDL_ModState = 0 then begin + // Insert start of sentece + if AktNuta > 0 then + DivideSentence; + end; + + if SDL_ModState = KMOD_LSHIFT then begin + // Join next sentence with current + if Czesci[0].Akt < Czesci[0].High then + JoinSentence; + end; + + if SDL_ModState = KMOD_LCTRL then begin + // divide note + DivideNote; + end; + + end; + + SDLK_S: + begin + if SDL_ModState = 0 then + // Save Song + SaveSong(AktSong, Czesci[0], Path + FileName, false); + + if SDL_ModState = KMOD_LSHIFT then + // Save Song + SaveSong(AktSong, Czesci[0], Path + FileName, true); + + if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL + KMOD_LALT then + // Save Song + SaveSongDebug(AktSong, Czesci[0], 'C:\song.asm', false); + + end; + + SDLK_D: + begin + // Divide lengths by 2 + CzesciDivide; + end; + + SDLK_M: + begin + // Multiply lengths by 2 + CzesciMultiply; + end; + + SDLK_C: + begin + // Capitalize letter at the beginning of line + if SDL_ModState = 0 then + LyricsCapitalize; + + // Correct spaces + if SDL_ModState = KMOD_LSHIFT then + LyricsCorrectSpaces; + + // Copy sentence + if SDL_ModState = KMOD_LCTRL then + MarkSrc; + end; + + SDLK_V: + begin + // Paste text + if SDL_ModState = KMOD_LCTRL then begin + if Czesci[0].Czesc[Czesci[0].Akt].IlNut >= Czesci[0].Czesc[CopySrc].IlNut then + PasteText + else + beep; + end; + + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin + CopySentence(CopySrc, Czesci[0].Akt); + end; + end; + + SDLK_4: + begin + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin + CopySentence(CopySrc, Czesci[0].Akt); + CopySentence(CopySrc+1, Czesci[0].Akt+1); + CopySentence(CopySrc+2, Czesci[0].Akt+2); + CopySentence(CopySrc+3, Czesci[0].Akt+3); + end; + + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin + CopySentences(CopySrc, Czesci[0].Akt, 4); + end; + end; + SDLK_5: + begin + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin + CopySentence(CopySrc, Czesci[0].Akt); + CopySentence(CopySrc+1, Czesci[0].Akt+1); + CopySentence(CopySrc+2, Czesci[0].Akt+2); + CopySentence(CopySrc+3, Czesci[0].Akt+3); + CopySentence(CopySrc+4, Czesci[0].Akt+4); + end; + + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin + CopySentences(CopySrc, Czesci[0].Akt, 5); + end; + end; + + SDLK_T: + begin + // Fixes timings between sentences + FixTimings; + end; + + SDLK_F4: + begin + // Enter Text Edit Mode + TextEditMode := true; + end; + + SDLK_P: + begin + if SDL_ModState = 0 then begin + // Play Sentence + Click := true; + Music.Stop; + R := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + if R <= Music.Length then begin + Music.MoveTo(R); + PlayStopTime := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + PlaySentence := true; + Music.Play; + LastClick := -100; + end; + end; + + if SDL_ModState = KMOD_LSHIFT then begin + PlaySentenceMidi := true; + + MidiTime := USTime.GetTime; + MidiStart := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + MidiStop := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + + LastClick := -100; + end; + if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL then begin + PlaySentenceMidi := true; + MidiTime := USTime.GetTime; + MidiStart := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + MidiStop := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + LastClick := -100; + + PlaySentence := true; + Click := true; + Music.Stop; + Music.MoveTo(GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].StartNote)+0{-0.10}); + PlayStopTime := GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].Koniec)+0; + Music.Play; + LastClick := -100; + end; + end; + + SDLK_SPACE: + begin + // Play Sentence + PlaySentenceMidi := false; // stop midi + PlaySentence := true; + Click := false; + Music.Stop; + Music.MoveTo(GetTimeFromBeat(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start)); + PlayStopTime := (GetTimeFromBeat( + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start + + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc)); + Music.Play; + LastClick := -100; + end; + + SDLK_RETURN: + begin + end; + + SDLK_LCTRL: + begin + end; + + SDLK_DELETE: + begin + if SDL_ModState = KMOD_LCTRL then begin + // moves text to right in current sentence + DeleteNote; + end; + end; + + SDLK_PERIOD: + begin + // moves text to right in current sentence + MoveTextToRight; + end; + + SDLK_RIGHT: + begin + // right + if SDL_ModState = 0 then begin + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 0; + Inc(AktNuta); + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].IlNut then AktNuta := 0; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + Lyric.Selected := AktNuta; + end; + + // ctrl + right + if SDL_ModState = KMOD_LCTRL then begin + if Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc > 1 then begin + Dec(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + Inc(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + if AktNuta = 0 then begin + Inc(Czesci[0].Czesc[Czesci[0].Akt].Start); + Inc(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + end; + end; + end; + + // shift + right + if SDL_ModState = KMOD_LSHIFT then begin + Inc(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + if AktNuta = 0 then begin + Inc(Czesci[0].Czesc[Czesci[0].Akt].Start); + Inc(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + end; + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].HighNut then + Inc(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + end; + + // alt + right + if SDL_ModState = KMOD_LALT then begin + Inc(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].HighNut then + Inc(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + end; + + // alt + ctrl + shift + right = move all from cursor to right + if SDL_ModState = KMOD_LALT + KMOD_LCTRL + KMOD_LSHIFT then begin + MoveAllToEnd(1); + end; + + end; + + SDLK_LEFT: + begin + // left + if SDL_ModState = 0 then begin + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 0; + Dec(AktNuta); + if AktNuta = -1 then AktNuta := Czesci[0].Czesc[Czesci[0].Akt].HighNut; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + Lyric.Selected := AktNuta; + end; + + // ctrl + left + if SDL_ModState = KMOD_LCTRL then begin + Dec(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + Inc(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + if AktNuta = 0 then begin + Dec(Czesci[0].Czesc[Czesci[0].Akt].Start); + Dec(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + end; + end; + + // shift + left + if SDL_ModState = KMOD_LSHIFT then begin + Dec(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + + // resizing sentences + if AktNuta = 0 then begin + Dec(Czesci[0].Czesc[Czesci[0].Akt].Start); + Dec(Czesci[0].Czesc[Czesci[0].Akt].StartNote); + end; + + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].HighNut then + Dec(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + + end; + + // alt + left + if SDL_ModState = KMOD_LALT then begin + if Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc > 1 then begin + Dec(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].HighNut then + Dec(Czesci[0].Czesc[Czesci[0].Akt].Koniec); + end; + end; + + // alt + ctrl + shift + right = move all from cursor to left + if SDL_ModState = KMOD_LALT + KMOD_LCTRL + KMOD_LSHIFT then begin + MoveAllToEnd(-1); + end; + + end; + + SDLK_DOWN: + begin + // skip to next sentence + if SDL_ModState = 0 then begin + MidiOut.PutShort($81, Czesci[0].Czesc[Czesci[0].Akt].Nuta[MidiLastNote].Ton + 60, 127); + PlaySentenceMidi := false; + + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 0; + Inc(Czesci[0].Akt); + AktNuta := 0; + if Czesci[0].Akt > Czesci[0].High then Czesci[0].Akt := 0; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + + Lyric.AddCzesc(Czesci[0].Akt); + Lyric.Selected := 0; + Music.Stop; + PlaySentence := false; + end; + + // decrease tone + if SDL_ModState = KMOD_LCTRL then begin + TransposeNote(-1); + end; + + end; + + SDLK_UP: + begin + // skip to previous sentence + if SDL_ModState = 0 then begin + MidiOut.PutShort($81, Czesci[0].Czesc[Czesci[0].Akt].Nuta[MidiLastNote].Ton + 60, 127); + PlaySentenceMidi := false; + + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 0; + Dec(Czesci[0].Akt); + AktNuta := 0; + if Czesci[0].Akt = -1 then Czesci[0].Akt := Czesci[0].High; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + + Lyric.AddCzesc(Czesci[0].Akt); + Lyric.Selected := 0; + Music.Stop; + PlaySentence := false; + end; + + // increase tone + if SDL_ModState = KMOD_LCTRL then begin + TransposeNote(1); + end; + end; + + // Golden Note Patch + SDLK_G: + begin + case Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc of + 0: Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc := 2; + 1: Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc := 2; + 2: Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc := 1; + end; // case + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Freestyle := False; + end; + + // Freestyle Note Patch + SDLK_F: + begin + case Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc of + 0: + begin; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc := 1; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Freestyle := False; + end; + 1,2: + begin; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Wartosc := 0; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Freestyle := True; + end; + end; // case + + end; + + + end; + end; + end; // if +end; + +function TScreenEditSub.ParseInputEditText(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + SDL_ModState: Word; +begin + // used when in Text Edit Mode + Result := true; + + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT {+ KMOD_CAPS}); + + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE: + begin + FadeTo(@ScreenSong); + end; + SDLK_F4, SDLK_RETURN: + begin + // Exit Text Edit Mode + TextEditMode := false; + end; + SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + begin + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst := + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst + chr(ScanCode); + end; + SDLK_BACKSPACE: + begin + Delete(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst, + Length(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst), 1); + end; + SDLK_RIGHT: + begin + // right + if SDL_ModState = 0 then begin + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 0; + Inc(AktNuta); + if AktNuta = Czesci[0].Czesc[Czesci[0].Akt].IlNut then AktNuta := 0; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + Lyric.Selected := AktNuta; + end; + end; + SDLK_LEFT: + begin + // left + if SDL_ModState = 0 then begin + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 0; + Dec(AktNuta); + if AktNuta = -1 then AktNuta := Czesci[0].Czesc[Czesci[0].Akt].HighNut; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + Lyric.Selected := AktNuta; + end; + end; + end; + end; +end; + +procedure TScreenEditSub.NewBeat; +begin + // click +{ for Pet := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Start = Czas.AktBeat) then begin + // old} +// Music.PlayClick; +end; + +procedure TScreenEditSub.CzesciDivide; +var + C: integer; + N: integer; +begin + AktSong.BPM[0].BPM := AktSong.BPM[0].BPM / 2; + for C := 0 to Czesci[0].High do begin + Czesci[0].Czesc[C].Start := Czesci[0].Czesc[C].Start div 2; + Czesci[0].Czesc[C].StartNote := Czesci[0].Czesc[C].StartNote div 2; + Czesci[0].Czesc[C].Koniec := Czesci[0].Czesc[C].Koniec div 2; + for N := 0 to Czesci[0].Czesc[C].HighNut do begin + Czesci[0].Czesc[C].Nuta[N].Start := Czesci[0].Czesc[C].Nuta[N].Start div 2; + Czesci[0].Czesc[C].Nuta[N].Dlugosc := Round(Czesci[0].Czesc[C].Nuta[N].Dlugosc / 2); + end; // N + end; // C +end; + +procedure TScreenEditSub.CzesciMultiply; +var + C: integer; + N: integer; +begin + AktSong.BPM[0].BPM := AktSong.BPM[0].BPM * 2; + for C := 0 to Czesci[0].High do begin + Czesci[0].Czesc[C].Start := Czesci[0].Czesc[C].Start * 2; + Czesci[0].Czesc[C].StartNote := Czesci[0].Czesc[C].StartNote * 2; + Czesci[0].Czesc[C].Koniec := Czesci[0].Czesc[C].Koniec * 2; + for N := 0 to Czesci[0].Czesc[C].HighNut do begin + Czesci[0].Czesc[C].Nuta[N].Start := Czesci[0].Czesc[C].Nuta[N].Start * 2; + Czesci[0].Czesc[C].Nuta[N].Dlugosc := Czesci[0].Czesc[C].Nuta[N].Dlugosc * 2; + end; // N + end; // C +end; + +procedure TScreenEditSub.LyricsCapitalize; +var + C: integer; + N: integer; // temporary + S: string; +begin + // temporary +{ for C := 0 to Czesci[0].High do + for N := 0 to Czesci[0].Czesc[C].HighNut do + Czesci[0].Czesc[C].Nuta[N].Tekst := AnsiLowerCase(Czesci[0].Czesc[C].Nuta[N].Tekst);} + + for C := 0 to Czesci[0].High do begin + S := AnsiUpperCase(Copy(Czesci[0].Czesc[C].Nuta[0].Tekst, 1, 1)); + S := S + Copy(Czesci[0].Czesc[C].Nuta[0].Tekst, 2, Length(Czesci[0].Czesc[C].Nuta[0].Tekst)-1); + Czesci[0].Czesc[C].Nuta[0].Tekst := S; + end; // C +end; + +procedure TScreenEditSub.LyricsCorrectSpaces; +var + C: integer; + N: integer; +begin + for C := 0 to Czesci[0].High do begin + // correct starting spaces in the first word + while Copy(Czesci[0].Czesc[C].Nuta[0].Tekst, 1, 1) = ' ' do + Czesci[0].Czesc[C].Nuta[0].Tekst := Copy(Czesci[0].Czesc[C].Nuta[0].Tekst, 2, 100); + + // move spaces on the start to the end of the previous note + for N := 1 to Czesci[0].Czesc[C].HighNut do begin + while (Copy(Czesci[0].Czesc[C].Nuta[N].Tekst, 1, 1) = ' ') do begin + Czesci[0].Czesc[C].Nuta[N].Tekst := Copy(Czesci[0].Czesc[C].Nuta[N].Tekst, 2, 100); + Czesci[0].Czesc[C].Nuta[N-1].Tekst := Czesci[0].Czesc[C].Nuta[N-1].Tekst + ' '; + end; + end; // N + + // correct '-' to '- ' + for N := 0 to Czesci[0].Czesc[C].HighNut do begin + if Czesci[0].Czesc[C].Nuta[N].Tekst = '-' then + Czesci[0].Czesc[C].Nuta[N].Tekst := '- '; + end; // N + + // add space to the previous note when the current word is '- ' + for N := 1 to Czesci[0].Czesc[C].HighNut do begin + if Czesci[0].Czesc[C].Nuta[N].Tekst = '- ' then + Czesci[0].Czesc[C].Nuta[N-1].Tekst := Czesci[0].Czesc[C].Nuta[N-1].Tekst + ' '; + end; // N + + // correct too many spaces at the end of note + for N := 0 to Czesci[0].Czesc[C].HighNut do begin + while Copy(Czesci[0].Czesc[C].Nuta[N].Tekst, Length(Czesci[0].Czesc[C].Nuta[N].Tekst)-1, 2) = ' ' do + Czesci[0].Czesc[C].Nuta[N].Tekst := Copy(Czesci[0].Czesc[C].Nuta[N].Tekst, 1, Length(Czesci[0].Czesc[C].Nuta[N].Tekst)-1); + end; // N + + // and correct if there is no space at the end of sentence + N := Czesci[0].Czesc[C].HighNut; + if Copy(Czesci[0].Czesc[C].Nuta[N].Tekst, Length(Czesci[0].Czesc[C].Nuta[N].Tekst), 1) <> ' ' then + Czesci[0].Czesc[C].Nuta[N].Tekst := Czesci[0].Czesc[C].Nuta[N].Tekst + ' '; + + end; // C +end; + +procedure TScreenEditSub.FixTimings; +var + C: integer; + S: integer; + Min: integer; + Max: integer; +begin + for C := 1 to Czesci[0].High do begin + with Czesci[0].Czesc[C-1] do begin + Min := Nuta[HighNut].Start + Nuta[HighNut].Dlugosc; + Max := Czesci[0].Czesc[C].StartNote; + case (Max - Min) of + 0: S := Max; + 1: S := Max; + 2: S := Max - 1; + 3..3: S := Max - 2; + 4..10000: S := Min + 2; // poczatek + 2 + end; // case + + Czesci[0].Czesc[C].Start := S; + end; // with + end; // for +end; + +procedure TScreenEditSub.DivideSentence; +var + C: integer; + CStart: integer; + CNew: integer; + CLen: integer; + N: integer; + NStart: integer; + NHigh: integer; + NNewL: integer; +begin + // increase sentence length by 1 + CLen := Length(Czesci[0].Czesc); + SetLength(Czesci[0].Czesc, CLen + 1); + Inc(Czesci[0].Ilosc); + Inc(Czesci[0].High); + + // move needed sentences to one forward. newly has the copy of divided sentence + CStart := Czesci[0].Akt; + for C := CLen-1 downto CStart do + Czesci[0].Czesc[C+1] := Czesci[0].Czesc[C]; + + // clear and set new sentence + CNew := CStart + 1; + NStart := AktNuta; + Czesci[0].Czesc[CNew].Start := Czesci[0].Czesc[CStart].Nuta[NStart].Start; + Czesci[0].Czesc[CNew].StartNote := Czesci[0].Czesc[CStart].Nuta[NStart].Start; + Czesci[0].Czesc[CNew].Lyric := ''; + Czesci[0].Czesc[CNew].LyricWidth := 0; + Czesci[0].Czesc[CNew].Koniec := 0; + Czesci[0].Czesc[CNew].BaseNote := 0; // 0.5.0: we modify it later in this procedure + Czesci[0].Czesc[CNew].IlNut := 0; + Czesci[0].Czesc[CNew].HighNut := -1; + SetLength(Czesci[0].Czesc[CNew].Nuta, 0); + + // move right notes to new sentences + NHigh := Czesci[0].Czesc[CStart].HighNut; + for N := NStart to NHigh do begin + NNewL := Czesci[0].Czesc[CNew].IlNut; + SetLength(Czesci[0].Czesc[CNew].Nuta, NNewL + 1); + Czesci[0].Czesc[CNew].Nuta[NNewL] := Czesci[0].Czesc[CStart].Nuta[N]; + + // increase sentence counters + Inc(Czesci[0].Czesc[CNew].IlNut); + Inc(Czesci[0].Czesc[CNew].HighNut); + Czesci[0].Czesc[CNew].Koniec := Czesci[0].Czesc[CNew].Nuta[NNewL].Start + + Czesci[0].Czesc[CNew].Nuta[NNewL].Dlugosc; + end; + + // clear old notes and set sentence counters + Czesci[0].Czesc[CStart].HighNut := NStart - 1; + Czesci[0].Czesc[CStart].IlNut := Czesci[0].Czesc[CStart].HighNut + 1; + Czesci[0].Czesc[CStart].Koniec := Czesci[0].Czesc[CStart].Nuta[NStart-1].Start + + Czesci[0].Czesc[CStart].Nuta[NStart-1].Dlugosc; + SetLength(Czesci[0].Czesc[CStart].Nuta, Czesci[0].Czesc[CStart].IlNut); + + // 0.5.0: modify BaseNote + Czesci[0].Czesc[CNew].BaseNote := 120; + for N := 0 to Czesci[0].Czesc[CNew].IlNut do + if Czesci[0].Czesc[CNew].Nuta[N].Ton < Czesci[0].Czesc[CNew].BaseNote then + Czesci[0].Czesc[CNew].BaseNote := Czesci[0].Czesc[CNew].Nuta[N].Ton; + + Czesci[0].Akt := Czesci[0].Akt + 1; + AktNuta := 0; + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + Lyric.AddCzesc(Czesci[0].Akt); + +end; + +procedure TScreenEditSub.JoinSentence; +var + C: integer; + N: integer; + NStart: integer; + NDst: integer; +begin + C := Czesci[0].Akt; + + // set new sentence + NStart := Czesci[0].Czesc[C].IlNut; + Czesci[0].Czesc[C].IlNut := Czesci[0].Czesc[C].IlNut + Czesci[0].Czesc[C+1].IlNut; + Czesci[0].Czesc[C].HighNut := Czesci[0].Czesc[C].HighNut + Czesci[0].Czesc[C+1].IlNut; + SetLength(Czesci[0].Czesc[C].Nuta, Czesci[0].Czesc[C].IlNut); + + // move right notes to new sentences + for N := 0 to Czesci[0].Czesc[C+1].HighNut do begin + NDst := NStart + N; + Czesci[0].Czesc[C].Nuta[NDst] := Czesci[0].Czesc[C+1].Nuta[N]; + end; + + // increase sentence counters + NDst := Czesci[0].Czesc[C].HighNut; + Czesci[0].Czesc[C].Koniec := Czesci[0].Czesc[C].Nuta[NDst].Start + + Czesci[0].Czesc[C].Nuta[NDst].Dlugosc; + + // move needed sentences to one backward. + for C := Czesci[0].Akt + 1 to Czesci[0].High - 1 do + Czesci[0].Czesc[C] := Czesci[0].Czesc[C+1]; + + // increase sentence length by 1 + SetLength(Czesci[0].Czesc, Length(Czesci[0].Czesc) - 1); + Dec(Czesci[0].Ilosc); + Dec(Czesci[0].High); +end; + +procedure TScreenEditSub.DivideNote; +var + C: integer; + N: integer; + NLen: integer; +begin + C := Czesci[0].Akt; + + NLen := Czesci[0].Czesc[C].IlNut + 1; + SetLength(Czesci[0].Czesc[C].Nuta, NLen); + Inc(Czesci[0].Czesc[C].HighNut); + Inc(Czesci[0].Czesc[C].IlNut); + + // we copy all notes including selected one + for N := Czesci[0].Czesc[C].HighNut downto AktNuta+1 do begin + Czesci[0].Czesc[C].Nuta[N] := Czesci[0].Czesc[C].Nuta[N-1]; + end; + + // me slightly modify new note + Czesci[0].Czesc[C].Nuta[AktNuta].Dlugosc := 1; + Inc(Czesci[0].Czesc[C].Nuta[AktNuta+1].Start); + Dec(Czesci[0].Czesc[C].Nuta[AktNuta+1].Dlugosc); + Czesci[0].Czesc[C].Nuta[AktNuta+1].Tekst := '- '; + Czesci[0].Czesc[C].Nuta[AktNuta+1].Color := 0; +end; + +procedure TScreenEditSub.DeleteNote; +var + C: integer; + N: integer; + NLen: integer; +begin + C := Czesci[0].Akt; + + // we copy all notes from the next to the selected one + for N := AktNuta+1 to Czesci[0].Czesc[C].HighNut do begin + Czesci[0].Czesc[C].Nuta[N-1] := Czesci[0].Czesc[C].Nuta[N]; + end; + + NLen := Czesci[0].Czesc[C].IlNut - 1; + SetLength(Czesci[0].Czesc[C].Nuta, NLen); + Dec(Czesci[0].Czesc[C].HighNut); + Dec(Czesci[0].Czesc[C].IlNut); + + + // me slightly modify new note + if AktNuta > Czesci[0].Czesc[C].HighNut then Dec(AktNuta); + Czesci[0].Czesc[C].Nuta[AktNuta].Color := 1; +end; + +procedure TScreenEditSub.TransposeNote(Transpose: integer); +begin + Inc(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton, Transpose); +end; + +procedure TScreenEditSub.ChangeWholeTone(Tone: integer); +var + C: integer; + N: integer; +begin + for C := 0 to Czesci[0].High do begin + Czesci[0].Czesc[C].BaseNote := Czesci[0].Czesc[C].BaseNote + Tone; + for N := 0 to Czesci[0].Czesc[C].HighNut do + Czesci[0].Czesc[C].Nuta[N].Ton := Czesci[0].Czesc[C].Nuta[N].Ton + Tone; + end; +end; + +procedure TScreenEditSub.MoveAllToEnd(Move: integer); +var + C: integer; + N: integer; + NStart: integer; +begin + for C := Czesci[0].Akt to Czesci[0].High do begin + NStart := 0; + if C = Czesci[0].Akt then NStart := AktNuta; + for N := NStart to Czesci[0].Czesc[C].HighNut do begin + Inc(Czesci[0].Czesc[C].Nuta[N].Start, Move); // move note start + + if N = 0 then begin // fix beginning + Inc(Czesci[0].Czesc[C].Start, Move); + Inc(Czesci[0].Czesc[C].StartNote, Move); + end; + + if N = Czesci[0].Czesc[C].HighNut then // fix ending + Inc(Czesci[0].Czesc[C].Koniec, Move); + + end; // for + end; // for +end; + +procedure TScreenEditSub.MoveTextToRight; +var + C: integer; + N: integer; + NHigh: integer; +begin +{ C := Czesci[0].Akt; + + for N := Czesci[0].Czesc[C].HighNut downto 1 do begin + Czesci[0].Czesc[C].Nuta[N].Tekst := Czesci[0].Czesc[C].Nuta[N-1].Tekst; + end; // for + + Czesci[0].Czesc[C].Nuta[0].Tekst := '- ';} + + C := Czesci[0].Akt; + NHigh := Czesci[0].Czesc[C].HighNut; + + // last word + Czesci[0].Czesc[C].Nuta[NHigh].Tekst := Czesci[0].Czesc[C].Nuta[NHigh-1].Tekst + Czesci[0].Czesc[C].Nuta[NHigh].Tekst; + + // other words + for N := NHigh - 1 downto AktNuta + 1 do begin + Czesci[0].Czesc[C].Nuta[N].Tekst := Czesci[0].Czesc[C].Nuta[N-1].Tekst; + end; // for + Czesci[0].Czesc[C].Nuta[AktNuta].Tekst := '- '; +end; + +procedure TScreenEditSub.MarkSrc; +begin + CopySrc := Czesci[0].Akt; +end; + +procedure TScreenEditSub.PasteText; +var + C: integer; + N: integer; +begin + C := Czesci[0].Akt; + + for N := 0 to Czesci[0].Czesc[CopySrc].HighNut do + Czesci[0].Czesc[C].Nuta[N].Tekst := Czesci[0].Czesc[CopySrc].Nuta[N].Tekst; +end; + +procedure TScreenEditSub.CopySentence(Src, Dst: integer); +var + N: integer; + Time1: integer; + Time2: integer; + TD: integer; +begin + Time1 := Czesci[0].Czesc[Src].Nuta[0].Start; + Time2 := Czesci[0].Czesc[Dst].Nuta[0].Start; + TD := Time2-Time1; + + SetLength(Czesci[0].Czesc[Dst].Nuta, Czesci[0].Czesc[Src].IlNut); + Czesci[0].Czesc[Dst].IlNut := Czesci[0].Czesc[Src].IlNut; + Czesci[0].Czesc[Dst].HighNut := Czesci[0].Czesc[Src].HighNut; + for N := 0 to Czesci[0].Czesc[Src].HighNut do begin + Czesci[0].Czesc[Dst].Nuta[N].Tekst := Czesci[0].Czesc[Src].Nuta[N].Tekst; + Czesci[0].Czesc[Dst].Nuta[N].Dlugosc := Czesci[0].Czesc[Src].Nuta[N].Dlugosc; + Czesci[0].Czesc[Dst].Nuta[N].Ton := Czesci[0].Czesc[Src].Nuta[N].Ton; + Czesci[0].Czesc[Dst].Nuta[N].Start := Czesci[0].Czesc[Src].Nuta[N].Start + TD; + end; + N := Czesci[0].Czesc[Src].HighNut; + Czesci[0].Czesc[Dst].Koniec := Czesci[0].Czesc[Dst].Nuta[N].Start + Czesci[0].Czesc[Dst].Nuta[N].Dlugosc; +end; + +procedure TScreenEditSub.CopySentences(Src, Dst, Num: integer); +var + C: integer; +begin + // create place for new sentences + SetLength(Czesci[0].Czesc, Czesci[0].Ilosc + Num - 1); + + // moves sentences next to the destination + for C := Czesci[0].High downto Dst + 1 do begin + Czesci[0].Czesc[C + Num - 1] := Czesci[0].Czesc[C]; + end; + + // prepares new sentences: sets sentence start and create first note + for C := 1 to Num-1 do begin + Czesci[0].Czesc[Dst + C].Start := Czesci[0].Czesc[Dst + C - 1].StartNote + + (Czesci[0].Czesc[Src + C].StartNote - Czesci[0].Czesc[Src + C - 1].StartNote); + SetLength(Czesci[0].Czesc[Dst + C].Nuta, 1); + Czesci[0].Czesc[Dst + C].IlNut := 1; + Czesci[0].Czesc[Dst + C].HighNut := 0; + Czesci[0].Czesc[Dst + C].Nuta[0].Start := Czesci[0].Czesc[Dst + C].Start; + Czesci[0].Czesc[Dst + C].Nuta[0].Dlugosc := 1; + Czesci[0].Czesc[Dst + C].StartNote := Czesci[0].Czesc[Dst + C].Start; + Czesci[0].Czesc[Dst + C].Koniec := Czesci[0].Czesc[Dst + C].Start + 1; + end; + + // increase counters + Czesci[0].Ilosc := Czesci[0].Ilosc + Num - 1; + Czesci[0].High := Czesci[0].High + Num - 1; + + for C := 0 to Num-1 do + CopySentence(Src + C, Dst + C); +end; + + +constructor TScreenEditSub.Create(Back: String); +begin + inherited Create(Back); + SetLength(Player, 1); + + // linijka + AddStatic(20, 10, 80, 30, 0, 0, 0, Skin.GetTextureFileName('ButtonF'), 'JPG', 'Font Black'); + AddText(40, 17, 1, 6, 1, 1, 1, 'Line'); + TextSentence := AddText(120, 14, 1, 8, 0, 0, 0, '0 / 0'); + + // nuta + AddStatic(220, 10, 80, 30, 0, 0, 0, Skin.GetTextureFileName('ButtonF'), 'JPG', 'Font Black'); + AddText(242, 17, 1, 6, 1, 1, 1, 'Note'); + TextNote := AddText(320, 14, 1, 8, 0, 0, 0, '0 / 0'); + + // file info + AddStatic(150, 50, 500, 150, 0, 0, 0, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); + AddStatic(151, 52, 498, 146, 1, 1, 1, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); + AddText(180, 65, 0, 8, 0, 0, 0, 'Title:'); + AddText(180, 90, 0, 8, 0, 0, 0, 'Artist:'); + AddText(180, 115, 0, 8, 0, 0, 0, 'Mp3:'); + AddText(180, 140, 0, 8, 0, 0, 0, 'BPM:'); + AddText(180, 165, 0, 8, 0, 0, 0, 'GAP:'); + + TextTitle := AddText(250, 65, 0, 8, 0, 0, 0, 'a'); + TextArtist := AddText(250, 90, 0, 8, 0, 0, 0, 'b'); + TextMp3 := AddText(250, 115, 0, 8, 0, 0, 0, 'c'); + TextBPM := AddText(250, 140, 0, 8, 0, 0, 0, 'd'); + TextGAP := AddText(250, 165, 0, 8, 0, 0, 0, 'e'); + +{ AddInteraction(2, TextTitle); + AddInteraction(2, TextArtist); + AddInteraction(2, TextMp3); + AddInteraction(2, TextBPM); + AddInteraction(2, TextGAP);} + + // note info + AddText(20, 190, 0, 8, 0, 0, 0, 'Start:'); + AddText(20, 215, 0, 8, 0, 0, 0, 'Duration:'); + AddText(20, 240, 0, 8, 0, 0, 0, 'Tone:'); + AddText(20, 265, 0, 8, 0, 0, 0, 'Text:'); + + TextNStart := AddText(120, 190, 0, 8, 0, 0, 0, 'a'); + TextNDlugosc := AddText(120, 215, 0, 8, 0, 0, 0, 'b'); + TextNTon := AddText(120, 240, 0, 8, 0, 0, 0, 'c'); + TextNText := AddText(120, 265, 0, 8, 0, 0, 0, 'd'); + + // debug + TextDebug := AddText(30, 550, 0, 8, 0, 0, 0, ''); + +end; + +procedure TScreenEditSub.onShow; +begin + Log.LogStatus('Initializing', 'TEditScreen.onShow'); + + MidiOut := TMidiOutput.Create(nil); + if Ini.Debug = 1 then + MidiOut.ProductName := 'Microsoft GS Wavetable SW Synth'; // for my kxproject without midi table + MidiOut.Open; + + + + CzyscNuty; + if WczytajCzesci(Path + FileName) = false then +// if WczytajCzesci(SongPath + 'Zapis.txt') = false then + Text[TextTitle].Text := 'Error loading file' + else begin + Text[TextTitle].Text := AktSong.Title; + Text[TextArtist].Text := AktSong.Artist; + Text[TextMp3].Text := AktSong.Mp3; + + Czesci[0].Akt := 0; + AktNuta := 0; + Czesci[0].Czesc[0].Nuta[0].Color := 1; + + Music.Open(Path + AktSong.Mp3); + + Lyric.Clear; + Lyric.X := 400; + Lyric.Y := 500; + Lyric.Align := 1; + Lyric.Size := 14; + Lyric.ColR := 0; + Lyric.ColG := 0; + Lyric.ColB := 0; + Lyric.ColSR := Skin_FontHighlightR; + Lyric.ColSG := Skin_FontHighlightG; + Lyric.ColSB := Skin_FontHighlightB; + Lyric.Style := 0; + Lyric.AddCzesc(0); + Lyric.Selected := 0; + + NotesH := 7; + NotesW := 4; + + end; + +// Interaction := 0; + TextEditMode := false; +end; + +function TScreenEditSub.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + Pet: integer; + AktBeat: integer; +begin + glClearColor(1,1,1,1); + + // midi music + if PlaySentenceMidi then begin + MidiPos := USTime.GetTime - MidiTime + MidiStart; + + // stop the music + if (MidiPos > MidiStop) then begin + MidiOut.PutShort($81, Czesci[0].Czesc[Czesci[0].Akt].Nuta[MidiLastNote].Ton + 60, 127); + PlaySentenceMidi := false; + end; + + // click + AktBeat := Floor(GetMidBeat(MidiPos - AktSong.GAP / 1000)); + Text[TextDebug].Text := IntToStr(AktBeat); + + if AktBeat <> LastClick then begin + for Pet := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Start = AktBeat) then begin + + LastClick := AktBeat; + if Pet > 0 then + MidiOut.PutShort($81, Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet-1].Ton + 60, 127); + MidiOut.PutShort($91, Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Ton + 60, 127); + MidiLastNote := Pet; + + end; + end; + end; // if PlaySentenceMidi + + // mp3 music + if PlaySentence then begin + // stop the music + if (Music.Position > PlayStopTime) then begin + Music.Stop; + PlaySentence := false; + end; + + // click + if (Click) and (PlaySentence) then begin +// AktBeat := Floor(AktSong.BPM[0].BPM * (Music.Position - AktSong.GAP / 1000) / 60); + AktBeat := Floor(GetMidBeat(Music.Position - AktSong.GAP / 1000)); + Text[TextDebug].Text := IntToStr(AktBeat); + if AktBeat <> LastClick then begin + for Pet := 0 to Czesci[0].Czesc[Czesci[0].Akt].HighNut do + if (Czesci[0].Czesc[Czesci[0].Akt].Nuta[Pet].Start = AktBeat) then begin + Music.PlayClick; + LastClick := AktBeat; + end; + end; + end; // click + end; // if PlaySentence + + + Text[TextSentence].Text := IntToStr(Czesci[0].Akt + 1) + ' / ' + IntToStr(Czesci[0].Ilosc); + Text[TextNote].Text := IntToStr(AktNuta + 1) + ' / ' + IntToStr(Czesci[0].Czesc[Czesci[0].Akt].IlNut); + + // Song info + Text[TextBPM].Text := FloatToStr(AktSong.BPM[0].BPM / 4); + Text[TextGAP].Text := FloatToStr(AktSong.GAP); + + // Note info + Text[TextNStart].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + Text[TextNDlugosc].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + Text[TextNTon].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton); + Text[TextNText].Text := Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst; + + // Text Edit Mode + if TextEditMode then + Text[TextNText].Text := Text[TextNText].Text + '|'; + + // draw static menu + inherited Draw; + + // draw notes + SingDrawNoteLines(20, 300, 780, 15); + SingDrawBeatDelimeters(40, 300, 760, 0); + EditDrawCzesc(40, 405, 760, 0, 15); + + // draw text + Lyric.Draw; + +end; + +procedure TScreenEditSub.onHide; +begin + MidiOut.Close; + MidiOut.Free; +end; + +end. diff --git a/Game/Code/Screens/UScreenLevel.dcu b/Game/Code/Screens/UScreenLevel.dcu new file mode 100644 index 00000000..95cb3267 Binary files /dev/null and b/Game/Code/Screens/UScreenLevel.dcu differ diff --git a/Game/Code/Screens/UScreenLevel.pas b/Game/Code/Screens/UScreenLevel.pas new file mode 100644 index 00000000..28aa40ea --- /dev/null +++ b/Game/Code/Screens/UScreenLevel.pas @@ -0,0 +1,101 @@ +unit UScreenLevel; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenLevel = class(TMenu) + public + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic, UMain, UIni, UTexture; + +function TScreenLevel.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Music.PlayBack; + FadeTo(@ScreenName); + end; + + SDLK_RETURN: + begin + Ini.Difficulty := Interaction; + Ini.SaveLevel; + Music.PlayStart; + //Set Standard Mode + ScreenSong.Mode := 0; + FadeTo(@ScreenSong); + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenLevel.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.Level.Background.Tex); + + AddButton(Theme.Level.ButtonEasy); + AddButton(Theme.Level.ButtonMedium); + AddButton(Theme.Level.ButtonHard); + + for I := 0 to High(Theme.Level.Static) do + AddStatic(Theme.Level.Static[I]); + + for I := 0 to High(Theme.Level.Text) do + AddText(Theme.Level.Text[I]); + + Interaction := 0; +end; + +procedure TScreenLevel.onShow; +begin + Interaction := Ini.Difficulty; + +// LCD.WriteText(1, ' Choose mode: '); +// UpdateLCD; +end; + +procedure TScreenLevel.SetAnimationProgress(Progress: real); +begin + Button[0].Texture.ScaleW := Progress; + Button[1].Texture.ScaleW := Progress; + Button[2].Texture.ScaleW := Progress; +end; + +end. diff --git a/Game/Code/Screens/UScreenLoading.dcu b/Game/Code/Screens/UScreenLoading.dcu new file mode 100644 index 00000000..e0eb1cfe Binary files /dev/null and b/Game/Code/Screens/UScreenLoading.dcu differ diff --git a/Game/Code/Screens/UScreenLoading.pas b/Game/Code/Screens/UScreenLoading.pas new file mode 100644 index 00000000..05b308ac --- /dev/null +++ b/Game/Code/Screens/UScreenLoading.pas @@ -0,0 +1,48 @@ +unit UScreenLoading; + +interface + +uses + UMenu, SDL, SysUtils, UThemes; + +type + TScreenLoading = class(TMenu) + public + Fadeout: boolean; + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + end; + +implementation + +uses UGraphic, UTime; + +function TScreenLoading.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; +end; + +constructor TScreenLoading.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.Loading.Background.Tex); + + for I := 0 to High(Theme.Loading.Static) do + AddStatic(Theme.Loading.Static[I]); + + for I := 0 to High(Theme.Loading.Text) do + AddText(Theme.Loading.Text[I]); + + Fadeout := false; +end; + +procedure TScreenLoading.onShow; +begin +// nothing +end; + +end. diff --git a/Game/Code/Screens/UScreenMain.dcu b/Game/Code/Screens/UScreenMain.dcu new file mode 100644 index 00000000..22bb4883 Binary files /dev/null and b/Game/Code/Screens/UScreenMain.dcu differ diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas new file mode 100644 index 00000000..dcd7db26 --- /dev/null +++ b/Game/Code/Screens/UScreenMain.pas @@ -0,0 +1,384 @@ +unit UScreenMain; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes, ULCD, ULight; + +type + TScreenMain = class(TMenu) + public + TextDescription: integer; + TextDescriptionLong: integer; + + //Credits Mod + Credits_Visible: Boolean; + Credits_Y: Real; + Credits_Time: Cardinal; + Credits_Alpha: Cardinal; + procedure DrawCredits; + //Credits Mod End + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure InteractNext; override; + procedure InteractPrev; override; + procedure UpdateLCD; + procedure SetAnimationProgress(Progress: real); override; + function Draw: boolean; override; + end; + +const Credits_Text: Array[0..46] of PChar = ( + ':SPACE:', + 'Main Idea: Corvus 5', + 'Thank you very much for this great Game', + ':SPACE:', + 'The Ultrastar Deluxe Team:', + ':SPACE:', + 'commandi00:', + 'Beta Testing', + ':SPACE:', + 'Crazy Joker:', + 'Graphics', + ':SPACE:', + 'DennistheMenace:', + 'Beta Testing and great Support in "the Board"', + ':SPACE:', + 'Moq/Moguhguh:', + 'Programming', + ':SPACE:', + 'Mota:', + 'Programming, Idea of creating this Mod, Team Leading', + ':SPACE:', + 'Sawyer:', + 'Web Master, Programming', + ':SPACE:', + 'Whiteshark:', + 'Programming, Creating Release', + ':SPACE:', + ':SPACE:', + 'Thanks to', + ':SPACE:', + 'Blind Guard', + 'for supporting us and administrate this great Board', + ':SPACE:', + 'The whole Community from www.ultra-star.dl.am', + 'for supporting us, supporting the newbies', + 'and remembering us to continue work', + ':SPACE:', + 'You', + 'for using Ultrastar Deluxe', + ':SPACE:', + ':SPACE:', + 'Visit us at:', + 'http://www.UltraStar-Deluxe.de.vu', + 'http://www.USD.de.vu', + 'http://www.Ultra-Star.dl.am ("The Board" by Blind Guard)', + 'Please write Bug Reports and Feature Requests', + 'to help making this a better Game'); + + +implementation + +uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty; + + +function TScreenMain.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var +I: Integer; +SDL_ModState: Word; +begin + Result := true; + + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); + + //Deactivate Credits when Key is pressed + if Credits_Visible then + begin + Credits_Visible := False; + exit; + end; + + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Result := False; + end; + + SDLK_C: + begin + if (SDL_ModState = KMOD_LALT) then + begin + Credits_Y := 600; + Credits_Alpha := 0; + Credits_Visible := True; + end; + end; + SDLK_M: + begin + if (SDL_ModState = KMOD_LALT) then + begin + //Create Teams: + PartySession.Teams.NumTeams := 3; + //Team 1 + PartySession.Teams.Teaminfo[0].Name := 'Team 1'; + PartySession.Teams.Teaminfo[0].Score:= 0; + PartySession.Teams.Teaminfo[0].Joker := 3; + PartySession.Teams.Teaminfo[0].CurPlayer := 0; + PartySession.Teams.Teaminfo[0].NumPlayers := 2; + PartySession.Teams.Teaminfo[0].Playerinfo[0].Name := 'Player 1'; + PartySession.Teams.Teaminfo[0].Playerinfo[0].TimesPlayed := 0; + PartySession.Teams.Teaminfo[0].Playerinfo[1].Name := 'Player 2'; + PartySession.Teams.Teaminfo[0].Playerinfo[1].TimesPlayed := 0; + + //Team 2 + PartySession.Teams.Teaminfo[1].Name := 'Team 2'; + PartySession.Teams.Teaminfo[1].Score:= 0; + PartySession.Teams.Teaminfo[1].Joker := 3; + PartySession.Teams.Teaminfo[1].CurPlayer := 0; + PartySession.Teams.Teaminfo[1].NumPlayers := 2; + PartySession.Teams.Teaminfo[1].Playerinfo[0].Name := 'Player 3'; + PartySession.Teams.Teaminfo[1].Playerinfo[0].TimesPlayed := 0; + PartySession.Teams.Teaminfo[1].Playerinfo[1].Name := 'Player 4'; + PartySession.Teams.Teaminfo[1].Playerinfo[1].TimesPlayed := 0; + + //Team 3 + PartySession.Teams.Teaminfo[2].Name := 'Team 3'; + PartySession.Teams.Teaminfo[2].Score:= 0; + PartySession.Teams.Teaminfo[2].Joker := 3; + PartySession.Teams.Teaminfo[2].CurPlayer := 0; + PartySession.Teams.Teaminfo[2].NumPlayers := 2; + PartySession.Teams.Teaminfo[2].Playerinfo[0].Name := 'Player 5'; + PartySession.Teams.Teaminfo[2].Playerinfo[0].TimesPlayed := 0; + PartySession.Teams.Teaminfo[2].Playerinfo[1].Name := 'Player 6'; + PartySession.Teams.Teaminfo[2].Playerinfo[1].TimesPlayed := 0; + + //Rounds: + SetLength (PartySession.Rounds, 3); + PartySession.Rounds[0].Plugin := 1; + PartySession.Rounds[0].Winner := 0; + PartySession.Rounds[1].Plugin := 0; + PartySession.Rounds[1].Winner := 0; + PartySession.Rounds[2].Plugin := 0; + PartySession.Rounds[2].Winner := 0; + + //Start Party + PartySession.StartNewParty; + //Change Screen + Music.PlayStart; + FadeTo(@ScreenPartyNewRound); + + end + else + begin + Music.PlayStart; + FadeTo(@ScreenPartyOptions); + end; + + end; + + SDLK_RETURN: + begin + if (Interaction = 0) and (Length(Songs.Song) >= 1) then begin + Music.PlayStart; + if (Ini.Players >= 0) and (Ini.Players <= 3) then PlayersPlay := Ini.Players + 1; + if (Ini.Players = 4) then PlayersPlay := 6; + FadeTo(@ScreenName); + end; + if Interaction = 1 then begin + Music.PlayStart; + FadeTo(@ScreenEdit); + end; + if Interaction = 2 then begin + Music.PlayStart; + FadeTo(@ScreenOptions); +// SDL_SetVideoMode(800, 600, 32, SDL_OPENGL);// or SDL_FULLSCREEN); +// LoadTextures; + end; + if Interaction = 3 then begin + Result := false; + end; + end; + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenMain.Create; +var + I: integer; +begin + inherited Create; + +// AddButton(400-200, 320, 400, 60, Skin.GameStart); +// AddButton(400-200, 390, 400, 60, Skin.Editor); +// AddButton(400-200, 460, 400, 60, Skin.Options); +// AddButton(400-200, 530, 400, 60, Skin.Exit); + + AddBackground(Theme.Main.Background.Tex); + + AddButton(Theme.Main.ButtonSolo); + AddButton(Theme.Main.ButtonEditor); + AddButton(Theme.Main.ButtonOptions); + AddButton(Theme.Main.ButtonExit); + + for I := 0 to High(Theme.Main.Static) do + AddStatic(Theme.Main.Static[I]); + + for I := 0 to High(Theme.Main.Text) do + AddText(Theme.Main.Text[I]); + + TextDescription := AddText(Theme.Main.TextDescription); + TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong); + + Interaction := 0; +end; + +procedure TScreenMain.onShow; +begin + LCD.WriteText(1, ' Choose mode: '); + UpdateLCD; +end; + +procedure TScreenMain.InteractNext; +begin + inherited InteractNext; + Text[TextDescription].Text := Theme.Main.Description[Interaction]; + Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; + UpdateLCD; + Light.LightOne(1, 200); +end; + +procedure TScreenMain.InteractPrev; +begin + inherited InteractPrev; + Text[TextDescription].Text := Theme.Main.Description[Interaction]; + Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; + UpdateLCD; + Light.LightOne(0, 200); +end; + +procedure TScreenMain.UpdateLCD; +begin + case Interaction of + 0: LCD.WriteText(2, ' sing '); + 1: LCD.WriteText(2, ' editor '); + 2: LCD.WriteText(2, ' options '); + 3: LCD.WriteText(2, ' exit '); + end +end; + +procedure TScreenMain.SetAnimationProgress(Progress: real); +begin + Static[0].Texture.ScaleW := Progress; + Static[0].Texture.ScaleH := Progress; +end; + +function TScreenMain.Draw: boolean; +begin +Result := True; +if Credits_Visible then + DrawCredits +else + Result := inherited Draw; +end; + +procedure TScreenMain.DrawCredits; +var + T, I: Cardinal; + Y: Real; + Ver: PChar; +begin + T := GetTickCount div 33; + if T <> Credits_Time then + begin + Credits_Time := T; + //Change Position + Credits_Y := Credits_Y - 1; + //Change Alpha + Inc (Credits_Alpha, 3); + end; + + //Draw BackGround + DrawBG; + + + //Draw pulsing Credits Text + //Set Font + SetFontStyle (2); + SetFontItalic(False); + SetFontSize(9); + SetFontPos (460, 570); + glColor4f(1, 0, 0, 0.2 + Abs((Credits_Alpha mod 150)/100 - 0.75)); + glPrint ('Credits! Press any Key to Continue'); + + //Set Font Size for Credits + SetFontSize(12); + //Draw Version + if (Credits_Y>-35) then + begin + Ver := PChar(Language.Translate('US_VERSION')); + glColor4f(1, 0.6, 0.08, 0.8); + SetFontPos (400 - glTextWidth(Ver)/2, Credits_Y); + glprint(Ver); + end; + + //Set Color + Start Pos + glColor4f(0.8, 0.8, 1, 0.8); + Y := Credits_Y + 50; + + //Search upper Position + For I := 0 to high(Credits_Text) do + begin + if (Credits_Text[I]=':SPACE:') then //Spacer + Y := Y + 55 + else + Y := Y + 30; + + if Y > -35 then + break; + end; + + //Draw Text + For T := I+1 to high(Credits_Text) do + begin + if (Credits_Text[T]=':SPACE:') then //Spacer + Y := Y + 55 + else + begin + SetFontPos (400 - glTextWidth(Credits_Text[T])/2, Y); + glprint(Credits_Text[T]); + Y := Y + 30; + end; + + if Y > 600 then + break; + end; + + //If lower Position is outside the Screen-> Show MainMenu + if (Y <= 0) then + Credits_Visible := False; +end; + +end. diff --git a/Game/Code/Screens/UScreenName.dcu b/Game/Code/Screens/UScreenName.dcu new file mode 100644 index 00000000..d14b4296 Binary files /dev/null and b/Game/Code/Screens/UScreenName.dcu differ diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas new file mode 100644 index 00000000..99f5d40a --- /dev/null +++ b/Game/Code/Screens/UScreenName.pas @@ -0,0 +1,114 @@ +unit UScreenName; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenName = class(TMenu) + public + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic, UMain, UIni, UTexture; + +function TScreenName.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + I: integer; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + begin + Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + chr(ScanCode); + end; + + SDLK_BACKSPACE: + begin + Delete(Button[Interaction].Text[0].Text, + Length(Button[Interaction].Text[0].Text), 1); + end; + + SDLK_ESCAPE : + begin + Ini.SaveNames; + Music.PlayBack; + FadeTo(@ScreenMain); + end; + + SDLK_RETURN: + begin + for I := 1 to 6 do + Ini.Name[I-1] := Button[I-1].Text[0].Text; + Ini.SaveNames; + Music.PlayStart; + FadeTo(@ScreenLevel); + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; + end; + end; +end; + +constructor TScreenName.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.Name.Background.Tex); + + for I := 1 to 6 do + AddButton(Theme.Name.ButtonPlayer[I]); + + for I := 0 to High(Theme.Name.Static) do + AddStatic(Theme.Name.Static[I]); + + for I := 0 to High(Theme.Name.Text) do + AddText(Theme.Name.Text[I]); + + Interaction := 0; +end; + +procedure TScreenName.onShow; +var + I: integer; +begin + for I := 1 to 6 do + Button[I-1].Text[0].Text := Ini.Name[I-1]; + + for I := 1 to PlayersPlay do begin + Button[I-1].Visible := true; + Button[I-1].Selectable := true; + end; + + for I := PlayersPlay+1 to 6 do begin + Button[I-1].Visible := false; + Button[I-1].Selectable := false; + end; + +end; + +procedure TScreenName.SetAnimationProgress(Progress: real); +var + I: integer; +begin + for I := 1 to 6 do + Button[I-1].Texture.ScaleW := Progress; +end; + +end. diff --git a/Game/Code/Screens/UScreenOpen.dcu b/Game/Code/Screens/UScreenOpen.dcu new file mode 100644 index 00000000..c59986f9 Binary files /dev/null and b/Game/Code/Screens/UScreenOpen.dcu differ diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas new file mode 100644 index 00000000..723f299f --- /dev/null +++ b/Game/Code/Screens/UScreenOpen.pas @@ -0,0 +1,151 @@ +unit UScreenOpen; + +interface + +uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, UMenuText, + ULyrics, Math, OpenGL12, UThemes; + +type + TScreenOpen = class(TMenu) + private + TextF: array[0..1] of integer; + TextN: integer; + public + Tex_Background: TTexture; + FadeOut: boolean; + Path: string; + BackScreen: pointer; + procedure AddBox(X, Y, W, H: real); + constructor Create(Back: String); override; + procedure onShow; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; +// function Draw: boolean; override; +// procedure Finish; + end; + +implementation +uses UGraphic, UDraw, UMain, USkins; + +function TScreenOpen.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + if (PressedDown) then begin // Key Down + case ScanCode of + ord('a')..ord('z'), ord('A')..ord('Z'), ord('0')..ord('9'), 32, ord('-'), ord('.'), ord(':'), ord('\'): + begin + if Interaction = 0 then begin + Text[TextN].Text := Text[TextN].Text + chr(ScanCode); + FileName := Text[TextN].Text; + end; + end; + end; + + case PressedKey of + 8: // del + begin + if Interaction = 0 then + if Length(Text[TextN].Text) >= 1 then begin + Delete(Text[TextN].Text, Length(Text[TextN].Text), 1); + FileName := Text[TextN].Text; + end; + end; + + SDLK_ESCAPE: + begin + result := false; + end; + + SDLK_RETURN: + begin + if Interaction = 2 then begin + Music.PlayBack; + FadeTo(BackScreen); + end; + end; + + SDLK_LEFT: + begin + InteractPrev; + end; + + SDLK_RIGHT: + begin + InteractNext; + end; + + SDLK_DOWN: + begin + end; + + SDLK_UP: + begin + end; + end; + end; +end; + +procedure TScreenOpen.AddBox(X, Y, W, H: real); +begin + AddStatic(X, Y, W, H, 0, 0, 0, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); + AddStatic(X+2, Y+2, W-4, H-4, 1, 1, 1, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); +end; + +constructor TScreenOpen.Create(Back: String); +begin + inherited Create(Back); + + // linijka +{ AddStatic(20, 10, 80, 30, 0, 0, 0, 'Bar', 'JPG', 'Font Black'); + AddText(35, 17, 1, 6, 1, 1, 1, 'Linijka'); + TextSentence := AddText(120, 14, 1, 8, 0, 0, 0, '0 / 0');} + + // file list +// AddBox(400, 100, 350, 450); + +// TextF[0] := AddText(430, 155, 0, 8, 0, 0, 0, 'a'); +// TextF[1] := AddText(430, 180, 0, 8, 0, 0, 0, 'a'); + + // file name + AddBox(20, 540, 500, 40); + TextN := AddText(50, 548, 0, 8, 0, 0, 0, FileName); + AddInteraction(iText, TextN); + + // buttons + {AddButton(540, 540, 100, 40, Skin.SkinPath + Skin.ButtonF); + AddButtonText(10, 5, 0, 0, 0, 'Cancel'); + + AddButton(670, 540, 100, 40, Skin.SkinPath + Skin.ButtonF); + AddButtonText(30, 5, 0, 0, 0, 'OK');} + // buttons + AddButton(540, 540, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(10, 5, 0, 0, 0, 'Cancel'); + + AddButton(670, 540, 100, 40, Skin.GetTextureFileName('ButtonF')); + AddButtonText(30, 5, 0, 0, 0, 'OK'); + + +end; + +procedure TScreenOpen.onShow; +begin + Interaction := 0; +end; + +(*function TScreenEditSub.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + Pet: integer; + AktBeat: integer; +begin + +end; + +procedure TScreenEditSub.Finish; +begin +// +end;*) + +end. + diff --git a/Game/Code/Screens/UScreenOptions.dcu b/Game/Code/Screens/UScreenOptions.dcu new file mode 100644 index 00000000..e5d17c3b Binary files /dev/null and b/Game/Code/Screens/UScreenOptions.dcu differ diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas new file mode 100644 index 00000000..76ff2adc --- /dev/null +++ b/Game/Code/Screens/UScreenOptions.pas @@ -0,0 +1,221 @@ +unit UScreenOptions; + +interface + +uses + UMenu, SDL, SysUtils, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptions = class(TMenu) + public + TextDescription: integer; + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure InteractNext; override; + procedure InteractPrev; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic; + +function TScreenOptions.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + SDLK_ESCAPE: + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenMain); + end; + SDLK_RETURN: + begin + if SelInteraction = 0 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsGame); + end; + + if SelInteraction = 1 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsGraphics); + end; + + if SelInteraction = 2 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsSound); + end; + + if SelInteraction = 3 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsLyrics); + end; + + if SelInteraction = 4 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsThemes); + end; + + if SelInteraction = 5 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsRecord); + end; + + if SelInteraction = 6 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenMain); + end; + end; + SDLK_LEFT: + begin + {case SelInteraction of + 0: InteractCustom(+2); + 1: InteractCustom(-1); + 2: InteractCustom(-1); + 3: InteractCustom(+2); + 4: InteractCustom(-1); + 5: InteractCustom(-1); + end;} + InteractPrev; + end; + SDLK_RIGHT: + begin + {case SelInteraction of + 0: InteractCustom(+1); + 1: InteractCustom(+1); + 2: InteractCustom(-2); + 3: InteractCustom(+1); + 4: InteractCustom(+1); + 5: InteractCustom(-2); + end;} + InteractNext; + end; + SDLK_UP: + begin + InteractPrev; + {case SelInteraction of + 0: InteractCustom(+3); + 1: InteractCustom(+3); + 2: InteractCustom(+3); + 3: InteractCustom(-3); + 4: InteractCustom(-3); + 5: InteractCustom(-3); + end; } + end; + SDLK_DOWN: + begin + {case SelInteraction of + 0: InteractCustom(+3); + 1: InteractCustom(+3); + 2: InteractCustom(+3); + 3: InteractCustom(-3); + 4: InteractCustom(-3); + 5: InteractCustom(-3); + end; } + InteractNext; + end; + end; + end; +end; + +constructor TScreenOptions.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + // Game +{ AddButton(225, 100 + 0*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); + AddButtonText(11, 10, 'Game');} + + // Graphics +{ AddButton(225, 100 + 1*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); + AddButtonText(11, 10, 'Graphics'); + + // Sound + AddButton(225, 100 + 2*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); + AddButtonText(11, 10, 'Sound'); + + // Lyrics + AddButton(225, 100 + 3*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); + AddButtonText(11, 10, 'Lyrics'); + + // Themes + AddButton(225, 100 + 4*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); + AddButtonText(11, 10, 'Themes'); + + // Exit + AddButton(225, 100 + 6*60, 350, 50, Skin.Exit);} + + AddBackground(Theme.Options.Background.Tex); + + AddButton(Theme.Options.ButtonGame); + AddButtonText(14, 20, Theme.Options.Description[0]); + + AddButton(Theme.Options.ButtonGraphics); + AddButtonText(14, 20, Theme.Options.Description[1]); + + AddButton(Theme.Options.ButtonSound); + AddButtonText(14, 20, Theme.Options.Description[2]); + + AddButton(Theme.Options.ButtonLyrics); + AddButtonText(14, 20, Theme.Options.Description[3]); + + AddButton(Theme.Options.ButtonThemes); + AddButtonText(14, 20, Theme.Options.Description[4]); + + AddButton(Theme.Options.ButtonRecord); + AddButtonText(14, 20, Theme.Options.Description[5]); + + AddButton(Theme.Options.ButtonExit); + AddButtonText(14, 20, Theme.Options.Description[6]); + + for I := 0 to High(Theme.Options.Static) do + AddStatic(Theme.Options.Static[I]); + + for I := 0 to High(Theme.Options.Text) do + AddText(Theme.Options.Text[I]); + + TextDescription := AddText(Theme.Options.TextDescription); + + Interaction := 0; +end; + +procedure TScreenOptions.onShow; +begin +// +end; + +procedure TScreenOptions.InteractNext; +begin + inherited InteractNext; + Text[TextDescription].Text := Theme.Options.Description[Interaction]; +end; + +procedure TScreenOptions.InteractPrev; +begin + inherited InteractPrev; + Text[TextDescription].Text := Theme.Options.Description[Interaction]; +end; + + +procedure TScreenOptions.SetAnimationProgress(Progress: real); +begin + Button[0].Texture.ScaleW := Progress; + Button[1].Texture.ScaleW := Progress; + Button[2].Texture.ScaleW := Progress; + Button[3].Texture.ScaleW := Progress; + Button[4].Texture.ScaleW := Progress; + Button[5].Texture.ScaleW := Progress; +end; + +end. diff --git a/Game/Code/Screens/UScreenOptionsGame.dcu b/Game/Code/Screens/UScreenOptionsGame.dcu new file mode 100644 index 00000000..3fd70913 Binary files /dev/null and b/Game/Code/Screens/UScreenOptionsGame.dcu differ diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas new file mode 100644 index 00000000..6f49bd19 --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -0,0 +1,107 @@ +unit UScreenOptionsGame; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes, USongs; + +type + TScreenOptionsGame = class(TMenu) + public + old_Tabs, old_Sorting: integer; + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure RefreshSongs; + end; + +implementation + +uses UGraphic; + +function TScreenOptionsGame.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Music.PlayBack; + RefreshSongs; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 6 then begin + Music.PlayBack; + RefreshSongs; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + Music.PlayOption; + InteractInc; + end; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + Music.PlayOption; + InteractDec; + end; + end; + end; + end; +end; + +constructor TScreenOptionsGame.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.OptionsGame.Background.Tex); + + for I := 0 to High(Theme.OptionsGame.Static) do + AddStatic(Theme.OptionsGame.Static[I]); + + for I := 0 to High(Theme.OptionsGame.Text) do + AddText(Theme.OptionsGame.Text[I]); + + //Refresh Songs Patch + old_Sorting := Ini.Sorting; + old_Tabs := Ini.Tabs; + + AddSelect(Theme.OptionsGame.SelectPlayers, Ini.Players, IPlayers); + AddSelect(Theme.OptionsGame.SelectDifficulty, Ini.Difficulty, IDifficulty); + AddSelectSlide(Theme.OptionsGame.SelectLanguage, Ini.Language, ILanguage); + AddSelect(Theme.OptionsGame.SelectTabs, Ini.Tabs, ITabs); + AddSelectSlide(Theme.OptionsGame.SelectSorting, Ini.Sorting, ISorting); + AddSelect(Theme.OptionsGame.SelectDebug, Ini.Debug, IDebug); + + + AddButton(Theme.OptionsGame.ButtonExit); + AddButtonText(14, 20, 'Exit'); + +end; + +//Refresh Songs Patch +procedure TScreenOptionsGame.RefreshSongs; +begin +if (ini.Sorting <> old_Sorting) or (ini.Tabs <> old_Tabs) then + ScreenSong.Refresh; +end; + +procedure TScreenOptionsGame.onShow; +begin +// Interaction := 0; +end; + +end. diff --git a/Game/Code/Screens/UScreenOptionsGraphics.dcu b/Game/Code/Screens/UScreenOptionsGraphics.dcu new file mode 100644 index 00000000..3eddc010 Binary files /dev/null and b/Game/Code/Screens/UScreenOptionsGraphics.dcu differ diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas new file mode 100644 index 00000000..1f30f9b5 --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -0,0 +1,101 @@ +unit UScreenOptionsGraphics; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptionsGraphics = class(TMenu) + public + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + end; + +implementation + +uses UGraphic, UMain; + +function TScreenOptionsGraphics.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + SDLK_ESCAPE: + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin +{ if SelInteraction <= 1 then begin + Restart := true; + end;} + if SelInteraction = 6 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + Music.PlayOption; + InteractInc; + end; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + Music.PlayOption; + InteractDec; + end; + end; + end; + end; +end; + +constructor TScreenOptionsGraphics.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.OptionsGraphics.Background.Tex); + + for I := 0 to High(Theme.OptionsGraphics.Static) do + AddStatic(Theme.OptionsGraphics.Static[I]); + + for I := 0 to High(Theme.OptionsGraphics.Text) do + AddText(Theme.OptionsGraphics.Text[I]); + + AddSelectSlide(Theme.OptionsGraphics.SelectSlideResolution, Ini.Resolution, IResolution); + AddSelect(Theme.OptionsGraphics.SelectFullscreen, Ini.Fullscreen, IFullscreen); + AddSelect(Theme.OptionsGraphics.SelectDepth, Ini.Depth, IDepth); + AddSelect(Theme.OptionsGraphics.SelectOscilloscope, Ini.Oscilloscope, IOscilloscope); + AddSelect(Theme.OptionsGraphics.SelectLineBonus, Ini.LineBonus, ILineBonus); + AddSelect(Theme.OptionsGraphics.SelectMovieSize, Ini.MovieSize, IMovieSize); + + + AddButton(Theme.OptionsGraphics.ButtonExit); + AddButtonText(14, 20, 'Exit'); + +end; + +procedure TScreenOptionsGraphics.onShow; +begin + Interaction := 0; +end; + +end. diff --git a/Game/Code/Screens/UScreenOptionsLyrics.dcu b/Game/Code/Screens/UScreenOptionsLyrics.dcu new file mode 100644 index 00000000..1fcfca9d Binary files /dev/null and b/Game/Code/Screens/UScreenOptionsLyrics.dcu differ diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas new file mode 100644 index 00000000..21a33998 --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -0,0 +1,91 @@ +unit UScreenOptionsLyrics; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptionsLyrics = class(TMenu) + public + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + end; + +implementation + +uses UGraphic; + +function TScreenOptionsLyrics.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 3 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 2) then begin + Music.PlayOption; + InteractInc; + end; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 2) then begin + Music.PlayOption; + InteractDec; + end; + end; + end; + end; +end; + +constructor TScreenOptionsLyrics.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.OptionsLyrics.Background.Tex); + + for I := 0 to High(Theme.OptionsLyrics.Static) do + AddStatic(Theme.OptionsLyrics.Static[I]); + + for I := 0 to High(Theme.OptionsLyrics.Text) do + AddText(Theme.OptionsLyrics.Text[I]); + + AddSelect(Theme.OptionsLyrics.SelectLyricsFont, Ini.LyricsFont, ILyricsFont); + AddSelect(Theme.OptionsLyrics.SelectLyricsEffect, Ini.LyricsEffect, ILyricsEffect); + AddSelect(Theme.OptionsLyrics.SelectSolmization, Ini.Solmization, ISolmization); + + + AddButton(Theme.OptionsLyrics.ButtonExit); + AddButtonText(14, 20, 'Exit'); + +end; + +procedure TScreenOptionsLyrics.onShow; +begin + Interaction := 0; +end; + +end. diff --git a/Game/Code/Screens/UScreenOptionsRecord.dcu b/Game/Code/Screens/UScreenOptionsRecord.dcu new file mode 100644 index 00000000..36a04d50 Binary files /dev/null and b/Game/Code/Screens/UScreenOptionsRecord.dcu differ diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas new file mode 100644 index 00000000..c27ec02a --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -0,0 +1,136 @@ +unit UScreenOptionsRecord; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptionsRecord = class(TMenu) + private + SelectSlideInput: integer; + SelectSlideChannelL: integer; + SelectSlideChannelR: integer; + public + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure UpdateCard; + end; + +implementation + +uses SysUtils, UGraphic, URecord, ULog; + +function TScreenOptionsRecord.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE, SDLK_BACKSPACE: + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 4 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 3) then begin + Music.PlayOption; + InteractInc; + end; + if SelInteraction = 0 then UpdateCard; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 3) then begin + Music.PlayOption; + InteractDec; + end; + if SelInteraction = 0 then UpdateCard; + end; + end; + end; +end; + +constructor TScreenOptionsRecord.Create; +var + I: integer; + SC: integer; + SCI: integer; +begin + AddBackground(Theme.OptionsRecord.Background.Tex); + for I := 0 to High(Theme.OptionsRecord.Static) do + AddStatic(Theme.OptionsRecord.Static[I]); + + for I := 0 to High(Theme.OptionsRecord.Text) do + AddText(Theme.OptionsRecord.Text[I]); + +// SetLength(ICard, 0); +// ICard[0] := 'karta'; + +// SetLength(IInput, 0); +// IInput[0] := 'wejscie'; + +// if Length(Recording.SoundCard) > 0 then begin + SetLength(ICard, Length(Recording.SoundCard)); + for SC := 0 to High(Recording.SoundCard) do + ICard[SC] := Recording.SoundCard[SC].Description; +// end; + +// if Length(Recording.SoundCard[Ini.Card].Input) > 0 then begin + SetLength(IInput, Length(Recording.SoundCard[Ini.Card].Input)); + for SCI := 0 to High(Recording.SoundCard[Ini.Card].Input) do + IInput[SCI] := Recording.SoundCard[Ini.Card].Input[SCI].Name; +// end; + + + AddSelectSlide(Theme.OptionsRecord.SelectSlideCard, Ini.Card, ICard); + SelectSlideInput := AddSelectSlide(Theme.OptionsRecord.SelectSlideInput, Ini.CardList[0].Input, IInput); + SelectSlideChannelL := AddSelectSlide(Theme.OptionsRecord.SelectSlideChannelL, Ini.CardList[0].ChannelL, IChannel); + SelectSlideChannelR := AddSelectSlide(Theme.OptionsRecord.SelectSlideChannelR, Ini.CardList[0].ChannelR, IChannel); + + AddButton(Theme.OptionsRecord.ButtonExit); + AddButtonText(14, 20, 'Exit'); + + Interaction := 0; +end; + +procedure TScreenOptionsRecord.onShow; +begin + Interaction := 0; +end; + +procedure TScreenOptionsRecord.UpdateCard; +var + SC: integer; + SCI: integer; +begin + SC := Ini.Card; +// if SC = 1 then beep; + + SetLength(IInput, Length(Recording.SoundCard[SC].Input)); + for SCI := 0 to High(Recording.SoundCard[SC].Input) do begin + IInput[SCI] := Recording.SoundCard[SC].Input[SCI].Name; +// Log.LogError(IInput[SCI]); + end; + + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideInput, SelectSlideInput, IInput, Ini.CardList[SC].Input); + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideChannelL, SelectSlideChannelL, IChannel, Ini.CardList[SC].ChannelL); + UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideChannelR, SelectSlideChannelR, IChannel, Ini.CardList[SC].ChannelR); +end; + +end. \ No newline at end of file diff --git a/Game/Code/Screens/UScreenOptionsSound.dcu b/Game/Code/Screens/UScreenOptionsSound.dcu new file mode 100644 index 00000000..26c07fe1 Binary files /dev/null and b/Game/Code/Screens/UScreenOptionsSound.dcu differ diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas new file mode 100644 index 00000000..a99ae86d --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -0,0 +1,93 @@ +unit UScreenOptionsSound; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptionsSound = class(TMenu) + public + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + end; + +implementation + +uses UGraphic; + +function TScreenOptionsSound.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 4 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 3) then begin + Music.PlayOption; + InteractInc; + end; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 3) then begin + Music.PlayOption; + InteractDec; + end; + end; + end; + end; +end; + +constructor TScreenOptionsSound.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.OptionsSound.Background.Tex); + + for I := 0 to High(Theme.OptionsSound.Static) do + AddStatic(Theme.OptionsSound.Static[I]); + + for I := 0 to High(Theme.OptionsSound.Text) do + AddText(Theme.OptionsSound.Text[I]); + + AddSelect(Theme.OptionsSound.SelectMicBoost, Ini.MicBoost, IMicBoost); + AddSelect(Theme.OptionsSound.SelectClickAssist, Ini.ClickAssist, IClickAssist); + AddSelect(Theme.OptionsSound.SelectBeatClick, Ini.BeatClick, IBeatClick); + AddSelect(Theme.OptionsSound.SelectThreshold, Ini.Threshold, IThreshold); + //AddSelect(Theme.OptionsSound.SelectTwoPlayerMode, Ini.TwoPlayerMode, ITwoPlayerMode); + + AddButton(Theme.OptionsSound.ButtonExit); + AddButtonText(14, 20, 'Exit'); + + Interaction := 0; +end; + +procedure TScreenOptionsSound.onShow; +begin + Interaction := 0; +end; + +end. diff --git a/Game/Code/Screens/UScreenOptionsThemes.dcu b/Game/Code/Screens/UScreenOptionsThemes.dcu new file mode 100644 index 00000000..98bec8a2 Binary files /dev/null and b/Game/Code/Screens/UScreenOptionsThemes.dcu differ diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas new file mode 100644 index 00000000..b7d18fa5 --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -0,0 +1,118 @@ +unit UScreenOptionsThemes; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptionsThemes = class(TMenu) + public + SkinSelect: Integer; + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure InteractInc; override; + procedure InteractDec; override; + end; + +implementation + +uses UGraphic, USkins; + +function TScreenOptionsThemes.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 3 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 2) then begin + Music.PlayOption; + InteractInc; + end; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 2) then begin + Music.PlayOption; + InteractDec; + end; + end; + end; + end; +end; + +procedure TScreenOptionsThemes.InteractInc; +begin + inherited InteractInc; + //Update Skins + if (SelInteraction = 0) then + begin + Skin.OnThemeChange; + UpdateSelectSlideOptions (Theme.OptionsThemes.SelectSkin, SkinSelect, ISkin, Ini.SkinNo); + end; +end; + +procedure TScreenOptionsThemes.InteractDec; +begin + inherited InteractDec; + //Update Skins + if (SelInteraction = 0) then + begin + Skin.OnThemeChange; + UpdateSelectSlideOptions (Theme.OptionsThemes.SelectSkin, SkinSelect, ISkin, Ini.SkinNo); + end; +end; + +constructor TScreenOptionsThemes.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.OptionsThemes.Background.Tex); + + for I := 0 to High(Theme.OptionsThemes.Static) do + AddStatic(Theme.OptionsThemes.Static[I]); + + for I := 0 to High(Theme.OptionsThemes.Text) do + AddText(Theme.OptionsThemes.Text[I]); + + AddSelectSlide(Theme.OptionsThemes.SelectTheme, Ini.Theme, ITheme); + //SelectsS[High(SelectsS)].SetSelectOpt(Ini.Theme); + + SkinSelect := AddSelectSlide(Theme.OptionsThemes.SelectSkin, Ini.SkinNo, ISkin); + + //AddSelectSlideOption('SingStar'); + AddSelectSlide(Theme.OptionsThemes.SelectColor, Ini.Color, IColor); + + AddButton(Theme.OptionsThemes.ButtonExit); + AddButtonText(14, 20, 'Exit'); +end; + +procedure TScreenOptionsThemes.onShow; +begin + Interaction := 0; +end; + +end. diff --git a/Game/Code/Screens/UScreenPartyNewRound.dcu b/Game/Code/Screens/UScreenPartyNewRound.dcu new file mode 100644 index 00000000..24b6953e Binary files /dev/null and b/Game/Code/Screens/UScreenPartyNewRound.dcu differ diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas new file mode 100644 index 00000000..1e9be1f5 --- /dev/null +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -0,0 +1,397 @@ +unit UScreenPartyNewRound; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenPartyNewRound = class(TMenu) + public + //Texts: + TextRound1: Cardinal; + TextRound2: Cardinal; + TextRound3: Cardinal; + TextRound4: Cardinal; + TextRound5: Cardinal; + TextRound6: Cardinal; + TextRound7: Cardinal; + + TextWinner1: Cardinal; + TextWinner2: Cardinal; + TextWinner3: Cardinal; + TextWinner4: Cardinal; + TextWinner5: Cardinal; + TextWinner6: Cardinal; + TextWinner7: Cardinal; + + TextNextRound: Cardinal; + TextNextRoundNo: Cardinal; + TextNextPlayer1: Cardinal; + TextNextPlayer2: Cardinal; + TextNextPlayer3: Cardinal; + //Statics + StaticRound1: Cardinal; + StaticRound2: Cardinal; + StaticRound3: Cardinal; + StaticRound4: Cardinal; + StaticRound5: Cardinal; + StaticRound6: Cardinal; + StaticRound7: Cardinal; + + //Scores + TextScoreTeam1: Cardinal; + TextScoreTeam2: Cardinal; + TextScoreTeam3: Cardinal; + TextNameTeam1: Cardinal; + TextNameTeam2: Cardinal; + TextNameTeam3: Cardinal; + + StaticTeam1: Cardinal; + StaticTeam2: Cardinal; + StaticTeam3: Cardinal; + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic, UMain, UIni, UTexture, UParty, UDLLManager, ULanguage, ULog; + +function TScreenPartyNewRound.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Music.PlayBack; + FadeTo(@ScreenMain); + end; + + SDLK_RETURN: + begin + Music.PlayStart; + if DLLMan.Selected.LoadSong then + begin + //Select PartyMode ScreenSong + ScreenSong.Mode := 1; + FadeTo(@ScreenSong); + end + else + begin + FadeTo(@ScreenSingModi); + end; + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenPartyNewRound.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.PartyNewRound.Background.Tex); + Log.LogError(Theme.PartyNewRound.Background.Tex); + + TextRound1 := AddText (Theme.PartyNewRound.TextRound1); + TextRound2 := AddText (Theme.PartyNewRound.TextRound2); + TextRound3 := AddText (Theme.PartyNewRound.TextRound3); + TextRound4 := AddText (Theme.PartyNewRound.TextRound4); + TextRound5 := AddText (Theme.PartyNewRound.TextRound5); + TextRound6 := AddText (Theme.PartyNewRound.TextRound6); + TextRound7 := AddText (Theme.PartyNewRound.TextRound7); + + TextWinner1 := AddText (Theme.PartyNewRound.TextWinner1); + TextWinner2 := AddText (Theme.PartyNewRound.TextWinner2); + TextWinner3 := AddText (Theme.PartyNewRound.TextWinner3); + TextWinner4 := AddText (Theme.PartyNewRound.TextWinner4); + TextWinner5 := AddText (Theme.PartyNewRound.TextWinner5); + TextWinner6 := AddText (Theme.PartyNewRound.TextWinner6); + TextWinner7 := AddText (Theme.PartyNewRound.TextWinner7); + + TextNextRound := AddText (Theme.PartyNewRound.TextNextRound); + TextNextRoundNo := AddText (Theme.PartyNewRound.TextNextRoundNo); + TextNextPlayer1 := AddText (Theme.PartyNewRound.TextNextPlayer1); + TextNextPlayer2 := AddText (Theme.PartyNewRound.TextNextPlayer2); + TextNextPlayer3 := AddText (Theme.PartyNewRound.TextNextPlayer3); + + StaticRound1 := AddStatic (Theme.PartyNewRound.StaticRound1); + StaticRound2 := AddStatic (Theme.PartyNewRound.StaticRound2); + StaticRound3 := AddStatic (Theme.PartyNewRound.StaticRound3); + StaticRound4 := AddStatic (Theme.PartyNewRound.StaticRound4); + StaticRound5 := AddStatic (Theme.PartyNewRound.StaticRound5); + StaticRound6 := AddStatic (Theme.PartyNewRound.StaticRound6); + StaticRound7 := AddStatic (Theme.PartyNewRound.StaticRound7); + + //Scores + TextScoreTeam1 := AddText (Theme.PartyNewRound.TextScoreTeam1); + TextScoreTeam2 := AddText (Theme.PartyNewRound.TextScoreTeam2); + TextScoreTeam3 := AddText (Theme.PartyNewRound.TextScoreTeam3); + TextNameTeam1 := AddText (Theme.PartyNewRound.TextNameTeam1); + TextNameTeam2 := AddText (Theme.PartyNewRound.TextNameTeam2); + TextNameTeam3 := AddText (Theme.PartyNewRound.TextNameTeam3); + + StaticTeam1 := AddStatic (Theme.PartyNewRound.StaticTeam1); + StaticTeam2 := AddStatic (Theme.PartyNewRound.StaticTeam2); + StaticTeam3 := AddStatic (Theme.PartyNewRound.StaticTeam3); + + AddButton (Theme.PartyNewRound.ButtonNext); + + for I := 0 to High(Theme.PartyNewRound.Static) do + AddStatic(Theme.PartyNewRound.Static[I]); + + for I := 0 to High(Theme.PartyNewRound.Text) do + AddText(Theme.PartyNewRound.Text[I]); + + Interaction := 0; +end; + +procedure TScreenPartyNewRound.onShow; +var + I: Integer; +begin + //If not First Round, End Last Round + if (PartySession.CurRound <> 255) then + PartySession.EndRound; + + PartySession.StartRound; + Log.LogError(InttoStr(Length(DllMan.Plugins))); + + //Set Visibility of Round Infos + I := Length(PartySession.Rounds); + if (I >= 1) then + begin + Static[StaticRound1].Visible := True; + Text[TextRound1].Visible := True; + Text[TextWinner1].Visible := True; + + //Texts: + Text[TextRound1].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[0].Plugin].Name); + Text[TextWinner1].Text := PartySession.GetWinnerString(0); + end + else + begin + Static[StaticRound1].Visible := False; + Text[TextRound1].Visible := False; + Text[TextWinner1].Visible := False; + end; + + if (I >= 2) then + begin + Static[StaticRound2].Visible := True; + Text[TextRound2].Visible := True; + Text[TextWinner2].Visible := True; + + //Texts: + Text[TextRound2].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[1].Plugin].Name); + Text[TextWinner2].Text := PartySession.GetWinnerString(1); + end + else + begin + Static[StaticRound2].Visible := False; + Text[TextRound2].Visible := False; + Text[TextWinner2].Visible := False; + end; + + if (I >= 3) then + begin + Static[StaticRound3].Visible := True; + Text[TextRound3].Visible := True; + Text[TextWinner3].Visible := True; + + //Texts: + Text[TextRound3].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[2].Plugin].Name); + Text[TextWinner3].Text := PartySession.GetWinnerString(2); + end + else + begin + Static[StaticRound3].Visible := False; + Text[TextRound3].Visible := False; + Text[TextWinner3].Visible := False; + end; + + if (I >= 4) then + begin + Static[StaticRound4].Visible := True; + Text[TextRound4].Visible := True; + Text[TextWinner4].Visible := True; + + //Texts: + Text[TextRound4].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[3].Plugin].Name); + Text[TextWinner4].Text := PartySession.GetWinnerString(3); + end + else + begin + Static[StaticRound4].Visible := False; + Text[TextRound4].Visible := False; + Text[TextWinner4].Visible := False; + end; + + if (I >= 5) then + begin + Static[StaticRound5].Visible := True; + Text[TextRound5].Visible := True; + Text[TextWinner5].Visible := True; + + //Texts: + Text[TextRound5].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[4].Plugin].Name); + Text[TextWinner5].Text := PartySession.GetWinnerString(4); + end + else + begin + Static[StaticRound5].Visible := False; + Text[TextRound5].Visible := False; + Text[TextWinner5].Visible := False; + end; + + if (I >= 6) then + begin + Static[StaticRound6].Visible := True; + Text[TextRound6].Visible := True; + Text[TextWinner6].Visible := True; + + //Texts: + Text[TextRound6].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[5].Plugin].Name); + Text[TextWinner6].Text := PartySession.GetWinnerString(5); + end + else + begin + Static[StaticRound6].Visible := False; + Text[TextRound6].Visible := False; + Text[TextWinner6].Visible := False; + end; + + if (I >= 7) then + begin + Static[StaticRound7].Visible := True; + Text[TextRound7].Visible := True; + Text[TextWinner7].Visible := True; + + //Texts: + Text[TextRound7].Text := Language.Translate(DllMan.Plugins[PartySession.Rounds[6].Plugin].Name); + Text[TextWinner7].Text := PartySession.GetWinnerString(6); + end + else + begin + Static[StaticRound7].Visible := False; + Text[TextRound7].Visible := False; + Text[TextWinner7].Visible := False; + end; + + //Display Scores + if (PartySession.Teams.NumTeams >= 1) then + begin + Text[TextScoreTeam1].Text := InttoStr(PartySession.Teams.TeamInfo[0].Score); + Text[TextNameTeam1].Text := String(PartySession.Teams.TeamInfo[0].Name); + + Text[TextScoreTeam1].Visible := True; + Text[TextNameTeam1].Visible := True; + Static[StaticTeam1].Visible := True; + end + else + begin + Text[TextScoreTeam1].Visible := False; + Text[TextNameTeam1].Visible := False; + Static[StaticTeam1].Visible := False; + end; + + if (PartySession.Teams.NumTeams >= 2) then + begin + Text[TextScoreTeam2].Text := InttoStr(PartySession.Teams.TeamInfo[1].Score); + Text[TextNameTeam2].Text := String(PartySession.Teams.TeamInfo[1].Name); + + Text[TextScoreTeam2].Visible := True; + Text[TextNameTeam2].Visible := True; + Static[StaticTeam2].Visible := True; + end + else + begin + Text[TextScoreTeam2].Visible := False; + Text[TextNameTeam2].Visible := False; + Static[StaticTeam2].Visible := False; + end; + + if (PartySession.Teams.NumTeams >= 3) then + begin + Text[TextScoreTeam3].Text := InttoStr(PartySession.Teams.TeamInfo[2].Score); + Text[TextNameTeam3].Text := String(PartySession.Teams.TeamInfo[2].Name); + + Text[TextScoreTeam3].Visible := True; + Text[TextNameTeam3].Visible := True; + Static[StaticTeam3].Visible := True; + end + else + begin + Text[TextScoreTeam3].Visible := False; + Text[TextNameTeam3].Visible := False; + Static[StaticTeam3].Visible := False; + end; + + //nextRound Texts + Text[TextNextRound].Text := Language.Translate(DllMan.Selected.PluginDesc); + Text[TextNextRoundNo].Text := InttoStr(PartySession.CurRound + 1); + if (PartySession.Teams.NumTeams >= 1) then + begin + Text[TextNextPlayer1].Text := PartySession.Teams.Teaminfo[0].Playerinfo[PartySession.Teams.Teaminfo[0].CurPlayer].Name; + Text[TextNextPlayer1].Visible := True; + end + else + Text[TextNextPlayer1].Visible := False; + + if (PartySession.Teams.NumTeams >= 2) then + begin + Text[TextNextPlayer2].Text := PartySession.Teams.Teaminfo[1].Playerinfo[PartySession.Teams.Teaminfo[1].CurPlayer].Name; + Text[TextNextPlayer2].Visible := True; + end + else + Text[TextNextPlayer2].Visible := False; + + if (PartySession.Teams.NumTeams >= 3) then + begin + Text[TextNextPlayer3].Text := PartySession.Teams.Teaminfo[2].Playerinfo[PartySession.Teams.Teaminfo[2].CurPlayer].Name; + Text[TextNextPlayer3].Visible := True; + end + else + Text[TextNextPlayer3].Visible := False; + + Log.LogError('Plugin Selected: ' + InttoStr(PartySession.Rounds[0].Plugin)); + + +// LCD.WriteText(1, ' Choose mode: '); +// UpdateLCD; +end; + +procedure TScreenPartyNewRound.SetAnimationProgress(Progress: real); +begin + {Button[0].Texture.ScaleW := Progress; + Button[1].Texture.ScaleW := Progress; + Button[2].Texture.ScaleW := Progress; } +end; + +end. diff --git a/Game/Code/Screens/UScreenPartyOptions.dcu b/Game/Code/Screens/UScreenPartyOptions.dcu new file mode 100644 index 00000000..8f0bbf3d Binary files /dev/null and b/Game/Code/Screens/UScreenPartyOptions.dcu differ diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas new file mode 100644 index 00000000..148289e8 --- /dev/null +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -0,0 +1,164 @@ +unit UScreenPartyOptions; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenPartyOptions = class(TMenu) + public + SelectLevel: Cardinal; + SelectPlayList: Cardinal; + SelectPlayList2: Cardinal; + SelectRounds: Cardinal; + SelectTeams: Cardinal; + SelectPlayers1: Cardinal; + SelectPlayers2: Cardinal; + SelectPlayers3: Cardinal; + + PlayList: Integer; + PlayList2: Integer; + Rounds: Integer; + NumTeams: Integer; + NumPlayer1, NumPlayer2, NumPlayer3: Integer; + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +var + ILevel: array[0..2] of String; +const + ITeams: array[0..1] of String =('2', '3'); + IPlayers: array[0..3] of String =('1', '2', '3', '4'); + IRounds: array[0..5] of String = ('2', '3', '4', '5', '6', '7'); + +implementation + +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UDLLManager; + +function TScreenPartyOptions.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var I: Integer; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Music.PlayBack; + FadeTo(@ScreenMain); + end; + + SDLK_RETURN: + begin + + //Save Difficulty + Ini.Difficulty := SelectsS[SelectLevel].SelectedOption; + Ini.SaveLevel; + //Save PlayList + //(Todo) + //Save Num Teams: + PartySession.Teams.NumTeams := NumTeams + 2; + PartySession.Teams.Teaminfo[0].NumPlayers := NumPlayer1+1; + PartySession.Teams.Teaminfo[1].NumPlayers := NumPlayer2+1; + PartySession.Teams.Teaminfo[2].NumPlayers := NumPlayer3+1; + //Save Rounds + Random + SetLength (PartySession.Rounds, Rounds + 2); + For I := 0 to high (PartySession.Rounds) do + begin + PartySession.Rounds[I].Plugin := Random (Length(DLLMan.Plugins)); + PartySession.Rounds[I].Winner := 0; + end; + Music.PlayStart; + //Go to Player Screen + FadeTo(@ScreenPartyPlayer); + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; + SDLK_RIGHT: + begin + Music.PlayOption; + InteractInc; + end; + SDLK_LEFT: + begin + Music.PlayOption; + InteractDec; + end; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenPartyOptions.Create; +var + I: integer; +begin + inherited Create; + + //Fill ILevel + ILevel[0] := Language.Translate('SING_EASY'); + ILevel[1] := Language.Translate('SING_MEDIUM'); + ILevel[2] := Language.Translate('SING_HARD'); + + NumTeams := 0; + NumPlayer1 := 0; + NumPlayer2 := 0; + NumPlayer3 := 0; + Rounds := 5; + PlayList := 0; + PlayList2 := 0; + + AddBackground(Theme.PartyOptions.Background.Tex); + + SelectLevel := AddSelectSlide (Theme.PartyOptions.SelectLevel, Ini.Difficulty, ILevel); + SelectPlayList := AddSelectSlide (Theme.PartyOptions.SelectPlayList, PlayList, ITeams); + SelectPlayList2 := AddSelectSlide (Theme.PartyOptions.SelectPlayList2, PlayList2, ITeams); + SelectRounds := AddSelectSlide (Theme.PartyOptions.SelectRounds, Rounds, IRounds); + SelectTeams := AddSelectSlide (Theme.PartyOptions.SelectTeams, NumTeams, ITeams); + SelectPlayers1 := AddSelectSlide (Theme.PartyOptions.SelectPlayers1, NumPlayer1, IPlayers); + SelectPlayers2 := AddSelectSlide (Theme.PartyOptions.SelectPlayers2, NumPlayer2, IPlayers); + SelectPlayers3 := AddSelectSlide (Theme.PartyOptions.SelectPlayers3, NumPlayer3, IPlayers); + + for I := 0 to High(Theme.PartyOptions.Static) do + AddStatic(Theme.PartyOptions.Static[I]); + + for I := 0 to High(Theme.PartyOptions.Text) do + AddText(Theme.PartyOptions.Text[I]); + + Interaction := 0; +end; + +procedure TScreenPartyOptions.onShow; +begin + Randomize; + +// LCD.WriteText(1, ' Choose mode: '); +// UpdateLCD; +end; + +procedure TScreenPartyOptions.SetAnimationProgress(Progress: real); +begin + {for I := 0 to 6 do + SelectS[I].Texture.ScaleW := Progress;} +end; + +end. diff --git a/Game/Code/Screens/UScreenPartyPlayer.dcu b/Game/Code/Screens/UScreenPartyPlayer.dcu new file mode 100644 index 00000000..1afeac79 Binary files /dev/null and b/Game/Code/Screens/UScreenPartyPlayer.dcu differ diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas new file mode 100644 index 00000000..b954212a --- /dev/null +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -0,0 +1,210 @@ +unit UScreenPartyPlayer; + +Interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenPartyPlayer = class(TMenu) + public + Team1Name: Cardinal; + Player1Name: Cardinal; + Player2Name: Cardinal; + Player3Name: Cardinal; + Player4Name: Cardinal; + + Team2Name: Cardinal; + Player5Name: Cardinal; + Player6Name: Cardinal; + Player7Name: Cardinal; + Player8Name: Cardinal; + + Team3Name: Cardinal; + Player9Name: Cardinal; + Player10Name: Cardinal; + Player11Name: Cardinal; + Player12Name: Cardinal; + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic, UMain, UIni, UTexture, UParty; + +function TScreenPartyPlayer.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + I, J: integer; + procedure IntNext; + begin + repeat + InteractNext; + until Button[Interaction].Visible; + end; + procedure IntPrev; + begin + repeat + InteractPrev; + until Button[Interaction].Visible; + end; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + begin + Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + chr(ScanCode); + end; + + SDLK_BACKSPACE: + begin + Delete(Button[Interaction].Text[0].Text, + Length(Button[Interaction].Text[0].Text), 1); + end; + + SDLK_ESCAPE : + begin + Ini.SaveNames; + Music.PlayBack; + FadeTo(@ScreenPartyOptions); + end; + + SDLK_RETURN: + begin + + for I := 0 to PartySession.Teams.NumTeams-1 do + begin + PartySession.Teams.Teaminfo[I].Name := PChar(Button[I*5].Text[0].Text); + for J := 0 to PartySession.Teams.Teaminfo[I].NumPlayers-1 do + begin + PartySession.Teams.Teaminfo[I].Playerinfo[J].Name := PChar(Button[I*5 + J+1].Text[0].Text); + PartySession.Teams.Teaminfo[I].Playerinfo[J].TimesPlayed := 0; + end; + PartySession.Teams.Teaminfo[I].Joker := Round (Length(PartySession.Rounds) * 0.85); + end; + + + //Start Party + PartySession.StartNewParty; + + Music.PlayStart; + FadeTo(@ScreenPartyNewRound); + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: IntNext; + SDLK_UP: IntPrev; + SDLK_RIGHT: IntNext; + SDLK_LEFT: IntPrev; + end; + end; +end; + +constructor TScreenPartyPlayer.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.PartyPlayer.Background.Tex); + + Team1Name := AddButton(Theme.PartyPlayer.Team1Name); + AddButton(Theme.PartyPlayer.Player1Name); + AddButton(Theme.PartyPlayer.Player2Name); + AddButton(Theme.PartyPlayer.Player3Name); + AddButton(Theme.PartyPlayer.Player4Name); + + Team2Name := AddButton(Theme.PartyPlayer.Team2Name); + AddButton(Theme.PartyPlayer.Player5Name); + AddButton(Theme.PartyPlayer.Player6Name); + AddButton(Theme.PartyPlayer.Player7Name); + AddButton(Theme.PartyPlayer.Player8Name); + + Team3Name := AddButton(Theme.PartyPlayer.Team3Name); + AddButton(Theme.PartyPlayer.Player9Name); + AddButton(Theme.PartyPlayer.Player10Name); + AddButton(Theme.PartyPlayer.Player11Name); + AddButton(Theme.PartyPlayer.Player12Name); + + for I := 0 to High(Theme.PartyPlayer.Static) do + AddStatic(Theme.PartyPlayer.Static[I]); + + for I := 0 to High(Theme.PartyPlayer.Text) do + AddText(Theme.PartyPlayer.Text[I]); + + Interaction := 0; +end; + +procedure TScreenPartyPlayer.onShow; +var + I: integer; +begin + If (PartySession.Teams.NumTeams>=1) then + begin + Button[0].Visible := True; + Button[1].Visible := (PartySession.Teams.Teaminfo[0].NumPlayers >=1); + Button[2].Visible := (PartySession.Teams.Teaminfo[0].NumPlayers >=2); + Button[3].Visible := (PartySession.Teams.Teaminfo[0].NumPlayers >=3); + Button[4].Visible := (PartySession.Teams.Teaminfo[0].NumPlayers >=4); + end + else + begin + Button[0].Visible := False; + Button[1].Visible := False; + Button[2].Visible := False; + Button[3].Visible := False; + Button[4].Visible := False; + end; + + If (PartySession.Teams.NumTeams>=2) then + begin + Button[5].Visible := True; + Button[6].Visible := (PartySession.Teams.Teaminfo[1].NumPlayers >=1); + Button[7].Visible := (PartySession.Teams.Teaminfo[1].NumPlayers >=2); + Button[8].Visible := (PartySession.Teams.Teaminfo[1].NumPlayers >=3); + Button[9].Visible := (PartySession.Teams.Teaminfo[1].NumPlayers >=4); + end + else + begin + Button[5].Visible := False; + Button[6].Visible := False; + Button[7].Visible := False; + Button[8].Visible := False; + Button[9].Visible := False; + end; + + If (PartySession.Teams.NumTeams>=3) then + begin + Button[10].Visible := True; + Button[11].Visible := (PartySession.Teams.Teaminfo[2].NumPlayers >=1); + Button[12].Visible := (PartySession.Teams.Teaminfo[2].NumPlayers >=2); + Button[13].Visible := (PartySession.Teams.Teaminfo[2].NumPlayers >=3); + Button[14].Visible := (PartySession.Teams.Teaminfo[2].NumPlayers >=4); + end + else + begin + Button[10].Visible := False; + Button[11].Visible := False; + Button[12].Visible := False; + Button[13].Visible := False; + Button[14].Visible := False; + end; + +end; + +procedure TScreenPartyPlayer.SetAnimationProgress(Progress: real); +var + I: integer; +begin + for I := 0 to high(Button) do + Button[I].Texture.ScaleW := Progress; +end; + +end. diff --git a/Game/Code/Screens/UScreenPartyScore.dcu b/Game/Code/Screens/UScreenPartyScore.dcu new file mode 100644 index 00000000..9dffe2e5 Binary files /dev/null and b/Game/Code/Screens/UScreenPartyScore.dcu differ diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas new file mode 100644 index 00000000..9cbeb5d5 --- /dev/null +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -0,0 +1,183 @@ +unit UScreenPartyScore; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, SysUtils, UThemes; + +type + TScreenPartyScore = class(TMenu) + public + TextScoreTeam1: Cardinal; + TextScoreTeam2: Cardinal; + TextScoreTeam3: Cardinal; + TextNameTeam1: Cardinal; + TextNameTeam2: Cardinal; + TextNameTeam3: Cardinal; + StaticTeam1: Cardinal; + StaticTeam2: Cardinal; + StaticTeam3: Cardinal; + TextWinner: Cardinal; + + MaxScore: Word; + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic, UMain, UParty, UScreenSingModi, ULanguage; + +function TScreenPartyScore.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Music.PlayStart; + if (PartySession.CurRound <= High(PartySession.Rounds)) then + FadeTo(@ScreenPartyNewRound) + else + begin + PartySession.EndRound; + FadeTo(@ScreenPartyWin); + end; + end; + + SDLK_RETURN: + begin + Music.PlayStart; + if (PartySession.CurRound <= High(PartySession.Rounds)) then + FadeTo(@ScreenPartyNewRound) + else + begin + PartySession.EndRound; + FadeTo(@ScreenPartyWin); + end; + end; + end; + end; +end; + +constructor TScreenPartyScore.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.PartyScore.Background.Tex); + + TextScoreTeam1 := AddText (Theme.PartyScore.TextScoreTeam1); + TextScoreTeam2 := AddText (Theme.PartyScore.TextScoreTeam2); + TextScoreTeam3 := AddText (Theme.PartyScore.TextScoreTeam3); + TextNameTeam1 := AddText (Theme.PartyScore.TextNameTeam1); + TextNameTeam2 := AddText (Theme.PartyScore.TextNameTeam2); + TextNameTeam3 := AddText (Theme.PartyScore.TextNameTeam3); + + StaticTeam1 := AddStatic (Theme.PartyScore.StaticTeam1); + StaticTeam2 := AddStatic (Theme.PartyScore.StaticTeam2); + StaticTeam3 := AddStatic (Theme.PartyScore.StaticTeam3); + + TextWinner := AddText (Theme.PartyScore.TextWinner); + + for I := 0 to High(Theme.PartyScore.Static) do + AddStatic(Theme.PartyScore.Static[I]); + + for I := 0 to High(Theme.PartyScore.Text) do + AddText(Theme.PartyScore.Text[I]); +end; + +procedure TScreenPartyScore.onShow; +var + I: Integer; +begin + //Get Maxscore + MaxScore := 0; + for I := 0 to ScreenSingModi.PlayerInfo.NumPlayers - 1 do + begin + if (ScreenSingModi.PlayerInfo.Playerinfo[I].Score > MaxScore) then + MaxScore := ScreenSingModi.PlayerInfo.Playerinfo[I].Score; + end; + + //Set Static Length + Static[StaticTeam1].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[0].Percentage / 100; + Static[StaticTeam2].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[1].Percentage / 100; + Static[StaticTeam3].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[2].Percentage / 100; + + //Set Winnertext + Text[TextWinner].Text := Format(Language.Translate('PARTY_SCORE_WINS'), [PartySession.GetWinnerString(PartySession.CurRound)]); + + if (ScreenSingModi.PlayerInfo.NumPlayers >= 1) then + begin + Text[TextScoreTeam1].Text := InttoStr(ScreenSingModi.PlayerInfo.Playerinfo[0].Score); + Text[TextNameTeam1].Text := String(ScreenSingModi.TeamInfo.Teaminfo[0].Name); + + Text[TextScoreTeam1].Visible := True; + Text[TextNameTeam1].Visible := True; + Static[StaticTeam1].Visible := True; + end + else + begin + Text[TextScoreTeam1].Visible := False; + Text[TextNameTeam1].Visible := False; + Static[StaticTeam1].Visible := False; + end; + + if (ScreenSingModi.PlayerInfo.NumPlayers >= 2) then + begin + Text[TextScoreTeam2].Text := InttoStr(ScreenSingModi.PlayerInfo.Playerinfo[1].Score); + Text[TextNameTeam2].Text := String(ScreenSingModi.TeamInfo.Teaminfo[1].Name); + + Text[TextScoreTeam2].Visible := True; + Text[TextNameTeam2].Visible := True; + Static[StaticTeam2].Visible := True; + end + else + begin + Text[TextScoreTeam2].Visible := False; + Text[TextNameTeam2].Visible := False; + Static[StaticTeam2].Visible := False; + end; + + if (ScreenSingModi.PlayerInfo.NumPlayers >= 3) then + begin + Text[TextScoreTeam3].Text := InttoStr(ScreenSingModi.PlayerInfo.Playerinfo[2].Score); + Text[TextNameTeam3].Text := String(ScreenSingModi.TeamInfo.Teaminfo[2].Name); + + Text[TextScoreTeam3].Visible := True; + Text[TextNameTeam3].Visible := True; + Static[StaticTeam3].Visible := True; + end + else + begin + Text[TextScoreTeam3].Visible := False; + Text[TextNameTeam3].Visible := False; + Static[StaticTeam3].Visible := False; + end; + + +// LCD.WriteText(1, ' Choose mode: '); +// UpdateLCD; +end; + +procedure TScreenPartyScore.SetAnimationProgress(Progress: real); +begin + if (ScreenSingModi.PlayerInfo.NumPlayers >= 1) then + Static[StaticTeam1].Texture.ScaleW := Progress * ScreenSingModi.PlayerInfo.Playerinfo[0].Percentage / 100; + if (ScreenSingModi.PlayerInfo.NumPlayers >= 2) then + Static[StaticTeam2].Texture.ScaleW := Progress * ScreenSingModi.PlayerInfo.Playerinfo[1].Percentage / 100; + if (ScreenSingModi.PlayerInfo.NumPlayers >= 3) then + Static[StaticTeam3].Texture.ScaleW := Progress * ScreenSingModi.PlayerInfo.Playerinfo[2].Percentage / 100; +end; + +end. diff --git a/Game/Code/Screens/UScreenPartyWin.dcu b/Game/Code/Screens/UScreenPartyWin.dcu new file mode 100644 index 00000000..d55c0809 Binary files /dev/null and b/Game/Code/Screens/UScreenPartyWin.dcu differ diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas new file mode 100644 index 00000000..ac5f38d9 --- /dev/null +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -0,0 +1,157 @@ +unit UScreenPartyWin; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, SysUtils, UThemes; + +type + TScreenPartyWin = class(TMenu) + public + TextScoreTeam1: Cardinal; + TextScoreTeam2: Cardinal; + TextScoreTeam3: Cardinal; + TextNameTeam1: Cardinal; + TextNameTeam2: Cardinal; + TextNameTeam3: Cardinal; + StaticTeam1: Cardinal; + StaticTeam2: Cardinal; + StaticTeam3: Cardinal; + TextWinner: Cardinal; + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + end; + +implementation + +uses UGraphic, UMain, UParty, UScreenSingModi, ULanguage; + +function TScreenPartyWin.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Music.PlayStart; + FadeTo(@ScreenMain); + end; + + SDLK_RETURN: + begin + Music.PlayStart; + FadeTo(@ScreenMain); + end; + end; + end; +end; + +constructor TScreenPartyWin.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.PartyWin.Background.Tex); + + TextScoreTeam1 := AddText (Theme.PartyWin.TextScoreTeam1); + TextScoreTeam2 := AddText (Theme.PartyWin.TextScoreTeam2); + TextScoreTeam3 := AddText (Theme.PartyWin.TextScoreTeam3); + TextNameTeam1 := AddText (Theme.PartyWin.TextNameTeam1); + TextNameTeam2 := AddText (Theme.PartyWin.TextNameTeam2); + TextNameTeam3 := AddText (Theme.PartyWin.TextNameTeam3); + + StaticTeam1 := AddStatic (Theme.PartyWin.StaticTeam1); + StaticTeam2 := AddStatic (Theme.PartyWin.StaticTeam2); + StaticTeam3 := AddStatic (Theme.PartyWin.StaticTeam3); + + TextWinner := AddText (Theme.PartyWin.TextWinner); + + for I := 0 to High(Theme.PartyWin.Static) do + AddStatic(Theme.PartyWin.Static[I]); + + for I := 0 to High(Theme.PartyWin.Text) do + AddText(Theme.PartyWin.Text[I]); +end; + +procedure TScreenPartyWin.onShow; +var + I: Integer; +begin + + //Set Winnertext + Text[TextWinner].Text := Format(Language.Translate('PARTY_SCORE_WINS'), [PartySession.GetWinnerString(255)]); + + if (PartySession.Teams.NumTeams >= 1) then + begin + Text[TextScoreTeam1].Text := InttoStr(PartySession.Teams.TeamInfo[0].Score); + Text[TextNameTeam1].Text := String(PartySession.Teams.TeamInfo[0].Name); + + Text[TextScoreTeam1].Visible := True; + Text[TextNameTeam1].Visible := True; + Static[StaticTeam1].Visible := True; + end + else + begin + Text[TextScoreTeam1].Visible := False; + Text[TextNameTeam1].Visible := False; + Static[StaticTeam1].Visible := False; + end; + + if (PartySession.Teams.NumTeams >= 2) then + begin + Text[TextScoreTeam2].Text := InttoStr(PartySession.Teams.TeamInfo[1].Score); + Text[TextNameTeam2].Text := String(PartySession.Teams.TeamInfo[1].Name); + + Text[TextScoreTeam2].Visible := True; + Text[TextNameTeam2].Visible := True; + Static[StaticTeam2].Visible := True; + end + else + begin + Text[TextScoreTeam2].Visible := False; + Text[TextNameTeam2].Visible := False; + Static[StaticTeam2].Visible := False; + end; + + if (PartySession.Teams.NumTeams >= 3) then + begin + Text[TextScoreTeam3].Text := InttoStr(PartySession.Teams.TeamInfo[2].Score); + Text[TextNameTeam3].Text := String(PartySession.Teams.TeamInfo[2].Name); + + Text[TextScoreTeam3].Visible := True; + Text[TextNameTeam3].Visible := True; + Static[StaticTeam3].Visible := True; + end + else + begin + Text[TextScoreTeam3].Visible := False; + Text[TextNameTeam3].Visible := False; + Static[StaticTeam3].Visible := False; + end; + + +// LCD.WriteText(1, ' Choose mode: '); +// UpdateLCD; +end; + +procedure TScreenPartyWin.SetAnimationProgress(Progress: real); +begin + {if (ScreenSingModi.PlayerInfo.NumPlayers >= 1) then + Static[StaticTeam1].Texture.ScaleW := Progress * ScreenSingModi.PlayerInfo.Playerinfo[0].Score / maxScore; + if (ScreenSingModi.PlayerInfo.NumPlayers >= 2) then + Static[StaticTeam2].Texture.ScaleW := Progress * ScreenSingModi.PlayerInfo.Playerinfo[1].Score / maxScore; + if (ScreenSingModi.PlayerInfo.NumPlayers >= 3) then + Static[StaticTeam3].Texture.ScaleW := Progress * ScreenSingModi.PlayerInfo.Playerinfo[2].Score / maxScore;} +end; + +end. diff --git a/Game/Code/Screens/UScreenScore.dcu b/Game/Code/Screens/UScreenScore.dcu new file mode 100644 index 00000000..eee72fd0 Binary files /dev/null and b/Game/Code/Screens/UScreenScore.dcu differ diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas new file mode 100644 index 00000000..2e509a6f --- /dev/null +++ b/Game/Code/Screens/UScreenScore.pas @@ -0,0 +1,586 @@ +unit UScreenScore; + +interface + +uses + UMenu, SDL, SysUtils, UDisplay, UMusic, USongs, UThemes, ULCD, OpenGL; + +type + TScreenScore = class(TMenu) + public + TextArtist: integer; + TextTitle: integer; + + TextName: array[1..6] of integer; + TextScore: array[1..6] of integer; + + TextNotes: array[1..6] of integer; + TextNotesScore: array[1..6] of integer; + TextLineBonus: array[1..6] of integer; + TextLineBonusScore: array[1..6] of integer; + TextGoldenNotes: array[1..6] of integer; + TextGoldenNotesScore: array[1..6] of integer; + TextTotal: array[1..6] of integer; + TextTotalScore: array[1..6] of integer; + + PlayerStatic: array[1..6] of array of integer; + + StaticBoxLightest: array[1..6] of integer; + StaticBoxLight: array[1..6] of integer; + StaticBoxDark: array[1..6] of integer; + + StaticBackLevel: array[1..6] of integer; + StaticBackLevelRound: array[1..6] of integer; + StaticLevel: array[1..6] of integer; + StaticLevelRound: array[1..6] of integer; + + Animation: real; + Fadeout: boolean; + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + function Draw: boolean; override; + procedure FillPlayer(Item, P: integer); + end; + +implementation + +{$IFDEF TRANSLATE} +uses UGraphic, UScreenSong, UMenuStatic, UTime, UMain, UIni, ULanguage; +{$ELSE} +uses UGraphic, UScreenSong, UMenuStatic, UTime, UMain, UIni; +{$ENDIF} +function TScreenScore.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then begin + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + if (not Fadeout) then begin +// Music.StopShuffle; + FadeTo(@ScreenTop5); + Fadeout := true; + end; + end; + SDLK_RETURN: + begin + if (not Fadeout) then begin +// Music.StopShuffle; + FadeTo(@ScreenTop5); + Fadeout := true; + end; + end; +{ SDLK_SYSREQ: + begin + beep; + end;} + SDLK_SYSREQ: + begin + Display.PrintScreen; + end; + end; + end; +end; + +constructor TScreenScore.Create(Back: String); +var + P: integer; + I: integer; +begin + inherited Create(Back); + + // background arrows sorted from farthest to nearest +{ AddStatic(-2000 + 400, 100, 360, 60, 1, 1, 1, Skin.Arrow2, 'JPG', 'Arrow'); + AddStatic(-2000 + -50, 200, 420, 70, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); + AddStatic(-2000 + 90, 30, 500, 90, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); + AddStatic(-2000 + -250, 100, 800, 150, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); + + Static[0].Texture.Rot := 100 * pi/180; + Static[1].Texture.Rot := 7 * pi/180; + Static[2].Texture.Rot := 35 * pi/180; + + + // main arrow with text + AddStatic(0, 340, 1000, 180, 1, 1, 1, Skin.Arrow2, 'JPG', 'Arrow'); +// AddText(450, 409, 4, 15, 1, 1, 1, 'Smile'); + AddText(450, 409, 4, 15, 1, 1, 1, 'Let''s see the results'); + Text[0].Y := 401; + + Static[4].Texture.Rot := -3 * pi/180; + + + // two mid arrows + AddStatic(-2000 + -250, 100, 800, 150, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); + AddStatic(-2000 + -250, 100, 800, 150, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); + + + // last arrow + AddStatic(-2000, 340, 1100, 180, 1, 1, 1, Skin.Arrow2, 'JPG', 'Arrow'); +// AddText(-2000, 407, 4, 17, 1, 1, 1, 'SHUFFLE !'); + AddText(-2000, 407, 4, 15, 1, 1, 1, 'SHUFFLE !'); + + Static[7].Texture.Rot := 184 * pi/180; + + // score text + AddText(-2000, 407, 4, 17, 1, 1, 1, '10010 points'); + AddText(-2000, 407, 4, 17, 1, 1, 1, 'Cheater'); + + Fadeout := false;} + + + // Singstar Theme + AddBackground(Theme.Score.Background.Tex); + + for I := 0 to High(Theme.Score.Static) do + AddStatic(Theme.Score.Static[I]); + + for I := 0 to High(Theme.Score.Text) do + AddText(Theme.Score.Text[I]); + + TextArtist := AddText(Theme.Score.TextArtist); + TextTitle := AddText(Theme.Score.TextTitle); + + for P := 1 to 6 do begin + TextName[P] := AddText(Theme.Score.TextName[P]); + TextScore[P] := AddText(Theme.Score.TextScore[P]); + + TextNotes[P] := AddText(Theme.Score.TextNotes[P]); + TextNotesScore[P] := AddText(Theme.Score.TextNotesScore[P]); + TextLineBonus[P] := AddText(Theme.Score.TextLineBonus[P]); + TextLineBonusScore[P] := AddText(Theme.Score.TextLineBonusScore[P]); + TextGoldenNotes[P] := AddText(Theme.Score.TextGoldenNotes[P]); + TextGoldenNotesScore[P] := AddText(Theme.Score.TextGoldenNotesScore[P]); + TextTotal[P] := AddText(Theme.Score.TextTotal[P]); + TextTotalScore[P] := AddText(Theme.Score.TextTotalScore[P]); + + SetLength(PlayerStatic[P], Length(Theme.Score.PlayerStatic[P])); + for I := 0 to High(Theme.Score.PlayerStatic[P]) do + PlayerStatic[P, I] := AddStatic(Theme.Score.PlayerStatic[P, I]); + + StaticBoxLightest[P] := AddStatic(Theme.Score.StaticBoxLightest[P]); + StaticBoxLight[P] := AddStatic(Theme.Score.StaticBoxLight[P]); + StaticBoxDark[P] := AddStatic(Theme.Score.StaticBoxDark[P]); + + StaticBackLevel[P] := AddStatic(Theme.Score.StaticBackLevel[P]); + StaticBackLevelRound[P] := AddStatic(Theme.Score.StaticBackLevelRound[P]); + StaticLevel[P] := AddStatic(Theme.Score.StaticLevel[P]); + StaticLevelRound[P] := AddStatic(Theme.Score.StaticLevelRound[P]); + end; +end; + +procedure TScreenScore.onShow; +var + P: integer; // player + PP: integer; // another player variable + S: string; + I: integer; + Lev: real; + Skip: integer; + V: array[1..6] of boolean; // visibility array + MaxH: real; // maximum height of score bar + Wsp: real; +begin +{ CountSkipTimeSet; + + Animation := 0; + Fadeout := false; + + Text[1].Text := AktSong.Artist + ' - ' + AktSong.Title; + Text[2].Text := ' ' + IntToStr((Round(Gracz[0].Punkty) div 10) * 10) + ' points'; + + Static[0].Texture.X := -2000; + Static[1].Texture.X := -2000; + Static[2].Texture.X := -2000; + Static[3].Texture.X := -2000; + Static[4].Texture.X := -2000; + Static[5].Texture.X := -2000; + Static[6].Texture.X := -2000; + Static[7].Texture.X := -2000; + + Text[0].X := -2000; + Text[1].X := -2000; + Text[2].X := -2000; + Text[3].X := -2000; + + + case (Round(Gracz[0].Punkty) div 10) * 10 of + 0..1000: Text[3].Text := ' Tone Deaf'; + 2010..4000: Text[3].Text := ' Amateur'; + 4010..6000: Text[3].Text := ' Rising Star'; + 6010..8000: Text[3].Text := ' Lead Singer'; + 8010..9000: Text[3].Text := ' Hit Artist'; + 9010..10000: Text[3].Text := ' Superstar'; + end; + + Music.PlayShuffle;} + + // Singstar + Fadeout := false; + + Text[TextArtist].Text := AktSong.Artist; + Text[TextTitle].Text := AktSong.Title; + + // set visibility + case PlayersPlay of + 1: begin + V[1] := true; + V[2] := false; + V[3] := false; + V[4] := false; + V[5] := false; + V[6] := false; + end; + 2, 4: begin + V[1] := false; + V[2] := true; + V[3] := true; + V[4] := false; + V[5] := false; + V[6] := false; + end; + 3, 6: begin + V[1] := false; + V[2] := false; + V[3] := false; + V[4] := true; + V[5] := true; + V[6] := true; + end; + end; + + for P := 1 to 6 do begin + Text[TextName[P]].Visible := V[P]; + Text[TextScore[P]].Visible := V[P]; + + Text[TextNotes[P]].Visible := V[P]; + Text[TextNotesScore[P]].Visible := V[P]; + Text[TextLineBonus[P]].Visible := V[P]; + Text[TextLineBonusScore[P]].Visible := V[P]; + Text[TextGoldenNotes[P]].Visible := V[P]; + Text[TextGoldenNotesScore[P]].Visible := V[P]; + Text[TextTotal[P]].Visible := V[P]; + Text[TextTotalScore[P]].Visible := V[P]; + + for I := 0 to high(PlayerStatic[P]) do + Static[PlayerStatic[P, I]].Visible := V[P]; + + Static[StaticBoxLightest[P]].Visible := V[P]; + Static[StaticBoxLight[P]].Visible := V[P]; + Static[StaticBoxDark[P]].Visible := V[P]; + + Static[StaticBackLevel[P]].Visible := V[P]; + Static[StaticBackLevelRound[P]].Visible := V[P]; + Static[StaticLevel[P]].Visible := V[P]; + Static[StaticLevelRound[P]].Visible := V[P]; + end; + + if PlayersPlay <= 3 then begin // only for 1 screen mode + for P := 0 to PlayersPlay-1 do begin + case PlayersPlay of + 1: PP := 1; + 2: PP := P + 2; + 3: PP := P + 4; + end; + //PP := 1; + + Text[TextName[PP]].Text := Ini.Name[P]; + + {$IFDEF TRANSLATE} + case (Player[P].ScoreTotalI) of + 0..2000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_TONE_DEAF'); + 2010..4000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_AMATEUR'); + 4010..6000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_RISING_STAR'); + 6010..8000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_LEAD_SINGER'); + 8010..9000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_HIT_ARTIST'); + 9010..9800: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_SUPERSTAR'); + 9810..10000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_ULTRASTAR'); + end; + {$ELSE} + case (Player[P].ScoreTotalI) of + 0..2000: Text[TextScore[PP]].Text := 'Tone Deaf'; + 2010..4000: Text[TextScore[PP]].Text := 'Amateur'; + 4010..6000: Text[TextScore[PP]].Text := 'Rising Star'; + 6010..8000: Text[TextScore[PP]].Text := 'Lead Singer'; + 8010..9000: Text[TextScore[PP]].Text := 'Hit Artist'; + 9010..9800: Text[TextScore[PP]].Text := 'Superstar'; + 9810..10000: Text[TextScore[PP]].Text := 'Ultrastar'; + end; + {$ENDIF} + + S := IntToStr(Player[P].ScoreI); + while (Length(S)<4) do S := '0' + S; + Text[TextNotesScore[PP]].Text := S; + + S := IntToStr(Player[P].ScoreLineI); + while (Length(S)<4) do S := '0' + S; + Text[TextLineBonusScore[PP]].Text := S; + + S := IntToStr(Player[P].ScoreGoldenI); + while (Length(S)<4) do S := '0' + S; + Text[TextGoldenNotesScore[PP]].Text := S; + + S := IntToStr(Player[P].ScoreTotalI); + while (Length(S)<5) do S := '0' + S; + Text[TextTotalScore[PP]].Text := S; + + // Level bar length +{ Lev := ((Round(Player[P].Punkty) div 10) * 10) / 10000; + Static[StaticLevel[PP]].Texture.H := Round(Static[StaticBackLevel[PP]].Texture.H * Lev); + Static[StaticLevel[PP]].Texture.Y := Static[StaticBackLevel[PP]].Texture.Y + Static[StaticBackLevel[PP]].Texture.H - Static[StaticLevel[PP]].Texture.H; + Static[StaticLevelRound[PP]].Texture.Y := Static[StaticLevel[PP]].Texture.Y - Static[StaticLevelRound[PP]].Texture.H;} + // doesn't align too much... (to fix) + // hint: play with wrapping textures + // resolution: setting TexY1 and TexY2 to 0.1 and 0.9 + + Lev := Player[P].ScoreTotalI / 10000; + MaxH := Static[StaticBackLevel[PP]].Texture.H + Static[StaticBackLevelRound[PP]].Texture.H / 2; + + // developer note (Polish): + // w sumie np. 120 pix + // ten static moze miec 100 pix + // wlacza sie od 20 pix i rosnie do 120 pix + // wiec wysokosc = wyznaczona ilosc - 20 + // nie moze byc mniejsze od 0 + // Lev * MaxH = total number of pixels to draw + Static[StaticLevel[PP]].Visible := true; + Static[StaticLevel[PP]].Texture.H := Lev * MaxH - Static[StaticBackLevelRound[PP]].Texture.H / 2; + if Static[StaticLevel[PP]].Texture.H < 0 then Static[StaticLevel[PP]].Visible := false; + + // Y doesn't change and depend on the back texture coordinate + Static[StaticLevel[PP]].Texture.Y := Static[StaticBackLevel[PP]].Texture.Y + Static[StaticBackLevel[PP]].Texture.H - Static[StaticLevel[PP]].Texture.H; + + // we modify LevelRound texture by changing it's Y. TexY1 and TexY2 change when the height to draw is lower than 20 + if Lev * MaxH < Static[StaticBackLevelRound[PP]].Texture.H / 2 then begin + // when it's lower than 20 => we move TexY1 and TexY2 higher to show only part of this texture + Static[StaticLevelRound[PP]].Texture.Y := Static[StaticBackLevel[PP]].Texture.Y + Static[StaticBackLevel[PP]].Texture.H - Static[StaticBackLevelRound[PP]].Texture.H; + // - 0.25 when points = 0 + // - 0 wnen there are more points + // if Lev * MaxH = Static[StaticBackLevelRound[PP]].Texture.H / 2) then we do not change it + // if Lev * MaxH = 0 then we substract 0.25 + // we substract (0.25 - 0.25 * (Lev * MaxH)/Static[StaticBackLevelRound[PP]].Texture.H / 2) + Wsp := Lev * MaxH / (Static[StaticBackLevelRound[PP]].Texture.H / 2); + Static[StaticLevelRound[PP]].Texture.TexY1 := Static[StaticBackLevelRound[PP]].Texture.TexY1 - 0.25 + 0.25 * Wsp; + Static[StaticLevelRound[PP]].Texture.TexY2 := Static[StaticBackLevelRound[PP]].Texture.TexY2 - 0.25 + 0.25 * Wsp; + end else begin + // when it's higher or equal 20 => full texture is being shown + Static[StaticLevelRound[PP]].Texture.TexY1 := Static[StaticBackLevelRound[PP]].Texture.TexY1; + Static[StaticLevelRound[PP]].Texture.TexY2 := Static[StaticBackLevelRound[PP]].Texture.TexY2; + Static[StaticLevelRound[PP]].Texture.Y := Static[StaticLevel[PP]].Texture.Y - Static[StaticBackLevelRound[PP]].Texture.H; + end; + + end; // for + end; // if + + LCD.HideCursor; + LCD.Clear; + LCD.WriteText(1, Ini.Name[0]); + LCD.WriteText(2, 'Score: ' + Text[TextTotalScore[1]].Text); + +end; + +function TScreenScore.Draw: boolean; +var +{ Min: real; + Max: real; + Wsp: real; + Wsp2: real; + Pet: integer;} + + Item: integer; + P: integer; + C: integer; +begin + // star animation +{ Animation := Animation + TimeSkip*1000; + + // move right + Min := 0; Max := 500; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + Wsp2 := 1 - Wsp; + + Static[0].Texture.X := 400 + Wsp2 * 50; // prawa mala + Static[0].Texture.Y := 150 - Wsp2 * 500; + Static[1].Texture.X := -50 - Wsp2 * 500; // lewa mala + Static[1].Texture.Y := 200 + Wsp2 * 50; + Static[2].Texture.X := 100 - Wsp2 * 200; // gorna w prawo + Static[2].Texture.Y := 80 - Wsp2 * 200; + Static[3].Texture.X := -280 - Wsp2 * 1000; // lewa wieksza gorna + Static[3].Texture.Y := 90; + + + Static[4].Texture.X := -1200 + Wsp * 1000; + Text[0].X := Static[4].Texture.X + 430; + end; + + // slowly move right + Min := 500; Max := 4100; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + + Static[0].Texture.X := 400 - Wsp * 10; // prawa mala + Static[0].Texture.Y := 150 + Wsp * 50; + Static[1].Texture.X := -50 + Wsp * 50; // lewa mala + Static[1].Texture.Y := 200; + Static[2].Texture.X := 100 + Wsp * 50; // gorna w prawo + Static[2].Texture.Y := 80 + Wsp * 30; + Static[3].Texture.X := -280 + Wsp * 200; // lewa wieksza gorna + Static[3].Texture.Y := 90; + + Static[4].Texture.X := -200 + Wsp * 150; // duza glowna + Text[0].X := Static[4].Texture.X + 430; + end; + + // fast move right + Min := 4100; Max := 4400; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + Wsp2 := 1 - Wsp; + + Static[0].Texture.X := 390 - Wsp * 200; // prawa mala + Static[0].Texture.Y := 200 + Wsp * 1000; + Static[1].Texture.X := 0 + Wsp * 1000; // lewa mala + Static[1].Texture.Y := 200; + Static[2].Texture.X := 150 + Wsp * 1000; // gorna w prawo + Static[2].Texture.Y := 110 + Wsp * 600; + Static[3].Texture.X := -80 + Wsp * 2000; // lewa wieksza gorna + Static[3].Texture.Y := 90; + + Static[4].Texture.X := -50 + Wsp * 2000; + Text[0].X := Static[4].Texture.X + 430; + + Static[7].Texture.X := 100 + Wsp2 * 3000; + Text[1].X := Static[7].Texture.X + 230; // 300 + Text[1].Y := Static[7].Texture.Y + 140; // 120 Sh + + Text[2].X := Static[7].Texture.X + 250; + Text[2].Y := Static[7].Texture.Y - 250; + Text[3].X := Static[7].Texture.X + 250; + Text[3].Y := Static[7].Texture.Y - 200; + end; + + // last arrow + Min := 4400; Max := 8000; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + + Static[7].Texture.X := 100 - Wsp * 100; + Text[1].X := Static[7].Texture.X + 230; // 300 + Text[1].Y := Static[7].Texture.Y + 140; // 120 + + Text[2].X := Static[7].Texture.X + 250; + Text[2].Y := Static[7].Texture.Y - 250; + Text[3].X := Static[7].Texture.X + 250; + Text[3].Y := Static[7].Texture.Y - 200; + end; + + // fade last arrow to left + Min := 8000; Max := 8300; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + + Static[7].Texture.X := 0 - Wsp * 3000; + Static[7].Texture.Y := 340 - Wsp * 50; + Text[1].X := Static[7].Texture.X + 230; // 300 Sh + Text[1].Y := Static[7].Texture.Y + 140; // 120 Sh + + Text[2].X := Static[7].Texture.X + 250; + Text[2].Y := Static[7].Texture.Y - 250; + Text[3].X := Static[7].Texture.X + 250; + Text[3].Y := Static[7].Texture.Y - 200; + end; + + Min := 8300; + if (Animation >= Min) and (not Fadeout) then begin + Music.StopShuffle; + FadeTo(@ScreenSong); + Fadeout := true; + end;} + + + // 0.5.0: try also use 4 players screen with nicks + if PlayersPlay = 4 then begin + for Item := 2 to 3 do begin + if ScreenAct = 1 then P := Item-2; + if ScreenAct = 2 then P := Item; + + FillPlayer(Item, P); + end; + end; + + + // Singstar - let it be...... with 6 statics + if PlayersPlay = 6 then begin + for Item := 4 to 6 do begin + if ScreenAct = 1 then P := Item-4; + if ScreenAct = 2 then P := Item-1; + + FillPlayer(Item, P); + +{ if ScreenAct = 1 then begin + LoadColor( + Static[StaticBoxLightest[Item]].Texture.ColR, + Static[StaticBoxLightest[Item]].Texture.ColG, + Static[StaticBoxLightest[Item]].Texture.ColB, + 'P1Dark'); + end; + + if ScreenAct = 2 then begin + LoadColor( + Static[StaticBoxLightest[Item]].Texture.ColR, + Static[StaticBoxLightest[Item]].Texture.ColG, + Static[StaticBoxLightest[Item]].Texture.ColB, + 'P4Dark'); + end;} + + end; + end; + + inherited Draw; +end; + +procedure TScreenScore.FillPlayer(Item, P: integer); +var + S: string; +begin + Text[TextName[Item]].Text := Ini.Name[P]; + + S := IntToStr((Round(Player[P].Score) div 10) * 10); + while (Length(S)<4) do S := '0' + S; + Text[TextNotesScore[Item]].Text := S; + + while (Length(S)<5) do S := '0' + S; + Text[TextTotalScore[Item]].Text := S; + + LoadColor( + Text[TextName[Item]].ColR, + Text[TextName[Item]].ColG, + Text[TextName[Item]].ColB, + 'P' + IntToStr(P+1) + 'Dark'); + + LoadColor( + Static[StaticBoxLightest[Item]].Texture.ColR, + Static[StaticBoxLightest[Item]].Texture.ColG, + Static[StaticBoxLightest[Item]].Texture.ColB, + 'P' + IntToStr(P+1) + 'Lightest'); + + LoadColor( + Static[StaticBoxLight[Item]].Texture.ColR, + Static[StaticBoxLight[Item]].Texture.ColG, + Static[StaticBoxLight[Item]].Texture.ColB, + 'P' + IntToStr(P+1) + 'Light'); + + LoadColor( + Static[StaticBoxDark[Item]].Texture.ColR, + Static[StaticBoxDark[Item]].Texture.ColG, + Static[StaticBoxDark[Item]].Texture.ColB, + 'P' + IntToStr(P+1) + 'Dark'); +end; + +end. diff --git a/Game/Code/Screens/UScreenSing.dcu b/Game/Code/Screens/UScreenSing.dcu new file mode 100644 index 00000000..0e227a17 Binary files /dev/null and b/Game/Code/Screens/UScreenSing.dcu differ diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas new file mode 100644 index 00000000..2a97482d --- /dev/null +++ b/Game/Code/Screens/UScreenSing.pas @@ -0,0 +1,1121 @@ +unit UScreenSing; + +interface + +uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, + TextGL, OpenGL12, BASS, UThemes, ULCD; + +type + TScreenSing = class(TMenu) + protected + paused: boolean; //Pause Mod + PauseTime: Real; + NumEmptySentences: integer; + public + TextTime: integer; + + StaticP1: integer; + StaticP1ScoreBG: integer; + TextP1: integer; + TextP1Score: integer; + + StaticP2R: integer; + StaticP2RScoreBG: integer; + TextP2R: integer; + TextP2RScore: integer; + + StaticP2M: integer; + StaticP2MScoreBG: integer; + TextP2M: integer; + TextP2MScore: integer; + + StaticP3R: integer; + StaticP3RScoreBG: integer; + TextP3R: integer; + TextP3RScore: integer; + + Tex_Background: TTexture; + FadeOut: boolean; + LyricMain: TLyric; + LyricSub: TLyric; + + constructor Create; override; + procedure onShow; override; + procedure onShowFinish; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function Draw: boolean; override; + procedure Finish; virtual; + procedure UpdateLCD; + procedure Pause; //Pause Mod(Toggles Pause) + + //OnSentenceEnd for LineBonus + Singbar + procedure onSentenceEnd(S: Cardinal); + end; + +implementation +uses UGraphic, UDraw, UMain, Classes, URecord, ULanguage, math; + +// Method for input parsing. If False is returned, GetNextWindow +// should be checked to know the next window to load; +function TScreenSing.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + //Record Sound Hack: + //Sound[0].BufferLong + + Finish; + Music.PlayBack; + FadeTo(@ScreenScore); + end; + + SDLK_Q: + begin + Finish; + Result := false; + end; + + SDLK_P://Pause Mod + begin + Pause; + end; + + SDLK_RETURN: + begin + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN : + begin + end; + SDLK_UP : + begin + end; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +//Pause Mod +procedure TScreenSing.Pause; +begin + if not paused then //Pause einschalten + begin + PauseTime := Czas.Teraz; + Paused := true; + //stop Music + Music.Pause; + if (AktSong.Video <> '') and FileExists(AktSong.Path + AktSong.Video) then //Video + PauseSmpeg; //Video + end + else //Pause ausschalten + begin + Czas.Teraz := PauseTime; //Position of Notes + Music.MoveTo (PauseTime);//Position of Music + Music.Play; //Play Music + if (AktSong.Video <> '') and FileExists(AktSong.Path + AktSong.Video) then //Video + PlaySmpeg; + //SkipSmpeg(PauseTime); + Paused := false; + end; +end; +//Pause Mod End + +constructor TScreenSing.Create; +var + I: integer; + P: integer; +begin + inherited Create; + + AddBackground(Theme.Sing.Background.Tex); + + for I := 0 to High(Theme.Sing.Static) do + AddStatic(Theme.Sing.Static[I]); + + for I := 0 to High(Theme.Sing.Text) do + AddText(Theme.Sing.Text[I]); + + // time + TextTime := AddText(75, 14, 1, 8, 0.25, 0.25, 0.25, '00:00'); + + StaticP1 := AddStatic(Theme.Sing.StaticP1); + StaticP1ScoreBG := AddStatic(Theme.Sing.StaticP1ScoreBG); + TextP1 := AddText(Theme.Sing.TextP1); + TextP1Score := AddText(Theme.Sing.TextP1Score); + + StaticP2R := AddStatic(Theme.Sing.StaticP2R); + StaticP2RScoreBG := AddStatic(Theme.Sing.StaticP2RScoreBG); + TextP2R := AddText(Theme.Sing.TextP2R); + TextP2RScore := AddText(Theme.Sing.TextP2RScore); + + StaticP2M := AddStatic(Theme.Sing.StaticP2M); + StaticP2MScoreBG := AddStatic(Theme.Sing.StaticP2MScoreBG); + TextP2M := AddText(Theme.Sing.TextP2M); + TextP2MScore := AddText(Theme.Sing.TextP2MScore); + + StaticP3R := AddStatic(Theme.Sing.StaticP3R); + StaticP3RScoreBG := AddStatic(Theme.Sing.StaticP3RScoreBG); + TextP3R := AddText(Theme.Sing.TextP3R); + TextP3RScore := AddText(Theme.Sing.TextP3RScore); + + LyricMain := TLyric.Create; + LyricSub := TLyric.Create; +end; + +procedure TScreenSing.onShow; +var + P: integer; + V1: boolean; + V2R: boolean; + V2M: boolean; + V3R: boolean; + NR: TRecR; //Line Bonus Mod +begin + Log.LogStatus('Begin', 'onShow'); + FadeOut := false; // 0.5.0: early 0.5.0 problems were by this line commented + + // prepare players + SetLength(Player, PlayersPlay); +// Player[0].ScoreTotalI := 0; + + + case PlayersPlay of + 1: begin + V1 := true; + V2R := false; + V2M := false; + V3R := false; + end; + 2: begin + V1 := true; + V2R := true; + V2M := false; + V3R := false; + end; + 3: begin + V1 := true; + V2R := false; + V2M := true; + V3R := true; + end; + 4: begin // double screen + V1 := true; + V2R := true; + V2M := false; + V3R := false; + end; + 6: begin // double screen + V1 := true; + V2R := false; + V2M := true; + V3R := true; + end; + + end; + + + + Static[StaticP2R].Visible := V2R; + Static[StaticP2RScoreBG].Visible := V2R; + Text[TextP2R].Visible := V2R; + Text[TextP2RScore].Visible := V2R; + + Static[StaticP2M].Visible := V2M; + Static[StaticP2MScoreBG].Visible := V2M; + Text[TextP2M].Visible := V2M; + Text[TextP2MScore].Visible := V2M; + + Static[StaticP3R].Visible := V3R; + Static[StaticP3RScoreBG].Visible := V3R; + Text[TextP3R].Visible := V3R; + Text[TextP3RScore].Visible := V3R; + + // load notes + CzyscNuty; +// Log.LogWarning(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName, '!!!'); + AktSong := CatSongs.Song[CatSongs.Selected]; + + WczytajCzesci(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName); + AktSong.Path := CatSongs.Song[CatSongs.Selected].Path; +// AktSong.GAP := AktSong.GAP + 40 {4096 = 100ms for buffer} + 20 {microphone} + 60000 / AktSong.BPM[0].BPM / 2; // temporary until UMain will be fixed + + // set movie + if (AktSong.Video <> '') and FileExists(AktSong.Path + AktSong.Video) then begin + OpenSmpeg(AktSong.Path + AktSong.Video); + SkipSmpeg(AktSong.VideoGAP + AktSong.Start); + AktSong.VideoLoaded := true; + end; + + // set background + if (AktSong.Background <> '') and (AktSong.VideoLoaded = false) then + Tex_Background := Texture.LoadTexture(AktSong.Path + AktSong.Background) + else + Tex_Background.TexNum := -1; + + + + // play music (I) + Music.CaptureStart; + Music.MoveTo(AktSong.Start); +// Music.Play; + + // prepare timer (I) +// CountSkipTimeSet; + Czas.Teraz := AktSong.Start; + Czas.Razem := Music.Length; + if (AktSong.Finish > 0) then Czas.Razem := AktSong.Finish / 1000; + Czas.OldBeat := -1; + for P := 0 to High(Player) do + ClearScores(P); + + // main text + LyricMain.Clear; + LyricMain.X := 400; + LyricMain.Y := Skin_LyricsT; + LyricMain.Scale := 1.4; //1.4 + LyricMain.Align := 1; + + // sub text + LyricSub.Clear; + LyricSub.X := 400; + LyricSub.Y := Skin_LyricsT + 42; //40 + LyricSub.Align := 1; + + // set custom options + case Ini.LyricsFont of + 0: + begin + LyricMain.FontStyle := 0; + LyricSub.FontStyle := 0; + LyricMain.Size := 14; // 13 + LyricSub.Size := 14; // 13 + LyricMain.ColR := Skin_FontR; + LyricMain.ColG := Skin_FontG; + LyricMain.ColB := Skin_FontB; //Change für Crazy Joker + {LyricMain.ColSR := Skin_FontHighlightR; + LyricMain.ColSG := Skin_FontHighlightG; + LyricMain.ColSB := Skin_FontHighlightB;1aa5dc} + LyricMain.ColSR := 26/255; + LyricMain.ColSG := 165/255; + LyricMain.ColSB := 220/255; + + LyricSub.ColR := 0.6; + LyricSub.ColG := 0.6; + LyricSub.ColB := 0.6; + end; + 1: + begin + LyricMain.FontStyle := 2; + LyricSub.FontStyle := 2; + LyricMain.Size := 14; + LyricSub.Size := 14; + LyricMain.ColR := 0.75; + LyricMain.ColG := 0.75; + LyricMain.ColB := 1; + LyricMain.ColSR := 0.5; + LyricMain.ColSG := 0.5; + LyricMain.ColSB := 1; + LyricSub.ColR := 0.8; + LyricSub.ColG := 0.8; + LyricSub.ColB := 0.8; + end; + 2: + begin + LyricMain.FontStyle := 3; + LyricSub.FontStyle := 3; + LyricMain.Size := 12; + LyricSub.Size := 12; + LyricMain.ColR := 0.75; + LyricMain.ColG := 0.75; + LyricMain.ColB := 1; + LyricMain.ColSR := 0.5; + LyricMain.ColSG := 0.5; + LyricMain.ColSB := 1; + LyricSub.ColR := 0.8; + LyricSub.ColG := 0.8; + LyricSub.ColB := 0.8; + end; + end; // case + + case Ini.LyricsEffect of + 0: LyricMain.Style := 1; // 0 - one selected, 1 - selected all to the current + 1: LyricMain.Style := 2; + 2: LyricMain.Style := 3; + 3: LyricMain.Style := 4; + end; // case + + // fill texts + LyricMain.AddCzesc(0); + LyricMain.Selected := -1; + LyricSub.AddCzesc(1); + LyricSub.Selected := -1; + + UpdateLCD; + + //Deactivate Pause + Paused := False; + + {Static[StaticP2R].Visible := V2R; + Static[StaticP2RScoreBG].Visible := V2R; + Text[TextP2R].Visible := V2R; + Text[TextP2RScore].Visible := V2R; + + Static[StaticP2M].Visible := V2M; + Static[StaticP2MScoreBG].Visible := V2M; + Text[TextP2M].Visible := V2M; + Text[TextP2MScore].Visible := V2M; + + Static[StaticP3R].Visible := V3R; + Static[StaticP3RScoreBG].Visible := V3R; + Text[TextP3R].Visible := V3R; + Text[TextP3RScore].Visible := V3R;} + + //Set Position of Line Bonus - PhrasenBonus + if (Ini.LineBonus = 1) then //Show Line Bonus at Scores + begin + Case PlayersPlay of + 1: begin + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + end; + + 2: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.X; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.X; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2RScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2RScoreBG.X; + Player[1].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; + end; + + 3: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2MScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_StartY := Theme.Sing.TextP2MScore.Y + 65; + + //P3 + Player[2].LineBonus_TargetX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP3RScore.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; + end; + + 4: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.x; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2RScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2RScoreBG.x; + Player[1].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; + + //P3 + Player[2].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P4 + Player[3].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.x; + Player[3].LineBonus_TargetY := Theme.Sing.TextP2RScore.Y; + Player[3].LineBonus_StartX := Theme.Sing.StaticP2RScoreBG.x; + Player[3].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; + end; + + 6: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2MScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_StartY := Theme.Sing.TextP2MScore.Y + 65; + + //P3 + Player[2].LineBonus_TargetX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP3RScore.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; + + //P4 + Player[3].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[3].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[3].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[3].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P5 + Player[4].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; + Player[4].LineBonus_TargetY := Theme.Sing.TextP2MScore.Y; + Player[4].LineBonus_StartX := Theme.Sing.StaticP2MScoreBG.x; + Player[4].LineBonus_StartY := Theme.Sing.TextP2MScore.Y + 65; + + //P6 + Player[5].LineBonus_TargetX := Theme.Sing.StaticP3RScoreBG.x; + Player[5].LineBonus_TargetY := Theme.Sing.TextP3RScore.Y; + Player[5].LineBonus_StartX := Theme.Sing.StaticP3RScoreBG.x; + Player[5].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; + end; + end; + end + else if (Ini.LineBonus = 2) then //Show Line Bonus at Notes + begin + //SingDrawNoteLines(Nr.Left + 10*ScreenX, 120, Nr.Right + 10*ScreenX, 12); + //SingDrawNoteLines(Nr.Left + 10*ScreenX, 245, Nr.Right + 10*ScreenX, 12); + //SingDrawNoteLines(Nr.Left + 10*ScreenX, 370, Nr.Right + 10*ScreenX, 12); + + // positions + if Ini.SingWindow = 0 then begin + NR.Left := 120; + end else begin + NR.Left := 20; + end; + NR.Right := 780; + + NR.Width := NR.Right - NR.Left; + NR.WMid := NR.Width / 2; + NR.Mid := NR.Left + NR.WMid; + + Case PlayersPlay of + 1: begin + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := Skin_P2_NotesB - 105; + end; + + 2: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; + end; + + 3: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := 120 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := 120 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := 245 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := 245 + 28; + + //P3 + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetY := 370 - 65 + 28; + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartY := 370 + 28; + end; + + 4: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; + + //P3 + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; + + //P4 + Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; + Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; + end; + + 6: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := 120 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := 120 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := 245 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := 245 + 28; + + //P3 + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetY := 370 - 65 + 28; + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartY := 370 + 28; + + //P4 + Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_TargetY := 120 - 65 + 28; + Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_StartY := 120 + 28; + + //P5 + Player[4].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[4].LineBonus_TargetY := 245 - 65 + 28; + Player[4].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[4].LineBonus_StartY := 245 + 28; + + //P6 + Player[5].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[5].LineBonus_TargetY := 370 - 65 + 28; + Player[5].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[5].LineBonus_StartY := 370 + 28; + end; + end; + end; + //Set Position of Line Bonus - PhrasenBonus End + //Set Num of Empty Sentences for Phrasen Bonus + NumEmptySentences := 0; + for P := low(Czesci[0].Czesc) to high(Czesci[0].Czesc) do + if Czesci[0].Czesc[P].TotalNotes = 0 then Inc(NumEmptySentences); + + Log.LogStatus('End', 'onShow'); +end; + +procedure TScreenSing.onShowFinish; +begin + // play movie (II) + if AktSong.VideoLoaded then PlaySmpeg; + + // play music (II) + Music.Play; + + // prepare timer (II) + CountSkipTimeSet; +end; + +function TScreenSing.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + Flash: real; + S: integer; + T: integer; +begin + + + + //ScoreBG Mod + // set player colors + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); + + + + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P4Dark'); + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P4Dark'); + + + + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P3Dark'); + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, + Static[StaticP3RScoreBG].Texture.ColB, 'P3Dark'); + + + + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P6Dark'); + + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, + Static[StaticP3RScoreBG].Texture.ColB, 'P6Dark'); + + + + + end; + end; + +//Original 0.5.0 +{ // set player colors + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + //LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + //Static[StaticP1].Texture.ColB, 'P1Dark'); +// LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + // Static[StaticP2R].Texture.ColB, 'P2Dark'); + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P4Dark'); + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P3Dark'); + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P6Dark'); + end; + end; } + //end ScoreBG Mod + + + + // set player names (for 2 screens and only Singstar skin) + if ScreenAct = 1 then begin + Text[TextP1].Text := 'P1'; + Text[TextP2R].Text := 'P2'; + Text[TextP2M].Text := 'P2'; + Text[TextP3R].Text := 'P3'; + end; + + if ScreenAct = 2 then begin + case PlayersPlay of +{ 1: begin + Text[TextP1].Text := 'P2'; + end; + 2: begin + Text[TextP1].Text := 'P3'; + Text[TextP2R].Text := 'P4'; + end; + 3: begin + Text[TextP1].Text := 'P4'; + Text[TextP2M].Text := 'P5'; + Text[TextP3R].Text := 'P6'; + end;} + + 4: begin + Text[TextP1].Text := 'P3'; + Text[TextP2R].Text := 'P4'; + end; + 6: begin + Text[TextP1].Text := 'P4'; + Text[TextP2M].Text := 'P5'; + Text[TextP3R].Text := 'P6'; + end; + end; // case + end; // if + + // stereo + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; + + + + + Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX; + + + + + + Text[TextP1].X := Text[TextP1].X + 10*ScreenX; + Text[TextP1Score].X := Text[TextP1Score].X + 10*ScreenX; + + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX; + + + + Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X + 10*ScreenX; + + + + + Text[TextP2R].X := Text[TextP2R].X + 10*ScreenX; + Text[TextP2RScore].X := Text[TextP2RScore].X + 10*ScreenX; + + for S := 1 to 1 do + Static[S].Texture.X := Static[S].Texture.X + 10*ScreenX; + + for T := 0 to 1 do + Text[T].X := Text[T].X + 10*ScreenX; + + // update static menu with time ... + Min := Round(Czas.Teraz) div 60; + Sec := Round(Czas.Teraz) mod 60; + Text[TextTime].Text := ''; + if Min < 10 then Text[TextTime].Text := '0'; + Text[TextTime].Text := Text[TextTime].Text + IntToStr(Min) + ':'; + if Sec < 10 then Text[TextTime].Text := Text[TextTime].Text + '0'; + Text[TextTime].Text := Text[TextTime].Text + IntToStr(Sec); + + // .. and scores + if PlayersPlay = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + end; + + if PlayersPlay = 2 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + + if PlayersPlay = 3 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + if ScreenAct = 2 then begin + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[3].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + if ScreenAct = 2 then begin + Tekst := IntToStr(Player[3].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[4].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[5].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + end; + + + // beat flash +{ Flash := 1 - (Czas.MidBeat - Czas.AktBeat); + if (Czas.AktBeat + AktSong.NotesGAP) mod AktSong.Resolution = 0 then Flash := 1 + else Flash := 0; + if Czas.AktBeat < 0 then Flash := 0; + glClearColor(Flash, Flash, Flash, 1);} + + // beat sound +// if (Ini.BeatClick = 1) and (Flash = 1) and (Czas.AktBeat <> Czas.OldBeat) then Music.PlayClick; + + // draw static menu (BG) + DrawBG; + //Draw Background + SingDrawBackground; + // update and draw movie + if ShowFinish and AktSong.VideoLoaded then begin + UpdateSmpeg; // this only draws + end; + + // draw static menu (FG) + DrawFG; + + // check for music finish +// Log.LogError('Check for music finish: ' + BoolToStr(Music.Finished) + ' ' + FloatToStr(Czas.Teraz*1000) + ' ' + IntToStr(AktSong.Finish)); + if ShowFinish then begin + if (not Music.Finished) and ((AktSong.Finish = 0) or (Czas.Teraz*1000 <= AktSong.Finish)) then begin + //Pause Mod: + if not Paused then + Sing(Self); // analyze song + end else begin +// Log.LogError('End'); + if not FadeOut then begin +// Log.LogError('End2'); + Finish; + FadeOut := true; + FadeTo(@ScreenScore); + end; + end; + end; + + // draw custom items + SingDraw; // always draw + + + // back stereo + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; + + + Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX; + + + + Text[TextP1].X := Text[TextP1].X - 10*ScreenX; + Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX; + + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; + + + + Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX; + + + + Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX; + Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX; + + for S := 1 to 1 do + Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX; + + for T := 0 to 1 do + Text[T].X := Text[T].X - 10*ScreenX; + +end; + +procedure TScreenSing.Finish; +begin + Music.CaptureStop; + Music.Stop; + + if Ini.SavePlayback = 1 then begin + Log.BenchmarkStart(0); + Log.LogVoice(0); + Log.LogVoice(1); + Log.LogVoice(2); + Log.BenchmarkEnd(0); + Log.LogBenchmark('Creating files', 0); + end; + + if AktSong.VideoLoaded then begin + CloseSmpeg; + AktSong.VideoLoaded := false; // to prevent drawing closed video + end; +end; + +procedure TScreenSing.UpdateLCD; +var + T: string; +begin + LCD.HideCursor; + LCD.Clear; + + T := LyricMain.Text; + if Copy(T, Length(T), 1) <> ' ' then T := T + ' '; + LCD.AddTextBR(T); + + T := LyricSub.Text; + if Copy(T, Length(T), 1) <> ' ' then T := T + ' '; + LCD.AddTextBR(T); +end; + +procedure TScreenSing.onSentenceEnd(S: Cardinal); +var +I: Integer; +A: Real; +B: integer; //Max Points for Notes +begin + +//Check for Empty Sentence +if (Czesci[0].Czesc[S].TotalNotes<=0) then + exit; + +//Set Max Note Points +if (Ini.LineBonus > 0) then + B := 9000 +else + B := 10000; + +for I := 0 to High(Player) do begin + A := Player[I].Score + Player[I].ScoreGolden - Player[I].ScoreLast + 2; + + //SingBar Mod + If ({(Ini.Oscilloscope = 2) and }(Czesci[0].Czesc[S].TotalNotes>0)) then + begin + Player[I].ScorePercentTarget := Player[I].ScorePercentTarget + floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 40 - 26); + if Player[I].ScorePercentTarget < 0 then Player[I].ScorePercentTarget := 0; + if Player[I].ScorePercentTarget > 99 then Player[I].ScorePercentTarget := 99; + + //end Singbar Mod + end; + + //PhrasenBonus - Line Bonus Mod + + If (Ini.LineBonus > 0) then + begin + + //Generate Steps 0 to 8 + A := Floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 8); + if A >= 8 then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_PERFECT') + else if (A = 6) or (A = 7) then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BETTER') + else if A = 5 then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_GOOD') + else if (A = 3) or (A = 4) then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_NORMAL') + else if A = 2 then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BAD') + else + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_WORST'); + + //PhrasenBonus give Points + Player[I].ScoreLine := Player[I].ScoreLine + (1000 / (Length(Czesci[0].Czesc) - NumEmptySentences) * A / 8); + Player[I].ScoreLineI := Round(Player[I].ScoreLine / 10) * 10; + //Update Total Score + Player[I].ScoreTotalI := Player[I].ScoreI + Player[I].ScoreGoldenI + Player[I].ScoreLineI; + + //Color + Player[I].LineBonus_Color.B := 0; + Player[I].LineBonus_Color.R := (8-A)/8; + Player[I].LineBonus_Color.G := A/10; + + Player[I].LineBonus_PosX := Player[I].LineBonus_StartX; + Player[I].LineBonus_PosY := Player[I].LineBonus_StartY; + Player[I].LineBonus_Alpha := 0.92; + Player[I].LineBonus_Visible := True; + + + + end; + +//Refresh LastScore +Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; + +end; +//PhrasenBonus - Line Bonus Mod End// } + +end; + +end. diff --git a/Game/Code/Screens/UScreenSingModi.dcu b/Game/Code/Screens/UScreenSingModi.dcu new file mode 100644 index 00000000..4f806afe Binary files /dev/null and b/Game/Code/Screens/UScreenSingModi.dcu differ diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas new file mode 100644 index 00000000..88034f61 --- /dev/null +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -0,0 +1,1088 @@ +unit UScreenSingModi; + +interface + +uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, + TextGL, OpenGL12, BASS, UThemes, ULCD, UScreenSing, ModiSDK; + +type + TScreenSingModi = class(TScreenSing) + protected + //paused: boolean; //Pause Mod + //PauseTime: Real; + //NumEmptySentences: integer; + public + //TextTime: integer; + + //StaticP1: integer; + //StaticP1ScoreBG: integer; + //TextP1: integer; + //TextP1Score: integer; + + //StaticP2R: integer; + //StaticP2RScoreBG: integer; + //TextP2R: integer; + //TextP2RScore: integer; + + //StaticP2M: integer; + //StaticP2MScoreBG: integer; + //TextP2M: integer; + //TextP2MScore: integer; + + //StaticP3R: integer; + //StaticP3RScoreBG: integer; + //TextP3R: integer; + //TextP3RScore: integer; + + //Tex_Background: TTexture; + //FadeOut: boolean; + //LyricMain: TLyric; + //LyricSub: TLyric; + Winner: Byte; //Who Wins + PlayerInfo: TPlayerInfo; + TeamInfo: TTeamInfo; + + constructor Create; override; + procedure onShow; override; + //procedure onShowFinish; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function Draw: boolean; override; + procedure Finish; override; + //procedure UpdateLCD; + //procedure Pause; //Pause Mod(Toggles Pause) + end; + +//Procedured for Plugin +function LoadTex (const Name, Typ: PChar): TsmallTexture; stdcall; +//function Translate (const Name: PChar): PChar; stdcall; +procedure Print (const Style, Size: Byte; const X, Y: Real; const Text: PChar); stdcall; //Procedure to Print Text +function LoadSound (const Name: PChar): Cardinal; stdcall; //Procedure that loads a Custom Sound +procedure PlaySound (const Index: Cardinal); stdcall; //Plays a Custom Sound + +//Utilys +function ToSentences(Const Czeski: TCzesci): TSentences; + +implementation +uses UGraphic, UDraw, UMain, Classes, URecord, ULanguage, math, UDLLManager, USkins; + +// Method for input parsing. If False is returned, GetNextWindow +// should be checked to know the next window to load; +function TScreenSingModi.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Finish; + Music.PlayBack; + FadeTo(@ScreenPartyScore); + end; + + else + Result := inherited ParseInput(PressedKey, ScanCode, PressedDown); + end; + end; +end; + +constructor TScreenSingModi.Create; +begin + inherited Create; + +end; + +function ToSentences(Const Czeski: TCzesci): TSentences; +var + I, J: Integer; +begin + Result.Akt := Czeski.Akt; + Result.High := Czeski.High; + Result.Ilosc := Czeski.Ilosc; + Result.Resolution := Czeski.Resolution; + Result.NotesGAP := Czeski.NotesGAP; + Result.TotalLength := Czeski.Wartosc; + + SetLength(Result.Sentence, Length(Czeski.Czesc)); + for I := low(Result.Sentence) to high(Result.Sentence) do + begin + Result.Sentence[I].Start := Czeski.Czesc[I].Start; + Result.Sentence[I].StartNote := Czeski.Czesc[I].StartNote; + Result.Sentence[I].Lyric := Czeski.Czesc[I].Lyric; + Result.Sentence[I].LyricWidth := Czeski.Czesc[I].LyricWidth; + Result.Sentence[I].Koniec := Czeski.Czesc[I].Koniec; + Result.Sentence[I].BaseNote := Czeski.Czesc[I].BaseNote; + Result.Sentence[I].HighNote := Czeski.Czesc[I].HighNut; + Result.Sentence[I].IlNut := Czeski.Czesc[I].IlNut; + Result.Sentence[I].TotalNotes := Czeski.Czesc[I].TotalNotes; + + SetLength(Result.Sentence[I].Note, Length(Czeski.Czesc[I].Nuta)); + for J := low(Result.Sentence[I].Note) to high(Result.Sentence[I].Note) do + begin + Result.Sentence[I].Note[J].Color := Czeski.Czesc[I].Nuta[J].Color; + Result.Sentence[I].Note[J].Start := Czeski.Czesc[I].Nuta[J].Start; + Result.Sentence[I].Note[J].Length := Czeski.Czesc[I].Nuta[J].Dlugosc; + Result.Sentence[I].Note[J].Ton := Czeski.Czesc[I].Nuta[J].Ton; + Result.Sentence[I].Note[J].TonGamy := Czeski.Czesc[I].Nuta[J].TonGamy; + //Result.Sentence[I].Note[J].Text := Czeski.Czesc[I].Nuta[J].Tekst; + Result.Sentence[I].Note[J].FreeStyle := Czeski.Czesc[I].Nuta[J].FreeStyle; + Result.Sentence[I].Note[J].Typ := Czeski.Czesc[I].Nuta[J].Wartosc; + end; + end; +end; + +procedure TScreenSingModi.onShow; +{var + P: integer; + V1: boolean; + V2R: boolean; + V2M: boolean; + V3R: boolean; + NR: TRecR; //Line Bonus Mod } +var + I: Integer; +begin + + { Log.LogStatus('Begin', 'onShow'); + FadeOut := false; // 0.5.0: early 0.5.0 problems were by this line commented + + // prepare players + SetLength(Player, PlayersPlay); +// Player[0].ScoreTotalI := 0; + + + case PlayersPlay of + 1: begin + V1 := true; + V2R := false; + V2M := false; + V3R := false; + end; + 2: begin + V1 := true; + V2R := true; + V2M := false; + V3R := false; + end; + 3: begin + V1 := true; + V2R := false; + V2M := true; + V3R := true; + end; + 4: begin // double screen + V1 := true; + V2R := true; + V2M := false; + V3R := false; + end; + 6: begin // double screen + V1 := true; + V2R := false; + V2M := true; + V3R := true; + end; + + end; + + + + Static[StaticP2R].Visible := V2R; + Static[StaticP2RScoreBG].Visible := V2R; + Text[TextP2R].Visible := V2R; + Text[TextP2RScore].Visible := V2R; + + Static[StaticP2M].Visible := V2M; + Static[StaticP2MScoreBG].Visible := V2M; + Text[TextP2M].Visible := V2M; + Text[TextP2MScore].Visible := V2M; + + Static[StaticP3R].Visible := V3R; + Static[StaticP3RScoreBG].Visible := V3R; + Text[TextP3R].Visible := V3R; + Text[TextP3RScore].Visible := V3R; + + + + // load notes + CzyscNuty; +// Log.LogWarning(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName, '!!!'); + AktSong := CatSongs.Song[CatSongs.Selected]; + + WczytajCzesci(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName); + AktSong.Path := CatSongs.Song[CatSongs.Selected].Path; +// AktSong.GAP := AktSong.GAP + 40 {4096 = 100ms for buffer}{ + 20 {microphone}{ + 60000 / AktSong.BPM[0].BPM / 2; // temporary until UMain will be fixed + + // set movie + if (AktSong.Video <> '') and FileExists(AktSong.Path + AktSong.Video) then begin + OpenSmpeg(AktSong.Path + AktSong.Video); + SkipSmpeg(AktSong.VideoGAP + AktSong.Start); + AktSong.VideoLoaded := true; + end; + + // set background + if (AktSong.Background <> '') and (AktSong.VideoLoaded = false) then + Tex_Background := Texture.LoadTexture(AktSong.Path + AktSong.Background) + else + Tex_Background.TexNum := -1; + + // play music (I) + //Music.CaptureStart; + Music.MoveTo(AktSong.Start); +// Music.Play; + + // prepare timer (I) +// CountSkipTimeSet; + Czas.Teraz := AktSong.Start; + Czas.Razem := Music.Length; + if (AktSong.Finish > 0) then Czas.Razem := AktSong.Finish / 1000; + Czas.OldBeat := -1; + for P := 0 to High(Player) do + ClearScores(P); + + // main text + LyricMain.Clear; + LyricMain.X := 400; + LyricMain.Y := Skin_LyricsT; + LyricMain.Scale := 1.4; //1.4 + LyricMain.Align := 1; + + // sub text + LyricSub.Clear; + LyricSub.X := 400; + LyricSub.Y := Skin_LyricsT + 42; //40 + LyricSub.Align := 1; + + // set custom options + case Ini.LyricsFont of + 0: + begin + LyricMain.FontStyle := 0; + LyricSub.FontStyle := 0; + LyricMain.Size := 14; // 13 + LyricSub.Size := 14; // 13 + LyricMain.ColR := Skin_FontR; + LyricMain.ColG := Skin_FontG; + LyricMain.ColB := Skin_FontB; //Change für Crazy Joker + {LyricMain.ColSR := Skin_FontHighlightR; + LyricMain.ColSG := Skin_FontHighlightG; + LyricMain.ColSB := Skin_FontHighlightB;1aa5dc} { + LyricMain.ColSR := 26/255; + LyricMain.ColSG := 165/255; + LyricMain.ColSB := 220/255; + + LyricSub.ColR := 0.6; + LyricSub.ColG := 0.6; + LyricSub.ColB := 0.6; + end; + 1: + begin + LyricMain.FontStyle := 2; + LyricSub.FontStyle := 2; + LyricMain.Size := 14; + LyricSub.Size := 14; + LyricMain.ColR := 0.75; + LyricMain.ColG := 0.75; + LyricMain.ColB := 1; + LyricMain.ColSR := 0.5; + LyricMain.ColSG := 0.5; + LyricMain.ColSB := 1; + LyricSub.ColR := 0.8; + LyricSub.ColG := 0.8; + LyricSub.ColB := 0.8; + end; + 2: + begin + LyricMain.FontStyle := 3; + LyricSub.FontStyle := 3; + LyricMain.Size := 12; + LyricSub.Size := 12; + LyricMain.ColR := 0.75; + LyricMain.ColG := 0.75; + LyricMain.ColB := 1; + LyricMain.ColSR := 0.5; + LyricMain.ColSG := 0.5; + LyricMain.ColSB := 1; + LyricSub.ColR := 0.8; + LyricSub.ColG := 0.8; + LyricSub.ColB := 0.8; + end; + end; // case + + case Ini.LyricsEffect of + 0: LyricMain.Style := 1; // 0 - one selected, 1 - selected all to the current + 1: LyricMain.Style := 2; + 2: LyricMain.Style := 3; + 3: LyricMain.Style := 4; + end; // case + + // fill texts + LyricMain.AddCzesc(0); + LyricMain.Selected := -1; + LyricSub.AddCzesc(1); + LyricSub.Selected := -1; + + UpdateLCD; + + //Deactivate Pause + Paused := False; + + {Static[StaticP2R].Visible := V2R; + Static[StaticP2RScoreBG].Visible := V2R; + Text[TextP2R].Visible := V2R; + Text[TextP2RScore].Visible := V2R; + + Static[StaticP2M].Visible := V2M; + Static[StaticP2MScoreBG].Visible := V2M; + Text[TextP2M].Visible := V2M; + Text[TextP2MScore].Visible := V2M; + + Static[StaticP3R].Visible := V3R; + Static[StaticP3RScoreBG].Visible := V3R; + Text[TextP3R].Visible := V3R; + Text[TextP3RScore].Visible := V3R;} { + + //Set Position of Line Bonus - PhrasenBonus + if (Ini.LineBonus = 1) then //Show Line Bonus at Scores + begin + Case PlayersPlay of + 1: begin + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + end; + + 2: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.X; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.X; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2RScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2RScoreBG.X; + Player[1].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; + end; + + 3: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2MScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_StartY := Theme.Sing.TextP2MScore.Y + 65; + + //P3 + Player[2].LineBonus_TargetX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP3RScore.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; + end; + + 4: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.x; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2RScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2RScoreBG.x; + Player[1].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; + + //P3 + Player[2].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P4 + Player[3].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.x; + Player[3].LineBonus_TargetY := Theme.Sing.TextP2RScore.Y; + Player[3].LineBonus_StartX := Theme.Sing.StaticP2RScoreBG.x; + Player[3].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; + end; + + 6: begin + //P1 + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P2 + Player[1].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_TargetY := Theme.Sing.TextP2MScore.Y; + Player[1].LineBonus_StartX := Theme.Sing.StaticP2MScoreBG.x; + Player[1].LineBonus_StartY := Theme.Sing.TextP2MScore.Y + 65; + + //P3 + Player[2].LineBonus_TargetX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP3RScore.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP3RScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; + + //P4 + Player[3].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; + Player[3].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; + Player[3].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; + Player[3].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + + //P5 + Player[4].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; + Player[4].LineBonus_TargetY := Theme.Sing.TextP2MScore.Y; + Player[4].LineBonus_StartX := Theme.Sing.StaticP2MScoreBG.x; + Player[4].LineBonus_StartY := Theme.Sing.TextP2MScore.Y + 65; + + //P6 + Player[5].LineBonus_TargetX := Theme.Sing.StaticP3RScoreBG.x; + Player[5].LineBonus_TargetY := Theme.Sing.TextP3RScore.Y; + Player[5].LineBonus_StartX := Theme.Sing.StaticP3RScoreBG.x; + Player[5].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; + end; + end; + end + else if (Ini.LineBonus = 2) then //Show Line Bonus at Notes + begin + //SingDrawNoteLines(Nr.Left + 10*ScreenX, 120, Nr.Right + 10*ScreenX, 12); + //SingDrawNoteLines(Nr.Left + 10*ScreenX, 245, Nr.Right + 10*ScreenX, 12); + //SingDrawNoteLines(Nr.Left + 10*ScreenX, 370, Nr.Right + 10*ScreenX, 12); + + // positions + if Ini.SingWindow = 0 then begin + NR.Left := 120; + end else begin + NR.Left := 20; + end; + NR.Right := 780; + + NR.Width := NR.Right - NR.Left; + NR.WMid := NR.Width / 2; + NR.Mid := NR.Left + NR.WMid; + + Case PlayersPlay of + 1: begin + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := Skin_P2_NotesB - 105; + end; + + 2: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; + end; + + 3: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := 120 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := 120 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := 245 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := 245 + 28; + + //P3 + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetY := 370 - 65 + 28; + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartY := 370 + 28; + end; + + 4: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; + + //P3 + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; + + //P4 + Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; + Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; + end; + + 6: begin + //P1 + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetY := 120 - 65 + 28; + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartY := 120 + 28; + + //P2 + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetY := 245 - 65 + 28; + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartY := 245 + 28; + + //P3 + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetY := 370 - 65 + 28; + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartY := 370 + 28; + + //P4 + Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_TargetY := 120 - 65 + 28; + Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_StartY := 120 + 28; + + //P5 + Player[4].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[4].LineBonus_TargetY := 245 - 65 + 28; + Player[4].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[4].LineBonus_StartY := 245 + 28; + + //P6 + Player[5].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[5].LineBonus_TargetY := 370 - 65 + 28; + Player[5].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[5].LineBonus_StartY := 370 + 28; + end; + end; + end; + //Set Position of Line Bonus - PhrasenBonus End + //Set Num of Empty Sentences for Phrasen Bonus + NumEmptySentences := 0; + for P := low(Czesci[0].Czesc) to high(Czesci[0].Czesc) do + if Czesci[0].Czesc[P].TotalNotes = 0 then Inc(NumEmptySentences); + + Log.LogStatus('End', 'onShow'); } + +PlayersPlay := TeamInfo.NumTeams; + +if DLLMan.Selected.LoadSong then //Start with Song +begin + inherited; +end +else //Start Without Song +begin + Music.CaptureStart; +end; + +//Set Playerinfo + PlayerInfo.NumPlayers := PlayersPlay; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Name := PChar(Ini.Name[I]); + PlayerInfo.Playerinfo[I].Score:= 0; + PlayerInfo.Playerinfo[I].Bar := 50; + PlayerInfo.Playerinfo[I].Enabled := True; + end; + + for I := PlayerInfo.NumPlayers to high(PlayerInfo.Playerinfo) do + begin + PlayerInfo.Playerinfo[I].Score:= 0; + PlayerInfo.Playerinfo[I].Bar := 0; + PlayerInfo.Playerinfo[I].Enabled := False; + end; + + Case PlayersPlay of + 1: begin + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + end; + 2,4: begin + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + PlayerInfo.Playerinfo[2].PosX := Static[StaticP1ScoreBG].Texture.X; + PlayerInfo.Playerinfo[2].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + PlayerInfo.Playerinfo[1].PosX := Static[StaticP2RScoreBG].Texture.X; + PlayerInfo.Playerinfo[1].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; + PlayerInfo.Playerinfo[3].PosX := Static[StaticP2RScoreBG].Texture.X; + PlayerInfo.Playerinfo[3].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; + end; + 3,6: begin + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + PlayerInfo.Playerinfo[3].PosX := Static[StaticP1ScoreBG].Texture.X; + PlayerInfo.Playerinfo[3].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + PlayerInfo.Playerinfo[1].PosX := Static[StaticP2MScoreBG].Texture.X; + PlayerInfo.Playerinfo[1].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; + PlayerInfo.Playerinfo[4].PosX := Static[StaticP2MScoreBG].Texture.X; + PlayerInfo.Playerinfo[4].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; + PlayerInfo.Playerinfo[2].PosX := Static[StaticP3RScoreBG].Texture.X; + PlayerInfo.Playerinfo[2].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H; + PlayerInfo.Playerinfo[5].PosX := Static[StaticP3RScoreBG].Texture.X; + PlayerInfo.Playerinfo[5].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H; + end; + end; + + // play music (I) + //Music.CaptureStart; + //Music.MoveTo(AktSong.Start); + +//Init Plugin +if not DLLMan.PluginInit(TeamInfo, PlayerInfo, ToSentences(Czesci[0]), LoadTex, Print, LoadSound, PlaySound) then +begin +//Fehler +Log.LogError('Could not Init Plugin'); +Halt; +end; + +Winner := 0; +//Set Score Visibility + if PlayersPlay = 1 then begin + Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; + end; + + if (PlayersPlay = 2) OR (PlayersPlay = 4) then begin + Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; + + Text[TextP2RScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP2RScoreBG].Visible := DLLMan.Selected.ShowScore; + end; + + if (PlayersPlay = 3) OR (PlayersPlay = 6) then begin + Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; + + Text[TextP2MScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP2MScoreBG].Visible := DLLMan.Selected.ShowScore; + + Text[TextP3RScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP3RScoreBG].Visible := DLLMan.Selected.ShowScore; + end; +end; + +function TScreenSingModi.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + S, I: integer; + T: integer; +begin +//Set Playerinfo + PlayerInfo.NumPlayers := PlayersPlay; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Name := PChar(Player[I].Name); + if PlayerInfo.Playerinfo[I].Enabled then + begin + if (Player[I].ScoreTotalI<=10000) then + PlayerInfo.Playerinfo[I].Score:= Player[I].ScoreTotalI; + PlayerInfo.Playerinfo[I].Bar := Player[I].ScorePercent; + end; + end; + +//Show Score +if DLLMan.Selected.ShowScore then +begin + //ScoreBG Mod + // set player colors + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); + + + + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P4Dark'); + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P4Dark'); + + + + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P3Dark'); + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, + Static[StaticP3RScoreBG].Texture.ColB, 'P3Dark'); + + + + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, + Static[StaticP1].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P6Dark'); + + + + + LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, + Static[StaticP1ScoreBG].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, + Static[StaticP3RScoreBG].Texture.ColB, 'P6Dark'); + + + + + end; + end; + //end ScoreBG Mod + +// set player names (for 2 screens and only Singstar skin) + if ScreenAct = 1 then begin + Text[TextP1].Text := 'P1'; + Text[TextP2R].Text := 'P2'; + Text[TextP2M].Text := 'P2'; + Text[TextP3R].Text := 'P3'; + end; + + if ScreenAct = 2 then begin + case PlayersPlay of + 4: begin + Text[TextP1].Text := 'P3'; + Text[TextP2R].Text := 'P4'; + end; + 6: begin + Text[TextP1].Text := 'P4'; + Text[TextP2M].Text := 'P5'; + Text[TextP3R].Text := 'P6'; + end; + end; // case + end; // if + + + // stereo + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; + Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX; + + Text[TextP1].X := Text[TextP1].X + 10*ScreenX; + Text[TextP1Score].X := Text[TextP1Score].X + 10*ScreenX; + + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX; + Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X + 10*ScreenX; + + Text[TextP2R].X := Text[TextP2R].X + 10*ScreenX; + Text[TextP2RScore].X := Text[TextP2RScore].X + 10*ScreenX; + + // .. and scores + if PlayersPlay = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + end; + + if PlayersPlay = 2 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + + if PlayersPlay = 3 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + if ScreenAct = 2 then begin + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[3].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + if ScreenAct = 2 then begin + Tekst := IntToStr(Player[3].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + + Tekst := IntToStr(Player[4].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[5].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + end; + +end; //ShowScore + + for S := 1 to 1 do + Static[S].Texture.X := Static[S].Texture.X + 10*ScreenX; + + for T := 0 to 1 do + Text[T].X := Text[T].X + 10*ScreenX; + +if DLLMan.Selected.LoadSong then +begin + // update static menu with time ... + Min := Round(Czas.Teraz) div 60; + Sec := Round(Czas.Teraz) mod 60; + Text[TextTime].Text := ''; + if Min < 10 then Text[TextTime].Text := '0'; + Text[TextTime].Text := Text[TextTime].Text + IntToStr(Min) + ':'; + if Sec < 10 then Text[TextTime].Text := Text[TextTime].Text + '0'; + Text[TextTime].Text := Text[TextTime].Text + IntToStr(Sec); +end; + + // draw static menu (BG) + DrawBG; + + //Draw Background + if (DllMan.Selected.LoadSong) AND (DllMan.Selected.LoadBack) then + SingDrawBackground; + + // update and draw movie + if ShowFinish and AktSong.VideoLoaded AND DllMan.Selected.LoadVideo then begin + UpdateSmpeg; // this only draws + end; + + // draw static menu (FG) + DrawFG; + + if ShowFinish then begin + if DllMan.Selected.LoadSong then + begin + if (not Music.Finished) and ((AktSong.Finish = 0) or (Czas.Teraz*1000 <= AktSong.Finish)) then begin + //Pause Mod: + if not Paused then + Sing(Self); // analyze song + end else begin + if not FadeOut then begin + Finish; + FadeOut := true; + FadeTo(@ScreenPartyScore); + end; + end; + end; + end; + + // draw custom items + SingModiDraw(PlayerInfo); // always draw + + //Update PlayerInfo + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + if PlayerInfo.Playerinfo[I].Enabled then + begin + PlayerInfo.Playerinfo[I].Bar := Player[I].ScorePercent; + PlayerInfo.Playerinfo[I].Score := Player[I].ScoreTotalI; + end; + end; + + if ((ShowFinish) AND (NOT Paused)) then + begin + if not DLLMan.PluginDraw(Playerinfo, Czesci[0].Akt) then + begin + if not FadeOut then begin + Finish; + FadeOut := true; + FadeTo(@ScreenPartyScore); + end; + end; + end; + + //Change PlayerInfo/Changeables + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + if (Player[I].ScoreTotalI <> PlayerInfo.Playerinfo[I].Score) then + begin + //Player[I].ScoreTotal := Player[I].ScoreTotal + (PlayerInfo.Playerinfo[I].Score - Player[I].ScoreTotalI); + Player[I].ScoreTotalI := PlayerInfo.Playerinfo[I].Score; + end; + if (PlayerInfo.Playerinfo[I].Bar <> Player[I].ScorePercent) then + Player[I].ScorePercentTarget := PlayerInfo.Playerinfo[I].Bar; + end; + + // back stereo + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; + + + Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX; + + + + Text[TextP1].X := Text[TextP1].X - 10*ScreenX; + Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX; + + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; + + + + Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX; + + + + Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX; + Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX; + + for S := 1 to 1 do + Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX; + + for T := 0 to 1 do + Text[T].X := Text[T].X - 10*ScreenX; + + +end; + +procedure TScreenSingModi.Finish; +begin +inherited Finish; + +Winner := DllMan.PluginFinish(PlayerInfo); + +//Log.LogError('Winner: ' + InttoStr(Winner)); + +//DLLMan.UnLoadPlugin; +end; + +function LoadTex (const Name, Typ: PChar): TsmallTexture; stdcall; +var + Texname, EXT: String; + Tex: TTexture; +begin + //Get texture Name + TexName := Skin.GetTextureFileName(String(Name)); + //Get File Typ + Ext := ExtractFileExt(TexName); + if (uppercase(Ext) = '.JPG') then + Ext := 'JPG' + else + Ext := 'BMP'; + + Tex := Texture.LoadTexture(PChar(TexName), PChar(Ext), Typ, 0); + + Result.TexNum := Tex.TexNum; + Result.W := Tex.W; + Result.H := Tex.H; + Result.ScaleW := Tex.ScaleW; + Result.ScaleH := Tex.ScaleH; +end; +{ +function Translate (const Name: PChar): PChar; stdcall; +begin + Result := PChar(Language.Translate(String(Name))); +end; } + +procedure Print (const Style, Size: Byte; const X, Y: Real; const Text: PChar); stdcall; //Procedure to Print Text +begin + SetFontItalic ((Style and 128) = 128); + SetFontStyle(Style and 7); + SetFontSize(Size); + SetFontPos (X, Y); + glPrint (PChar(Language.Translate(String(Text)))); +end; + +function LoadSound (const Name: PChar): Cardinal; stdcall; //Procedure that loads a Custom Sound +begin + Result := Music.LoadCustomSound(String(Name)); +end; + +procedure PlaySound (const Index: Cardinal); stdcall; //Plays a Custom Sound +begin + Music.PlayCustomSound(Index); +end; + +end. diff --git a/Game/Code/Screens/UScreenSong.dcu b/Game/Code/Screens/UScreenSong.dcu new file mode 100644 index 00000000..abc9cc4f Binary files /dev/null and b/Game/Code/Screens/UScreenSong.dcu differ diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas new file mode 100644 index 00000000..0d7860a7 --- /dev/null +++ b/Game/Code/Screens/UScreenSong.pas @@ -0,0 +1,1690 @@ +unit UScreenSong; + +interface + +uses + UMenu, SDL, UMusic, UPliki, UTime, UDisplay, USongs, SysUtils, ULog, UThemes, UTexture, ULanguage, + ULCD, ULight, UIni; + +type + TScreenSong = class(TMenu) + public + TextArtist: integer; + TextTitle: integer; + TextNumber: integer; + + TextCat: integer; + StaticCat: integer; + + SongCurrent: real; + SongTarget: real; + + HighSpeed: boolean; + CoverFull: boolean; + CoverTime: real; + CoverX: integer; + CoverY: integer; + CoverW: integer; + is_jump: boolean; // Jump to Song Mod + is_jump_title:boolean; //Jump to SOng MOd-YTrue if search for Title + + EqualizerBands: array of Byte; + EqualizerTime: Cardinal; + EqualizerTime2: Byte; + + //Party Mod + Mode: Byte; //0 = Standard, 1= Go to PartyMode after Selection + Change to Random Song at Show + //party Statics (Joker) + StaticTeam1Joker1: Cardinal; + StaticTeam1Joker2: Cardinal; + StaticTeam1Joker3: Cardinal; + StaticTeam1Joker4: Cardinal; + StaticTeam1Joker5: Cardinal; + + StaticTeam2Joker1: Cardinal; + StaticTeam2Joker2: Cardinal; + StaticTeam2Joker3: Cardinal; + StaticTeam2Joker4: Cardinal; + StaticTeam2Joker5: Cardinal; + + StaticTeam3Joker1: Cardinal; + StaticTeam3Joker2: Cardinal; + StaticTeam3Joker3: Cardinal; + StaticTeam3Joker4: Cardinal; + StaticTeam3Joker5: Cardinal; + + constructor Create; override; + procedure SetScroll; + procedure SetScroll1; + procedure SetScroll2; + procedure SetScroll3; + procedure SetScroll4; + procedure SetScroll5; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function Draw: boolean; override; + procedure onShow; override; + procedure SelectNext; + procedure SelectPrev; + procedure UpdateLCD; + procedure SkipTo(Target: integer); + procedure FixSelected; //Show Wrong Song when Tabs on Fix + procedure FixSelected2; //Show Wrong Song when Tabs on Fix + procedure ShowCatTL(Cat: Integer);// Show Cat in Tob left + procedure HideCatTL;// Show Cat in Tob left + procedure Refresh; //Refresh Song Sorting + procedure DrawEqualizer; + //Party Mode + procedure SelectRandomSong; + procedure SetJoker; + + //procedures for Menu + procedure StartSong; + procedure OpenEditor; + procedure DoJoker(Team: Byte); + end; + +implementation +uses UGraphic, UMain, UCovers, math, OpenGL12, Windows, USkins, UDLLManager, UParty, UScreenSongMenu; + +// ***** Public methods ****** // + +//Show Wrong Song when Tabs on Fix +procedure TScreenSong.FixSelected; +var I, I2: Integer; + begin + I2:= 0; + for I := low(CatSongs.Song) to High(Catsongs.Song) do + begin + if CatSongs.Song[I].Visible then + inc(I2); + + if I = Interaction - 1 then + break; + end; + + SongCurrent := I2; + SongTarget := I2; + end; + +procedure TScreenSong.FixSelected2; +var I, I2: Integer; + begin + I2:= 0; + for I := low(CatSongs.Song) to High(Catsongs.Song) do + begin + if CatSongs.Song[I].Visible then + inc(I2); + + if I = Interaction - 1 then + break; + end; + + SongTarget := I2; + end; +//Show Wrong Song when Tabs on Fix End + + //Show Cat in Top Left Mod + procedure TScreenSong.ShowCatTL(Cat: Integer); + begin + //Change + Text[TextCat].Text := CatSongs.Song[Cat].Artist; + //showmessage(CatSongs.Song[Cat].Path + CatSongs.Song[Cat].Cover); + //Static[StaticCat].Texture := Texture.GetTexture(Button[Cat].Texture.Name, 'Plain', true); + + Static[StaticCat].Texture := Texture.GetTexture(CatSongs.Song[Cat].Path + CatSongs.Song[Cat].Cover, 'Plain', true); + //Texture.GetTexture(Button[Cat].Texture.Name, 'Plain', false); + //Button[Cat]. + //Cover + + + //Show + Text[TextCat].Visible := true; + Static[StaticCat].Visible := True; + end; + procedure TScreenSong.HideCatTL; + begin + //Hide + Text[TextCat].Visible := false; + Static[StaticCat].Visible := false; + end; + //Show Cat in Top Left Mod End + + +// Method for input parsing. If False is returned, GetNextWindow +// should be checked to know the next window to load; +function TScreenSong.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +var + I: integer; + I2: integer; + HS: integer; + SDL_ModState: Word; + Letter: Char; +begin + Result := true; + + //Song Menu + if (ScreenSongMenu.Visible) then + begin + Result := ScreenSongMenu.ParseInput(PressedKey, ScanCode, PressedDown); + Exit; + end; + + If (PressedDown) Then + begin // Key Down + +// HS := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT); +{ if (not HighSpeed) and (HS > 0) then begin + HighSpeed := true; + SDL_EnableKeyRepeat(50, 50); + end; + if (HighSpeed) and (HS = 0) then begin + HighSpeed := false; + SDL_EnableKeyRepeat(125, 125); + end;} + + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); + + // Jump to Key Mod + if (SDL_ModState = KMOD_LALT) AND (Mode = 0) then //Jump to Key + begin + //get Letter + case PressedKey of + SDLK_A : Letter := 'A'; + SDLK_B : Letter := 'B'; + SDLK_C : Letter := 'C'; + SDLK_D : Letter := 'D'; + SDLK_E : Letter := 'E'; + SDLK_F : Letter := 'F'; + SDLK_G : Letter := 'G'; + SDLK_H : Letter := 'H'; + SDLK_I : Letter := 'I'; + SDLK_J : Letter := 'J'; + SDLK_K : Letter := 'K'; + SDLK_L : Letter := 'L'; + SDLK_M : Letter := 'M'; + SDLK_N : Letter := 'N'; + SDLK_O : Letter := 'O'; + SDLK_P : Letter := 'P'; + SDLK_Q : Letter := 'Q'; + SDLK_R : Letter := 'R'; + SDLK_S : Letter := 'S'; + SDLK_T : Letter := 'T'; + SDLK_U : Letter := 'U'; + SDLK_V : Letter := 'V'; + SDLK_W : Letter := 'W'; + SDLK_X : Letter := 'X'; + SDLK_Y : Letter := 'Y'; + SDLK_Z : Letter := 'Z'; + SDLK_1 : Letter := '1'; + SDLK_2 : Letter := '2'; + SDLK_3 : Letter := '3'; + SDLK_4 : Letter := '4'; + SDLK_5 : Letter := '5'; + SDLK_6 : Letter := '6'; + SDLK_7 : Letter := '7'; + SDLK_8 : Letter := '8'; + SDLK_9 : Letter := '9'; + SDLK_0 : Letter := '0'; + else exit; + end; + + {//Search Letter + for I := Interaction + 1 to high(CatSongs.Song) do + begin + if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then + break; //Found Song + if I = Interaction then //went through complete array but nothing Found + break; + if I = high(CatSongs.Song) then //At the end of the array->Go to beginning + for I2 := low(CatSongs.Song) to Interaction do + if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then + break; //Found Song + end; } + + for I := 0 to High(CatSongs.Song) do begin + if (CatSongs.Song[I].Visible) AND (UpperCase(CatSongs.Song[I].Artist[1]) = Letter) then + begin + //Select Song + Interaction := I; + SkipTo(Interaction); + break; + end; + end; + + //Don't do other Functions + exit; + end; + + if (SDL_ModState = KMOD_LALT or KMOD_LSHIFT) then //Jump to Key + begin + //get Letter + case PressedKey of + SDLK_a..SDLK_z : Letter := Chr(Ord('a')+PressedKey-97); + SDLK_1 : Letter := '1'; + SDLK_2 : Letter := '2'; + SDLK_3 : Letter := '3'; + SDLK_4 : Letter := '4'; + SDLK_5 : Letter := '5'; + SDLK_6 : Letter := '6'; + SDLK_7 : Letter := '7'; + SDLK_8 : Letter := '8'; + SDLK_9 : Letter := '9'; + SDLK_0 : Letter := '0'; + else exit; + end; + + {//Search Letter + for I := Interaction + 1 to high(CatSongs.Song) do + begin + if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then + break; //Found Song + if I = Interaction then //went through complete array but nothing Found + break; + if I = high(CatSongs.Song) then //At the end of the array->Go to beginning + for I2 := low(CatSongs.Song) to Interaction do + if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then + break; //Found Song + end; } + + {for I := 0 to High(CatSongs.Song) do begin + if (CatSongs.Song[I].Visible) AND (UpperCase(CatSongs.Song[I].Artist[1]) = Letter) then} + + for I := Interaction + 1 to high(CatSongs.Song) + 1 do + begin + if (I > high(CatSongs.Song)) then + begin + for I2 := low(CatSongs.Song) to Interaction do + begin + if CatSongs.Song[I2].Visible and (Letter = lowercase(CatSongs.Song[I2].Artist[1])) then + begin + Interaction := I2; + break; //Found Song + end; + end; + break; + end + else if CatSongs.Song[I].Visible and (Letter = lowercase(CatSongs.Song[I].Artist[1])) then + begin + Interaction := I; + break; //Found Song + end; + end; + + + //Select Song + SkipTo(Interaction); + + //Don't do other Functions + exit; + end; + + + case PressedKey of + SDLK_ESCAPE : + begin + if (Mode = 0) then + begin + //On Escape goto Cat-List Hack + if (Ini.Tabs_at_startup = 1) AND (CatSongs.CatNumShow <> -1) then + begin + //Find Category + I := Interaction; + while not catsongs.Song[I].Main do + begin + Dec (I); + if (I < low(catsongs.Song)) then + break; + end; + if (I<= 1) then + Interaction := high(catsongs.Song) + else + Interaction := I - 1; + + //Stop Music + Music.Stop; + + CatSongs.ShowCategoryList; + + //Show Cat in Top Left Mod + HideCatTL; + + + //Show Wrong Song when Tabs on Fix + SelectNext; + FixSelected; + //SelectPrev; + //CatSongs.Song[0].Visible := False; + end + else + begin + //On Escape goto Cat-List Hack End + Music.Stop; + Music.PlayBack; +// FadeTo(@ScreenLevel); + FadeTo(@ScreenMain); + +// Music.Open(Skin.SkinPath + 'Menu Music 3.mp3'); +// Music.Play; + end; + end; + end; + SDLK_RETURN: + begin + if Length(Songs.Song) > 0 then begin +// PortWriteB($378, 0); + if CatSongs.Song[Interaction].Main then begin // clicked on Category Button + + //Show Cat in Top Left Mod + ShowCatTL (Interaction); + + //I := CatSongs.VisibleIndex(Interaction); + CatSongs.ClickCategoryButton(Interaction); + {I2 := CatSongs.VisibleIndex(Interaction); + SongCurrent := SongCurrent - I + I2; + SongTarget := SongTarget - I + I2; } + +// if I<>I2 then beep; + // SetScroll4; + + //Show Wrong Song when Tabs on Fix + SelectNext; + FixSelected; + + //Play Music: + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + + end else begin // clicked on song + if (Mode = 0) then //Normal Mode -> Start Song + begin + StartSong; + + end + else if (Mode = 1) then //PartyMode -> Show Menu + begin + ScreenSongMenu.Visible := True; + ScreenSongMenu.MenuShow(SM_Party_Main); + end; + end; + end; + end; + + SDLK_M: //Show SongMenu + begin + if Length(Songs.Song) > 0 then begin + if not CatSongs.Song[Interaction].Main then begin // clicked on Song + ScreenSongMenu.Visible := True; + ScreenSongMenu.MenuShow(SM_Main); + end; + end; + end; + + SDLK_DOWN: + begin + if (Mode = 0) then + begin +{ if Length(Songs.Song) > 0 then begin + Music.PlayChange; + InteractNext; + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then Music.Play; + SetScroll; + end;} + + //Cat Change Hack + if Ini.Tabs_at_startup = 1 then + begin + I := Interaction; + if I <= 0 then I := 1; + + while not catsongs.Song[I].Main do + begin + Inc (I); + if (I > high(catsongs.Song)) then + I := low(catsongs.Song); + end; + + Interaction := I; + + //Show Cat in Top Left Mod + ShowCatTL (Interaction); + + CatSongs.ClickCategoryButton(Interaction); + SelectNext; + FixSelected; + + //Play Music: + Music.PlayChange; + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + + end; + + // + //Cat Change Hack End} + end; + end; + SDLK_UP: + begin + if (Mode = 0) then + begin +{ if Length(Songs.Song) > 0 then begin + Music.PlayChange; + InteractPrev; + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then Music.Play; + SetScroll; + end;} + //Cat Change Hack + if Ini.Tabs_at_startup = 1 then + begin + I := Interaction; + I2 := 0; + if I <= 0 then I := 1; + + while not catsongs.Song[I].Main or (I2 = 0) do + begin + if catsongs.Song[I].Main then + Inc(I2); + Dec (I); + if (I < low(catsongs.Song)) then + I := high(catsongs.Song); + end; + + Interaction := I; + + //Show Cat in Top Left Mod + ShowCatTL (I); + + CatSongs.ClickCategoryButton(I); + SelectNext; + FixSelected; + + //Play Music: + Music.PlayChange; + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + + end; + + // + //Cat Change Hack End} + end; + end; + + SDLK_RIGHT: + begin + if (Length(Songs.Song) > 0) AND (Mode = 0) then begin + Music.PlayChange; + SelectNext; +// InteractNext; +// SongTarget := Interaction; + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + SetScroll4; + UpdateLCD; + Light.LightOne(1, 200); + end; + end; + + SDLK_LEFT: + begin + if (Length(Songs.Song) > 0)AND (Mode = 0) then begin + Music.PlayChange; + SelectPrev; + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + SetScroll4; + UpdateLCD; + Light.LightOne(0, 200); + end; + end; + + SDLK_E: + begin + OpenEditor; + end; + + SDLK_R: + begin + if (Length(Songs.Song) > 0) AND (Mode = 0) then begin + + if (SDL_ModState = KMOD_LSHIFT) AND (Ini.Tabs_at_startup = 1) then //Random Category + begin + I2 := 0; //Count Cats + for I:= low(CatSongs.Song) to high (CatSongs.Song) do + if CatSongs.Song[I].Main then Inc(I2); + + I2 := Random (I2)+1; //Zufall + + //Find Cat: + for I:= low(CatSongs.Song) to high (CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + Dec(I2); + if (I2<=0) then + begin + //Show Cat in Top Left Mod + ShowCatTL (I); + + Interaction := I; + + CatSongs.ShowCategoryList; + CatSongs.ClickCategoryButton(I); + SelectNext; + FixSelected; + break; + end; + end; + + + end + else if (SDL_ModState = KMOD_LCTRL) AND (Ini.Tabs_at_startup = 1) then //random in All Categorys + begin + repeat + I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; + until CatSongs.Song[I2].Main = false; + + //Search Cat + for I := I2 downto low(CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + break; + end; + //In I ist jetzt die Kategorie in I2 der Song + + //Choose Cat + CatSongs.ShowCategoryList; + + //Show Cat in Top Left Mod + ShowCatTL (I); + + CatSongs.ClickCategoryButton(I); + SelectNext; + + //Fix: Not Existing Song selected: + if (I+1=I2) then Inc(I2); + + //Choose Song + SkipTo(I2-I); + + end + else //Random in one Category + begin + SkipTo(2+Random(CatSongs.VisibleSongs-1)); + end; + Music.PlayChange; + + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + SetScroll4; + UpdateLCD; + end; + end; + + SDLK_1: + begin //Jocker + if (Mode = 1) AND (PartySession.Teams.NumTeams >= 1) AND (PartySession.Teams.Teaminfo[0].Joker > 0) then + begin + //Joker spielen + Dec(PartySession.Teams.Teaminfo[0].Joker); + SelectRandomSong; + SetJoker; + end; + end; + + SDLK_2: + begin //Jocker + if (Mode = 1) AND (PartySession.Teams.NumTeams >= 2) AND (PartySession.Teams.Teaminfo[1].Joker > 0) then + begin + //Joker spielen + Dec(PartySession.Teams.Teaminfo[1].Joker); + SelectRandomSong; + SetJoker; + end; + end; + + SDLK_3: + begin //Jocker + if (Mode = 1) AND (PartySession.Teams.NumTeams >= 3) AND (PartySession.Teams.Teaminfo[2].Joker > 0) then + begin + //Joker spielen + Dec(PartySession.Teams.Teaminfo[2].Joker); + SelectRandomSong; + SetJoker; + end; + end; + + SDLK_Q: + begin + Result := false; + end; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenSong.Create; +var + Pet: integer; + I: integer; +begin + inherited Create; + +// AddStatic(200, 10, 400, 90, Skin.SelectSong); +// AddStatic(200-10, 140-5, 400+20, 50+10, Skin.Selection, 'JPG', 'Font Gray'); + + AddBackground(Theme.Song.Background.Tex); + + for I := 0 to High(Theme.Song.Static) do + AddStatic(Theme.Song.Static[I]); + + for I := 0 to High(Theme.Song.Text) do + AddText(Theme.Song.Text[I]); + + TextArtist := AddText(Theme.Song.TextArtist); + TextTitle := AddText(Theme.Song.TextTitle); + TextNumber := AddText(Theme.Song.TextNumber); + + //Show Cat in Top Left mod + TextCat := AddText(Theme.Song.TextCat); + StaticCat := AddStatic(Theme.Song.StaticCat); + + //Party Mode + StaticTeam1Joker1 := AddStatic(Theme.Song.StaticTeam1Joker1); + StaticTeam1Joker2 := AddStatic(Theme.Song.StaticTeam1Joker2); + StaticTeam1Joker3 := AddStatic(Theme.Song.StaticTeam1Joker3); + StaticTeam1Joker4 := AddStatic(Theme.Song.StaticTeam1Joker4); + StaticTeam1Joker5 := AddStatic(Theme.Song.StaticTeam1Joker5); + + StaticTeam2Joker1 := AddStatic(Theme.Song.StaticTeam2Joker1); + StaticTeam2Joker2 := AddStatic(Theme.Song.StaticTeam2Joker2); + StaticTeam2Joker3 := AddStatic(Theme.Song.StaticTeam2Joker3); + StaticTeam2Joker4 := AddStatic(Theme.Song.StaticTeam2Joker4); + StaticTeam2Joker5 := AddStatic(Theme.Song.StaticTeam2Joker5); + + StaticTeam3Joker1 := AddStatic(Theme.Song.StaticTeam3Joker1); + StaticTeam3Joker2 := AddStatic(Theme.Song.StaticTeam3Joker2); + StaticTeam3Joker3 := AddStatic(Theme.Song.StaticTeam3Joker3); + StaticTeam3Joker4 := AddStatic(Theme.Song.StaticTeam3Joker4); + StaticTeam3Joker5 := AddStatic(Theme.Song.StaticTeam3Joker5); + + // Song List +// Songs.LoadSongList; // moved to the UltraStar unit + CatSongs.Refresh; + for Pet := 0 to High(CatSongs.Song) do begin // creating all buttons + // new + Texture.Limit := 512;// 256 0.4.2 value, 512 in 0.5.0 + + if not FileExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then + CatSongs.Song[Pet].Cover := ''; // 0.5.0: if cover not found then show 'no cover' + + if CatSongs.Song[Pet].Cover = '' then + AddButton(300 + Pet*250, 140, 200, 200, Skin.GetTextureFileName('SongCover'), 'JPG', 'Plain', Theme.Song.Cover.Reflections) + else begin + // cache texture if there is a need to this + if not Covers.CoverExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then begin + Texture.CreateCacheMipmap := true; + Texture.GetTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'Plain', true); // preloads textures and creates cache mipmap + Texture.CreateCacheMipmap := false; + + // puts this texture to the cache file + Covers.AddCover(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover); + + // unload full size texture + Texture.UnloadTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, false); + + // we should also add mipmap texture by calling createtexture and use mipmap cache as data source + end; + + // and now load it from cache file (small place for the optimization by eliminating reading it from file, but not here) + AddButton(300 + Pet*250, 140, 200, 200, CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'JPG', 'Plain', Theme.Song.Cover.Reflections); + end; + Texture.Limit := 1024*1024; + + +// AddButtonText(11, 10, CatSongs.Song[Pet].Title); // new way + end; +// Covers.Save; + + { if Length(CatSongs.Song) > 0 then // setting to first song + Interaction := 0 + else begin // no song detected + AddButton(400-200, 140, 400, 50, Skin.Button, 'JPG', 'Transparent Range'); + AddButtonText(11, 10, 'No songs detected'); + end;} + + // Randomize Patch + Randomize; + //Equalizer + SetLength(EqualizerBands, Theme.Song.Equalizer.Bands); + //ClearArray + For I := low(EqualizerBands) to high(EqualizerBands) do + EqualizerBands[I] := 3; +end; + +procedure TScreenSong.SetScroll; +begin +//Set Positions + Case Theme.Song.Cover.Style of + 3: SetScroll3; + 5: SetScroll5 + else SetScroll4; + end; +//Set Texts: + Text[TextArtist].Text := CatSongs.Song[Interaction].Artist; + Text[TextTitle].Text := CatSongs.Song[Interaction].Title; + if (Ini.Tabs_at_startup = 1) And (CatSongs.CatNumShow = -1) then + begin + Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].OrderNum) + '/' + IntToStr(CatSongs.CatCount); + Text[TextTitle].Text := '(' + IntToStr(CatSongs.Song[Interaction].CatNumber) + ' ' + Language.Translate('SING_SONGS_IN_CAT') + ')'; + end + else if (Ini.Tabs_at_startup = 1) then + Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].CatNumber) + '/' + IntToStr(CatSongs.Song[Interaction - CatSongs.Song[Interaction].CatNumber].CatNumber) + else + Text[TextNumber].Text := IntToStr(Interaction+1) + '/' + IntToStr(Length(CatSongs.Song)); +end; + +procedure TScreenSong.SetScroll1; +var + B: integer; // button + BMin: integer; // button min + BMax: integer; // button max + Src: integer; +// Dst: integer; + Count: integer; // Dst is not used. Count is used. + Ready: boolean; + + VisCount: integer; // count of visible (or selectable) buttons + VisInt: integer; // visible position of interacted button + Typ: integer; // 0 when all songs fits the screen + Placed: integer; // number of placed visible buttons +begin +// Src := 0; +// Dst := -1; + Count := 1; + Typ := 0; + Ready := false; + Placed := 0; + + VisCount := 0; + for B := 0 to High(Button) do + if CatSongs.Song[B].Visible then Inc(VisCount); + + VisInt := 0; + for B := 0 to Interaction-1 do + if CatSongs.Song[B].Visible then Inc(VisInt); + + + if VisCount <= 6 then begin + Typ := 0; + end else begin + if VisInt <= 3 then begin + Typ := 1; + Count := 7; + Ready := true; + end; + + if (VisCount - VisInt) <= 3 then begin + Typ := 2; + Count := 7; + Ready := true; + end; + + if not Ready then begin + Typ := 3; + Src := Interaction; + end; + end; + + + + // hide all buttons + for B := 0 to High(Button) do begin + Button[B].Visible := false; + Button[B].Selectable := CatSongs.Song[B].Visible; + end; + +{ for B := Src to Dst do begin +// Button[B].Visible := true; + Button[B].Visible := CatSongs.Song[B].Visible; + Button[B].Selectable := Button[B].Visible; + Button[B].Y := 140 + (B-Src) * 60; + end;} + + + if Typ = 0 then begin + for B := 0 to High(Button) do begin + if CatSongs.Song[B].Visible then begin + Button[B].Visible := true; + Button[B].Y := 140 + (Placed) * 60; + Inc(Placed); + end; + end; + end; + + if Typ = 1 then begin + B := 0; + while (Count > 0) do begin + if CatSongs.Song[B].Visible then begin + Button[B].Visible := true; + Button[B].Y := 140 + (Placed) * 60; + Inc(Placed); + Dec(Count); + end; + Inc(B); + end; + end; + + if Typ = 2 then begin + B := High(Button); + while (Count > 0) do begin + if CatSongs.Song[B].Visible then begin + Button[B].Visible := true; + Button[B].Y := 140 + (6-Placed) * 60; + Inc(Placed); + Dec(Count); + end; + Dec(B); + end; + end; + + if Typ = 3 then begin + B := Src; + Count := 4; + while (Count > 0) do begin + if CatSongs.Song[B].Visible then begin + Button[B].Visible := true; + Button[B].Y := 140 + (3+Placed) * 60; + Inc(Placed); + Dec(Count); + end; + Inc(B); + end; + + B := Src-1; + Placed := 0; + Count := 3; + while (Count > 0) do begin + if CatSongs.Song[B].Visible then begin + Button[B].Visible := true; + Button[B].Y := 140 + (2-Placed) * 60; + Inc(Placed); + Dec(Count); + end; + Dec(B); + end; + + end; + + if Length(Button) > 0 then + Static[1].Texture.Y := Button[Interaction].Y - 5; // selection texture +end; + +procedure TScreenSong.SetScroll2; +var + B: integer; + Wsp: integer; // wspolczynnik przesuniecia wzgledem srodka ekranu + Wsp2: real; +begin + // liniowe + for B := 0 to High(Button) do + Button[B].X := 300 + (B - Interaction) * 260; + + if Length(Button) >= 3 then begin + if Interaction = 0 then + Button[High(Button)].X := 300 - 260; + + if Interaction = High(Button) then + Button[0].X := 300 + 260; + end; + + // kolowe +{ for B := 0 to High(Button) do begin + Wsp := (B - Interaction); // 0 dla srodka, -1 dla lewego, +1 dla prawego itd. + Wsp2 := Wsp / Length(Button); + Button[B].X := 300 + 10000 * sin(2*pi*Wsp2); +// Button[B].Y := 140 + 50 * ; + end;} +end; + +procedure TScreenSong.SetScroll3; // with slide +var + B: integer; + Wsp: integer; // wspolczynnik przesuniecia wzgledem srodka ekranu + Wsp2: real; +begin + SongTarget := Interaction; + + // liniowe + for B := 0 to High(Button) do + begin + Button[B].X := 300 + (B - SongCurrent) * 260; + if (Button[B].X < -Button[B].W) OR (Button[B].X > 800) then + Button[B].Visible := False + else + Button[B].Visible := True; + end; + +{ if Length(Button) >= 3 then begin + if Interaction = 0 then + Button[High(Button)].X := 300 - 260; + + if Interaction = High(Button) then + Button[0].X := 300 + 260; + end;} + + // kolowe +{ for B := 0 to High(Button) do begin + Wsp := (B - Interaction); // 0 dla srodka, -1 dla lewego, +1 dla prawego itd. + Wsp2 := Wsp / Length(Button); + Button[B].X := 300 + 10000 * sin(2*pi*Wsp2); +// Button[B].Y := 140 + 50 * ; + end;} +end; + +procedure TScreenSong.SetScroll4; // rotate +var + B: integer; + Wsp: real; + Z, Z2: real; + VS: integer; +begin + VS := CatSongs.VisibleSongs; // 0.5.0 (I): cached, very important + + // kolowe + for B := 0 to High(Button) do begin + Button[B].Visible := CatSongs.Song[B].Visible; // nowe + if Button[B].Visible then begin // 0.5.0 optimization for 1000 songs - updates only visible songs, hiding in tabs becomes useful for maintaing good speed + +// Wsp := 2 * pi * (B - SongCurrent) / Length(Button); +// Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - 0) / CatSongs.VisibleSongs; + Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / VS {CatSongs.VisibleSongs};// 0.5.0 (II): takes another 16ms + + Z := (1 + cos(Wsp)) / 2; + Z2 := (1 + 2*Z) / 3; + + Button[B].X := Theme.Song.Cover.X + (300 + 37 * VS {CatSongs.VisibleSongs} {Length(Button)} * sin(Wsp) - 400) * Z2; // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs + Button[B].Z := Z; + + Button[B].H := Theme.Song.Cover.H * Z2; + Button[B].W := Button[B].H; + +// Button[B].Y := {50 +} 140 + 50 - 50 * Z2; + Button[B].Y := Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.65; + end; + end; +end; + +{procedure TScreenSong.SetScroll4; // rotate +var + B: integer; + Wsp: real; + Z: real; + Z2, Z3: real; + VS: integer; + function modreal (const X, Y: real):real; + begin + Result := Frac(x / y) * y; + if Result < -3 then + Result := Result + Y + else if Result > 3 then + Result := Result - Y; + end; +begin + VS := CatSongs.VisibleSongs; // 0.5.0 (I): cached, very important + Z3 := 1; + if VS < 12 then + Z2 := VS + else + Z2 := 12; + + // kolowe + for B := 0 to High(Button) do begin + Button[B].Visible := CatSongs.Song[B].Visible; // nowe + if Button[B].Visible then begin // 0.5.0 optimization for 1000 songs - updates only visible songs, hiding in tabs becomes useful for maintaing good speed + if ((ModReal(CatSongs.VisibleIndex(B) - SongCurrent, VS)>-3) AND (ModReal(CatSongs.VisibleIndex(B) - SongCurrent, VS)<3)) then + begin + if CatSongs.VisibleIndex(B)> SongCurrent then + Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / Z2 + else + Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / Z2; + + Z3 := 2; + Z := (1 + cos(Wsp)) / 2; + //Z2 := (1 + 2*Z) / 3; + //Z2 := (0.5 + Z/2); + //Z2 := sin(Wsp); + + //Z2 := Power (Z2,Z3); + + Button[B].W := Theme.Song.CoverW * Power(cos(Wsp), Z3);//Power(Z2, 3); + + //Button[B].X := Theme.Song.CoverX + ({Theme.Song.CoverX + Theme.Song.CoverW/2 + Theme.Song.CoverW*0.18 * VS {CatSongs.VisibleSongs {Length(Button) * sin(Wsp) {- Theme.Song.CoverX - Theme.Song.CoverW) * Z2; // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs + if (sin(Wsp)<0) then + Button[B].X := sin(Wsp)*Theme.Song.CoverX*Theme.Song.CoverW*0.007 + Theme.Song.CoverX + Theme.Song.CoverW - Button[B].W + else //*Theme.Song.CoverW*0.004*Z3 + Button[B].X := sin(Wsp)*Theme.Song.CoverX*Theme.Song.CoverW*0.007 + Theme.Song.CoverX; + Button[B].Z := Z-0.00001; + +// Button[B].Y := {50 + 140 + 50 - 50 * Z2; + // Button[B].Y := (Theme.Song.CoverY + 40 + 50 - 50 * Z2); + Button[B].Y := (Theme.Song.CoverY + Theme.Song.CoverW - Button[B].W); + Button[B].H := Button[B].W; + Button[B].Visible := True; + end + {else if (((CatSongs.VisibleIndex(B) - SongCurrent)>-3) AND ((CatSongs.VisibleIndex(B) - SongCurrent)<3)) OR ((round (CatSongs.VisibleIndex(B) - SongCurrent) mod VS > -3) AND ((CatSongs.VisibleIndex(B) - SongCurrent)<3)) then + begin + Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / 12 ;// 0.5.0 (II): takes another 16ms + + Z := (1 + cos(Wsp)) / 2 -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers + + Button[B].W := Theme.Song.CoverW * Power(cos(Wsp), Z3);//Power(Z2, 3); + + if (sin(Wsp)<0) then + Button[B].X := sin(Wsp)*Theme.Song.CoverX*Theme.Song.CoverW*0.007 + Theme.Song.CoverX + Theme.Song.CoverW - Button[B].W + else + Button[B].X := sin(Wsp)*Theme.Song.CoverX*Theme.Song.CoverW*0.007 + Theme.Song.CoverX; + + Button[B].Z := Z; + + Button[B].Y := (Theme.Song.CoverY + Theme.Song.CoverW - Button[B].W); + + Button[B].H := Button[B].W; + Button[B].Visible := True; + end + else Button[B].Visible := False; + end; + end; +end; } + +procedure TScreenSong.SetScroll5; // rotate +var + B: integer; + Angle: real; + Pos: Real; + VS: integer; + diff: real; + X: Real; + {function margin (const X, Y, VS: real):real; //Margin of to Buttons + begin + Result := Frac(x / y) * y; + if (X - VS) >= -3 then + Result := X - VS - Y + else if (X + 3) >= VS then + Result := X - VS + Y + else + Result := X - Y; + end; } +begin + VS := CatSongs.VisibleSongs; // cache Visible Songs + {Vars + Theme.Song.CoverW: Radius des Kreises + Theme.Song.CoverX: X Pos Linke Kante des gewählten Covers + Theme.Song.CoverX: Y Pos Obere Kante des gewählten Covers + Theme.Song.CoverH: Höhe der Cover + + (CatSongs.VisibleIndex(B) - SongCurrent)/VS = Abstand zum MIttleren Cover in % + } + + //Change Pos of all Buttons + for B := low(Button) to high(Button) do + begin + Button[B].Visible := CatSongs.Song[B].Visible; //Adjust Visability + if Button[B].Visible then //Only Change Pos for Visible Buttons + begin + Pos := (CatSongs.VisibleIndex(B) - SongCurrent); + if (Pos < -VS) then + Pos := Pos + VS + else if (Pos > VS) then + Pos := Pos - VS; + + if (Abs(Pos) < 3) then {fixed Positions} + begin + Angle := Pi * (Pos / 5); + //Button[B].Visible := False; + + Button[B].H := Theme.Song.Cover.H * cos(Angle);//Power(Z2, 3); + + Button[B].Z := 0.95 - Abs(Pos) * 0.01; + + Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); + + Button[B].W := Button[B].H; + + Diff := (Button[B].H - Theme.Song.Cover.H)/2;; + + if (X < 0) then + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle){ - Theme.Song.Cover.H/2} - Diff + else + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle){ - Theme.Song.Cover.H/2}- Diff; + + Button[B].Visible := True; + end + else + begin {Behind the Front Covers} + //Button[B].Visible := False; + Pos := Frac(Pos / VS); + if Pos < 0 then + Pos := Pos + 1; + + Angle := Abs(2 * pi * ((Pos) / VS / 2)); + //Pos := Power(Pos*2 - 1, 3); + + Button[B].Z := (0.2 + Pos/2) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers + + //Pos := abs(Pos) mod 1; + + X := sin(Angle); + //Button[B].H := (0.2 + 0.4 * Abs(Pos)) * Theme.Song.Cover.H; //Cover High + Width + Button[B].H := 80; + Button[B].W := Button[B].H; + + Diff := (Theme.Song.Cover.H - Button[B].H)/2; + + //Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W) * Sin(Angle) - diff + //Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Pos - Diff; + + if (X < 0) then + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle) - Theme.Song.Cover.H/2 + Diff + else + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle) - Theme.Song.Cover.H/2; + + end; + + Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H)/1.5); //Cover at down border of the change field + + {X := sin(Angle); + + Button[B].H := (0.5 + Power(cos(Angle), 1.7))/1.5 * Theme.Song.Cover.H; //Cover High + Width + Button[B].W := Button[B].H; + + {if (X < 0) then + Diff := Theme.Song.Cover.H - Button[B].H + else + Diff := 0; + + if (((CatSongs.VisibleIndex(B) - SongCurrent)>= -3) AND ((CatSongs.VisibleIndex(B) - SongCurrent) <= 3)) OR (((CatSongs.VisibleIndex(B) - SongCurrent)>= -3 + VS) AND ((CatSongs.VisibleIndex(B) - SongCurrent) <= 3 + VS)) OR (((CatSongs.VisibleIndex(B) - SongCurrent)>= -3 - VS) AND ((CatSongs.VisibleIndex(B) - SongCurrent) <= 3 - VS)) then + Button[B].X := Theme.Song.Cover.X + diff + margin(CatSongs.VisibleIndex(B), SongCurrent, VS)* 30 + else + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * X + diff;}{ + + Diff := (Button[B].H - Theme.Song.Cover.H)/2; + + if X < 0 then + Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W) * -Power(-X, 1/2) - diff + else + Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W) * Power(X, 1/2) - diff;} + end; + end; +end; + +procedure TScreenSong.onShow; +begin + Music.Stop; + + if Ini.Players <= 3 then PlayersPlay := Ini.Players + 1; + if Ini.Players = 4 then PlayersPlay := 6; + + //Cat Mod etc + if (Ini.Tabs_at_startup = 1) AND (CatSongs.CatNumShow = -1) then + begin + CatSongs.ShowCategoryList; + SelectNext;SelectPrev; //Workaround <- must be fixed sometime + FixSelected; + //Show Cat in Top Left Mod + HideCatTL; + end; + + + if Length(CatSongs.Song) > 0 then begin + Music.SetLoop(false); + Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3); + Music.MoveTo(Music.Length / 4); + Music.Play; + SetScroll; + UpdateLCD; + end; + + //Party Mode + if (Mode = 1) then + begin + SelectRandomSong; + end; + + SetJoker; +end; + +function TScreenSong.Draw: boolean; +var + dx: real; + dt: real; +begin + dx := SongTarget-SongCurrent; + dt := TimeSkip*7; + if dt > 1 then dt := 1; + SongCurrent := SongCurrent + dx*dt; + +{ if SongCurrent > Catsongs.VisibleSongs then begin + SongCurrent := SongCurrent - Catsongs.VisibleSongs; + SongTarget := SongTarget - Catsongs.VisibleSongs; + end;} + +// Log.BenchmarkStart(5); + SetScroll; +// Log.BenchmarkEnd(5); +// Log.LogBenchmark('SetScroll4', 5); + + + // 0.5.0: cover fade + if (CoverTime < 1) and (CoverTime + TimeSkip >= 1) then begin + // load new texture + Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); + Button[Interaction].Texture.Alpha := 1; + Button[Interaction].Texture2 := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); + Button[Interaction].Texture2.Alpha := 1; + end; + CoverTime := CoverTime + TimeSkip; + Button[Interaction].Texture2.Alpha := (CoverTime - 1) * 1.5; + if Button[Interaction].Texture2.Alpha > 1 then Button[Interaction].Texture2.Alpha := 1; + + inherited Draw; + + //Draw Equalizer + if Theme.Song.Equalizer.Visible then + DrawEqualizer; + + //Draw Song Menu + if (ScreenSongMenu.Visible) then + begin + ScreenSongMenu.Draw; + end; +end; + +procedure TScreenSong.SelectNext; +var + Skip: integer; + I: integer; +begin + CoverTime := 0; + Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture + Button[Interaction].Texture2.Alpha := 0; + + //0.5.0: unload old full size texture + if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then + Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + + Skip := 1; + + // this 1 could be changed by CatSongs.FindNextVisible + while (not CatSongs.Song[(Interaction + Skip) mod Length(Interactions)].Visible) do Inc(Skip); + SongTarget := SongTarget + 1;//Skip; + + Interaction := (Interaction + Skip) mod Length(Interactions); + + // try to keep all at the beginning + if SongTarget > CatSongs.VisibleSongs-1 then begin + SongTarget := SongTarget - CatSongs.VisibleSongs; + SongCurrent := SongCurrent - CatSongs.VisibleSongs; + end; + + // Interaction -> Button, ktorego okladke przeczytamy +// Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); // 0.5.0: show uncached texture +end; + +procedure TScreenSong.SelectPrev; +var + Skip: integer; + I: integer; +begin + CoverTime := 0; + Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture + Button[Interaction].Texture2.Alpha := 0; + + //0.5.0: unload old full size texture + if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then + Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + + Skip := 1; + + while (not CatSongs.Song[(Interaction - Skip + Length(Interactions)) mod Length(Interactions)].Visible) do Inc(Skip); + SongTarget := SongTarget - 1;//Skip; + + Interaction := (Interaction - Skip + Length(Interactions)) mod Length(Interactions); + + // try to keep all at the beginning + if SongTarget < 0 then begin + SongTarget := SongTarget + CatSongs.VisibleSongs; + SongCurrent := SongCurrent + CatSongs.VisibleSongs; + end; + +// Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); // 0.5.0: show uncached texture +end; + +procedure TScreenSong.UpdateLCD; +begin + LCD.HideCursor; + LCD.Clear; + LCD.WriteText(1, Text[TextArtist].Text); + LCD.WriteText(2, Text[TextTitle].Text); +end; + +procedure TScreenSong.SkipTo(Target: integer); // 0.5.0 +var + Skip: integer; + I: integer; +begin + CoverTime := 0; + Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture + Button[Interaction].Texture2.Alpha := 0; + + if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then + Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + + Interaction := 0; + SongTarget := 0; + + for I := 2 to Target do + SelectNext; + + FixSelected2; +end; + +procedure TScreenSong.DrawEqualizer; +var + Data: TFFTData; //Audio Data + I, J: Integer; + Res: byte; + A, B: Integer; + PosX, PosY: Integer; + Pos: Real; +begin +if (not Music.Finished) AND (Theme.Song.Equalizer.Length > 0) then +begin + + + A := GetTickCount div 44; + + if (A <> EqualizerTime) then + begin + EqualizerTime := A; + Data := Music.GetFFTData; + + B:=0; + Pos := 0; + Res := floor(92/Theme.Song.Equalizer.Bands);//How much channels are used for one Band + //Change Lengths + for I := 0 to 92 do + begin + A := floor(I/Res); + + if (A<>B) then //Band changed + begin + if (Pos <= Theme.Song.Equalizer.Length) then + begin + if ((Pos < EqualizerBands[B]) AND (EqualizerBands[B]>1)) then + EqualizerBands[B] := EqualizerBands[B] - 1 + else + EqualizerBands[B] := floor(Pos); + end + else + EqualizerBands[B] := 1; + + B := A; + Pos := 0; + end; + + if I > 35 then + Data[i] := Data[i] * 8 + else if I > 11 then + Data[i] := Data[i] * 4.5 + else + Data[i] := Data[i] * 1.1; + + if (Data[i] >= 1) then + Data[i] := 0.9999999999999; + + if Data[i]*Theme.Song.Equalizer.Length > Pos then + Pos := Data[i]*Theme.Song.Equalizer.Length; + end; + + //Change Last Band + if (EqualizerBands[B] <= Theme.Song.Equalizer.Length) then + begin + if ((Pos < EqualizerBands[B]) AND (EqualizerBands[B]>1)) then + EqualizerBands[B] := EqualizerBands[B] - 1 + else + EqualizerBands[B] := floor(Pos) + end + else + EqualizerBands[B] := 1; + end; + + //Draw every Channel + glColor4f(Theme.Song.Equalizer.ColR, Theme.Song.Equalizer.ColG, Theme.Song.Equalizer.ColB, Theme.Song.Equalizer.Alpha); //Set Color + glDisable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + + PosY := Theme.Song.Equalizer.Y; + PosX := Theme.Song.Equalizer.X; + + For I := 0 to Theme.Song.Equalizer.Bands do + begin + if Theme.Song.Equalizer.Direction then + PosY := Theme.Song.Equalizer.Y //+ (Theme.Song.Equalizer.H + Theme.Song.Equalizer.Space) * Theme.Song.Equalizer.Length + else + PosX := Theme.Song.Equalizer.X; + //Draw for every visible quad + for J := 1 to EqualizerBands[I] do + begin + glBegin(GL_QUADS); + glVertex3f(PosX, PosY, Theme.Song.Equalizer.Z); + glVertex3f(PosX, PosY+Theme.Song.Equalizer.H, Theme.Song.Equalizer.Z); + glVertex3f(PosX+Theme.Song.Equalizer.W, PosY+Theme.Song.Equalizer.H, Theme.Song.Equalizer.Z); + glVertex3f(PosX+Theme.Song.Equalizer.W, PosY, Theme.Song.Equalizer.Z); + glEnd; + + if Theme.Song.Equalizer.Direction then //Vertically + PosY := PosY - Theme.Song.Equalizer.H - Theme.Song.Equalizer.Space + else //Horizontally + PosX := PosX + Theme.Song.Equalizer.W + Theme.Song.Equalizer.Space; + end; + if Theme.Song.Equalizer.Direction then //Horizontally + PosX := PosX + Theme.Song.Equalizer.W + Theme.Song.Equalizer.Space + else //Vertically + PosY := PosY + Theme.Song.Equalizer.H + Theme.Song.Equalizer.Space; + end; +end; +end; + +Procedure TScreenSong.SelectRandomSong; +var + I, I2: Integer; +begin + repeat + I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; + until CatSongs.Song[I2].Main = false; + + //Search Cat + for I := I2 downto low(CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + break; + end; + //In I ist jetzt die Kategorie in I2 der Song + + //Choose Cat + CatSongs.ShowCategoryList; + + //Show Cat in Top Left Mod + ShowCatTL (I); + + CatSongs.ClickCategoryButton(I); + SelectNext; + + //Fix: Not Existing Song selected: + if (I+1=I2) then Inc(I2); + + //Choose Song + SkipTo(I2-I); + + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; +end; + +procedure TScreenSong.SetJoker; +begin + //If Party Mode + if Mode = 1 then //Show Joker that are available + begin + if (PartySession.Teams.NumTeams >= 1) then + begin + Static[StaticTeam1Joker1].Visible := (PartySession.Teams.Teaminfo[0].Joker >= 1); + Static[StaticTeam1Joker2].Visible := (PartySession.Teams.Teaminfo[0].Joker >= 2); + Static[StaticTeam1Joker3].Visible := (PartySession.Teams.Teaminfo[0].Joker >= 3); + Static[StaticTeam1Joker4].Visible := (PartySession.Teams.Teaminfo[0].Joker >= 4); + Static[StaticTeam1Joker5].Visible := (PartySession.Teams.Teaminfo[0].Joker >= 5); + end + else + begin + Static[StaticTeam1Joker1].Visible := False; + Static[StaticTeam1Joker2].Visible := False; + Static[StaticTeam1Joker3].Visible := False; + Static[StaticTeam1Joker4].Visible := False; + Static[StaticTeam1Joker5].Visible := False; + end; + + if (PartySession.Teams.NumTeams >= 2) then + begin + Static[StaticTeam2Joker1].Visible := (PartySession.Teams.Teaminfo[1].Joker >= 1); + Static[StaticTeam2Joker2].Visible := (PartySession.Teams.Teaminfo[1].Joker >= 2); + Static[StaticTeam2Joker3].Visible := (PartySession.Teams.Teaminfo[1].Joker >= 3); + Static[StaticTeam2Joker4].Visible := (PartySession.Teams.Teaminfo[1].Joker >= 4); + Static[StaticTeam2Joker5].Visible := (PartySession.Teams.Teaminfo[1].Joker >= 5); + end + else + begin + Static[StaticTeam2Joker1].Visible := False; + Static[StaticTeam2Joker2].Visible := False; + Static[StaticTeam2Joker3].Visible := False; + Static[StaticTeam2Joker4].Visible := False; + Static[StaticTeam2Joker5].Visible := False; + end; + + if (PartySession.Teams.NumTeams >= 3) then + begin + Static[StaticTeam3Joker1].Visible := (PartySession.Teams.Teaminfo[2].Joker >= 1); + Static[StaticTeam3Joker2].Visible := (PartySession.Teams.Teaminfo[2].Joker >= 2); + Static[StaticTeam3Joker3].Visible := (PartySession.Teams.Teaminfo[2].Joker >= 3); + Static[StaticTeam3Joker4].Visible := (PartySession.Teams.Teaminfo[2].Joker >= 4); + Static[StaticTeam3Joker5].Visible := (PartySession.Teams.Teaminfo[2].Joker >= 5); + end + else + begin + Static[StaticTeam3Joker1].Visible := False; + Static[StaticTeam3Joker2].Visible := False; + Static[StaticTeam3Joker3].Visible := False; + Static[StaticTeam3Joker4].Visible := False; + Static[StaticTeam3Joker5].Visible := False; + end; + end + else + begin //Hide all + Static[StaticTeam1Joker1].Visible := False; + Static[StaticTeam1Joker2].Visible := False; + Static[StaticTeam1Joker3].Visible := False; + Static[StaticTeam1Joker4].Visible := False; + Static[StaticTeam1Joker5].Visible := False; + + Static[StaticTeam2Joker1].Visible := False; + Static[StaticTeam2Joker2].Visible := False; + Static[StaticTeam2Joker3].Visible := False; + Static[StaticTeam2Joker4].Visible := False; + Static[StaticTeam2Joker5].Visible := False; + + Static[StaticTeam3Joker1].Visible := False; + Static[StaticTeam3Joker2].Visible := False; + Static[StaticTeam3Joker3].Visible := False; + Static[StaticTeam3Joker4].Visible := False; + Static[StaticTeam3Joker5].Visible := False; + end; +end; + +//Procedures for Menu + +procedure TScreenSong.StartSong; +begin + CatSongs.Selected := Interaction; + Music.Stop; + //Party Mode + if (Mode = 1) then + begin + FadeTo(@ScreenSingModi); + end + else + begin + FadeTo(@ScreenSing); + end; +end; + +procedure TScreenSong.OpenEditor; +begin + if (Length(Songs.Song) > 0) and (not CatSongs.Song[Interaction].Main) AND (Mode = 0) then begin + Music.Stop; + Music.PlayStart; + ScreenEditSub.Path := CatSongs.Song[Interaction].Path; + ScreenEditSub.FileName := CatSongs.Song[Interaction].FileName; + FadeTo(@ScreenEditSub); + end; +end; + +//Team No of Team (0-5) +procedure TScreenSong.DoJoker (Team: Byte); +begin + if (Mode = 1) AND (PartySession.Teams.NumTeams >= Team + 1) AND (PartySession.Teams.Teaminfo[Team].Joker > 0) then + begin + //Joker spielen + Dec(PartySession.Teams.Teaminfo[Team].Joker); + SelectRandomSong; + SetJoker; + end; +end; + +procedure TScreenSong.Refresh; +begin { +CatSongs.Refresh; +CatSongs.ShowCategoryList; +Interaction := 0; +SelectNext; +FixSelected; } + +end; + +end. diff --git a/Game/Code/Screens/UScreenSongMenu.dcu b/Game/Code/Screens/UScreenSongMenu.dcu new file mode 100644 index 00000000..634a217a Binary files /dev/null and b/Game/Code/Screens/UScreenSongMenu.dcu differ diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas new file mode 100644 index 00000000..2a03a7c2 --- /dev/null +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -0,0 +1,355 @@ +unit UScreenSongMenu; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenSongMenu = class(TMenu) + private + CurMenu: Byte; //Num of the cur. Shown Menu + public + Visible: Boolean; //Whether the Menu should be Drawn + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + function Draw: boolean; override; + procedure MenuShow(sMenu: Byte); + procedure HandleReturn; + end; + +const + SM_Main = 1; + SM_PlayList = 64 or 1; + SM_Party_Main = 128 or 1; + SM_Party_Joker = 128 or 2; + +var + ISelections: Array of String; + SelectValue: Integer; + + +implementation + +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty; + +function TScreenSongMenu.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; + function IsVisible: Boolean; + begin + Result := True; + if (Interactions[Interaction].Typ = 0) then + begin + Result := Button[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 1) then + begin + //Result := Selects[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 3) then + begin + Result := SelectsS[Interactions[Interaction].Num].Visible; + end; + end; + + Procedure SelectNext; + begin + repeat + InteractNext; + until IsVisible; + end; + + Procedure SelectPrev; + begin + repeat + InteractPrev; + until IsVisible; + end; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Music.PlayBack; + Visible := False; + end; + + SDLK_RETURN: + begin + HandleReturn; + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: SelectNext; + SDLK_UP: SelectPrev; + + SDLK_RIGHT: + begin + if (Interaction=3) then + InteractInc; + end; + SDLK_LEFT: + begin + if (Interaction=3) then + InteractDec; + end; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenSongMenu.Create; +var + I: integer; +begin + inherited Create; + SetLength(ISelections, 1); + ISelections[0] := 'Dummy'; + + AddBackground(Theme.SongMenu.Background.Tex); + + AddButton(Theme.SongMenu.Button1); + if (Length(Button[0].Text) = 0) then + AddButtonText(14, 20, 'Button 1'); + + AddButton(Theme.SongMenu.Button2); + if (Length(Button[1].Text) = 0) then + AddButtonText(14, 20, 'Button 2'); + + AddButton(Theme.SongMenu.Button3); + if (Length(Button[2].Text) = 0) then + AddButtonText(14, 20, 'Button 3'); + + AddSelectSlide(Theme.SongMenu.SelectSlide3, SelectValue, ISelections); + + AddButton(Theme.SongMenu.Button4); + if (Length(Button[3].Text) = 0) then + AddButtonText(14, 20, 'Button 4'); + + AddText(Theme.SongMenu.TextMenu); + + for I := 0 to High(Theme.SongMenu.Static) do + AddStatic(Theme.SongMenu.Static[I]); + + for I := 0 to High(Theme.SongMenu.Text) do + AddText(Theme.SongMenu.Text[I]); + + Interaction := 0; +end; + +function TScreenSongMenu.Draw: boolean; +begin + inherited Draw; +end; + +procedure TScreenSongMenu.onShow; +begin + +end; + +procedure TScreenSongMenu.MenuShow(sMenu: Byte); +begin + Interaction := 0; //Reset Interaction + Case sMenu of + SM_Main: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_MAIN'); + + Button[0].Visible := True; + Button[1].Visible := True; + Button[2].Visible := True; + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY'); + Button[1].Text[0].Text := Language.Translate('SONG_MENU_EDIT'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYMODI'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + end; + + SM_PlayList: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST'); + + Button[0].Visible := True; + Button[1].Visible := False; + Button[2].Visible := False; + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD'); + Button[1].Text[0].Text := ''; + Button[2].Text[0].Text := ''; + Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + end; + + SM_Party_Main: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PARTY_MAIN'); + + Button[0].Visible := True; + Button[1].Visible := False; + Button[2].Visible := False; + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY'); + Button[1].Text[0].Text := Language.Translate('SONG_MENU_JOKER'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYMODI'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_JOKER'); + end; + + SM_Party_Joker: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PARTY_JOKER'); + + Button[0].Visible := (PartySession.Teams.NumTeams >= 1) AND (PartySession.Teams.Teaminfo[0].Joker > 0); + Button[1].Visible := (PartySession.Teams.NumTeams >= 2) AND (PartySession.Teams.Teaminfo[1].Joker > 0); + Button[2].Visible := (PartySession.Teams.NumTeams >= 3) AND (PartySession.Teams.Teaminfo[2].Joker > 0); + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := String(PartySession.Teams.Teaminfo[0].Name); + Button[1].Text[0].Text := String(PartySession.Teams.Teaminfo[1].Name); + Button[2].Text[0].Text := String(PartySession.Teams.Teaminfo[2].Name); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + end; + end; +end; + +procedure TScreenSongMenu.HandleReturn; +begin + Case CurMenu of + SM_Main: + begin + Visible := False; + Case Interaction of + 0: //Button 1 + begin + ScreenSong.StartSong; + end; + + 1: //Button 2 + begin + ScreenSong.OpenEditor; + end; + + 2: //Button 3 + begin + //Todo: Add SingleRound Modi Support + end; + + 3: //SelectSlide 3 + begin + //Dummy + end; + + 4: //Button 4 + begin + //Cancel... (Do Nothing) + end; + end; + end; + + SM_PlayList: + begin + Visible := False; + Case Interaction of + 0: //Button 1 + begin + // + end; + + 1: //Button 2 + begin + // + end; + + 2: //Button 3 + begin + //Todo + end; + + 3: //SelectSlide 3 + begin + //Dummy + end; + + 4: //Button 4 + begin + // + end; + end; + end; + + SM_Party_Main: + begin + Case Interaction of + 0: //Button 1 + begin + //Start Singing + ScreenSong.StartSong; + Visible := False; + end; + + 4: //Button 4 + begin + //Joker + MenuShow(SM_Party_Joker); + end; + end; + end; + + SM_Party_Joker: + begin + Visible := False; + Case Interaction of + 0: //Button 1 + begin + //Joker Team 1 + ScreenSong.DoJoker(0); + end; + + 1: //Button 2 + begin + //Joker Team 2 + ScreenSong.DoJoker(1); + end; + + 2: //Button 3 + begin + //Joker Team 3 + ScreenSong.DoJoker(2); + end; + + 4: //Button 4 + begin + //Cancel... (Fo back to old Menu) + MenuShow(SM_Party_Main); + end; + end; + end; + end; +end; + +end. + \ No newline at end of file diff --git a/Game/Code/Screens/UScreenTop5.dcu b/Game/Code/Screens/UScreenTop5.dcu new file mode 100644 index 00000000..c6db07d0 Binary files /dev/null and b/Game/Code/Screens/UScreenTop5.dcu differ diff --git a/Game/Code/Screens/UScreenTop5.pas b/Game/Code/Screens/UScreenTop5.pas new file mode 100644 index 00000000..41f96281 --- /dev/null +++ b/Game/Code/Screens/UScreenTop5.pas @@ -0,0 +1,166 @@ +unit UScreenTop5; + +interface + +uses + UMenu, SDL, SysUtils, UDisplay, UMusic, USongs, UThemes, ULCD; + +type + TScreenTop5 = class(TMenu) + public + TextLevel: integer; + TextArtistTitle: integer; + + StaticNumber: array[1..5] of integer; + TextNumber: array[1..5] of integer; + TextName: array[1..5] of integer; + TextScore: array[1..5] of integer; + + Fadeout: boolean; + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + function Draw: boolean; override; + end; + +implementation + +uses UGraphic, UScores, UMain, UIni; + +function TScreenTop5.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then begin + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE, SDLK_RETURN: + begin + if (not Fadeout) then begin + FadeTo(@ScreenSong); + Fadeout := true; + end; + end; + SDLK_SYSREQ: + begin + Display.PrintScreen; + end; + end; + end; +end; + +constructor TScreenTop5.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.Top5.Background.Tex); + + for I := 0 to High(Theme.Top5.Static) do + AddStatic(Theme.Top5.Static[I]); + + for I := 0 to High(Theme.Top5.Text) do + AddText(Theme.Top5.Text[I]); + + + TextLevel := AddText(Theme.Top5.TextLevel); + TextArtistTitle := AddText(Theme.Top5.TextArtistTitle); + + for I := 0 to 4 do + StaticNumber[I+1] := AddStatic(Theme.Top5.StaticNumber[I]); + + for I := 0 to 4 do + TextNumber[I+1] := AddText(Theme.Top5.TextNumber[I]); + for I := 0 to 4 do + TextName[I+1] := AddText(Theme.Top5.TextName[I]); + for I := 0 to 4 do + TextScore[I+1] := AddText(Theme.Top5.TextScore[I]); + +end; + +procedure TScreenTop5.onShow; +var + I: integer; + PMax: integer; +begin + Fadeout := false; + + //ReadScore(AktSong); + + PMax := Ini.Players; + if Ini.Players = 4 then Ini.Players := 5; + for I := 0 to PMax do + AddScore(AktSong, Ini.Difficulty, Ini.Name[I], Round(Player[I].ScoreTotalI)); + + //WriteScore(AktSong); + ReadScore(AktSong); + + Text[TextArtistTitle].Text := AktSong.Artist + ' - ' + AktSong.Title; + + for I := 1 to Length(AktSong.Score[Ini.Difficulty]) do begin + Static[StaticNumber[I]].Visible := true; + Text[TextNumber[I]].Visible := true; + Text[TextName[I]].Visible := true; + Text[TextScore[I]].Visible := true; + + Text[TextName[I]].Text := AktSong.Score[Ini.Difficulty, I-1].Name; + Text[TextScore[I]].Text := IntToStr(AktSong.Score[Ini.Difficulty, I-1].Score); + end; + + for I := Length(AktSong.Score[Ini.Difficulty])+1 to 5 do begin + Static[StaticNumber[I]].Visible := false; + Text[TextNumber[I]].Visible := false; + Text[TextName[I]].Visible := false; + Text[TextScore[I]].Visible := false; + end; + + Text[TextLevel].Text := IDifficulty[Ini.Difficulty]; +end; + +function TScreenTop5.Draw: boolean; +//var +{ Min: real; + Max: real; + Wsp: real; + Wsp2: real; + Pet: integer;} + +{ Item: integer; + P: integer; + C: integer;} +begin + // Singstar - let it be...... with 6 statics +{ if PlayersPlay = 6 then begin + for Item := 4 to 6 do begin + if ScreenAct = 1 then P := Item-4; + if ScreenAct = 2 then P := Item-1; + + FillPlayer(Item, P); + +{ if ScreenAct = 1 then begin + LoadColor( + Static[StaticBoxLightest[Item]].Texture.ColR, + Static[StaticBoxLightest[Item]].Texture.ColG, + Static[StaticBoxLightest[Item]].Texture.ColB, + 'P1Dark'); + end; + + if ScreenAct = 2 then begin + LoadColor( + Static[StaticBoxLightest[Item]].Texture.ColR, + Static[StaticBoxLightest[Item]].Texture.ColG, + Static[StaticBoxLightest[Item]].Texture.ColB, + 'P4Dark'); + end;} + +{ end; + end;} + + inherited Draw; +end; + +end. diff --git a/Game/Code/Screens/UScreenWelcome.dcu b/Game/Code/Screens/UScreenWelcome.dcu new file mode 100644 index 00000000..196b04be Binary files /dev/null and b/Game/Code/Screens/UScreenWelcome.dcu differ diff --git a/Game/Code/Screens/UScreenWelcome.pas b/Game/Code/Screens/UScreenWelcome.pas new file mode 100644 index 00000000..de3b50f4 --- /dev/null +++ b/Game/Code/Screens/UScreenWelcome.pas @@ -0,0 +1,117 @@ +unit UScreenWelcome; + +interface + +uses + UMenu, SDL, SysUtils, UThemes; + +type + TScreenWelcome = class(TMenu) + public + Animation: real; + Fadeout: boolean; + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function Draw: boolean; override; + procedure onShow; override; + end; + +implementation + +uses UGraphic, UTime; + +function TScreenWelcome.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then begin + case PressedKey of + SDLK_ESCAPE : + begin + Result := False; + end; + SDLK_RETURN: + begin + FadeTo(@ScreenMain); + Fadeout := true; + end; + end; + end; +end; + +constructor TScreenWelcome.Create; +begin + inherited Create; +{ AddStatic(-10, -10, 0, 0, 1, 1, 1, Skin.Star, 'BMP', 'Transparent'); + AddStatic(-500, 440, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); + AddStatic(-500, 472, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); + AddStatic(-500, 504, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); + AddStatic(-500, 536, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); + AddStatic(-500, 568, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); + Animation := 0; + Fadeout := false;} +end; + +procedure TScreenWelcome.onShow; +begin + CountSkipTimeSet; +end; + +function TScreenWelcome.Draw: boolean; +var + Min: real; + Max: real; + Wsp: real; + Pet: integer; +begin + // star animation + Animation := Animation + TimeSkip*1000; + + // draw nothing + Min := 0; Max := 1000; + if (Animation >= Min) and (Animation < Max) then begin + end; + + // popup + Min := 1000; Max := 1120; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + Static[0].Texture.X := 600; + Static[0].Texture.Y := 600 - Wsp * 230; + Static[0].Texture.W := 200; + Static[0].Texture.H := Wsp * 230; + end; + + // bounce + Min := 1120; Max := 1200; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + Static[0].Texture.Y := 370 + Wsp * 50; + Static[0].Texture.H := 230 - Wsp * 50; + end; + + // run + Min := 1500; Max := 3500; + if (Animation >= Min) and (Animation < Max) then begin + Wsp := (Animation - Min) / (Max - Min); + + Static[0].Texture.X := 600 - Wsp * 1400; + Static[0].Texture.H := 180; + + + for Pet := 1 to 5 do begin + Static[Pet].Texture.X := 770 - Wsp * 1400; + Static[Pet].Texture.W := 150 + Wsp * 200; + Static[Pet].Texture.Alpha := Wsp * 0.5; + end; + end; + + Min := 3500; + if (Animation >= Min) and (not Fadeout) then begin + FadeTo(@ScreenMain); + Fadeout := true; + end; + + inherited Draw; +end; + +end. diff --git a/Game/Code/UltraStar.RES b/Game/Code/UltraStar.RES new file mode 100644 index 00000000..fcaa4576 Binary files /dev/null and b/Game/Code/UltraStar.RES differ diff --git a/Game/Code/UltraStar.bdsproj b/Game/Code/UltraStar.bdsproj new file mode 100644 index 00000000..e11acf91 --- /dev/null +++ b/Game/Code/UltraStar.bdsproj @@ -0,0 +1,168 @@ + + + + + + + + + + + + UltraStar.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + + + 0 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + E:\Projekte\Ultrastar + + + + E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\midi + vcl;rtl;vclx;VclSmp;vclshlctrls;DelphiX_for6 + TRANSLATE + + False + + + -benchmark + + + False + + + + + + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1045 + 1250 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + diff --git a/Game/Code/UltraStar.bdsproj.local b/Game/Code/UltraStar.bdsproj.local new file mode 100644 index 00000000..d576f039 --- /dev/null +++ b/Game/Code/UltraStar.bdsproj.local @@ -0,0 +1,2 @@ + + diff --git a/Game/Code/UltraStar.cfg b/Game/Code/UltraStar.cfg new file mode 100644 index 00000000..5ade3beb --- /dev/null +++ b/Game/Code/UltraStar.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W- +-M +-$M16384,1048576 +-K$00400000 +-E"E:\Projekte\Ultrastar\Bin" +-LE"e:\programme\borland\delphi7\Projects\Bpl" +-LN"e:\programme\borland\delphi7\Projects\Bpl" +-U"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" +-O"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" +-I"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" +-R"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" +-DTRANSLATE diff --git a/Game/Code/UltraStar.dof b/Game/Code/UltraStar.dof new file mode 100644 index 00000000..174b4358 --- /dev/null +++ b/Game/Code/UltraStar.dof @@ -0,0 +1,148 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=0 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=1 +UnsafeCode=1 +UnsafeCast=1 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Karaoke Software with rating +[Directories] +OutputDir=E:\Projekte\Ultrastar\Bin +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite +Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;DelphiX_for6 +Conditionals=TRANSLATE +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams=-benchmark +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1045 +CodePage=1250 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlConditionals] +Count=2 +Item0=TRANSLATE +Item1=OGL +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite +Item1=E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas +[HistoryLists\hlOutputDirectorry] +Count=3 +Item0=E:\Projekte\Ultrastar\Bin +Item1=E:\Projekte\Ultrastar +Item2=C:\UltraStar\Bin diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr new file mode 100644 index 00000000..5c598eda --- /dev/null +++ b/Game/Code/UltraStar.dpr @@ -0,0 +1,286 @@ + program UltraStar; + +{$DEFINE TRANSLATE} +//DEFINE THEMESAVE} + +{$R 'UltraStar.res' 'UltraStar.rc'} + +uses + {//Earlyer in Code Dir.. Now in SearchDir + DDKint in '..\ZLPortIO\ddkint.pas', + ZLPortIO in '..\ZLPortIO\zlportio.pas', + SQLiteTable3 in '..\SQLite\SQLiteTable3.pas', + SQLite3 in '..\SQLite\SQLite3.pas',} + Windows, + SDL, + SysUtils, + + //Menu Objects + UDisplay in 'Menu\UDisplay.pas', + UMenu in 'Menu\UMenu.pas', + UMenuStatic in 'Menu\UMenuStatic.pas', + UMenuText in 'Menu\UMenuText.pas', + UMenuButton in 'Menu\UMenuButton.pas', + UMenuInteract in 'Menu\UMenuInteract.pas', + UMenuSelect in 'Menu\UMenuSelect.pas', + UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', + UDrawTexture in 'Menu\UDrawTexture.pas', + + //Classes + UGraphic in 'Classes\UGraphic.pas', + UTexture in 'Classes\UTexture.pas', + UMusic in 'Classes\UMusic.pas', + UPliki in 'Classes\UPliki.pas', + UMain in 'Classes\UMain.pas', + UDraw in 'Classes\UDraw.pas', + URecord in 'Classes\URecord.pas', + UTime in 'Classes\UTime.pas', + TextGL in 'Classes\TextGL.pas', + USongs in 'Classes\USongs.pas', + UIni in 'Classes\UIni.pas', + USmpeg in 'SMpeg\USmpeg.pas', + ULyrics in 'Classes\ULyrics.pas', + USkins in 'Classes\USkins.pas', + UThemes in 'Classes\UThemes.pas', + ULog in 'Classes\ULog.pas', + UJoystick in 'Classes\UJoystick.pas', + ULCD in 'Classes\ULCD.pas', + ULight in 'Classes\ULight.pas', + UScores in 'Classes\UScores.pas', + ULanguage in 'Classes\ULanguage.pas', + UCovers in 'Classes\UCovers.pas', + UCatCovers in 'Classes\UCatCovers.pas', + UFiles in 'Classes\UFiles.pas', + UGraphicClasses in 'Classes\UGraphicClasses.pas', + UDLLManager in 'Classes\UDLLManager.pas', + UParty in 'Classes\UParty.pas', + + //Screens + UScreenLoading in 'Screens\UScreenLoading.pas', + UScreenWelcome in 'Screens\UScreenWelcome.pas', + UScreenMain in 'Screens\UScreenMain.pas', + UScreenName in 'Screens\UScreenName.pas', + UScreenLevel in 'Screens\UScreenLevel.pas', + UScreenSong in 'Screens\UScreenSong.pas', + UScreenSing in 'Screens\UScreenSing.pas', + UScreenScore in 'Screens\UScreenScore.pas', + UScreenOptions in 'Screens\UScreenOptions.pas', + UScreenOptionsGame in 'Screens\UScreenOptionsGame.pas', + UScreenOptionsGraphics in 'Screens\UScreenOptionsGraphics.pas', + UScreenOptionsSound in 'Screens\UScreenOptionsSound.pas', + UScreenOptionsLyrics in 'Screens\UScreenOptionsLyrics.pas', + UScreenOptionsThemes in 'Screens\UScreenOptionsThemes.pas', + UScreenOptionsRecord in 'Screens\UScreenOptionsRecord.pas', + UScreenEditSub in 'Screens\UScreenEditSub.pas', + UScreenEdit in 'Screens\UScreenEdit.pas', + UScreenEditConvert in 'Screens\UScreenEditConvert.pas', + UScreenEditHeader in 'Screens\UScreenEditHeader.pas', + UScreenOpen in 'Screens\UScreenOpen.pas', + UScreenTop5 in 'Screens\UScreenTop5.pas', + UScreenSongMenu in 'Screens\UScreenSongMenu.pas', + //PartyMode + UScreenSingModi in 'Screens\UScreenSingModi.pas', + UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', + UScreenPartyScore in 'Screens\UScreenPartyScore.pas', + UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', + UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', + UScreenPartyWin in 'Screens\UScreenPartyWin.pas', + + //Modi SDK + ModiSDK in '..\..\Modis\SDK\ModiSDK.pas'; + +const + Version = 'UltraStar Deluxe V 0.90 Beta'; + +var + WndTitle: string; + hWnd: THandle; + I: Integer; + +begin + WndTitle := Version; + + //Start more than One Time Prevention + hWnd:= FindWindow(nil, PChar(WndTitle)); + //Programm already started + if (hWnd <> 0) then + begin + I := Messagebox(0, PChar('Another Instance of Ultrastar is already running. Contìnue ?'), PChar(WndTitle), MB_ICONWARNING or MB_YESNO); + if (I = IDYes) then + begin + I := 1; + repeat + Inc(I); + hWnd := FindWindow(nil, PChar(WndTitle + ' Instance ' + InttoStr(I))); + until (hWnd = 0); + + WndTitle := WndTitle + ' Instance ' + InttoStr(I); + end + else + Exit; + end; + + + + USTime := TTime.Create; + + // Log + Benchmark + Log := TLog.Create; + Log.Title := WndTitle; + Log.BenchmarkStart(0); +// Log.LogError(IntToStr(DayOfTheYear(Date))); + + // Language + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Paths', 'Initialization'); InitializePaths; + Log.LogStatus('Load Language', 'Initialization'); Language := TLanguage.Create; + //Add Const Values: + Language.AddConst('US_VERSION', Version); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Language', 1); + + // SDL + Log.BenchmarkStart(1); + Log.LogStatus('Initialize SDL', 'Initialization'); + SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing SDL', 1); + + // Skin + Log.BenchmarkStart(1); + Log.LogStatus('Loading Skin List', 'Initialization'); Skin := TSkin.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Skin List', 1); + + //Log.LogBenchmark(inttostr(Skin.), 1); + + // Sound Card List + Log.BenchmarkStart(1); + Log.LogStatus('Loading Soundcard list', 'Initialization'); + Recording := TRecord.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Soundcard list', 1); + + // Ini + Paths + Log.BenchmarkStart(1); + Log.LogStatus('Load Ini', 'Initialization'); Ini := TIni.Create; + Ini.Load; + Language.ChangeLanguage(ILanguage[Ini.Language]); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Ini', 1); + + // LCD + Log.BenchmarkStart(1); + Log.LogStatus('Load LCD', 'Initialization'); LCD := TLCD.Create; + if Ini.LPT = 1 then begin +// LCD.HalfInterface := true; + LCD.Enable; + LCD.Clear; + LCD.WriteText(1, ' UltraStar '); + LCD.WriteText(2, ' Loading... '); + end; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading LCD', 1); + + // Light + Log.BenchmarkStart(1); + Log.LogStatus('Load Light', 'Initialization'); Light := TLight.Create; + if Ini.LPT = 2 then begin + Light.Enable; +// Light.LightOne(0, 1000); + end; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Light', 1); + + // Theme + Log.BenchmarkStart(1); + Log.LogStatus('Load Themes', 'Initialization'); Theme := TTheme.Create('Themes\' + ITheme[Ini.Theme] + '.ini', Ini.Color); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Themes', 1); + + // Covers Cache + Log.BenchmarkStart(1); + Log.LogStatus('Creating Covers Cache', 'Initialization'); Covers := TCovers.Create; + Log.LogBenchmark('Loading Covers Cache Array', 1); + Log.BenchmarkStart(1); + + // Category Covers + Log.BenchmarkStart(1); + Log.LogStatus('Creating Category Covers Array', 'Initialization'); + CatCovers:= TCatCovers.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Category Covers Array', 1); + + // Songs + //Log.BenchmarkStart(1); + Log.LogStatus('Creating Song Array', 'Initialization'); Songs := TSongs.Create; + Songs.LoadSongList; + Log.LogStatus('Creating 2nd Song Array', 'Initialization'); CatSongs := TCatSongs.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Songs', 1); + + // PluginManager + Log.BenchmarkStart(1); + Log.LogStatus('PluginManager', 'Initialization'); + DLLMan := TDLLMan.Create; //Load PluginList + + Log.LogError(inttostr(Length(DLLMan.Plugins)) + ' Plugins Loaded'); + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading PluginManager', 1); + + // Party Mode Manager + Log.BenchmarkStart(1); + Log.LogStatus('PartySession Manager', 'Initialization'); + PartySession := TParty_Session.Create; //Load PartySession + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading PartySession Manager', 1); + + // Graphics + Log.BenchmarkStart(1); + Log.LogStatus('Initialize 3D', 'Initialization'); Initialize3D(WndTitle); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing 3D', 1); + + // Sound + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Sound', 'Initialization'); + Log.LogStatus('Creating Music', 'InitializeSound'); Music := TMusic.Create; + InitializeSound; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing Sound', 1); + + // Score Saving System + Log.BenchmarkStart(1); + Log.LogStatus('Score DB System', 'Initialization'); + InitScore('Scores.db'); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Score DB System', 1); + + // Joypad + if Ini.Joypad = 1 then begin + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Joystick', 'Initialization'); Joy := TJoy.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing Joystick', 1); + end; + + Log.BenchmarkEnd(0); + Log.LogBenchmark('Loading Time', 0); + + +// Music.SetLoop(true); +// Music.SetVolume(50); +// Music.Open(SkinPath + 'Menu Music 3.mp3'); +// Music.Play; + Log.LogStatus('Main Loop', 'Initialization'); MainLoop; + +// sleep(3000); + + // finish + if Ini.LPT = 1 then LCD.Clear; + if Ini.LPT = 2 then Light.TurnOff; + + Log.Free; +end. \ No newline at end of file diff --git a/Game/Code/UltraStar.identcache2 b/Game/Code/UltraStar.identcache2 new file mode 100644 index 00000000..a437aa7e Binary files /dev/null and b/Game/Code/UltraStar.identcache2 differ diff --git a/Game/Code/UltraStar.rc b/Game/Code/UltraStar.rc new file mode 100644 index 00000000..22ee2142 --- /dev/null +++ b/Game/Code/UltraStar.rc @@ -0,0 +1,15 @@ +Button JPG "..\Graphics\MusicWheelItem song.jpg" + +Font BMP "..\Fonts\Normal\Font Normal 16.bmp" +Font FNT "..\Fonts\Normal\Font Normal.dat" + +FontB BMP "..\Fonts\Bold\Font 1024 Bold 16.bmp" +FontB FNT "..\Fonts\Bold\Font 1024 Bold.dat" + +FontO BMP "..\Fonts\Outline 1\Outline 36 (1024) 16c.bmp" +FontO FNT "..\Fonts\Outline 1\Outline 36 (1024).dat" + +FontO2 BMP "..\Fonts\Outline 2\5 - Outline Dark Edited 16c.bmp" +FontO2 FNT "..\Fonts\Outline 2\Outline.dat" + +MAINICON ICON "..\Graphics\us.ico" diff --git a/Game/Code/UltraStar.~dpr b/Game/Code/UltraStar.~dpr new file mode 100644 index 00000000..a27201e9 --- /dev/null +++ b/Game/Code/UltraStar.~dpr @@ -0,0 +1,285 @@ + program UltraStar; + +{$DEFINE TRANSLATE} +//DEFINE THEMESAVE} + +{$R 'UltraStar.res' 'UltraStar.rc'} + +uses + {//Earlyer in Code Dir.. Now in SearchDir + DDKint in '..\ZLPortIO\ddkint.pas', + ZLPortIO in '..\ZLPortIO\zlportio.pas', + SQLiteTable3 in '..\SQLite\SQLiteTable3.pas', + SQLite3 in '..\SQLite\SQLite3.pas',} + Windows, + SDL, + + //Menu Objects + UDisplay in 'Menu\UDisplay.pas', + UMenu in 'Menu\UMenu.pas', + UMenuStatic in 'Menu\UMenuStatic.pas', + UMenuText in 'Menu\UMenuText.pas', + UMenuButton in 'Menu\UMenuButton.pas', + UMenuInteract in 'Menu\UMenuInteract.pas', + UMenuSelect in 'Menu\UMenuSelect.pas', + UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', + UDrawTexture in 'Menu\UDrawTexture.pas', + + //Classes + UGraphic in 'Classes\UGraphic.pas', + UTexture in 'Classes\UTexture.pas', + UMusic in 'Classes\UMusic.pas', + UPliki in 'Classes\UPliki.pas', + UMain in 'Classes\UMain.pas', + UDraw in 'Classes\UDraw.pas', + URecord in 'Classes\URecord.pas', + UTime in 'Classes\UTime.pas', + TextGL in 'Classes\TextGL.pas', + USongs in 'Classes\USongs.pas', + UIni in 'Classes\UIni.pas', + USmpeg in 'SMpeg\USmpeg.pas', + ULyrics in 'Classes\ULyrics.pas', + USkins in 'Classes\USkins.pas', + UThemes in 'Classes\UThemes.pas', + ULog in 'Classes\ULog.pas', + UJoystick in 'Classes\UJoystick.pas', + ULCD in 'Classes\ULCD.pas', + ULight in 'Classes\ULight.pas', + UScores in 'Classes\UScores.pas', + ULanguage in 'Classes\ULanguage.pas', + UCovers in 'Classes\UCovers.pas', + UCatCovers in 'Classes\UCatCovers.pas', + UFiles in 'Classes\UFiles.pas', + UGraphicClasses in 'Classes\UGraphicClasses.pas', + UDLLManager in 'Classes\UDLLManager.pas', + UParty in 'Classes\UParty.pas', + + //Screens + UScreenLoading in 'Screens\UScreenLoading.pas', + UScreenWelcome in 'Screens\UScreenWelcome.pas', + UScreenMain in 'Screens\UScreenMain.pas', + UScreenName in 'Screens\UScreenName.pas', + UScreenLevel in 'Screens\UScreenLevel.pas', + UScreenSong in 'Screens\UScreenSong.pas', + UScreenSing in 'Screens\UScreenSing.pas', + UScreenScore in 'Screens\UScreenScore.pas', + UScreenOptions in 'Screens\UScreenOptions.pas', + UScreenOptionsGame in 'Screens\UScreenOptionsGame.pas', + UScreenOptionsGraphics in 'Screens\UScreenOptionsGraphics.pas', + UScreenOptionsSound in 'Screens\UScreenOptionsSound.pas', + UScreenOptionsLyrics in 'Screens\UScreenOptionsLyrics.pas', + UScreenOptionsThemes in 'Screens\UScreenOptionsThemes.pas', + UScreenOptionsRecord in 'Screens\UScreenOptionsRecord.pas', + UScreenEditSub in 'Screens\UScreenEditSub.pas', + UScreenEdit in 'Screens\UScreenEdit.pas', + UScreenEditConvert in 'Screens\UScreenEditConvert.pas', + UScreenEditHeader in 'Screens\UScreenEditHeader.pas', + UScreenOpen in 'Screens\UScreenOpen.pas', + UScreenTop5 in 'Screens\UScreenTop5.pas', + UScreenSongMenu in 'Screens\UScreenSongMenu.pas', + //PartyMode + UScreenSingModi in 'Screens\UScreenSingModi.pas', + UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', + UScreenPartyScore in 'Screens\UScreenPartyScore.pas', + UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', + UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', + UScreenPartyWin in 'Screens\UScreenPartyWin.pas', + + //Modi SDK + ModiSDK in '..\..\Modis\SDK\ModiSDK.pas'; + +const + Version = 'UltraStar Deluxe V 0.90 Beta'; + +var + WndTitle: string; + hWnd: THandle; + I: Integer; + +begin + WndTitle := Version; + + //Start more than One Time Prevention + hWnd:= FindWindow(nil, PChar(WndTitle)); + //Programm already started + if (hWnd <> 0) then + begin + I := Messagebox(0, PChar('Another Instance of Ultrastar is already running. Contìnue ?'), PChar(WndTitle), MB_ICONWARNING or MB_YESNO); + if (I = IDYes) then + begin + I := 1; + repeat + Inc(I); + hWnd := FindWindow(nil, PChar(WndTitle + ' Instance ' + InttoStr(I))); + until (hWnd = 0); + + WndTitle := WndTitle + ' Instance ' + InttoStr(I); + end + else + Exit; + end; + + + + USTime := TTime.Create; + + // Log + Benchmark + Log := TLog.Create; + Log.Title := WndTitle; + Log.BenchmarkStart(0); +// Log.LogError(IntToStr(DayOfTheYear(Date))); + + // Language + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Paths', 'Initialization'); InitializePaths; + Log.LogStatus('Load Language', 'Initialization'); Language := TLanguage.Create; + //Add Const Values: + Language.AddConst('US_VERSION', Version); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Language', 1); + + // SDL + Log.BenchmarkStart(1); + Log.LogStatus('Initialize SDL', 'Initialization'); + SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing SDL', 1); + + // Skin + Log.BenchmarkStart(1); + Log.LogStatus('Loading Skin List', 'Initialization'); Skin := TSkin.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Skin List', 1); + + //Log.LogBenchmark(inttostr(Skin.), 1); + + // Sound Card List + Log.BenchmarkStart(1); + Log.LogStatus('Loading Soundcard list', 'Initialization'); + Recording := TRecord.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Soundcard list', 1); + + // Ini + Paths + Log.BenchmarkStart(1); + Log.LogStatus('Load Ini', 'Initialization'); Ini := TIni.Create; + Ini.Load; + Language.ChangeLanguage(ILanguage[Ini.Language]); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Ini', 1); + + // LCD + Log.BenchmarkStart(1); + Log.LogStatus('Load LCD', 'Initialization'); LCD := TLCD.Create; + if Ini.LPT = 1 then begin +// LCD.HalfInterface := true; + LCD.Enable; + LCD.Clear; + LCD.WriteText(1, ' UltraStar '); + LCD.WriteText(2, ' Loading... '); + end; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading LCD', 1); + + // Light + Log.BenchmarkStart(1); + Log.LogStatus('Load Light', 'Initialization'); Light := TLight.Create; + if Ini.LPT = 2 then begin + Light.Enable; +// Light.LightOne(0, 1000); + end; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Light', 1); + + // Theme + Log.BenchmarkStart(1); + Log.LogStatus('Load Themes', 'Initialization'); Theme := TTheme.Create('Themes\' + ITheme[Ini.Theme] + '.ini', Ini.Color); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Themes', 1); + + // Covers Cache + Log.BenchmarkStart(1); + Log.LogStatus('Creating Covers Cache', 'Initialization'); Covers := TCovers.Create; + Log.LogBenchmark('Loading Covers Cache Array', 1); + Log.BenchmarkStart(1); + + // Category Covers + Log.BenchmarkStart(1); + Log.LogStatus('Creating Category Covers Array', 'Initialization'); + CatCovers:= TCatCovers.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Category Covers Array', 1); + + // Songs + //Log.BenchmarkStart(1); + Log.LogStatus('Creating Song Array', 'Initialization'); Songs := TSongs.Create; + Songs.LoadSongList; + Log.LogStatus('Creating 2nd Song Array', 'Initialization'); CatSongs := TCatSongs.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Songs', 1); + + // PluginManager + Log.BenchmarkStart(1); + Log.LogStatus('PluginManager', 'Initialization'); + DLLMan := TDLLMan.Create; //Load PluginList + + Log.LogError(inttostr(Length(DLLMan.Plugins)) + ' Plugins Loaded'); + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading PluginManager', 1); + + // Party Mode Manager + Log.BenchmarkStart(1); + Log.LogStatus('PartySession Manager', 'Initialization'); + PartySession := TParty_Session.Create; //Load PartySession + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading PartySession Manager', 1); + + // Graphics + Log.BenchmarkStart(1); + Log.LogStatus('Initialize 3D', 'Initialization'); Initialize3D(WndTitle); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing 3D', 1); + + // Sound + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Sound', 'Initialization'); + Log.LogStatus('Creating Music', 'InitializeSound'); Music := TMusic.Create; + InitializeSound; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing Sound', 1); + + // Score Saving System + Log.BenchmarkStart(1); + Log.LogStatus('Score DB System', 'Initialization'); + InitScore('Scores.db'); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Score DB System', 1); + + // Joypad + if Ini.Joypad = 1 then begin + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Joystick', 'Initialization'); Joy := TJoy.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing Joystick', 1); + end; + + Log.BenchmarkEnd(0); + Log.LogBenchmark('Loading Time', 0); + + +// Music.SetLoop(true); +// Music.SetVolume(50); +// Music.Open(SkinPath + 'Menu Music 3.mp3'); +// Music.Play; + Log.LogStatus('Main Loop', 'Initialization'); MainLoop; + +// sleep(3000); + + // finish + if Ini.LPT = 1 then LCD.Clear; + if Ini.LPT = 2 then Light.TurnOff; + + Log.Free; +end. \ No newline at end of file diff --git a/Game/Code/rccompillieren.bat b/Game/Code/rccompillieren.bat new file mode 100644 index 00000000..4e2f2584 --- /dev/null +++ b/Game/Code/rccompillieren.bat @@ -0,0 +1 @@ +BRC32 -r UltraStar.RC \ No newline at end of file diff --git a/Game/Fonts/512x512 Normal.dat b/Game/Fonts/512x512 Normal.dat new file mode 100644 index 00000000..52666d1a Binary files /dev/null and b/Game/Fonts/512x512 Normal.dat differ diff --git a/Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp b/Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp new file mode 100644 index 00000000..d485567d Binary files /dev/null and b/Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp differ diff --git a/Game/Fonts/Backup/Bold/Font 1024 Bold.dat b/Game/Fonts/Backup/Bold/Font 1024 Bold.dat new file mode 100644 index 00000000..ac64a71a Binary files /dev/null and b/Game/Fonts/Backup/Bold/Font 1024 Bold.dat differ diff --git a/Game/Fonts/Backup/Bold/Thumbs.db b/Game/Fonts/Backup/Bold/Thumbs.db new file mode 100644 index 00000000..a445e690 Binary files /dev/null and b/Game/Fonts/Backup/Bold/Thumbs.db differ diff --git a/Game/Fonts/Backup/Normal/Font Normal 16.bmp b/Game/Fonts/Backup/Normal/Font Normal 16.bmp new file mode 100644 index 00000000..725f05bd Binary files /dev/null and b/Game/Fonts/Backup/Normal/Font Normal 16.bmp differ diff --git a/Game/Fonts/Backup/Normal/Font Normal.dat b/Game/Fonts/Backup/Normal/Font Normal.dat new file mode 100644 index 00000000..5f69cfc8 Binary files /dev/null and b/Game/Fonts/Backup/Normal/Font Normal.dat differ diff --git a/Game/Fonts/Backup/Normal/Thumbs.db b/Game/Fonts/Backup/Normal/Thumbs.db new file mode 100644 index 00000000..469eaf5c Binary files /dev/null and b/Game/Fonts/Backup/Normal/Thumbs.db differ diff --git a/Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp b/Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp new file mode 100644 index 00000000..893725d4 Binary files /dev/null and b/Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp differ diff --git a/Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat b/Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat new file mode 100644 index 00000000..e9fb10fa Binary files /dev/null and b/Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat differ diff --git a/Game/Fonts/Backup/Outline 1/Thumbs.db b/Game/Fonts/Backup/Outline 1/Thumbs.db new file mode 100644 index 00000000..94e6c896 Binary files /dev/null and b/Game/Fonts/Backup/Outline 1/Thumbs.db differ diff --git a/Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp b/Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp new file mode 100644 index 00000000..b7285946 Binary files /dev/null and b/Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp differ diff --git a/Game/Fonts/Backup/Outline 2/Outline.dat b/Game/Fonts/Backup/Outline 2/Outline.dat new file mode 100644 index 00000000..16ca7fd7 Binary files /dev/null and b/Game/Fonts/Backup/Outline 2/Outline.dat differ diff --git a/Game/Fonts/Backup/Outline 2/Thumbs.db b/Game/Fonts/Backup/Outline 2/Thumbs.db new file mode 100644 index 00000000..685a4ee5 Binary files /dev/null and b/Game/Fonts/Backup/Outline 2/Thumbs.db differ diff --git a/Game/Fonts/Bold/Font 1024 Bold 16.bmp b/Game/Fonts/Bold/Font 1024 Bold 16.bmp new file mode 100644 index 00000000..f0611a53 Binary files /dev/null and b/Game/Fonts/Bold/Font 1024 Bold 16.bmp differ diff --git a/Game/Fonts/Bold/Font 1024 Bold 16.old.bmp b/Game/Fonts/Bold/Font 1024 Bold 16.old.bmp new file mode 100644 index 00000000..d485567d Binary files /dev/null and b/Game/Fonts/Bold/Font 1024 Bold 16.old.bmp differ diff --git a/Game/Fonts/Bold/Font 1024 Bold.dat b/Game/Fonts/Bold/Font 1024 Bold.dat new file mode 100644 index 00000000..280a6cb4 Binary files /dev/null and b/Game/Fonts/Bold/Font 1024 Bold.dat differ diff --git a/Game/Fonts/Bold/Thumbs.db b/Game/Fonts/Bold/Thumbs.db new file mode 100644 index 00000000..a445e690 Binary files /dev/null and b/Game/Fonts/Bold/Thumbs.db differ diff --git a/Game/Fonts/Normal/Font Normal 16.bmp b/Game/Fonts/Normal/Font Normal 16.bmp new file mode 100644 index 00000000..6534d9c3 Binary files /dev/null and b/Game/Fonts/Normal/Font Normal 16.bmp differ diff --git a/Game/Fonts/Normal/Font Normal 16.old.bmp b/Game/Fonts/Normal/Font Normal 16.old.bmp new file mode 100644 index 00000000..725f05bd Binary files /dev/null and b/Game/Fonts/Normal/Font Normal 16.old.bmp differ diff --git a/Game/Fonts/Normal/Font Normal.dat b/Game/Fonts/Normal/Font Normal.dat new file mode 100644 index 00000000..1b517a0e Binary files /dev/null and b/Game/Fonts/Normal/Font Normal.dat differ diff --git a/Game/Fonts/Normal/Thumbs.db b/Game/Fonts/Normal/Thumbs.db new file mode 100644 index 00000000..2cad5e2b Binary files /dev/null and b/Game/Fonts/Normal/Thumbs.db differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp b/Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp new file mode 100644 index 00000000..25b03a57 Binary files /dev/null and b/Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024).dat b/Game/Fonts/Outline 1/Outline 36 (1024).dat new file mode 100644 index 00000000..280a6cb4 Binary files /dev/null and b/Game/Fonts/Outline 1/Outline 36 (1024).dat differ diff --git a/Game/Fonts/Outline 1/Photoshop.psd b/Game/Fonts/Outline 1/Photoshop.psd new file mode 100644 index 00000000..d7d0e99d Binary files /dev/null and b/Game/Fonts/Outline 1/Photoshop.psd differ diff --git a/Game/Fonts/Outline 1/Thumbs.db b/Game/Fonts/Outline 1/Thumbs.db new file mode 100644 index 00000000..b6e96879 Binary files /dev/null and b/Game/Fonts/Outline 1/Thumbs.db differ diff --git a/Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp b/Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp new file mode 100644 index 00000000..6d78ba77 Binary files /dev/null and b/Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp differ diff --git a/Game/Fonts/Outline 2/Outline.dat b/Game/Fonts/Outline 2/Outline.dat new file mode 100644 index 00000000..9f1042e6 Binary files /dev/null and b/Game/Fonts/Outline 2/Outline.dat differ diff --git a/Game/Fonts/Outline 2/Thumbs.db b/Game/Fonts/Outline 2/Thumbs.db new file mode 100644 index 00000000..685a4ee5 Binary files /dev/null and b/Game/Fonts/Outline 2/Thumbs.db differ diff --git a/Game/Graphics/MusicWheelItem song.jpg b/Game/Graphics/MusicWheelItem song.jpg new file mode 100644 index 00000000..87671377 Binary files /dev/null and b/Game/Graphics/MusicWheelItem song.jpg differ diff --git a/Game/Graphics/Thumbs.db b/Game/Graphics/Thumbs.db new file mode 100644 index 00000000..901e717c Binary files /dev/null and b/Game/Graphics/Thumbs.db differ diff --git a/Game/Graphics/us.ico b/Game/Graphics/us.ico new file mode 100644 index 00000000..e21ed5e8 Binary files /dev/null and b/Game/Graphics/us.ico differ diff --git a/Modis/5000Points/Until5000.dpr b/Modis/5000Points/Until5000.dpr new file mode 100644 index 00000000..8d66eb5f --- /dev/null +++ b/Modis/5000Points/Until5000.dpr @@ -0,0 +1,89 @@ +library Until5000; + +uses + ModiSDK in '..\SDK\ModiSDK.pas'; + +//Gave the Plugins Info +procedure PluginInfo (var Info: TPluginInfo); stdcall; +begin + Info.Name := 'PLUGIN_UNTIL5000_NAME'; + Info.NumPlayers := 31; + + Info.Creator := 'Whiteshark'; + Info.PluginDesc := 'PLUGIN_UNTIL5000_DESC'; + + + //Options + Info.LoadSong := True; //Whether or not a Song should be Loaded + //Only When Song is Loaded: + Info.ShowScore := True; //Whether or not the Score should be shown + Info.ShowNotes := True; //Whether the Note Lines should be displayed + Info.LoadVideo := True; //Should the Video be loaded ? + Info.LoadBack := True; //Should the Background be loaded ? + + Info.BGShowFull := False; //Whether the Background or the Video should be shown Fullsize + Info.BGShowFull_O := True; //Whether the Background or the Video should be shown Fullsize + + Info.ShowRateBar:= True; //Whether the Bar that shows how good the player was sould be displayed + Info.ShowRateBar_O := True; //Load from Ini whether the Bar should be Displayed + + Info.EnLineBonus := False; //Whether LineBonus Should be enabled + Info.EnLineBonus_O := True; //Load from Ini whether LineBonus Should be enabled + + //Options even when song is Not loaded + Info.ShowBars := False; //Whether the White Bars on Top and Bottom should be Drawn + Info.TeamModeOnly := False; //If True the Plugin can only be Played in Team Mode + Info.GetSoundData := False; //If True the RData Procedure is called when new SoundData is available + Info.Dummy := False; //Should be Set to False... for Updateing Plugin Interface +end; + +//Executed on Game Start //If True Game begins, else Failure +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +begin +Result := True; +end; + +//Executed everytime the Screen is Drawed //If False The Game finishes +function Draw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; stdcall; +var +I: Integer; +begin +Result := False; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Bar := PlayerInfo.Playerinfo[I].Score div 50; + PlayerInfo.Playerinfo[I].Percentage := PlayerInfo.Playerinfo[I].Bar; + if (PlayerInfo.Playerinfo[I].Score >=5000) then + Exit; + end; +Result := True; +end; + +//Is Executed on Finish, Returns the Playernum of the Winner +function Finish (var Playerinfo: TPlayerinfo): byte; stdcall; +var + I:Integer; +begin +Result := 0; +for I := 0 to PlayerInfo.NumPlayers-1 do + begin + if (PlayerInfo.Playerinfo[I].Score >=5000) then + begin + Case I of + 0: Result := Result OR 1; + 1: Result := Result OR 2; + 2: Result := Result OR 4; + 3: Result := Result OR 8; + 4: Result := Result OR 16; + 5: Result := Result OR 32; + end; + end; + end; +end; + +exports +PluginInfo, Init, Draw, Finish; + +begin + +end. \ No newline at end of file diff --git a/Modis/Blind/Blind.dpr b/Modis/Blind/Blind.dpr new file mode 100644 index 00000000..99c7d7eb --- /dev/null +++ b/Modis/Blind/Blind.dpr @@ -0,0 +1,97 @@ +library Blind; + +uses + ModiSDK in '..\SDK\ModiSDK.pas'; + +//Gave the Plugins Info +procedure PluginInfo (var Info: TPluginInfo); stdcall; +begin + Info.Name := 'PLUGIN_BLIND_NAME'; + Info.NumPlayers := 31; + + Info.Creator := 'Whiteshark'; + Info.PluginDesc := 'PLUGIN_BLIND_DESC'; + + + //Options + Info.LoadSong := True; //Whether or not a Song should be Loaded + //Only When Song is Loaded: + Info.ShowScore := True; //Whether or not the Score should be shown + Info.ShowNotes := False; //Whether the Note Lines should be displayed + Info.LoadVideo := True; //Should the Video be loaded ? + Info.LoadBack := True; //Should the Background be loaded ? + + Info.BGShowFull := False; //Whether the Background or the Video should be shown Fullsize + Info.BGShowFull_O := True; //Whether the Background or the Video should be shown Fullsize + + Info.ShowRateBar:= False; //Whether the Bar that shows how good the player was sould be displayed + Info.ShowRateBar_O := True; //Load from Ini whether the Bar should be Displayed + + Info.EnLineBonus := False; //Whether LineBonus Should be enabled + Info.EnLineBonus_O := True; //Load from Ini whether LineBonus Should be enabled + + //Options even when song is Not loaded + Info.ShowBars := False; //Whether the White Bars on Top and Bottom should be Drawn + Info.TeamModeOnly := False; //If True the Plugin can only be Played in Team Mode + Info.GetSoundData := False; //If True the RData Procedure is called when new SoundData is available + Info.Dummy := False; //Should be Set to False... for Updateing Plugin Interface +end; + +//Executed on Game Start //If True Game begins, else Failure +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +begin +Result := True; +end; + +//Executed everytime the Screen is Drawed //If False The Game finishes +function Draw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; stdcall; +var +I: Integer; +begin +Result := True; +end; + +//Is Executed on Finish, Returns the Playernum of the Winner +function Finish (var Playerinfo: TPlayerinfo): byte; stdcall; +var + I:Integer; + MaxScore: Word; +begin + Result := 0; + MaxScore := 0; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Percentage := PlayerInfo.Playerinfo[I].Score div 9999; + if (PlayerInfo.Playerinfo[I].Score > MaxScore) then + begin + MaxScore := PlayerInfo.Playerinfo[I].Score; + Case I of + 0: Result := 1; + 1: Result := 2; + 2: Result := 4; + 3: Result := 8; + 4: Result := 16; + 5: Result := 32; + end; + end + else if (PlayerInfo.Playerinfo[I].Score = MaxScore) then + begin + Case I of + 0: Result := Result OR 1; + 1: Result := Result OR 2; + 2: Result := Result OR 4; + 3: Result := Result OR 8; + 4: Result := Result OR 16; + 5: Result := Result OR 32; + end; + end; + end; + +end; + +exports +PluginInfo, Init, Draw, Finish; + +begin + +end. \ No newline at end of file diff --git a/Modis/Don't_Get_Worse/Hold_The_Line.dpr b/Modis/Don't_Get_Worse/Hold_The_Line.dpr new file mode 100644 index 00000000..87fea3db --- /dev/null +++ b/Modis/Don't_Get_Worse/Hold_The_Line.dpr @@ -0,0 +1,170 @@ +library Hold_The_Line; + +uses + ModiSDK in '..\SDK\ModiSDK.pas', + StrUtils in '..\SDK\StrUtils.pas', + OpenGL12; + +var + PointerTex: TSmallTexture; + CountSentences: Cardinal; + Limit: Byte; + fPrint: fModi_Print; + Frame: Integer; + PlayerTimes: array[0..5] of Integer; + +//Gave the Plugins Info +procedure PluginInfo (var Info: TPluginInfo); stdcall; +begin + Info.Name := 'PLUGIN_HDL_NAME'; + Info.NumPlayers := 31; + + Info.Creator := 'Whiteshark'; + Info.PluginDesc := 'PLUGIN_HDL_DESC'; + + + //Options + Info.LoadSong := True; //Whether or not a Song should be Loaded + //Only When Song is Loaded: + Info.ShowScore := True; //Whether or not the Score should be shown + Info.ShowNotes := True; //Whether the Note Lines should be displayed + Info.LoadVideo := True; //Should the Video be loaded ? + Info.LoadBack := True; //Should the Background be loaded ? + + Info.BGShowFull := False; //Whether the Background or the Video should be shown Fullsize + Info.BGShowFull_O := True; //Whether the Background or the Video should be shown Fullsize + + Info.ShowRateBar:= True; //Whether the Bar that shows how good the player was sould be displayed + Info.ShowRateBar_O := False; //Load from Ini whether the Bar should be Displayed + + Info.EnLineBonus := False; //Whether LineBonus Should be enabled + Info.EnLineBonus_O := True; //Load from Ini whether LineBonus Should be enabled + + //Options even when song is Not loaded + Info.ShowBars := False; //Whether the White Bars on Top and Bottom should be Drawn + Info.TeamModeOnly := False; //If True the Plugin can only be Played in Team Mode + Info.GetSoundData := False; //If True the RData Procedure is called when new SoundData is available + Info.Dummy := False; //Should be Set to False... for Updateing Plugin Interface +end; + +//Executed on Game Start //If True Game begins, else Failure +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +var + I: Integer; + Texname, TexType: PChar; +begin { + TexName := CreateStr(PChar('HDL_Pointer')); + TexType := CreateStr(PChar('Plain')); + //PointerTex := LoadTex(TexName, TexType); + + FreeStr(TexName); + FreeStr(TexType); + + //CountSentences := Sentences.High; + Limit := 0; + Frame := 0; + + fPrint := Print; + + {for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Enabled := True; + PlayerInfo.Playerinfo[I].Percentage := 100; + PlayerTimes[I] := 0; + end; } + + Result := True; +end; + +//Executed everytime the Screen is Drawed //If False The Game finishes +function Draw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; stdcall; +var + I: Integer; + L: Byte; + C: Byte; + Text: PChar; +begin + case Limit of + 0: L := 20; + 1: L := 50; + 2: L := 75; + end; + + C:= 0; + + Inc(Frame); + + Result := True; + + //Inc Limit + if (Limit = 0) And (CurSentence >= CountSentences div 5 * 2) then + Inc(Limit) + else if (Limit = 1) And (CurSentence >= CountSentences div 3 * 2) then + Inc(Limit); + + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + if PlayerInfo.Playerinfo[I].Enabled then + begin + if PlayerInfo.Playerinfo[I].Bar < L then + begin + PlayerInfo.Playerinfo[I].Enabled := False; + Inc(C); + PlayerTimes[I] := Frame; //Save Tiem of Dismission + //ToDo: PlaySound + end; + + //Draw Pointer; + //glBindTexture(GL_TEXTURE_2D, PointerTex.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(1/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY - 4); + glTexCoord2f(1/32, 1); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY + 12); + glTexCoord2f(31/32, 1); glVertex2f(PlayerInfo.Playerinfo[I].PosX+ L + 3, PlayerInfo.Playerinfo[I].PosY + 12); + glTexCoord2f(31/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX+ L + 3, PlayerInfo.Playerinfo[I].PosY - 4); + glEnd; + + end + else + begin + Inc(C); + //Draw Dismissed + Text := CreateStr(PChar('PARTY_DISMISSED')); + //Str := 'Test123'; + //fPrint (1, 6, PlayerInfo.Playerinfo[I].PosX, PlayerInfo.Playerinfo[I].PosY-8, Text); + FreeStr(Text); + end; + end; + {if (C >= PlayerInfo.NumPlayers-1) then + Result := False; } +end; + +//Is Executed on Finish, Returns the Playernum of the Winner +function Finish (var Playerinfo: TPlayerinfo): byte; stdcall; +var + I:Integer; +begin +Result := 0; +for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Percentage := (PlayerTimes[I] * 100) div Frame; + if (PlayerInfo.Playerinfo[I].Enabled) then + begin + Case I of + 0: Result := Result OR 1; + 1: Result := Result OR 2; + 2: Result := Result OR 4; + 3: Result := Result OR 8; + 4: Result := Result OR 16; + 5: Result := Result OR 32; + end; + end; + end; +end; + +exports +PluginInfo, Init, Draw, Finish; + +begin + +end. \ No newline at end of file diff --git a/Modis/Duell/Duell.cfg b/Modis/Duell/Duell.cfg new file mode 100644 index 00000000..7f619472 --- /dev/null +++ b/Modis/Duell/Duell.cfg @@ -0,0 +1,40 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"E:\Projekte\Ultrastar\Bin\Plugins" +-LE"e:\programme\borland\delphi7\Projects\Bpl" +-LN"e:\programme\borland\delphi7\Projects\Bpl" +-U"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" +-O"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" +-I"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" +-R"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" diff --git a/Modis/Duell/Duell.dpr b/Modis/Duell/Duell.dpr new file mode 100644 index 00000000..40ae11ed --- /dev/null +++ b/Modis/Duell/Duell.dpr @@ -0,0 +1,95 @@ +library Duell; + +uses + ModiSDK in '..\SDK\ModiSDK.pas'; + +//Gave the Plugins Info +procedure PluginInfo (var Info: TPluginInfo); stdcall; +begin + Info.Name := 'PLUGIN_DUELL_NAME'; + Info.NumPlayers := 31; + + Info.Creator := 'Whiteshark'; + Info.PluginDesc := 'PLUGIN_DUELL_DESC'; + + + //Options + Info.LoadSong := True; //Whether or not a Song should be Loaded + //Only When Song is Loaded: + Info.ShowScore := True; //Whether or not the Score should be shown + Info.ShowNotes := True; //Whether the Note Lines should be displayed + Info.LoadVideo := True; //Should the Video be loaded ? + Info.LoadBack := True; //Should the Background be loaded ? + + Info.BGShowFull := False; //Whether the Background or the Video should be shown Fullsize + Info.BGShowFull_O := True; //Whether the Background or the Video should be shown Fullsize + + Info.ShowRateBar:= False; //Whether the Bar that shows how good the player was sould be displayed + Info.ShowRateBar_O := True; //Load from Ini whether the Bar should be Displayed + + Info.EnLineBonus := False; //Whether LineBonus Should be enabled + Info.EnLineBonus_O := True; //Load from Ini whether LineBonus Should be enabled + + //Options even when song is Not loaded + Info.ShowBars := False; //Whether the White Bars on Top and Bottom should be Drawn + Info.TeamModeOnly := False; //If True the Plugin can only be Played in Team Mode + Info.GetSoundData := False; //If True the RData Procedure is called when new SoundData is available + Info.Dummy := False; //Should be Set to False... for Updateing Plugin Interface +end; + +//Executed on Game Start //If True Game begins, else Failure +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +begin +Result := True; +end; + +//Executed everytime the Screen is Drawed //If False The Game finishes +function Draw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; stdcall; +begin +Result := True; +end; + +//Is Executed on Finish, Returns the Playernum of the Winner +function Finish (var Playerinfo: TPlayerinfo): byte; stdcall; +var + I:Integer; + MaxScore: Word; +begin + Result := 0; + MaxScore := 0; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Percentage := PlayerInfo.Playerinfo[I].Score div 9999; + if (PlayerInfo.Playerinfo[I].Score > MaxScore) then + begin + MaxScore := PlayerInfo.Playerinfo[I].Score; + Case I of + 0: Result := 1; + 1: Result := 2; + 2: Result := 4; + 3: Result := 8; + 4: Result := 16; + 5: Result := 32; + end; + end + else if (PlayerInfo.Playerinfo[I].Score = MaxScore) then + begin + Case I of + 0: Result := Result OR 1; + 1: Result := Result OR 2; + 2: Result := Result OR 4; + 3: Result := Result OR 8; + 4: Result := Result OR 16; + 5: Result := Result OR 32; + end; + end; + end; + +end; + +exports +PluginInfo, Init, Draw, Finish; + +begin + +end. \ No newline at end of file diff --git a/Modis/SDK/ModiSDK.pas b/Modis/SDK/ModiSDK.pas new file mode 100644 index 00000000..dc3b74c0 --- /dev/null +++ b/Modis/SDK/ModiSDK.pas @@ -0,0 +1,139 @@ +unit ModiSDK; + +interface + +type //PluginInfo, for Init + TPluginInfo = record + //Info + Name: Array [0..32] of Char; //Modi to Register for the Plugin + Creator: Array [0..32] of Char; //Name of the Author + PluginDesc: Array [0..64] of Char; //Plugin Description + + //Options + LoadSong: boolean; //Whether or not a Song should be Loaded + //Only When Song is Loaded: + ShowNotes: boolean; //Whether the Note Lines should be displayed + LoadVideo: boolean; //Should the Video be loaded ? + LoadBack: boolean; //Should the Background be loaded ? + + ShowRateBar: boolean; //Whether the Bar that shows how good the player was sould be displayed + ShowRateBar_O: boolean; //Load from Ini whether the Bar should be Displayed + + EnLineBonus: boolean; //Whether LineBonus Should be enabled + EnLineBonus_O: boolean; //Load from Ini whether LineBonus Should be enabled + + BGShowFull: boolean; //Whether the Background or the Video should be shown Fullsize + BGShowFull_O: boolean; //Whether the Background or the Video should be shown Fullsize + + //Options -> everytime + ShowScore: boolean; //Whether or not the Score should be shown + ShowBars: boolean; //Whether the White Bars on Top and Bottom should be Drawn + TeamModeOnly: boolean; //If True the Plugin can only be Played in Team Mode + GetSoundData: boolean; //If True the RData Procedure is called when new SoundData is available + Dummy: boolean; //Should be Set to False... for Updateing Plugin Interface + + NumPlayers: Byte; //Number of Available Players for Modi + //Set different Bits + //1 -> One Player + //2 -> Two Players + //4 -> Three Players + //8 -> Four Players + //16-> Six Players + //e.g. : 10 -> Playable with 2 and 4 Players + + end; + + TPlayerInfo = record + NumPlayers: Byte; + Playerinfo: array[0..5] of record + Name: PChar; //Name of the Player + Score:Word; //Players Score + Bar: Byte; //Percentage of the SingBar filled + PosX: Real; //PosX of Players SingBar + PosY: Real; //PosY " + Enabled: Boolean; //Whether the Player could get Points + Percentage: Byte; //Percentage Shown on the Score Screen + end; + end; + + TTeamInfo = record + NumTeams: Byte; + Teaminfo: array[0..5] of record + Name: PChar; + Score: Word; + Joker: Byte; + CurPlayer: Byte; + NumPlayers: Byte; + Playerinfo: array[0..3] of record + Name: PChar; + TimesPlayed: Byte; + + end; + end; + end; + + TsmallTexture = record + TexNum: integer; + W: real; + H: real; + ScaleW: real; // for dynamic scalling while leaving width constant + ScaleH: real; // for dynamic scalling while leaving height constant + end; + + TSentences = record + Akt: integer; // aktualna czesc utworu do rysowania + High: integer; + Ilosc: integer; + Resolution: integer; + NotesGAP: integer; + TotalLength: integer; + Sentence: array of record + Start: integer; + StartNote: integer; + Lyric: string; + LyricWidth: real; + Koniec: integer; + BaseNote: integer; + HighNote: integer; + IlNut: integer; + TotalNotes: integer; + Note: array of record + Color: integer; + Start: integer; + Length: integer; + Ton: integer; + TonGamy: integer; + //Text: string; + FreeStyle: boolean; + Typ: integer; // zwykla nuta x1, zlota nuta x2 + end; + end; + end; + + //AChar = array [0..254] of Char; + + DWORD = Longword; + HSTREAM = DWORD; + + //Routines to gave to the Plugin + fModi_LoadTex = function (const Name, Typ: PChar): TsmallTexture; stdcall; //Pointer to Texture Loader + //fModi_Translate = function (const Name, Translation: AChar): Integer; stdcall; //Pointer to Translator + fModi_Print = procedure (const Style, Size: Byte; const X, Y: Real; const Text: PChar); stdcall; //Procedure to Print Text //Now translated automatically + fModi_LoadSound = function (const Name: PChar): Cardinal; stdcall; //Procedure that loads a Custom Sound + fModi_PlaySound = procedure (const Index: Cardinal); stdcall; //Plays a Custom Sound + + //DLL Funktionen + //Gave the Plugins Info + pModi_PluginInfo = procedure (var Info: TPluginInfo); stdcall; + //Executed on Game Start //If True Game begins, else Failure + fModi_Init = function (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; + //Executed everytime the Screen is Drawed //If False The Game finishes + fModi_Draw = function (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; stdcall; + //Is Executed on Finish, Returns the Playernum of the Winner + fModi_Finish = function (var Playerinfo: TPlayerinfo): byte; stdcall; + //Procedure called when new Sound Data is available + pModi_RData = procedure (handle: HSTREAM; buffer: Pointer; len: DWORD; user: DWORD); stdcall; + +implementation + +end. diff --git a/Modis/SDK/StrUtils.pas b/Modis/SDK/StrUtils.pas new file mode 100644 index 00000000..276d95a2 --- /dev/null +++ b/Modis/SDK/StrUtils.pas @@ -0,0 +1,70 @@ +unit StrUtils; + +interface +uses ModiSDK; + +//function StrToAChar(Str: String): AChar; +function CreateStr(Str: PChar): PChar; +procedure FreeStr(Str: PChar); + +implementation + +{function StrToAChar(Str: String): AChar; +var + L, I: Integer; +begin + L := Length(Str); + For I := 0 to L-1 do + AChar[I] := Str[I+1]; + + For I := L to 254 do + AChar[I] := #0; +end; } + +function StrCopy(Dest, Source: PChar): PChar; assembler; +asm + PUSH EDI + PUSH ESI + MOV ESI,EAX + MOV EDI,EDX + MOV ECX,0FFFFFFFFH + XOR AL,AL + REPNE SCASB + NOT ECX + MOV EDI,ESI + MOV ESI,EDX + MOV EDX,ECX + MOV EAX,EDI + SHR ECX,2 + REP MOVSD + MOV ECX,EDX + AND ECX,3 + REP MOVSB + POP ESI + POP EDI +end; + +function StrLen(Str: PChar): Cardinal; assembler; +asm + MOV EDX,EDI + MOV EDI,EAX + MOV ECX,0FFFFFFFFH + XOR AL,AL + REPNE SCASB + MOV EAX,0FFFFFFFEH + SUB EAX,ECX + MOV EDI,EDX +end; + +function CreateStr(Str: PChar): PChar; +begin + GetMem(Result, StrLen(Str) + 1); + StrCopy(Result, Str); +end; + +procedure FreeStr(Str: PChar); +begin + FreeMem(Str); +end; + +end. \ No newline at end of file -- cgit v1.2.3 From 7120ff7e18ff9bf05d4635435e39654fbc4f4eef Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:31:43 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Modis/Duell/Duell.cfg | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 Modis/Duell/Duell.cfg diff --git a/Modis/Duell/Duell.cfg b/Modis/Duell/Duell.cfg deleted file mode 100644 index 7f619472..00000000 --- a/Modis/Duell/Duell.cfg +++ /dev/null @@ -1,40 +0,0 @@ --$A8 --$B- --$C+ --$D+ --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O+ --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W- --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --E"E:\Projekte\Ultrastar\Bin\Plugins" --LE"e:\programme\borland\delphi7\Projects\Bpl" --LN"e:\programme\borland\delphi7\Projects\Bpl" --U"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" --O"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" --I"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" --R"E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Image\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Net\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLFilter\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLMonoFonts\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\SFont\Pas;E:\Projekte\TVPC Software\Include\JEDI-SDL\smpeg\Pas;E:\Projekte\TVPC Software\Include\Zlportio" -- cgit v1.2.3 From 1bc44c27d036ff57c6d01e3a813fce519c34d27f Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:32:47 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@3 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/UltraStar.RES | Bin 1341060 -> 0 bytes Game/Code/UltraStar.bdsproj | 168 ---------------------- Game/Code/UltraStar.bdsproj.local | 2 - Game/Code/UltraStar.cfg | 41 ------ Game/Code/UltraStar.dof | 148 -------------------- Game/Code/UltraStar.identcache2 | Bin 3983 -> 0 bytes Game/Code/UltraStar.~dpr | 285 -------------------------------------- 7 files changed, 644 deletions(-) delete mode 100644 Game/Code/UltraStar.RES delete mode 100644 Game/Code/UltraStar.bdsproj delete mode 100644 Game/Code/UltraStar.bdsproj.local delete mode 100644 Game/Code/UltraStar.cfg delete mode 100644 Game/Code/UltraStar.dof delete mode 100644 Game/Code/UltraStar.identcache2 delete mode 100644 Game/Code/UltraStar.~dpr diff --git a/Game/Code/UltraStar.RES b/Game/Code/UltraStar.RES deleted file mode 100644 index fcaa4576..00000000 Binary files a/Game/Code/UltraStar.RES and /dev/null differ diff --git a/Game/Code/UltraStar.bdsproj b/Game/Code/UltraStar.bdsproj deleted file mode 100644 index e11acf91..00000000 --- a/Game/Code/UltraStar.bdsproj +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - UltraStar.dpr - - - 7.0 - - - 8 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 1 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 1 - 1 - 1 - True - False - WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; - - False - - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - - - 0 - 0 - 1 - False - False - False - 16384 - 1048576 - 4194304 - - - - E:\Projekte\Ultrastar - - - - E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\midi - vcl;rtl;vclx;VclSmp;vclshlctrls;DelphiX_for6 - TRANSLATE - - False - - - -benchmark - - - False - - - - - - False - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1045 - 1250 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - diff --git a/Game/Code/UltraStar.bdsproj.local b/Game/Code/UltraStar.bdsproj.local deleted file mode 100644 index d576f039..00000000 --- a/Game/Code/UltraStar.bdsproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Game/Code/UltraStar.cfg b/Game/Code/UltraStar.cfg deleted file mode 100644 index 5ade3beb..00000000 --- a/Game/Code/UltraStar.cfg +++ /dev/null @@ -1,41 +0,0 @@ --$A8 --$B- --$C+ --$D+ --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O+ --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W- --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W- --M --$M16384,1048576 --K$00400000 --E"E:\Projekte\Ultrastar\Bin" --LE"e:\programme\borland\delphi7\Projects\Bpl" --LN"e:\programme\borland\delphi7\Projects\Bpl" --U"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" --O"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" --I"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" --R"E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite" --DTRANSLATE diff --git a/Game/Code/UltraStar.dof b/Game/Code/UltraStar.dof deleted file mode 100644 index 174b4358..00000000 --- a/Game/Code/UltraStar.dof +++ /dev/null @@ -1,148 +0,0 @@ -[FileVersion] -Version=7.0 -[Compiler] -A=8 -B=0 -C=1 -D=1 -E=0 -F=0 -G=1 -H=1 -I=1 -J=0 -K=0 -L=1 -M=0 -N=1 -O=1 -P=1 -Q=0 -R=0 -S=0 -T=0 -U=0 -V=1 -W=0 -X=1 -Y=1 -Z=1 -ShowHints=1 -ShowWarnings=0 -UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -NamespacePrefix= -SymbolDeprecated=1 -SymbolLibrary=1 -SymbolPlatform=1 -UnitLibrary=1 -UnitPlatform=1 -UnitDeprecated=1 -HResultCompat=1 -HidingMember=1 -HiddenVirtual=1 -Garbage=1 -BoundsError=1 -ZeroNilCompat=1 -StringConstTruncated=1 -ForLoopVarVarPar=1 -TypedConstVarPar=1 -AsgToTypedConst=1 -CaseLabelRange=1 -ForVariable=1 -ConstructingAbstract=1 -ComparisonFalse=1 -ComparisonTrue=1 -ComparingSignedUnsigned=1 -CombiningSignedUnsigned=1 -UnsupportedConstruct=1 -FileOpen=1 -FileOpenUnitSrc=1 -BadGlobalSymbol=1 -DuplicateConstructorDestructor=1 -InvalidDirective=1 -PackageNoLink=1 -PackageThreadVar=1 -ImplicitImport=1 -HPPEMITIgnored=1 -NoRetVal=1 -UseBeforeDef=1 -ForLoopVarUndef=1 -UnitNameMismatch=1 -NoCFGFileFound=1 -MessageDirective=1 -ImplicitVariants=1 -UnicodeToLocale=1 -LocaleToUnicode=1 -ImagebaseMultiple=1 -SuspiciousTypecast=1 -PrivatePropAccessor=1 -UnsafeType=1 -UnsafeCode=1 -UnsafeCast=1 -[Linker] -MapFile=0 -OutputObjs=0 -ConsoleApp=1 -DebugInfo=0 -RemoteSymbols=0 -MinStackSize=16384 -MaxStackSize=1048576 -ImageBase=4194304 -ExeDescription=Karaoke Software with rating -[Directories] -OutputDir=E:\Projekte\Ultrastar\Bin -UnitOutputDir= -PackageDLLOutputDir= -PackageDCPOutputDir= -SearchPath=E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite -Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;DelphiX_for6 -Conditionals=TRANSLATE -DebugSourceDirs= -UsePackages=0 -[Parameters] -RunParams=-benchmark -HostApplication= -Launcher= -UseLauncher=0 -DebugCWD= -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1045 -CodePage=1250 -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= -[HistoryLists\hlConditionals] -Count=2 -Item0=TRANSLATE -Item1=OGL -[HistoryLists\hlUnitAliases] -Count=1 -Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -[HistoryLists\hlSearchPath] -Count=2 -Item0=E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas;E:\Projekte\Ultrastar\Includes\Zlportio;E:\Projekte\Ultrastar\Includes\SQLite -Item1=E:\Projekte\Ultrastar\Includes\DelphiX\Source;E:\Projekte\Ultrastar\Includes;E:\Projekte\Ultrastar\Includes\midi;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Sound\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Net\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Mixer\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_Image\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDL_ttf\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SDLSpriteEngine\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\SFont\Pas;E:\Projekte\Ultrastar\Includes\JEDI-SDL\smpeg\Pas -[HistoryLists\hlOutputDirectorry] -Count=3 -Item0=E:\Projekte\Ultrastar\Bin -Item1=E:\Projekte\Ultrastar -Item2=C:\UltraStar\Bin diff --git a/Game/Code/UltraStar.identcache2 b/Game/Code/UltraStar.identcache2 deleted file mode 100644 index a437aa7e..00000000 Binary files a/Game/Code/UltraStar.identcache2 and /dev/null differ diff --git a/Game/Code/UltraStar.~dpr b/Game/Code/UltraStar.~dpr deleted file mode 100644 index a27201e9..00000000 --- a/Game/Code/UltraStar.~dpr +++ /dev/null @@ -1,285 +0,0 @@ - program UltraStar; - -{$DEFINE TRANSLATE} -//DEFINE THEMESAVE} - -{$R 'UltraStar.res' 'UltraStar.rc'} - -uses - {//Earlyer in Code Dir.. Now in SearchDir - DDKint in '..\ZLPortIO\ddkint.pas', - ZLPortIO in '..\ZLPortIO\zlportio.pas', - SQLiteTable3 in '..\SQLite\SQLiteTable3.pas', - SQLite3 in '..\SQLite\SQLite3.pas',} - Windows, - SDL, - - //Menu Objects - UDisplay in 'Menu\UDisplay.pas', - UMenu in 'Menu\UMenu.pas', - UMenuStatic in 'Menu\UMenuStatic.pas', - UMenuText in 'Menu\UMenuText.pas', - UMenuButton in 'Menu\UMenuButton.pas', - UMenuInteract in 'Menu\UMenuInteract.pas', - UMenuSelect in 'Menu\UMenuSelect.pas', - UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', - UDrawTexture in 'Menu\UDrawTexture.pas', - - //Classes - UGraphic in 'Classes\UGraphic.pas', - UTexture in 'Classes\UTexture.pas', - UMusic in 'Classes\UMusic.pas', - UPliki in 'Classes\UPliki.pas', - UMain in 'Classes\UMain.pas', - UDraw in 'Classes\UDraw.pas', - URecord in 'Classes\URecord.pas', - UTime in 'Classes\UTime.pas', - TextGL in 'Classes\TextGL.pas', - USongs in 'Classes\USongs.pas', - UIni in 'Classes\UIni.pas', - USmpeg in 'SMpeg\USmpeg.pas', - ULyrics in 'Classes\ULyrics.pas', - USkins in 'Classes\USkins.pas', - UThemes in 'Classes\UThemes.pas', - ULog in 'Classes\ULog.pas', - UJoystick in 'Classes\UJoystick.pas', - ULCD in 'Classes\ULCD.pas', - ULight in 'Classes\ULight.pas', - UScores in 'Classes\UScores.pas', - ULanguage in 'Classes\ULanguage.pas', - UCovers in 'Classes\UCovers.pas', - UCatCovers in 'Classes\UCatCovers.pas', - UFiles in 'Classes\UFiles.pas', - UGraphicClasses in 'Classes\UGraphicClasses.pas', - UDLLManager in 'Classes\UDLLManager.pas', - UParty in 'Classes\UParty.pas', - - //Screens - UScreenLoading in 'Screens\UScreenLoading.pas', - UScreenWelcome in 'Screens\UScreenWelcome.pas', - UScreenMain in 'Screens\UScreenMain.pas', - UScreenName in 'Screens\UScreenName.pas', - UScreenLevel in 'Screens\UScreenLevel.pas', - UScreenSong in 'Screens\UScreenSong.pas', - UScreenSing in 'Screens\UScreenSing.pas', - UScreenScore in 'Screens\UScreenScore.pas', - UScreenOptions in 'Screens\UScreenOptions.pas', - UScreenOptionsGame in 'Screens\UScreenOptionsGame.pas', - UScreenOptionsGraphics in 'Screens\UScreenOptionsGraphics.pas', - UScreenOptionsSound in 'Screens\UScreenOptionsSound.pas', - UScreenOptionsLyrics in 'Screens\UScreenOptionsLyrics.pas', - UScreenOptionsThemes in 'Screens\UScreenOptionsThemes.pas', - UScreenOptionsRecord in 'Screens\UScreenOptionsRecord.pas', - UScreenEditSub in 'Screens\UScreenEditSub.pas', - UScreenEdit in 'Screens\UScreenEdit.pas', - UScreenEditConvert in 'Screens\UScreenEditConvert.pas', - UScreenEditHeader in 'Screens\UScreenEditHeader.pas', - UScreenOpen in 'Screens\UScreenOpen.pas', - UScreenTop5 in 'Screens\UScreenTop5.pas', - UScreenSongMenu in 'Screens\UScreenSongMenu.pas', - //PartyMode - UScreenSingModi in 'Screens\UScreenSingModi.pas', - UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', - UScreenPartyScore in 'Screens\UScreenPartyScore.pas', - UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', - UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', - UScreenPartyWin in 'Screens\UScreenPartyWin.pas', - - //Modi SDK - ModiSDK in '..\..\Modis\SDK\ModiSDK.pas'; - -const - Version = 'UltraStar Deluxe V 0.90 Beta'; - -var - WndTitle: string; - hWnd: THandle; - I: Integer; - -begin - WndTitle := Version; - - //Start more than One Time Prevention - hWnd:= FindWindow(nil, PChar(WndTitle)); - //Programm already started - if (hWnd <> 0) then - begin - I := Messagebox(0, PChar('Another Instance of Ultrastar is already running. Contìnue ?'), PChar(WndTitle), MB_ICONWARNING or MB_YESNO); - if (I = IDYes) then - begin - I := 1; - repeat - Inc(I); - hWnd := FindWindow(nil, PChar(WndTitle + ' Instance ' + InttoStr(I))); - until (hWnd = 0); - - WndTitle := WndTitle + ' Instance ' + InttoStr(I); - end - else - Exit; - end; - - - - USTime := TTime.Create; - - // Log + Benchmark - Log := TLog.Create; - Log.Title := WndTitle; - Log.BenchmarkStart(0); -// Log.LogError(IntToStr(DayOfTheYear(Date))); - - // Language - Log.BenchmarkStart(1); - Log.LogStatus('Initialize Paths', 'Initialization'); InitializePaths; - Log.LogStatus('Load Language', 'Initialization'); Language := TLanguage.Create; - //Add Const Values: - Language.AddConst('US_VERSION', Version); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Language', 1); - - // SDL - Log.BenchmarkStart(1); - Log.LogStatus('Initialize SDL', 'Initialization'); - SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing SDL', 1); - - // Skin - Log.BenchmarkStart(1); - Log.LogStatus('Loading Skin List', 'Initialization'); Skin := TSkin.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Skin List', 1); - - //Log.LogBenchmark(inttostr(Skin.), 1); - - // Sound Card List - Log.BenchmarkStart(1); - Log.LogStatus('Loading Soundcard list', 'Initialization'); - Recording := TRecord.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Soundcard list', 1); - - // Ini + Paths - Log.BenchmarkStart(1); - Log.LogStatus('Load Ini', 'Initialization'); Ini := TIni.Create; - Ini.Load; - Language.ChangeLanguage(ILanguage[Ini.Language]); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Ini', 1); - - // LCD - Log.BenchmarkStart(1); - Log.LogStatus('Load LCD', 'Initialization'); LCD := TLCD.Create; - if Ini.LPT = 1 then begin -// LCD.HalfInterface := true; - LCD.Enable; - LCD.Clear; - LCD.WriteText(1, ' UltraStar '); - LCD.WriteText(2, ' Loading... '); - end; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading LCD', 1); - - // Light - Log.BenchmarkStart(1); - Log.LogStatus('Load Light', 'Initialization'); Light := TLight.Create; - if Ini.LPT = 2 then begin - Light.Enable; -// Light.LightOne(0, 1000); - end; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Light', 1); - - // Theme - Log.BenchmarkStart(1); - Log.LogStatus('Load Themes', 'Initialization'); Theme := TTheme.Create('Themes\' + ITheme[Ini.Theme] + '.ini', Ini.Color); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Themes', 1); - - // Covers Cache - Log.BenchmarkStart(1); - Log.LogStatus('Creating Covers Cache', 'Initialization'); Covers := TCovers.Create; - Log.LogBenchmark('Loading Covers Cache Array', 1); - Log.BenchmarkStart(1); - - // Category Covers - Log.BenchmarkStart(1); - Log.LogStatus('Creating Category Covers Array', 'Initialization'); - CatCovers:= TCatCovers.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Category Covers Array', 1); - - // Songs - //Log.BenchmarkStart(1); - Log.LogStatus('Creating Song Array', 'Initialization'); Songs := TSongs.Create; - Songs.LoadSongList; - Log.LogStatus('Creating 2nd Song Array', 'Initialization'); CatSongs := TCatSongs.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Songs', 1); - - // PluginManager - Log.BenchmarkStart(1); - Log.LogStatus('PluginManager', 'Initialization'); - DLLMan := TDLLMan.Create; //Load PluginList - - Log.LogError(inttostr(Length(DLLMan.Plugins)) + ' Plugins Loaded'); - - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading PluginManager', 1); - - // Party Mode Manager - Log.BenchmarkStart(1); - Log.LogStatus('PartySession Manager', 'Initialization'); - PartySession := TParty_Session.Create; //Load PartySession - - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading PartySession Manager', 1); - - // Graphics - Log.BenchmarkStart(1); - Log.LogStatus('Initialize 3D', 'Initialization'); Initialize3D(WndTitle); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing 3D', 1); - - // Sound - Log.BenchmarkStart(1); - Log.LogStatus('Initialize Sound', 'Initialization'); - Log.LogStatus('Creating Music', 'InitializeSound'); Music := TMusic.Create; - InitializeSound; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing Sound', 1); - - // Score Saving System - Log.BenchmarkStart(1); - Log.LogStatus('Score DB System', 'Initialization'); - InitScore('Scores.db'); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Score DB System', 1); - - // Joypad - if Ini.Joypad = 1 then begin - Log.BenchmarkStart(1); - Log.LogStatus('Initialize Joystick', 'Initialization'); Joy := TJoy.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing Joystick', 1); - end; - - Log.BenchmarkEnd(0); - Log.LogBenchmark('Loading Time', 0); - - -// Music.SetLoop(true); -// Music.SetVolume(50); -// Music.Open(SkinPath + 'Menu Music 3.mp3'); -// Music.Play; - Log.LogStatus('Main Loop', 'Initialization'); MainLoop; - -// sleep(3000); - - // finish - if Ini.LPT = 1 then LCD.Clear; - if Ini.LPT = 2 then Light.TurnOff; - - Log.Free; -end. \ No newline at end of file -- cgit v1.2.3 From 947647a5b38bf5b389e1f8b1f06308f564748fb8 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:34:36 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@4 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/TextGL.dcu | Bin 8556 -> 0 bytes Game/Code/Classes/UCatCovers.dcu | Bin 4945 -> 0 bytes Game/Code/Classes/UCovers.dcu | Bin 6055 -> 0 bytes Game/Code/Classes/UDLLManager.dcu | Bin 6021 -> 0 bytes Game/Code/Classes/UDraw.dcu | Bin 41304 -> 0 bytes Game/Code/Classes/UFiles.dcu | Bin 4673 -> 0 bytes Game/Code/Classes/UGraphic.dcu | Bin 18647 -> 0 bytes Game/Code/Classes/UGraphicClasses.dcu | Bin 341 -> 0 bytes Game/Code/Classes/UIni.dcu | Bin 22355 -> 0 bytes Game/Code/Classes/UJoystick.dcu | Bin 2268 -> 0 bytes Game/Code/Classes/ULCD.dcu | Bin 5497 -> 0 bytes Game/Code/Classes/ULCD.~pas | 287 ---------------------------------- Game/Code/Classes/ULanguage.dcu | Bin 6519 -> 0 bytes Game/Code/Classes/ULight.dcu | Bin 2389 -> 0 bytes Game/Code/Classes/ULog.dcu | Bin 6217 -> 0 bytes Game/Code/Classes/ULyrics.dcu | Bin 9029 -> 0 bytes Game/Code/Classes/UMain.dcu | Bin 11501 -> 0 bytes Game/Code/Classes/UMusic.dcu | Bin 15179 -> 0 bytes Game/Code/Classes/UParty.dcu | Bin 4129 -> 0 bytes Game/Code/Classes/UPliki.dcu | Bin 19679 -> 0 bytes Game/Code/Classes/URecord.dcu | Bin 6913 -> 0 bytes Game/Code/Classes/UScores.dcu | Bin 4811 -> 0 bytes Game/Code/Classes/USkins.dcu | Bin 5747 -> 0 bytes Game/Code/Classes/USongs.dcu | Bin 13980 -> 0 bytes Game/Code/Classes/UTexture.dcu | Bin 19192 -> 0 bytes Game/Code/Classes/UThemes.dcu | Bin 59165 -> 0 bytes Game/Code/Classes/UTime.dcu | Bin 2083 -> 0 bytes 27 files changed, 287 deletions(-) delete mode 100644 Game/Code/Classes/TextGL.dcu delete mode 100644 Game/Code/Classes/UCatCovers.dcu delete mode 100644 Game/Code/Classes/UCovers.dcu delete mode 100644 Game/Code/Classes/UDLLManager.dcu delete mode 100644 Game/Code/Classes/UDraw.dcu delete mode 100644 Game/Code/Classes/UFiles.dcu delete mode 100644 Game/Code/Classes/UGraphic.dcu delete mode 100644 Game/Code/Classes/UGraphicClasses.dcu delete mode 100644 Game/Code/Classes/UIni.dcu delete mode 100644 Game/Code/Classes/UJoystick.dcu delete mode 100644 Game/Code/Classes/ULCD.dcu delete mode 100644 Game/Code/Classes/ULCD.~pas delete mode 100644 Game/Code/Classes/ULanguage.dcu delete mode 100644 Game/Code/Classes/ULight.dcu delete mode 100644 Game/Code/Classes/ULog.dcu delete mode 100644 Game/Code/Classes/ULyrics.dcu delete mode 100644 Game/Code/Classes/UMain.dcu delete mode 100644 Game/Code/Classes/UMusic.dcu delete mode 100644 Game/Code/Classes/UParty.dcu delete mode 100644 Game/Code/Classes/UPliki.dcu delete mode 100644 Game/Code/Classes/URecord.dcu delete mode 100644 Game/Code/Classes/UScores.dcu delete mode 100644 Game/Code/Classes/USkins.dcu delete mode 100644 Game/Code/Classes/USongs.dcu delete mode 100644 Game/Code/Classes/UTexture.dcu delete mode 100644 Game/Code/Classes/UThemes.dcu delete mode 100644 Game/Code/Classes/UTime.dcu diff --git a/Game/Code/Classes/TextGL.dcu b/Game/Code/Classes/TextGL.dcu deleted file mode 100644 index 772d09c1..00000000 Binary files a/Game/Code/Classes/TextGL.dcu and /dev/null differ diff --git a/Game/Code/Classes/UCatCovers.dcu b/Game/Code/Classes/UCatCovers.dcu deleted file mode 100644 index 2ff7a7d9..00000000 Binary files a/Game/Code/Classes/UCatCovers.dcu and /dev/null differ diff --git a/Game/Code/Classes/UCovers.dcu b/Game/Code/Classes/UCovers.dcu deleted file mode 100644 index ca99fc7c..00000000 Binary files a/Game/Code/Classes/UCovers.dcu and /dev/null differ diff --git a/Game/Code/Classes/UDLLManager.dcu b/Game/Code/Classes/UDLLManager.dcu deleted file mode 100644 index 3ba97949..00000000 Binary files a/Game/Code/Classes/UDLLManager.dcu and /dev/null differ diff --git a/Game/Code/Classes/UDraw.dcu b/Game/Code/Classes/UDraw.dcu deleted file mode 100644 index a3fcecc9..00000000 Binary files a/Game/Code/Classes/UDraw.dcu and /dev/null differ diff --git a/Game/Code/Classes/UFiles.dcu b/Game/Code/Classes/UFiles.dcu deleted file mode 100644 index 9ed45d8f..00000000 Binary files a/Game/Code/Classes/UFiles.dcu and /dev/null differ diff --git a/Game/Code/Classes/UGraphic.dcu b/Game/Code/Classes/UGraphic.dcu deleted file mode 100644 index c264b16b..00000000 Binary files a/Game/Code/Classes/UGraphic.dcu and /dev/null differ diff --git a/Game/Code/Classes/UGraphicClasses.dcu b/Game/Code/Classes/UGraphicClasses.dcu deleted file mode 100644 index 58d003b0..00000000 Binary files a/Game/Code/Classes/UGraphicClasses.dcu and /dev/null differ diff --git a/Game/Code/Classes/UIni.dcu b/Game/Code/Classes/UIni.dcu deleted file mode 100644 index e891d36c..00000000 Binary files a/Game/Code/Classes/UIni.dcu and /dev/null differ diff --git a/Game/Code/Classes/UJoystick.dcu b/Game/Code/Classes/UJoystick.dcu deleted file mode 100644 index 62cde484..00000000 Binary files a/Game/Code/Classes/UJoystick.dcu and /dev/null differ diff --git a/Game/Code/Classes/ULCD.dcu b/Game/Code/Classes/ULCD.dcu deleted file mode 100644 index 8098a187..00000000 Binary files a/Game/Code/Classes/ULCD.dcu and /dev/null differ diff --git a/Game/Code/Classes/ULCD.~pas b/Game/Code/Classes/ULCD.~pas deleted file mode 100644 index a127c689..00000000 --- a/Game/Code/Classes/ULCD.~pas +++ /dev/null @@ -1,287 +0,0 @@ -unit ULCD; - -interface - -type - TLCD = class - private - Enabled: boolean; - Text: array[1..6] of string; - StartPos: integer; - LineBR: integer; - Position: integer; - procedure WriteCommand(B: byte); - procedure WriteData(B: byte); - procedure WriteString(S: string); - public - HalfInterface: boolean; - constructor Create; - procedure Enable; - procedure Clear; - procedure WriteText(Line: integer; S: string); - procedure MoveCursor(Line, Pos: integer); - procedure ShowCursor; - procedure HideCursor; - - // for 2x16 - procedure AddTextBR(S: string); - procedure MoveCursorBR(Pos: integer); - procedure ScrollUpBR; - procedure AddTextArray(Line:integer; S: string); - end; - -var - LCD: TLCD; - -const - Data = $378; // domyœlny adres portu - Status = Data + 1; - Control = Data + 2; - -implementation - -uses - SysUtils, zlportio, UTime; - -procedure TLCD.WriteCommand(B: Byte); -// Wysylanie komend sterujacych -begin - if not HalfInterface then begin - zlioportwrite(Control, 0, $02); - zlioportwrite(Data, 0, B); - zlioportwrite(Control, 0, $03); - end else begin - zlioportwrite(Control, 0, $02); - zlioportwrite(Data, 0, B and $F0); - zlioportwrite(Control, 0, $03); - - TimeSleep(0.1); - - zlioportwrite(Control, 0, $02); - zlioportwrite(Data, 0, (B * 16) and $F0); - zlioportwrite(Control, 0, $03); - end; - - if (B=1) or (B=2) then - Sleep(2) - else - TimeSleep(0.1); -end; - -procedure TLCD.WriteData(B: Byte); -// Wysylanie danych -begin - if not HalfInterface then begin - zlioportwrite(Control, 0, $06); - zlioportwrite(Data, 0, B); - zlioportwrite(Control, 0, $07); - end else begin - zlioportwrite(Control, 0, $06); - zlioportwrite(Data, 0, B and $F0); - zlioportwrite(Control, 0, $07); - - TimeSleep(0.1); - - zlioportwrite(Control, 0, $06); - zlioportwrite(Data, 0, (B * 16) and $F0); - zlioportwrite(Control, 0, $07); - end; - - TimeSleep(0.1); - Inc(Position); -end; - -procedure TLCD.WriteString(S: string); -// Wysylanie slow -var - I: integer; -begin - for I := 1 to Length(S) do - WriteData(Ord(S[I])); -end; - -constructor TLCD.Create; -begin -// -end; - -procedure TLCD.Enable; -var - A: byte; - B: byte; -begin - Enabled := true; - if not HalfInterface then - WriteCommand($38) - else begin - WriteCommand($33); - WriteCommand($32); - WriteCommand($28); - end; - -// WriteCommand($06); -// WriteCommand($0C); -// sleep(10); -end; - -procedure TLCD.Clear; -begin - if Enabled then begin - WriteCommand(1); - WriteCommand(2); - Text[1] := ''; - Text[2] := ''; - Text[3] := ''; - Text[4] := ''; - Text[5] := ''; - Text[6] := ''; - StartPos := 1; - LineBR := 1; - end; -end; - -procedure TLCD.WriteText(Line: integer; S: string); -begin - if Enabled then begin - if Line <= 2 then begin - MoveCursor(Line, 1); - WriteString(S); - end; - - Text[Line] := ''; - AddTextArray(Line, S); - end; -end; - -procedure TLCD.MoveCursor(Line, Pos: integer); -var - I: integer; -begin - if Enabled then begin - Pos := Pos + (Line-1) * 40; - - if Position > Pos then begin - WriteCommand(2); - for I := 1 to Pos-1 do - WriteCommand(20); - end; - - if Position < Pos then - for I := 1 to Pos - Position do - WriteCommand(20); - - Position := Pos; - end; -end; - -procedure TLCD.ShowCursor; -begin - if Enabled then begin - WriteCommand(14); - end; -end; - -procedure TLCD.HideCursor; -begin - if Enabled then begin - WriteCommand(12); - end; -end; - -procedure TLCD.AddTextBR(S: string); -var - Word: string; - W: integer; - P: integer; - L: integer; -begin - if Enabled then begin - if LineBR <= 6 then begin - L := LineBR; - P := Pos(' ', S); - - if L <= 2 then - MoveCursor(L, 1); - - while (L <= 6) and (P > 0) do begin - Word := Copy(S, 1, P); - if (Length(Text[L]) + Length(Word)-1) > 16 then begin - L := L + 1; - if L <= 2 then - MoveCursor(L, 1); - end; - - if L <= 6 then begin - if L <= 2 then - WriteString(Word); - AddTextArray(L, Word); - end; - - Delete(S, 1, P); - P := Pos(' ', S) - end; - - LineBR := L + 1; - end; - end; -end; - -procedure TLCD.MoveCursorBR(Pos: integer); -var - I: integer; - L: integer; -begin - if Enabled then begin - Pos := Pos - (StartPos-1); - if Pos <= Length(Text[1]) then - MoveCursor(1, Pos); - - if Pos > Length(Text[1]) then begin - // bez zawijania -// Pos := Pos - Length(Text[1]); -// MoveCursor(2, Pos); - - // z zawijaniem - Pos := Pos - Length(Text[1]); - ScrollUpBR; - MoveCursor(1, Pos); - end; - end; -end; - -procedure TLCD.ScrollUpBR; -var - T: array[1..5] of string; - SP: integer; - LBR: integer; -begin - if Enabled then begin - T[1] := Text[2]; - T[2] := Text[3]; - T[3] := Text[4]; - T[4] := Text[5]; - T[5] := Text[6]; - SP := StartPos + Length(Text[1]); - LBR := LineBR; - - Clear; - - StartPos := SP; - WriteText(1, T[1]); - WriteText(2, T[2]); - WriteText(3, T[3]); - WriteText(4, T[4]); - WriteText(5, T[5]); - LineBR := LBR-1; - end; -end; - -procedure TLCD.AddTextArray(Line: integer; S: string); -begin - if Enabled then begin - Text[Line] := Text[Line] + S; - end; -end; - -end. - diff --git a/Game/Code/Classes/ULanguage.dcu b/Game/Code/Classes/ULanguage.dcu deleted file mode 100644 index 2d5c3596..00000000 Binary files a/Game/Code/Classes/ULanguage.dcu and /dev/null differ diff --git a/Game/Code/Classes/ULight.dcu b/Game/Code/Classes/ULight.dcu deleted file mode 100644 index 10ba61bc..00000000 Binary files a/Game/Code/Classes/ULight.dcu and /dev/null differ diff --git a/Game/Code/Classes/ULog.dcu b/Game/Code/Classes/ULog.dcu deleted file mode 100644 index 1794325d..00000000 Binary files a/Game/Code/Classes/ULog.dcu and /dev/null differ diff --git a/Game/Code/Classes/ULyrics.dcu b/Game/Code/Classes/ULyrics.dcu deleted file mode 100644 index 3867c263..00000000 Binary files a/Game/Code/Classes/ULyrics.dcu and /dev/null differ diff --git a/Game/Code/Classes/UMain.dcu b/Game/Code/Classes/UMain.dcu deleted file mode 100644 index 3a2edf09..00000000 Binary files a/Game/Code/Classes/UMain.dcu and /dev/null differ diff --git a/Game/Code/Classes/UMusic.dcu b/Game/Code/Classes/UMusic.dcu deleted file mode 100644 index f3116f8b..00000000 Binary files a/Game/Code/Classes/UMusic.dcu and /dev/null differ diff --git a/Game/Code/Classes/UParty.dcu b/Game/Code/Classes/UParty.dcu deleted file mode 100644 index e3e1a901..00000000 Binary files a/Game/Code/Classes/UParty.dcu and /dev/null differ diff --git a/Game/Code/Classes/UPliki.dcu b/Game/Code/Classes/UPliki.dcu deleted file mode 100644 index 1798b6f8..00000000 Binary files a/Game/Code/Classes/UPliki.dcu and /dev/null differ diff --git a/Game/Code/Classes/URecord.dcu b/Game/Code/Classes/URecord.dcu deleted file mode 100644 index d28aa4b1..00000000 Binary files a/Game/Code/Classes/URecord.dcu and /dev/null differ diff --git a/Game/Code/Classes/UScores.dcu b/Game/Code/Classes/UScores.dcu deleted file mode 100644 index 16454265..00000000 Binary files a/Game/Code/Classes/UScores.dcu and /dev/null differ diff --git a/Game/Code/Classes/USkins.dcu b/Game/Code/Classes/USkins.dcu deleted file mode 100644 index 89ea67c0..00000000 Binary files a/Game/Code/Classes/USkins.dcu and /dev/null differ diff --git a/Game/Code/Classes/USongs.dcu b/Game/Code/Classes/USongs.dcu deleted file mode 100644 index e58c47d8..00000000 Binary files a/Game/Code/Classes/USongs.dcu and /dev/null differ diff --git a/Game/Code/Classes/UTexture.dcu b/Game/Code/Classes/UTexture.dcu deleted file mode 100644 index ec06b7e4..00000000 Binary files a/Game/Code/Classes/UTexture.dcu and /dev/null differ diff --git a/Game/Code/Classes/UThemes.dcu b/Game/Code/Classes/UThemes.dcu deleted file mode 100644 index eb5ec8d4..00000000 Binary files a/Game/Code/Classes/UThemes.dcu and /dev/null differ diff --git a/Game/Code/Classes/UTime.dcu b/Game/Code/Classes/UTime.dcu deleted file mode 100644 index f69b60f7..00000000 Binary files a/Game/Code/Classes/UTime.dcu and /dev/null differ -- cgit v1.2.3 From 3f7e97009ad3a96dce1a51e98dc2b99aa8a78ef3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:35:46 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@5 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.dcu | Bin 7030 -> 0 bytes Game/Code/Menu/UDrawTexture.dcu | Bin 3640 -> 0 bytes Game/Code/Menu/UMenu.dcu | Bin 31672 -> 0 bytes Game/Code/Menu/UMenuButton.dcu | Bin 5472 -> 0 bytes Game/Code/Menu/UMenuInteract.dcu | Bin 404 -> 0 bytes Game/Code/Menu/UMenuSelect.dcu | Bin 3922 -> 0 bytes Game/Code/Menu/UMenuSelectSlide.dcu | Bin 6108 -> 0 bytes Game/Code/Menu/UMenuStatic.dcu | Bin 1594 -> 0 bytes Game/Code/Menu/UMenuText.dcu | Bin 3155 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Game/Code/Menu/UDisplay.dcu delete mode 100644 Game/Code/Menu/UDrawTexture.dcu delete mode 100644 Game/Code/Menu/UMenu.dcu delete mode 100644 Game/Code/Menu/UMenuButton.dcu delete mode 100644 Game/Code/Menu/UMenuInteract.dcu delete mode 100644 Game/Code/Menu/UMenuSelect.dcu delete mode 100644 Game/Code/Menu/UMenuSelectSlide.dcu delete mode 100644 Game/Code/Menu/UMenuStatic.dcu delete mode 100644 Game/Code/Menu/UMenuText.dcu diff --git a/Game/Code/Menu/UDisplay.dcu b/Game/Code/Menu/UDisplay.dcu deleted file mode 100644 index f4f89245..00000000 Binary files a/Game/Code/Menu/UDisplay.dcu and /dev/null differ diff --git a/Game/Code/Menu/UDrawTexture.dcu b/Game/Code/Menu/UDrawTexture.dcu deleted file mode 100644 index 9e6402a9..00000000 Binary files a/Game/Code/Menu/UDrawTexture.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenu.dcu b/Game/Code/Menu/UMenu.dcu deleted file mode 100644 index 126834d8..00000000 Binary files a/Game/Code/Menu/UMenu.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenuButton.dcu b/Game/Code/Menu/UMenuButton.dcu deleted file mode 100644 index b97d1670..00000000 Binary files a/Game/Code/Menu/UMenuButton.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenuInteract.dcu b/Game/Code/Menu/UMenuInteract.dcu deleted file mode 100644 index 785be771..00000000 Binary files a/Game/Code/Menu/UMenuInteract.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenuSelect.dcu b/Game/Code/Menu/UMenuSelect.dcu deleted file mode 100644 index 9d483c33..00000000 Binary files a/Game/Code/Menu/UMenuSelect.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenuSelectSlide.dcu b/Game/Code/Menu/UMenuSelectSlide.dcu deleted file mode 100644 index 1475c1ac..00000000 Binary files a/Game/Code/Menu/UMenuSelectSlide.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenuStatic.dcu b/Game/Code/Menu/UMenuStatic.dcu deleted file mode 100644 index 901fa2c7..00000000 Binary files a/Game/Code/Menu/UMenuStatic.dcu and /dev/null differ diff --git a/Game/Code/Menu/UMenuText.dcu b/Game/Code/Menu/UMenuText.dcu deleted file mode 100644 index 7cfe0316..00000000 Binary files a/Game/Code/Menu/UMenuText.dcu and /dev/null differ -- cgit v1.2.3 From 00822815d626025153389a461db64b83932e6f22 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:37:25 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@6 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenEdit.dcu | Bin 2915 -> 0 bytes Game/Code/Screens/UScreenEditConvert.dcu | Bin 13604 -> 0 bytes Game/Code/Screens/UScreenEditHeader.dcu | Bin 9398 -> 0 bytes Game/Code/Screens/UScreenEditSub.dcu | Bin 29283 -> 0 bytes Game/Code/Screens/UScreenLevel.dcu | Bin 3407 -> 0 bytes Game/Code/Screens/UScreenLoading.dcu | Bin 2525 -> 0 bytes Game/Code/Screens/UScreenMain.dcu | Bin 9661 -> 0 bytes Game/Code/Screens/UScreenName.dcu | Bin 4199 -> 0 bytes Game/Code/Screens/UScreenOpen.dcu | Bin 4756 -> 0 bytes Game/Code/Screens/UScreenOptions.dcu | Bin 4834 -> 0 bytes Game/Code/Screens/UScreenOptionsGame.dcu | Bin 4049 -> 0 bytes Game/Code/Screens/UScreenOptionsGraphics.dcu | Bin 3911 -> 0 bytes Game/Code/Screens/UScreenOptionsLyrics.dcu | Bin 3566 -> 0 bytes Game/Code/Screens/UScreenOptionsRecord.dcu | Bin 4885 -> 0 bytes Game/Code/Screens/UScreenOptionsSound.dcu | Bin 3629 -> 0 bytes Game/Code/Screens/UScreenOptionsThemes.dcu | Bin 4188 -> 0 bytes Game/Code/Screens/UScreenPartyNewRound.dcu | Bin 9085 -> 0 bytes Game/Code/Screens/UScreenPartyOptions.dcu | Bin 5884 -> 0 bytes Game/Code/Screens/UScreenPartyPlayer.dcu | Bin 6068 -> 0 bytes Game/Code/Screens/UScreenPartyScore.dcu | Bin 5605 -> 0 bytes Game/Code/Screens/UScreenPartyWin.dcu | Bin 4642 -> 0 bytes Game/Code/Screens/UScreenScore.dcu | Bin 10273 -> 0 bytes Game/Code/Screens/UScreenSing.dcu | Bin 23327 -> 0 bytes Game/Code/Screens/UScreenSingModi.dcu | Bin 15109 -> 0 bytes Game/Code/Screens/UScreenSong.dcu | Bin 29384 -> 0 bytes Game/Code/Screens/UScreenSongMenu.dcu | Bin 7346 -> 0 bytes Game/Code/Screens/UScreenTop5.dcu | Bin 4531 -> 0 bytes Game/Code/Screens/UScreenWelcome.dcu | Bin 3228 -> 0 bytes 28 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Game/Code/Screens/UScreenEdit.dcu delete mode 100644 Game/Code/Screens/UScreenEditConvert.dcu delete mode 100644 Game/Code/Screens/UScreenEditHeader.dcu delete mode 100644 Game/Code/Screens/UScreenEditSub.dcu delete mode 100644 Game/Code/Screens/UScreenLevel.dcu delete mode 100644 Game/Code/Screens/UScreenLoading.dcu delete mode 100644 Game/Code/Screens/UScreenMain.dcu delete mode 100644 Game/Code/Screens/UScreenName.dcu delete mode 100644 Game/Code/Screens/UScreenOpen.dcu delete mode 100644 Game/Code/Screens/UScreenOptions.dcu delete mode 100644 Game/Code/Screens/UScreenOptionsGame.dcu delete mode 100644 Game/Code/Screens/UScreenOptionsGraphics.dcu delete mode 100644 Game/Code/Screens/UScreenOptionsLyrics.dcu delete mode 100644 Game/Code/Screens/UScreenOptionsRecord.dcu delete mode 100644 Game/Code/Screens/UScreenOptionsSound.dcu delete mode 100644 Game/Code/Screens/UScreenOptionsThemes.dcu delete mode 100644 Game/Code/Screens/UScreenPartyNewRound.dcu delete mode 100644 Game/Code/Screens/UScreenPartyOptions.dcu delete mode 100644 Game/Code/Screens/UScreenPartyPlayer.dcu delete mode 100644 Game/Code/Screens/UScreenPartyScore.dcu delete mode 100644 Game/Code/Screens/UScreenPartyWin.dcu delete mode 100644 Game/Code/Screens/UScreenScore.dcu delete mode 100644 Game/Code/Screens/UScreenSing.dcu delete mode 100644 Game/Code/Screens/UScreenSingModi.dcu delete mode 100644 Game/Code/Screens/UScreenSong.dcu delete mode 100644 Game/Code/Screens/UScreenSongMenu.dcu delete mode 100644 Game/Code/Screens/UScreenTop5.dcu delete mode 100644 Game/Code/Screens/UScreenWelcome.dcu diff --git a/Game/Code/Screens/UScreenEdit.dcu b/Game/Code/Screens/UScreenEdit.dcu deleted file mode 100644 index 1b9c7bb9..00000000 Binary files a/Game/Code/Screens/UScreenEdit.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenEditConvert.dcu b/Game/Code/Screens/UScreenEditConvert.dcu deleted file mode 100644 index 1839ad6b..00000000 Binary files a/Game/Code/Screens/UScreenEditConvert.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenEditHeader.dcu b/Game/Code/Screens/UScreenEditHeader.dcu deleted file mode 100644 index 9508e841..00000000 Binary files a/Game/Code/Screens/UScreenEditHeader.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenEditSub.dcu b/Game/Code/Screens/UScreenEditSub.dcu deleted file mode 100644 index 6b6b6e35..00000000 Binary files a/Game/Code/Screens/UScreenEditSub.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenLevel.dcu b/Game/Code/Screens/UScreenLevel.dcu deleted file mode 100644 index 95cb3267..00000000 Binary files a/Game/Code/Screens/UScreenLevel.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenLoading.dcu b/Game/Code/Screens/UScreenLoading.dcu deleted file mode 100644 index e0eb1cfe..00000000 Binary files a/Game/Code/Screens/UScreenLoading.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenMain.dcu b/Game/Code/Screens/UScreenMain.dcu deleted file mode 100644 index 22bb4883..00000000 Binary files a/Game/Code/Screens/UScreenMain.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenName.dcu b/Game/Code/Screens/UScreenName.dcu deleted file mode 100644 index d14b4296..00000000 Binary files a/Game/Code/Screens/UScreenName.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOpen.dcu b/Game/Code/Screens/UScreenOpen.dcu deleted file mode 100644 index c59986f9..00000000 Binary files a/Game/Code/Screens/UScreenOpen.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptions.dcu b/Game/Code/Screens/UScreenOptions.dcu deleted file mode 100644 index e5d17c3b..00000000 Binary files a/Game/Code/Screens/UScreenOptions.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptionsGame.dcu b/Game/Code/Screens/UScreenOptionsGame.dcu deleted file mode 100644 index 3fd70913..00000000 Binary files a/Game/Code/Screens/UScreenOptionsGame.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptionsGraphics.dcu b/Game/Code/Screens/UScreenOptionsGraphics.dcu deleted file mode 100644 index 3eddc010..00000000 Binary files a/Game/Code/Screens/UScreenOptionsGraphics.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptionsLyrics.dcu b/Game/Code/Screens/UScreenOptionsLyrics.dcu deleted file mode 100644 index 1fcfca9d..00000000 Binary files a/Game/Code/Screens/UScreenOptionsLyrics.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptionsRecord.dcu b/Game/Code/Screens/UScreenOptionsRecord.dcu deleted file mode 100644 index 36a04d50..00000000 Binary files a/Game/Code/Screens/UScreenOptionsRecord.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptionsSound.dcu b/Game/Code/Screens/UScreenOptionsSound.dcu deleted file mode 100644 index 26c07fe1..00000000 Binary files a/Game/Code/Screens/UScreenOptionsSound.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenOptionsThemes.dcu b/Game/Code/Screens/UScreenOptionsThemes.dcu deleted file mode 100644 index 98bec8a2..00000000 Binary files a/Game/Code/Screens/UScreenOptionsThemes.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenPartyNewRound.dcu b/Game/Code/Screens/UScreenPartyNewRound.dcu deleted file mode 100644 index 24b6953e..00000000 Binary files a/Game/Code/Screens/UScreenPartyNewRound.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenPartyOptions.dcu b/Game/Code/Screens/UScreenPartyOptions.dcu deleted file mode 100644 index 8f0bbf3d..00000000 Binary files a/Game/Code/Screens/UScreenPartyOptions.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenPartyPlayer.dcu b/Game/Code/Screens/UScreenPartyPlayer.dcu deleted file mode 100644 index 1afeac79..00000000 Binary files a/Game/Code/Screens/UScreenPartyPlayer.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenPartyScore.dcu b/Game/Code/Screens/UScreenPartyScore.dcu deleted file mode 100644 index 9dffe2e5..00000000 Binary files a/Game/Code/Screens/UScreenPartyScore.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenPartyWin.dcu b/Game/Code/Screens/UScreenPartyWin.dcu deleted file mode 100644 index d55c0809..00000000 Binary files a/Game/Code/Screens/UScreenPartyWin.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenScore.dcu b/Game/Code/Screens/UScreenScore.dcu deleted file mode 100644 index eee72fd0..00000000 Binary files a/Game/Code/Screens/UScreenScore.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenSing.dcu b/Game/Code/Screens/UScreenSing.dcu deleted file mode 100644 index 0e227a17..00000000 Binary files a/Game/Code/Screens/UScreenSing.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenSingModi.dcu b/Game/Code/Screens/UScreenSingModi.dcu deleted file mode 100644 index 4f806afe..00000000 Binary files a/Game/Code/Screens/UScreenSingModi.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenSong.dcu b/Game/Code/Screens/UScreenSong.dcu deleted file mode 100644 index abc9cc4f..00000000 Binary files a/Game/Code/Screens/UScreenSong.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenSongMenu.dcu b/Game/Code/Screens/UScreenSongMenu.dcu deleted file mode 100644 index 634a217a..00000000 Binary files a/Game/Code/Screens/UScreenSongMenu.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenTop5.dcu b/Game/Code/Screens/UScreenTop5.dcu deleted file mode 100644 index c6db07d0..00000000 Binary files a/Game/Code/Screens/UScreenTop5.dcu and /dev/null differ diff --git a/Game/Code/Screens/UScreenWelcome.dcu b/Game/Code/Screens/UScreenWelcome.dcu deleted file mode 100644 index 196b04be..00000000 Binary files a/Game/Code/Screens/UScreenWelcome.dcu and /dev/null differ -- cgit v1.2.3 From 9f20992cc2b46df36f98dce1088527c65c059746 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:38:39 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@7 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/SMpeg/USmpeg.alt.pas | 292 ----------------------------------------- Game/Code/SMpeg/USmpeg.dcu | Bin 6074 -> 0 bytes 2 files changed, 292 deletions(-) delete mode 100644 Game/Code/SMpeg/USmpeg.alt.pas delete mode 100644 Game/Code/SMpeg/USmpeg.dcu diff --git a/Game/Code/SMpeg/USmpeg.alt.pas b/Game/Code/SMpeg/USmpeg.alt.pas deleted file mode 100644 index 94ad69c8..00000000 --- a/Game/Code/SMpeg/USmpeg.alt.pas +++ /dev/null @@ -1,292 +0,0 @@ -unit USmpeg; - -interface -uses SDL, smpeg, OpenGL12, SysUtils, UIni; - -procedure OpenSmpeg(FileName: string); -procedure SkipSmpeg(Time: single); -procedure PlaySmpeg; -procedure UpdateSmpeg; -procedure CloseSmpeg; -function glmovie_init(Width : GLuint; Height : TGLuint ) : TGLenum; -procedure glmpeg_update(surface: PSDL_Surface; x: Sint32; y: Sint32; w: Uint32; h: Uint32); cdecl; -procedure DrawSmpeg(frame: PGLubyte); -procedure glmovie_resize( width : GLuint; height : GLuint ); -procedure glmovie_quit; - -var - mpeg: PSMPEG; - mpeg_info: TSMPEG_Info; - surface: PSDL_Surface; - -type - { Some data is redundant at this stage. } - PGLMovieTexture = ^TGLMovieTexture; - TGLMovieTexture = record - id : TGLuint; (* OpenGL texture id. *) - poly_width : TGLuint; (* Quad width for tile. *) - poly_height : TGLuint; (* Quad height for tile. *) - movie_width : TGLuint; (* Width of movie inside tile. *) - movie_height : TGLuint; (* Height of movie inside tile. *) - skip_rows : TGLuint; (* Number of rows of movie to skip *) - skip_pixels : TGLuint; (* Number of columns of movie to skip *) - row : TGLuint; (* Row number of tile in scheme. *) - col : TGLuint; (* Column number of tile in scheme. *) - end; - -type - TGLuintArray = array of TGLuint; - PGLuintArray = ^TGLuintArray; - TGLMovieTextureArray = array of TGLMovieTexture; - PGLMovieTextureArray = ^TGLMovieTextureArray; - -var - (* Our evil maximum texture size. Boo 3Dfxnot *) - texture_size : TGLuint = 1024;//512; - texture_ids : TGLuint; - textures: TGLMovieTexture; - tiled_width : TGLuint = 0; - tiled_height : TGLuint = 0; - movie_width : TGLuint = 0; - movie_height : TGLuint = 0; - -implementation - -procedure OpenSmpeg(FileName: string); -begin - mpeg := SMPEG_new(PChar(FileName), @mpeg_info, 0); // audio - if ( mpeg = nil ) then begin - SDL_Quit; - Exit; - end; - -// SMPEG_setvolume(mpeg, 50); - SMPEG_enableaudio(mpeg, 0); - - (* Everything needs to be in RGB for GL, but needs to be 32-bit for SMPEG. *) - surface := SDL_AllocSurface( SDL_SWSURFACE, - mpeg_info.width, - mpeg_info.height, - 32, - $000000FF, - $0000FF00, - $00FF0000, - $FF000000 ); - - if ( surface = nil ) then begin - SDL_Quit; - Exit; - end; - - (* *Initialize* with mpeg size. *) - if (glmovie_init( mpeg_info.width, mpeg_info.height ) <> GL_NO_ERROR ) then begin - SDL_Quit; - Exit; - end; - - SMPEG_setdisplay(mpeg, surface, nil, @glmpeg_update); -end; - -procedure SkipSmpeg(Time: single); -begin - SMPEG_skip(mpeg, Time); -end; - -procedure PlaySmpeg; -begin - SMPEG_play(mpeg); -end; - -procedure UpdateSmpeg; -begin -// glmpeg_update(surface,0,0,0,0); - DrawSmpeg( PGLubyte( surface.pixels ) ); -end; - -procedure CloseSmpeg; -begin -// glmovie_quit; - SMPEG_delete(mpeg); -end; - -function glmovie_init( Width : GLuint; Height : TGLuint ) : TGLenum; -type - PGLubyteArray = ^TGLubyteArray; - TGLubyteArray = array of TGLubyte; -var - (* Initial black texels. *) - pixels : TGLubyteArray; - (* Absolute offsets from within tiled frame. *) - //offset_x: GLuint; - //offset_y: GLuint; - skip_rows : GLuint; - skip_pixels : GLuint; - i, j, current : GLuint; -begin - skip_rows := 0; - current := 0; - (* Save original movie dimensions. *) - movie_width := width; - movie_height := height; - - (* Get the power of 2 dimensions. *) - tiled_width := 1024{512}; - tiled_height := 1024{512}; - - texture_size := 1024{512}; - - (* Time for fun with data type = record *) - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glEnable(GL_TEXTURE_2D); - glEnable(GL_DITHER); - - glGenTextures(1, @texture_ids); - - current := 0; - (* Setup texture. *) - textures.id := texture_ids; - textures.poly_width := texture_size; - textures.poly_height := texture_size; - textures.movie_width := movie_width - 2; - textures.movie_height := movie_height - 2; - textures.row := i; - textures.col := j; - textures.skip_pixels := skip_pixels; - textures.skip_rows := skip_rows; - - SetLength( pixels, textures.poly_width * textures.poly_height * 4 ); - if ( pixels = nil ) then - begin - glDeleteTextures(1, @texture_ids); - result := GL_OUT_OF_MEMORY; - exit; - end; - //FillChar( pixels^, textures[ current ].poly_width * textures[ current ].poly_height * 4, 0 ); - - (* Do all of our useful binding. *) - glBindTexture(GL_TEXTURE_2D, texture_ids); -// glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - (* Specify our 256x256 black texture. *) - glTexImage2D( GL_TEXTURE_2D, - 0, - GL_RGB, - 1024{512},//textures.poly_width, - 1024{512},//textures.poly_height, - 0, - GL_RGBA, - GL_UNSIGNED_BYTE, - @pixels[0] ); - SetLength( pixels, 0 ); - - - (* Simple state setup at the end. *) - result := glGetError( ); -end; - -procedure glmpeg_update( surface : PSDL_Surface; x : Sint32; y : Sint32; w : Uint32; - h : Uint32 ); cdecl; -var - error : TGLenum; -begin - glClear( GL_COLOR_BUFFER_BIT ); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity; - DrawSmpeg( PGLubyte( surface.pixels ) ); - error := glGetError( ); - if ( error <> GL_NO_ERROR ) then Exit; - SDL_GL_SwapBuffers; -end; - -procedure DrawSmpeg(frame: PGLubyte); -var - Shift: TGLdouble; - CropT: real; - CropB: real; - TexT: real; - TexB: real; - TexL: real; - TexR: real; - Wide: boolean; -begin - (* full screen mpeg *) -{ CropT := 0; - CropB := 600; - TexT := 0; - TexB := 1; - TexL := 0; - TexW := 1;} - - // set movie texture crop - Wide := false; - if (textures.movie_width = 720-2) and (textures.movie_height = 344-2) then begin - TexT := 0; - TexB := 342/1024; - Wide := true; - end; - if textures.movie_height = 304-2 then begin - TexT := 0; - TexB := 304/1024; - Wide := true; - end; - if textures.movie_height = 152-2 then begin - TexT := 0; - TexB := 152/1024; - Wide := true; - end; - - CropT := 110; // (110/800 = 13,75% max crop) - CropB := 490; // (110/800 = 13,75% max crop) - - if (textures.movie_height <> 304-2) and (textures.movie_height <> 152-2) and (textures.movie_height <> 344-2) then begin - TexT := 110 / 600 * (textures.movie_height / 1024{512}); - TexB := 490 / 600 * (textures.movie_height / 1024{512}); - - if Ini.MovieSize = 1 then begin - // full screen size - CropT := 0; - CropB := 600; - TexT := 0; - TexB := textures.movie_height / 1024{512}; - end; - end; - - TexL := {10}0/600 * (textures.movie_width / 1024{512}); - TexR := {590}600/600 * (textures.movie_width / 1024{512}); - - glEnable(GL_TEXTURE_2D); - glDisable(GL_BLEND); - glColor3f(1, 1, 1); - glBindTexture( GL_TEXTURE_2D, texture_ids ); -// glPixelStorei( GL_UNPACK_ROW_LENGTH, movie_width ); - glPixelStorei( GL_UNPACK_SKIP_ROWS, 0); - glPixelStorei( GL_UNPACK_SKIP_PIXELS, 0); - glTexSubImage2D( GL_TEXTURE_2D, 0, 0, (* offset_x *) 0, (* offset_y *) textures.movie_width + 2, textures.movie_height + 2, GL_RGBA, GL_UNSIGNED_BYTE, frame ); - - // draw - glBegin( GL_QUADS ); - glTexCoord2f(TexL, TexT); glVertex2f(0, CropT); - glTexCoord2f(TexL, TexB); glVertex2f(0, CropB); - glTexCoord2f(TexR, TexB); glVertex2f(800, CropB); - glTexCoord2f(TexR, TexT); glVertex2f(800, CropT); - glEnd; - glDisable(GL_TEXTURE_2D); -end; - -procedure glmovie_resize( width : GLuint; height : GLuint ); -begin - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity; - gluOrtho2D(0, 800, 600, 0); -end; - -procedure glmovie_quit; -begin - glDeleteTextures(1, @texture_ids); -end; - -end. diff --git a/Game/Code/SMpeg/USmpeg.dcu b/Game/Code/SMpeg/USmpeg.dcu deleted file mode 100644 index d31948ea..00000000 Binary files a/Game/Code/SMpeg/USmpeg.dcu and /dev/null differ -- cgit v1.2.3 -- cgit v1.2.3 -- cgit v1.2.3 -- cgit v1.2.3 From 9e7edc4bea8f58a76444795372836bc07b52a4f9 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 21 Mar 2007 19:48:25 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@11 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Catalan.ini | 85 +++++++++++++++++++++++++++ Languages/Croatian.ini | 72 +++++++++++++++++++++++ Languages/Czech.ini | 83 +++++++++++++++++++++++++++ Languages/Dutch.ini | Bin 0 -> 5142 bytes Languages/English.ini | 100 ++++++++++++++++++++++++++++++++ Languages/Finnish.ini | 71 +++++++++++++++++++++++ Languages/French.ini | 70 +++++++++++++++++++++++ Languages/Galego.ini | 72 +++++++++++++++++++++++ Languages/German.ini | 146 +++++++++++++++++++++++++++++++++++++++++++++++ Languages/Italian.ini | 85 +++++++++++++++++++++++++++ Languages/Lithuanian.ini | Bin 0 -> 5274 bytes Languages/Polish.ini | 83 +++++++++++++++++++++++++++ Languages/Portuguese.ini | 70 +++++++++++++++++++++++ Languages/Spanish.ini | 79 +++++++++++++++++++++++++ Languages/Swedish.ini | 70 +++++++++++++++++++++++ Languages/Turkish.ini | 69 ++++++++++++++++++++++ 16 files changed, 1155 insertions(+) create mode 100644 Languages/Catalan.ini create mode 100644 Languages/Croatian.ini create mode 100644 Languages/Czech.ini create mode 100644 Languages/Dutch.ini create mode 100644 Languages/English.ini create mode 100644 Languages/Finnish.ini create mode 100644 Languages/French.ini create mode 100644 Languages/Galego.ini create mode 100644 Languages/German.ini create mode 100644 Languages/Italian.ini create mode 100644 Languages/Lithuanian.ini create mode 100644 Languages/Polish.ini create mode 100644 Languages/Portuguese.ini create mode 100644 Languages/Spanish.ini create mode 100644 Languages/Swedish.ini create mode 100644 Languages/Turkish.ini diff --git a/Languages/Catalan.ini b/Languages/Catalan.ini new file mode 100644 index 00000000..38b692fd --- /dev/null +++ b/Languages/Catalan.ini @@ -0,0 +1,85 @@ +[Text] +SING_LOADING=Carregant... +SING_SING=cantar +SING_SING_DESC=joc ràpid: cantar un solo o un duet +SING_EDITOR=editor +SING_EDITOR_DESC=crea les teves propies cançons +SING_EXIT_DESC=sortir del joc + +SING_OPTIONS_GAME=joc +SING_OPTIONS_GRAPHICS=gràfics +SING_OPTIONS_SOUND=so +SING_OPTIONS_LYRICS=lletres +SING_OPTIONS_THEMES=temes +SING_OPTIONS_RECORD=gravar +SING_OPTIONS_NETWORK=xarxa +SING_OPTIONS_EXIT=sortir + +SING_OPTIONS_GAME_DESC=opcions del joc +SING_OPTIONS_GAME_PLAYERS=Jugadors +SING_OPTIONS_GAME_DIFFICULTY=Dificultat +SING_OPTIONS_GAME_LANGUAGE=Idioma +SING_OPTIONS_GAME_TABS=Pestanyes +SING_OPTIONS_GAME_SORTING=Ordre +SING_OPTIONS_GAME_DEBUG=Depurar + +SING_OPTIONS_GRAPHICS_DESC=opcions gràfiques +SING_OPTIONS_GRAPHICS_RESOLUTION=Ressolució +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa +SING_OPTIONS_GRAPHICS_DEPTH=Profunditat +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscil·loscopi +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Mida del vídeo + +SING_OPTIONS_SOUND_DESC=opcions de so +SING_OPTIONS_SOUND_MIC_BOOST=Potenciar el Micro +SING_OPTIONS_SOUND_CLICK_ASSIST=Asistent de Notes +SING_OPTIONS_SOUND_BEAT_CLICK=Asistent de Ritme +SING_OPTIONS_SOUND_THRESHOLD=Llindar +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode 2 jugadors + +SING_OPTIONS_LYRICS_DESC=opcions de les lletres +SING_OPTIONS_LYRICS_FONT=Font +SING_OPTIONS_LYRICS_EFFECT=Efecte +SING_OPTIONS_LYRICS_SOLMIZATION=Solfa + +SING_OPTIONS_THEMES_DESC=opcions de temes +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Pell +SING_OPTIONS_THEMES_COLOR=Color + +SING_OPTIONS_RECORD_DESC=opcions de gravació +SING_OPTIONS_RECORD_CARD=Tarja de So +SING_OPTIONS_RECORD_INPUT=Entrada +SING_OPTIONS_RECORD_CHANNELL=Canal esquerra +SING_OPTIONS_RECORD_CHANNELR=Canal dret + +SING_OPTIONS_NETWORK_DESC=opcions de xarxa +SING_OPTIONS_NETWORK_VERSIONCHECK=Comprovar versió +SING_OPTIONS_NETWORK_SENDVERSION=Enviar versió +SING_OPTIONS_NETWORK_USEANONYMOUS=Validació anònima + + + +SING_CHOOSE_MODE=Triar mode +SING_GAME_OPTIONS=opcions de joc +SING_GAME_OPTIONS_DESC=canviar preferències de joc +SING_LEGEND_SELECT=SELECCIONAR +SING_LEGEND_NAVIGATE=NAVEGAR +SING_OPTIONS=opcions +SING_DIFFICULTY=seleccionar dificultat +SING_EASY=fàcil +SING_MEDIUM=mitja +SING_HARD=difícil +SING_TIME=TEMPS +SING_TOTAL=total +SING_SONG_SELECTION=selecció de cançó +SING_CHOOSE_SONG=triar una cançó +SING_SING_MODE=cantar un solo +SING_NOTES=notes +SING_GOLDEN_NOTES=notes daurades +SING_PHRASE_BONUS=bonus de línia +SING_EXIT=sortir +SING_TOP_5_CHARTS=llista dels 5 millors +SING_ENTER_PLAYER_NAME=Introdueix el nom del jugador + + diff --git a/Languages/Croatian.ini b/Languages/Croatian.ini new file mode 100644 index 00000000..abcb1863 --- /dev/null +++ b/Languages/Croatian.ini @@ -0,0 +1,72 @@ +[Text] +SING_LOADING=Molim prièekajte... +SING_SING=pjevaj +SING_SING_DESC=brza igra: pjevaj solo ili duet +SING_EDITOR=ureðivac +SING_EDITOR_DESC=napravi sam svoju pjesmu +SING_EXIT_DESC=izaði iz igre + +SING_OPTIONS_GAME=igra +SING_OPTIONS_GRAPHICS=grafika +SING_OPTIONS_SOUND=zvuk +SING_OPTIONS_LYRICS=tekst +SING_OPTIONS_THEMES=tema +SING_OPTIONS_EXIT=izaði + +SING_OPTIONS_GAME_DESC=opcije igre +SING_OPTIONS_GAME_PLAYERS=Igraèi +SING_OPTIONS_GAME_DIFFICULTY=Težina +SING_OPTIONS_GAME_LANGUAGE=Jezik +SING_OPTIONS_GAME_TABS=Tabulature +SING_OPTIONS_GAME_SORTING=Sortirati +SING_OPTIONS_GAME_DEBUG=Bez grešaka + +SING_OPTIONS_GRAPHICS_DESC=grafièke opcije +SING_OPTIONS_GRAPHICS_RESOLUTION=Rezolucija +SING_OPTIONS_GRAPHICS_FULLSCREEN=Cijeli ekran +SING_OPTIONS_GRAPHICS_DEPTH=Dubina +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velièina filma + +SING_OPTIONS_SOUND_DESC=opcije zvuka +SING_OPTIONS_SOUND_MIC_BOOST=Pojaèavanje mikrofona +SING_OPTIONS_SOUND_CLICK_ASSIST=Klik pomoc +SING_OPTIONS_SOUND_BEAT_CLICK=Udarac pomoc +SING_OPTIONS_SOUND_THRESHOLD=Prag +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Dva igraèa mod + +SING_OPTIONS_LYRICS_DESC=tekst opcije +SING_OPTIONS_LYRICS_FONT=Vrsta pisanja +SING_OPTIONS_LYRICS_EFFECT=Efekat +SING_OPTIONS_LYRICS_SOLMIZATION=Solmizacija + +SING_OPTIONS_THEMES_DESC=opcije teme +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Boja + + + +SING_CHOOSE_MODE=odabir naèina +SING_GAME_OPTIONS=opcije igre +SING_GAME_OPTIONS_DESC=promjena postavki igre +SING_LEGEND_SELECT=ODABIR +SING_LEGEND_BACK=NATRAG +SING_LEGEND_NAVIGATE=KRETANJE +SING_OPTIONS=opcije +SING_DIFFICULTY=odaberite razinu težine +SING_EASY=lako +SING_MEDIUM=srednje +SING_HARD=teško +SING_TIME=VRIJEME +SING_COLON=: +SING_TOTAL=ukupno +SING_SONG_SELECTION=odabir pjesme +SING_CHOOSE_SONG=odaberite pjesmu +SING_SING_MODE=solo pjevanje +SING_NOTES=note +SING_GOLDEN_NOTES=zlatne note +SING_PHRASE_BONUS=toèan pojam +SING_EXIT=izlaz +SING_TOP_5_CHARTS=popis 5 najboljih +SING_ENTER_PLAYER_NAME=upišite ime igraèa diff --git a/Languages/Czech.ini b/Languages/Czech.ini new file mode 100644 index 00000000..4458dc67 --- /dev/null +++ b/Languages/Czech.ini @@ -0,0 +1,83 @@ +[Text] +SING_LOADING=Naèítám... +SING_SING=zpívat +SING_SING_DESC=rychlá hra: zpívat sólo nebo duet +SING_EDITOR=editor +SING_EDITOR_DESC=vytvoøit vlastní písnì +SING_EXIT_DESC=ukonèit hru + +SING_OPTIONS_GAME=hra +SING_OPTIONS_GRAPHICS=grafika +SING_OPTIONS_SOUND=zvuk +SING_OPTIONS_LYRICS=slova +SING_OPTIONS_THEMES=témata +SING_OPTIONS_RECORD=záznam +SING_OPTIONS_NETWORK=sí +SING_OPTIONS_EXIT=zpìt + +SING_OPTIONS_GAME_DESC=nastavení hry +SING_OPTIONS_GAME_PLAYERS=Hráèi +SING_OPTIONS_GAME_DIFFICULTY=Obtížnost +SING_OPTIONS_GAME_LANGUAGE=Jazyk +SING_OPTIONS_GAME_TABS=Skupiny +SING_OPTIONS_GAME_SORTING=Øazení +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=nastavení grafiky +SING_OPTIONS_GRAPHICS_RESOLUTION=Rozlišení +SING_OPTIONS_GRAPHICS_FULLSCREEN=Celá obrazovka +SING_OPTIONS_GRAPHICS_DEPTH=Hloubka +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velikost videa + +SING_OPTIONS_SOUND_DESC=nastavení zvuku +SING_OPTIONS_SOUND_MIC_BOOST=Zesílení mikrofonu +SING_OPTIONS_SOUND_CLICK_ASSIST=Pomocný klik +SING_OPTIONS_SOUND_BEAT_CLICK=Pravidelný klik +SING_OPTIONS_SOUND_THRESHOLD=Práh slyšitelnosti +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mód dvou hráèù + +SING_OPTIONS_LYRICS_DESC=nastavení slov +SING_OPTIONS_LYRICS_FONT=Písmo +SING_OPTIONS_LYRICS_EFFECT=Efekt +SING_OPTIONS_LYRICS_SOLMIZATION=Solmizace + +SING_OPTIONS_THEMES_DESC=nastavení témat +SING_OPTIONS_THEMES_THEME=Téma +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Barva + +SING_OPTIONS_RECORD_DESC=nastavení záznamu +SING_OPTIONS_RECORD_CARD=Zvuková karta +SING_OPTIONS_RECORD_INPUT=Vstup +SING_OPTIONS_RECORD_CHANNELL=Levý kanál +SING_OPTIONS_RECORD_CHANNELR=Pravý kanál + +SING_OPTIONS_NETWORK_DESC=nastavení sítì +SING_OPTIONS_NETWORK_VERSIONCHECK=Zkontrolovat verzi +SING_OPTIONS_NETWORK_SENDVERSION=Zaslat verzi +SING_OPTIONS_NETWORK_USEANONYMOUS=Anonymní pøihlášení + + + +SING_CHOOSE_MODE=vyberte mód +SING_GAME_OPTIONS=nastavení +SING_GAME_OPTIONS_DESC=zmìnit nastavení +SING_LEGEND_SELECT=VÝBÌR +SING_LEGEND_NAVIGATE=NAVIGACE +SING_OPTIONS=nastavení +SING_DIFFICULTY=vyberte obtížnost +SING_EASY=lehká +SING_MEDIUM=støední +SING_HARD=tìžká +SING_TIME=ÈAS +SING_TOTAL=celkem +SING_SONG_SELECTION=výbìr písnì +SING_CHOOSE_SONG=vyberte píseò +SING_SING_MODE=zpívat +SING_NOTES=noty +SING_GOLDEN_NOTES=zlaté noty +SING_PHRASE_BONUS=øádky +SING_EXIT=konec +SING_TOP_5_CHARTS=5 nejlepších +SING_ENTER_PLAYER_NAME=zadejte jméno hráèe diff --git a/Languages/Dutch.ini b/Languages/Dutch.ini new file mode 100644 index 00000000..df4b0b21 Binary files /dev/null and b/Languages/Dutch.ini differ diff --git a/Languages/English.ini b/Languages/English.ini new file mode 100644 index 00000000..e46fd862 --- /dev/null +++ b/Languages/English.ini @@ -0,0 +1,100 @@ +[Text] +SING_LOADING=Loading... +SING_SING=sing +SING_SING_DESC=quick game: sing solo or duet +SING_EDITOR=editor +SING_EDITOR_DESC=create your own songs +SING_EXIT_DESC=quit game + +SING_OPTIONS_GAME=game +SING_OPTIONS_GRAPHICS=graphics +SING_OPTIONS_SOUND=sound +SING_OPTIONS_LYRICS=lyrics +SING_OPTIONS_THEMES=themes +SING_OPTIONS_RECORD=record +SING_OPTIONS_EXIT=exit + +SING_OPTIONS_GAME_DESC=game options +SING_OPTIONS_GAME_PLAYERS=Players +SING_OPTIONS_GAME_DIFFICULTY=Difficulty +SING_OPTIONS_GAME_LANGUAGE=Language +SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_SORTING=Sorting +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=graphics options +SING_OPTIONS_GRAPHICS_RESOLUTION=Resolution +SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullscreen +SING_OPTIONS_GRAPHICS_DEPTH=Depth +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope +SING_OPTIONS_GRAPHICS_LINEBONUS=Line Bonus +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Movie size + +SING_OPTIONS_SOUND_DESC=sound options +SING_OPTIONS_SOUND_MIC_BOOST=Mic boost +SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist +SING_OPTIONS_SOUND_BEAT_CLICK=Beat click +SING_OPTIONS_SOUND_THRESHOLD=Threshold +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Two players mode + +SING_OPTIONS_LYRICS_DESC=lyrics options +SING_OPTIONS_LYRICS_FONT=Font +SING_OPTIONS_LYRICS_EFFECT=Effect +SING_OPTIONS_LYRICS_SOLMIZATION=Solmization + +SING_OPTIONS_THEMES_DESC=themes options +SING_OPTIONS_THEMES_THEME=Theme +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Color + +SING_OPTIONS_RECORD_DESC=record options +SING_OPTIONS_RECORD_CARD=Soundcard +SING_OPTIONS_RECORD_INPUT=Input +SING_OPTIONS_RECORD_CHANNELL=Left channel +SING_OPTIONS_RECORD_CHANNELR=Right channel + +SING_CHOOSE_MODE=choose mode +SING_GAME_OPTIONS=game options +SING_GAME_OPTIONS_DESC=change game settings +SING_LEGEND_SELECT=SELECT +SING_LEGEND_NAVIGATE=NAVIGATE +SING_OPTIONS=options + +SING_DIFFICULTY=select difficulty +SING_EASY=easy +SING_MEDIUM=medium +SING_HARD=hard + +SING_TIME=TIME +SING_TOTAL=total +SING_SONG_SELECTION=song selection +SING_SONGS_IN_CAT=Songs +SING_CHOOSE_SONG=choose your song +SING_SING_MODE=sing solo +SING_NOTES=notes +SING_GOLDEN_NOTES=golden notes +SING_PHRASE_BONUS=line bonus +SING_EXIT=exit + +EVENT_NOISE_DETECT Noise detect.(0=on,3=off) +SING_TOP_5_CHARTS=top 5 charts + +SING_ENTER_PLAYER_NAME=enter player name + +SING_MENU=Main Menu +SING_SONGSELECTION=Song Selection + +SING_SCORE_TONE_DEAF=Tone Deaf +SING_SCORE_AMATEUR=Amateur +SING_SCORE_RISING_STAR=Rising Star +SING_SCORE_LEAD_SINGER=Lead Singer +SING_SCORE_HIT_ARTIST=Hit Artist +SING_SCORE_SUPERSTAR=Superstar +SING_SCORE_ULTRASTAR=Ultrastar + +LINEBONUS_PERFECT=Perfect +LINEBONUS_BETTER=Better +LINEBONUS_GOOD=Good +LINEBONUS_NORMAL=Not really +LINEBONUS_BAD=Bad +LINEBONUS_WORST=Looser diff --git a/Languages/Finnish.ini b/Languages/Finnish.ini new file mode 100644 index 00000000..f0380be5 --- /dev/null +++ b/Languages/Finnish.ini @@ -0,0 +1,71 @@ +[Text] +SING_LOADING=Ladataan... +SING_SING=Laula +SING_SING_DESC=Pikapeli: Laula yksin tai duettona +SING_EDITOR=Editori +SING_EDITOR_DESC=Tee oma laulu +SING_EXIT_DESC=Poistu + +SING_OPTIONS_GAME=Peli +SING_OPTIONS_GRAPHICS=Grafiikka +SING_OPTIONS_SOUND=Äänet +SING_OPTIONS_LYRICS=Sanat +SING_OPTIONS_THEMES=Teemat +SING_OPTIONS_EXIT=Poistu + +SING_OPTIONS_GAME_DESC=Peliasetukset +SING_OPTIONS_GAME_PLAYERS=Pelaajat +SING_OPTIONS_GAME_DIFFICULTY=Vaikeustaso +SING_OPTIONS_GAME_LANGUAGE=Kieli +SING_OPTIONS_GAME_TABS=Tabit +SING_OPTIONS_GAME_SORTING=Järjestely +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=Grafiikka asetukset +SING_OPTIONS_GRAPHICS_RESOLUTION=Resoluutio +SING_OPTIONS_GRAPHICS_FULLSCREEN=Koko näyttö +SING_OPTIONS_GRAPHICS_DEPTH=Värit +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oskiloskooppi +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videon koko + +SING_OPTIONS_SOUND_DESC=Ääni asetukset +SING_OPTIONS_SOUND_MIC_BOOST=Mikki boostaus +SING_OPTIONS_SOUND_CLICK_ASSIST=Tahtiapuri +SING_OPTIONS_SOUND_BEAT_CLICK=Tahdin lyönti +SING_OPTIONS_SOUND_THRESHOLD=Kynnysarvo +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Kaksinpeli + +SING_OPTIONS_LYRICS_DESC=Sanojen asetukset +SING_OPTIONS_LYRICS_FONT=Fontti +SING_OPTIONS_LYRICS_EFFECT=Efekti +SING_OPTIONS_LYRICS_SOLMIZATION=Solmisaatio + +SING_OPTIONS_THEMES_DESC=Teema asetukset +SING_OPTIONS_THEMES_THEME=Teema +SING_OPTIONS_THEMES_SKIN=Ulkoasu +SING_OPTIONS_THEMES_COLOR=Väri + + + +SING_CHOOSE_MODE=Valitse pelityyppi +SING_GAME_OPTIONS=Peli Asetukset +SING_GAME_OPTIONS_DESC=Muuta asetuksia +SING_LEGEND_SELECT=Valitse +SING_LEGEND_NAVIGATE=Liiku +SING_OPTIONS=Asetukset +SING_DIFFICULTY=Valitse vaikeustaso +SING_EASY=Helppo +SING_MEDIUM=Keskivaikea +SING_HARD=Vaikea +SING_TIME=Aika +SING_TOTAL=Pisteet +SING_SONG_SELECTION=Kappaleen valinta +SING_CHOOSE_SONG=Valitse kappale +SING_SING_MODE=Soolo +SING_NOTES=Nuotit +SING_GOLDEN_NOTES=Kultaiset nuotit +SING_PHRASE_BONUS=Bonus +SING_EXIT=Poistu +EVENT_NOISE_DETECT Kohinanvaimennus.(0=on,3=off) +SING_TOP_5_CHARTS=Top 5 +SING_ENTER_PLAYER_NAME=Pelaaja diff --git a/Languages/French.ini b/Languages/French.ini new file mode 100644 index 00000000..ab3437d5 --- /dev/null +++ b/Languages/French.ini @@ -0,0 +1,70 @@ +[Text] +SING_LOADING=Chargement... +SING_SING=Chanter +SING_SING_DESC=Partie rapide: en solo ou en duo +SING_EDITOR=Editer +SING_EDITOR_DESC=Créer ses chansons +SING_EXIT_DESC=Sortir du jeu + +SING_OPTIONS_GAME=jeu +SING_OPTIONS_GRAPHICS=video +SING_OPTIONS_SOUND=audio +SING_OPTIONS_LYRICS=paroles +SING_OPTIONS_THEMES=themes +SING_OPTIONS_EXIT=retour + +SING_OPTIONS_GAME_DESC=options de jeu +SING_OPTIONS_GAME_PLAYERS=Joueurs +SING_OPTIONS_GAME_DIFFICULTY=Difficulté +SING_OPTIONS_GAME_LANGUAGE=Langage +SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_SORTING=Trier par +SING_OPTIONS_GAME_DEBUG=Débogage + +SING_OPTIONS_GRAPHICS_DESC=configuration video +SING_OPTIONS_GRAPHICS_RESOLUTION=Résolution +SING_OPTIONS_GRAPHICS_FULLSCREEN=Plein ecran +SING_OPTIONS_GRAPHICS_DEPTH=Profondeur +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Taille de la video + +SING_OPTIONS_SOUND_DESC=configuration audio +SING_OPTIONS_SOUND_MIC_BOOST=Amplification Mic +SING_OPTIONS_SOUND_CLICK_ASSIST=Aide aux notes +SING_OPTIONS_SOUND_BEAT_CLICK=Métronome +SING_OPTIONS_SOUND_THRESHOLD=Sensibilité sonore +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode 2 joueurs + +SING_OPTIONS_LYRICS_DESC=gestion des paroles +SING_OPTIONS_LYRICS_FONT=Police +SING_OPTIONS_LYRICS_EFFECT=Effet +SING_OPTIONS_LYRICS_SOLMIZATION=Mise en gamme + +SING_OPTIONS_THEMES_DESC=gestion des themes +SING_OPTIONS_THEMES_THEME=Theme +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Couleur + + + +SING_CHOOSE_MODE=choisir mode +SING_GAME_OPTIONS=chante en solo +SING_GAME_OPTIONS_DESC=change les parametres de jeu +SING_LEGEND_SELECT=CHOISIR +SING_LEGEND_NAVIGATE=NAVIGUER +SING_OPTIONS=options +SING_DIFFICULTY=choisir la difficulté +SING_EASY=facile +SING_MEDIUM=moyenne +SING_HARD=difficile +SING_TIME=TEMPS +SING_TOTAL=total +SING_SONG_SELECTION=sélection chanson +SING_CHOOSE_SONG=choisis ta chanson +SING_SING_MODE=chante en solo +SING_NOTES=notes +SING_GOLDEN_NOTES=notes en or +SING_PHRASE_BONUS=ligne bonus +SING_EXIT=quitter +SING_TOP_5_CHARTS=les 5 meilleurs du hit-parade +SING_ENTER_PLAYER_NAME=entrer nom de joueur diff --git a/Languages/Galego.ini b/Languages/Galego.ini new file mode 100644 index 00000000..e20072f8 --- /dev/null +++ b/Languages/Galego.ini @@ -0,0 +1,72 @@ +[Text] +SING_LOADING=Iniciandose... +SING_SING=Cantar +SING_SING_DESC=Cantar un só ou dueto +SING_EDITOR=Editor +SING_EDITOR_DESC=Crea as tuas propias cancións +SING_EXIT_DESC=Sair do xogo + +SING_OPTIONS_GAME=Xogo +SING_OPTIONS_GRAPHICS=Graficos +SING_OPTIONS_SOUND=Son +SING_OPTIONS_LYRICS=Letras +SING_OPTIONS_THEMES=Temas +SING_OPTIONS_EXIT=Volver + +SING_OPTIONS_GAME_DESC=Opcións do Xogo +SING_OPTIONS_GAME_PLAYERS=Xogadores +SING_OPTIONS_GAME_DIFFICULTY=Dificultade +SING_OPTIONS_GAME_LANGUAGE=Lingua +SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_SORTING=Ordear +SING_OPTIONS_GAME_DEBUG=Debugger + +SING_OPTIONS_GRAPHICS_DESC=Opcións dos graficos +SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla compreta +SING_OPTIONS_GRAPHICS_DEPTH=Profundidade +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño do video + +SING_OPTIONS_SOUND_DESC=Opcións do son +SING_OPTIONS_SOUND_MIC_BOOST=Potenciar Micro +SING_OPTIONS_SOUND_CLICK_ASSIST=Asistente Notas +SING_OPTIONS_SOUND_BEAT_CLICK=Asistente golpes +SING_OPTIONS_SOUND_THRESHOLD=Threshold +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo 2 Xogadores + +SING_OPTIONS_LYRICS_DESC=Opcións das letras +SING_OPTIONS_LYRICS_FONT=Fonte +SING_OPTIONS_LYRICS_EFFECT=Efecto +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo + +SING_OPTIONS_THEMES_DESC=Opcións dos temas +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Pel +SING_OPTIONS_THEMES_COLOR=Cor + + + +SING_CHOOSE_MODE=Elexir modo +SING_GAME_OPTIONS=Opcións do juego +SING_GAME_OPTIONS_DESC=Modifica a configuración do xogo +SING_LEGEND_SELECT=SELECCIONAR +SING_LEGEND_NAVIGATE=DESPLAZARSE +SING_OPTIONS=Opcións +SING_DIFFICULTY=Seleccionar dificultade +SING_EASY=Facil +SING_MEDIUM=Media +SING_HARD=Dificil +SING_TIME=TEMPO +SING_TOTAL=total +SING_SONG_SELECTION=selección da canción +SING_CHOOSE_SONG=elixe unha canción +SING_SING_MODE=cantar un só +SING_NOTES=notas +SING_GOLDEN_NOTES=notas douradas +SING_PHRASE_BONUS=bonus da línea +SING_EXIT=sair +EVENT_NOISE_DETECT Detec. rudio (0=sí,3=no) +SING_TOP_5_CHARTS=lista dos 5 mellores +SING_ENTER_PLAYER_NAME=introducir nome do xogador +SONG_SCORE=Puntuación diff --git a/Languages/German.ini b/Languages/German.ini new file mode 100644 index 00000000..56723cc2 --- /dev/null +++ b/Languages/German.ini @@ -0,0 +1,146 @@ +[Text] +SING_LOADING=Lade... + +SING_CHOOSE_MODE=Modus wählen +SING_SING=Singen +SING_SING_DESC=Singen + +SING_EDITOR=Editor +SING_EDITOR_DESC=Mach deinen eigenen Song + +SING_GAME_OPTIONS=Spiel-Optionen +SING_GAME_OPTIONS_DESC=Verändere die Spieleinstellungen + +SING_EXIT_DESC=Spiel verlassen + +SING_OPTIONS_GAME=Spiel +SING_OPTIONS_GRAPHICS=Grafik +SING_OPTIONS_SOUND=Sound +SING_OPTIONS_LYRICS=Lyrics +SING_OPTIONS_THEMES=Themes +SING_OPTIONS_RECORD=Aufnahme +SING_OPTIONS_EXIT=zurück + +SING_OPTIONS_GAME_DESC=Spiel Optionen +SING_OPTIONS_GAME_PLAYERS=Spieler +SING_OPTIONS_GAME_DIFFICULTY=Schwierigkeit +SING_OPTIONS_GAME_LANGUAGE=Sprache +SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_SORTING=Sortierung +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=Grafik Optionen +SING_OPTIONS_GRAPHICS_RESOLUTION=Auflösung +SING_OPTIONS_GRAPHICS_FULLSCREEN=Vollbild +SING_OPTIONS_GRAPHICS_DEPTH=Farbtiefe +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oszilloskop +SING_OPTIONS_GRAPHICS_LINEBONUS=Phrasen Bonus +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Video Größe + +SING_OPTIONS_SOUND_DESC=Sound Optionen +SING_OPTIONS_SOUND_MIC_BOOST=Mic Anhebung +SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent +SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click +SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdrückung +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spieler-Modus + +SING_OPTIONS_LYRICS_DESC=Lyrics Optionen +SING_OPTIONS_LYRICS_FONT=Schriftart +SING_OPTIONS_LYRICS_EFFECT=Effekt +SING_OPTIONS_LYRICS_SOLMIZATION=Solmization + +SING_OPTIONS_THEMES_DESC=Themes Optionen +SING_OPTIONS_THEMES_THEME=Theme +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Farbe + +SING_OPTIONS_RECORD_DESC=Aufnahme Einstellungen +SING_OPTIONS_RECORD_CARD=Soundkarte +SING_OPTIONS_RECORD_INPUT=Eingang +SING_OPTIONS_RECORD_CHANNELL=Linker Kanal +SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal + +SING_LEGEND_SELECT=AUSWÄHLEN +SING_LEGEND_NAVIGATE=NAVIGIEREN +SING_OPTIONS=Optionen + +SING_DIFFICULTY=Schwierigkeitsgrad auswählen +SING_EASY=Einfach +SING_MEDIUM=Mittel +SING_HARD=Schwierig + +SING_ENTER_PLAYER_NAME=Spielernamen eingeben + +SING_SONG_SELECTION=Song-Auswahl +SING_SONGS_IN_CAT=Songs +SING_CHOOSE_SONG=Wähle deinen Song + +SING_TIME=ZEIT +SING_TOTAL=Gesamt +SING_SING_MODE=Singmodus +SING_NOTES=Noten +SING_GOLDEN_NOTES=Goldener Ton +SING_PHRASE_BONUS=Phrasenbonus + +SING_TOP_5_CHARTS=Top-5-Charts + +EVENT_PRESET Voreinstellung (0 = zu Hause,1 - 2 = Club) +EVENT_NOISE_DETECT Geräuscherkennung (0 = an, 3 = aus) +EVENT_REVERB Hall (0 = hoch, 1 = niedrig, 2 = aus) + +SING_MENU=Hauptmenü +SING_SONGSELECTION=Songauswahl + +SING_SCORE_TONE_DEAF=Anti Talent +SING_SCORE_AMATEUR=Amateur +SING_SCORE_RISING_STAR=Möchtegern +SING_SCORE_LEAD_SINGER=Sternchen +SING_SCORE_HIT_ARTIST=Hit Künstler +SING_SCORE_SUPERSTAR=Superstar +SING_SCORE_ULTRASTAR=UltraStar + +LINEBONUS_PERFECT=Perfekt! +LINEBONUS_BETTER=Cool! +LINEBONUS_GOOD=Gut! +LINEBONUS_NORMAL=Ok! +LINEBONUS_BAD=Mies! +LINEBONUS_WORST=Grausam! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= und + +SONG_MENU_NAME_MAIN=Menü +SONG_MENU_PLAY=Singen +SONG_MENU_EDIT=Editor +SONG_MENU_MODI=Ein Modi singen +SONG_MENU_CANCEL=Abbrechen + +SONG_MENU_NAME_PLAYLIST=Playlist erstellen +SONG_MENU_PLAYLIST_ADD=Song hinzufügen +SONG_MENU_PLAYLIST_DEL=Song löschen + +SONG_MENU_NAME_PARTY=Menü +SONG_MENU_JOKER=Joker + +SONG_MENU_NAME_PARTY_JOKER=Joker spielen + + +PARTY_SCORE_WINS=%s hat gewonnen! +PARTY_OPTIONS_DESC=Party Modus +PARTY_DIFFICULTY=Schwierigkeitsgrad +PARTY_PLAYLIST=Playlist Modus +PARTY_ROUNDS=Runden +PARTY_TEAMS=Teams +PARTY_TEAMS_PLAYER1=Spieler Team1 +PARTY_TEAMS_PLAYER2=Spieler Team2 +PARTY_TEAMS_PLAYER3=Spieler Team3 +PARTY_SELECT_PLAYER=Gib die Spielernamen ein! + +PLUGIN_HDL_NAME=BalkenHalten +PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich +PLUGIN_UNTIL5000_NAME=Bis 5000 +PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt +PLUGIN_DUELL_NAME=Duell +PLUGIN_DUELL_DESC=Normales Spiel +PLUGIN_BLIND_NAME=Blind Mode +PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl \ No newline at end of file diff --git a/Languages/Italian.ini b/Languages/Italian.ini new file mode 100644 index 00000000..6a93e3f4 --- /dev/null +++ b/Languages/Italian.ini @@ -0,0 +1,85 @@ +[Text] +SING_LOADING=In caricamento... +SING_SING=Canta +SING_SING_DESC=Gara veloce: canta da solo o duetta +SING_EDITOR=Editor +SING_EDITOR_DESC=Crea le tue canzoni +SING_EXIT_DESC=Esci dal gioco + +SING_OPTIONS_GAME=Gioco +SING_OPTIONS_GRAPHICS=Grafica +SING_OPTIONS_SOUND=Suono +SING_OPTIONS_LYRICS=Testi +SING_OPTIONS_THEMES=Temi +SING_OPTIONS_RECORD=Registrazione +SING_OPTIONS_NETWORK=Rete +SING_OPTIONS_EXIT=Esci + +SING_OPTIONS_GAME_DESC=Opzioni di gioco +SING_OPTIONS_GAME_PLAYERS=Giocatori +SING_OPTIONS_GAME_DIFFICULTY=Difficolta' +SING_OPTIONS_GAME_LANGUAGE=Lingua +SING_OPTIONS_GAME_TABS=Tablature +SING_OPTIONS_GAME_SORTING=Ordinamento +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=Opzioni di grafica +SING_OPTIONS_GRAPHICS_RESOLUTION=Risoluzione +SING_OPTIONS_GRAPHICS_FULLSCREEN=Schermo intero +SING_OPTIONS_GRAPHICS_DEPTH=Profondita' +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscopio +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Dimensione Video + +SING_OPTIONS_SOUND_DESC=Opzioni audio +SING_OPTIONS_SOUND_MIC_BOOST=Preamplif. mic +SING_OPTIONS_SOUND_CLICK_ASSIST=Assistente di note +SING_OPTIONS_SOUND_BEAT_CLICK=Assistente tempo +SING_OPTIONS_SOUND_THRESHOLD=Suono di soglia +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mod. 2 giocatori + +SING_OPTIONS_LYRICS_DESC=Opzioni testi +SING_OPTIONS_LYRICS_FONT=Carattere +SING_OPTIONS_LYRICS_EFFECT=Effetto +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeggio + +SING_OPTIONS_THEMES_DESC=Opzioni temi +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Colore + +SING_OPTIONS_RECORD_DESC=Opzioni di registrazione +SING_OPTIONS_RECORD_CARD=Scheda sonora +SING_OPTIONS_RECORD_INPUT=Ingresso +SING_OPTIONS_RECORD_CHANNELL=Canale sinistro +SING_OPTIONS_RECORD_CHANNELR=Canale destro + +SING_OPTIONS_NETWORK_DESC=Opzioni di rete +SING_OPTIONS_NETWORK_VERSIONCHECK=Controlla versione +SING_OPTIONS_NETWORK_SENDVERSION=Invia versione +SING_OPTIONS_NETWORK_USEANONYMOUS=Accesso anonimo + + + +SING_CHOOSE_MODE=scegli modalita +SING_GAME_OPTIONS=opzioni di gioco +SING_GAME_OPTIONS_DESC=cambia impostazioni di gioco +SING_LEGEND_SELECT=SELEZIONA +SING_LEGEND_BACK=INDIETRO +SING_LEGEND_NAVIGATE=NAVIGA +SING_OPTIONS=opzioni +SING_DIFFICULTY=seleziona difficolta +SING_EASY=facile +SING_MEDIUM=media +SING_HARD=difficile +SING_TIME=TEMPO +SING_COLON=: +SING_TOTAL=totale +SING_SONG_SELECTION=seleziona brano +SING_CHOOSE_SONG=scegli il tuo brano +SING_SING_MODE=esegui un assolo +SING_NOTES=note +SING_GOLDEN_NOTES=note dorate +SING_PHRASE_BONUS=bonus riga +SING_EXIT=esci +SING_TOP_5_CHARTS=I migliori 5 +SING_ENTER_PLAYER_NAME=inserisci nome giocatore diff --git a/Languages/Lithuanian.ini b/Languages/Lithuanian.ini new file mode 100644 index 00000000..b5b3f29e Binary files /dev/null and b/Languages/Lithuanian.ini differ diff --git a/Languages/Polish.ini b/Languages/Polish.ini new file mode 100644 index 00000000..32aca449 --- /dev/null +++ b/Languages/Polish.ini @@ -0,0 +1,83 @@ +[Text] +SING_LOADING=Wczytywanie... +SING_SING=œpiewaj +SING_SING_DESC=œpiewaj solo lub w kilka osób +SING_EDITOR=edytor +SING_EDITOR_DESC=stwórz w³asne piosenki +SING_EXIT_DESC=wyjdŸ z gry + +SING_OPTIONS_GAME=gra +SING_OPTIONS_GRAPHICS=grafika +SING_OPTIONS_SOUND=dŸwiêk +SING_OPTIONS_LYRICS=s³owa +SING_OPTIONS_THEMES=tematy +SING_OPTIONS_RECORD=nagrywanie +SING_OPTIONS_NETWORK=sieæ +SING_OPTIONS_EXIT=wyjœcie + +SING_OPTIONS_GAME_DESC=opcje gry +SING_OPTIONS_GAME_PLAYERS=Iloœæ graczy +SING_OPTIONS_GAME_DIFFICULTY=Poziom trudnoœci +SING_OPTIONS_GAME_LANGUAGE=Jêzyk +SING_OPTIONS_GAME_TABS=Zak³adki +SING_OPTIONS_GAME_SORTING=Sortowanie +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=opcje graficzne +SING_OPTIONS_GRAPHICS_RESOLUTION=Rozdzielczoœæ +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pe³ny ekran +SING_OPTIONS_GRAPHICS_DEPTH=G³êbia koloru +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscyloskop +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Wielkoœæ filmów + +SING_OPTIONS_SOUND_DESC=opcje dŸwiêku +SING_OPTIONS_SOUND_MIC_BOOST=Podbicie mikrofonu +SING_OPTIONS_SOUND_CLICK_ASSIST=Pomoc klikniêciami +SING_OPTIONS_SOUND_BEAT_CLICK=Klikniêcia w rytm +SING_OPTIONS_SOUND_THRESHOLD=Próg +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tryb dwóch graczy + +SING_OPTIONS_LYRICS_DESC=opcje s³ów +SING_OPTIONS_LYRICS_FONT=Czcionka +SING_OPTIONS_LYRICS_EFFECT=Efekt +SING_OPTIONS_LYRICS_SOLMIZATION=Solmizacja + +SING_OPTIONS_THEMES_DESC=opcje tematów +SING_OPTIONS_THEMES_THEME=Temat +SING_OPTIONS_THEMES_SKIN=Skóra +SING_OPTIONS_THEMES_COLOR=Kolor + +SING_OPTIONS_RECORD_DESC=opcje nagrywania +SING_OPTIONS_RECORD_CARD=Karta dŸwiêkowa +SING_OPTIONS_RECORD_INPUT=Wejœcie +SING_OPTIONS_RECORD_CHANNELL=Lewy kana³ +SING_OPTIONS_RECORD_CHANNELR=Prawy kana³ + +SING_OPTIONS_NETWORK_DESC=opcje sieciowe +SING_OPTIONS_NETWORK_VERSIONCHECK=Sprawdzaj wersjê +SING_OPTIONS_NETWORK_SENDVERSION=Wysy³aj wersjê +SING_OPTIONS_NETWORK_USEANONYMOUS=Loguj anonimowo + + + +SING_CHOOSE_MODE=wybierz tryb +SING_GAME_OPTIONS=opcje gry +SING_GAME_OPTIONS_DESC=zmieñ ustawienia gry +SING_LEGEND_SELECT=WYBÓR +SING_LEGEND_NAVIGATE=NAWIGACJA +SING_OPTIONS=opcje +SING_DIFFICULTY=wybierz poziom trudnoœci +SING_EASY=³atwo +SING_MEDIUM=œrednio +SING_HARD=trudno +SING_TIME=CZAS +SING_TOTAL=³¹cznie +SING_SONG_SELECTION=wybór piosenki +SING_CHOOSE_SONG=wybierz piosenkê +SING_SING_MODE=œpiew solo +SING_NOTES=nuty +SING_GOLDEN_NOTES=z³ote nuty +SING_PHRASE_BONUS=premia linii +SING_EXIT=zakoñcz +SING_TOP_5_CHARTS=lista 5 najlepszych +SING_ENTER_PLAYER_NAME=wprowadŸ imiê gracza diff --git a/Languages/Portuguese.ini b/Languages/Portuguese.ini new file mode 100644 index 00000000..2f8574c4 --- /dev/null +++ b/Languages/Portuguese.ini @@ -0,0 +1,70 @@ +[Text] +SING_LOADING=Iniciar... +SING_SING=Cantar +SING_SING_DESC=Cantar único ou um dueto +SING_EDITOR=Publisher +SING_EDITOR_DESC=Cria suas próprias canções +SING_EXIT_DESC=Sair do jogo + +SING_OPTIONS_GAME=Jogo +SING_OPTIONS_GRAPHICS=Graficos +SING_OPTIONS_SOUND=Som +SING_OPTIONS_LYRICS=Letras +SING_OPTIONS_THEMES=Assuntos +SING_OPTIONS_EXIT=Retornar + +SING_OPTIONS_GAME_DESC=Opções do jogo +SING_OPTIONS_GAME_PLAYERS=Jogadores +SING_OPTIONS_GAME_DIFFICULTY=Dificuldade +SING_OPTIONS_GAME_LANGUAGE=Língua +SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_SORTING=Á ordem +SING_OPTIONS_GAME_DEBUG=Debugger + +SING_OPTIONS_GRAPHICS_DESC=Opções dos graficos +SING_OPTIONS_GRAPHICS_RESOLUTION=Definição +SING_OPTIONS_GRAPHICS_FULLSCREEN=Tela completa +SING_OPTIONS_GRAPHICS_DEPTH=Profundidade +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamanho do vídeo + +SING_OPTIONS_SOUND_DESC=Opções do som +SING_OPTIONS_SOUND_MIC_BOOST=Aproveitarar micro +SING_OPTIONS_SOUND_CLICK_ASSIST=Notas assistentes +SING_OPTIONS_SOUND_BEAT_CLICK=Sopros do assistente +SING_OPTIONS_SOUND_THRESHOLD=Threshold +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Maneira 2 jogadores + +SING_OPTIONS_LYRICS_DESC=opções das letras +SING_OPTIONS_LYRICS_FONT=Fonte +SING_OPTIONS_LYRICS_EFFECT=Efeito +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo + +SING_OPTIONS_THEMES_DESC=Opções dos assuntos +SING_OPTIONS_THEMES_THEME=Assunto +SING_OPTIONS_THEMES_SKIN=Pele +SING_OPTIONS_THEMES_COLOR=Cor + +SING_CHOOSE_MODE=Escolher a maneira +SING_GAME_OPTIONS=Opções do jogo +SING_GAME_OPTIONS_DESC=Modifica a configuração do jogo +SING_LEGEND_SELECT=SELECIONAR +SING_LEGEND_NAVIGATE=MOVER-SE +SING_OPTIONS=Opções +SING_DIFFICULTY=Seleta a dificuldade +SING_EASY=Fácil +SING_MEDIUM=Meios +SING_HARD=Dificil +SING_TIME=TEMPO +SING_TOTAL=Total +SING_SONG_SELECTION=Seleção da canção +SING_CHOOSE_SONG=Escolhe uma canção +SING_SING_MODE=Cantar únicas +SING_NOTES=Notas +SING_GOLDEN_NOTES=Notas douradas +SING_PHRASE_BONUS=Bônus da linha +SING_EXIT=Á licença +EVENT_NOISE_DETECT=Deteção ruído (0=sí,3=no) +SING_TOP_5_CHARTS=Lista das 5 mais melhores +SING_ENTER_PLAYER_NAME=Introduzir nome do jogador +SONG_SCORE=Pontuação diff --git a/Languages/Spanish.ini b/Languages/Spanish.ini new file mode 100644 index 00000000..c4177725 --- /dev/null +++ b/Languages/Spanish.ini @@ -0,0 +1,79 @@ +[Text] +SING_LOADING=Cargando... +SING_SING=cantar +SING_SING_DESC=juego rapido: cantar un solo o un dueto +SING_EDITOR=editor +SING_EDITOR_DESC=crea tus propias canciones +SING_EXIT_DESC=salir del juego + +SING_OPTIONS_GAME=juego +SING_OPTIONS_GRAPHICS=graficos +SING_OPTIONS_SOUND=sonido +SING_OPTIONS_LYRICS=letras +SING_OPTIONS_THEMES=temas +SING_OPTIONS_EXIT=salir + +SING_OPTIONS_GAME_DESC=opciones del juego +SING_OPTIONS_GAME_PLAYERS=jugadores +SING_OPTIONS_GAME_DIFFICULTY=Dificultad +SING_OPTIONS_GAME_LANGUAGE=Idioma +SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_SORTING=Ordenar +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=opciones de los graficos +SING_OPTIONS_GRAPHICS_RESOLUTION=Resolucion +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa +SING_OPTIONS_GRAPHICS_DEPTH=Profundidad +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamano de video + +SING_OPTIONS_SOUND_DESC=opciones de sonido +SING_OPTIONS_SOUND_MIC_BOOST=Potenciar Micro +SING_OPTIONS_SOUND_CLICK_ASSIST=Asistente de Notas +SING_OPTIONS_SOUND_BEAT_CLICK=Asistente de golpes +SING_OPTIONS_SOUND_THRESHOLD=Threshold +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo dos jugadores + +SING_OPTIONS_LYRICS_DESC=opciones de letras +SING_OPTIONS_LYRICS_FONT=Fuente +SING_OPTIONS_LYRICS_EFFECT=Efecto +SING_OPTIONS_LYRICS_SOLMIZATION=Solfa + +SING_OPTIONS_THEMES_DESC=opciones de temas +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Color + +SING_OPTIONS_RECORD_DESC=opciones de grabación +SING_OPTIONS_RECORD_CARD=Tarjeta de sonido +SING_OPTIONS_RECORD_INPUT=Entrada +SING_OPTIONS_RECORD_CHANNELL=Canal izquierdo +SING_OPTIONS_RECORD_CHANNELR=Canal derecho + +SING_OPTIONS_NETWORK_DESC=opciones de red +SING_OPTIONS_NETWORK_VERSIONCHECK=Comprobar versión +SING_OPTIONS_NETWORK_SENDVERSION=Enviar versión +SING_OPTIONS_NETWORK_USEANONYMOUS=Acceso anónimo + +SING_CHOOSE_MODE=elegir modo +SING_GAME_OPTIONS=opciones de juego +SING_GAME_OPTIONS_DESC=modifica la configuración del juego +SING_LEGEND_SELECT=SELECCIONAR +SING_LEGEND_NAVIGATE=DESPLAZARSE +SING_OPTIONS=opciones +SING_DIFFICULTY=seleccionar dificultad +SING_EASY=fácil +SING_MEDIUM=media +SING_HARD=difícil +SING_TIME=TIEMPO +SING_TOTAL=total +SING_SONG_SELECTION=selección de canción +SING_CHOOSE_SONG=elige una canción +SING_SING_MODE=cantar un solo +SING_NOTES=notas +SING_GOLDEN_NOTES=notas doradas +SING_PHRASE_BONUS=bonus de línea +SING_EXIT=salir +SING_TOP_5_CHARTS=lista de los 5 mejores +SING_ENTER_PLAYER_NAME=introducir nombre de jugador diff --git a/Languages/Swedish.ini b/Languages/Swedish.ini new file mode 100644 index 00000000..52c18ab5 --- /dev/null +++ b/Languages/Swedish.ini @@ -0,0 +1,70 @@ +[Text] +SING_LOADING=Laddar... +SING_SING=sjung +SING_SING_DESC=snabbspel: sjung solo eller duett +SING_EDITOR=editor +SING_EDITOR_DESC=skapa dina egna latar +SING_EXIT_DESC=avsluta + +SING_OPTIONS_GAME=spel +SING_OPTIONS_GRAPHICS=grafik +SING_OPTIONS_SOUND=ljud +SING_OPTIONS_LYRICS=text +SING_OPTIONS_THEMES=teman +SING_OPTIONS_EXIT=avsluta + +SING_OPTIONS_GAME_DESC=spelalternativ +SING_OPTIONS_GAME_PLAYERS=Spelare +SING_OPTIONS_GAME_DIFFICULTY=Svarighetsgrad +SING_OPTIONS_GAME_LANGUAGE=Sprak +SING_OPTIONS_GAME_TABS=Tabulatur +SING_OPTIONS_GAME_SORTING=Sortering +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=grafikalternativ +SING_OPTIONS_GRAPHICS_RESOLUTION=Upplösning +SING_OPTIONS_GRAPHICS_FULLSCREEN=Helskärm +SING_OPTIONS_GRAPHICS_DEPTH=Djup +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videostorlek + +SING_OPTIONS_SOUND_DESC=ljudalternativ +SING_OPTIONS_SOUND_MIC_BOOST=Mic boost +SING_OPTIONS_SOUND_CLICK_ASSIST=Click-assistens +SING_OPTIONS_SOUND_BEAT_CLICK=Slag-klick +SING_OPTIONS_SOUND_THRESHOLD=Lägsta niva +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tva-spelar-läge + +SING_OPTIONS_LYRICS_DESC=textalternativ +SING_OPTIONS_LYRICS_FONT=Typsnitt +SING_OPTIONS_LYRICS_EFFECT=Effekt +SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation + +SING_OPTIONS_THEMES_DESC=tema-alternativ +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_COLOR=Färg + + + +SING_CHOOSE_MODE=välj läge +SING_GAME_OPTIONS=spelalternativ +SING_GAME_OPTIONS_DESC=ändra spelinställningar +SING_LEGEND_SELECT=VÄLJ +SING_LEGEND_NAVIGATE=NAVIGERA +SING_OPTIONS=alternativ +SING_DIFFICULTY=välj svarighetsgrad +SING_EASY=lätt +SING_MEDIUM=medel +SING_HARD=svar +SING_TIME=TID +SING_COLON=: +SING_TOTAL=totalt +SING_SONG_SELECTION=latval +SING_CHOOSE_SONG=välj din lat +SING_SING_MODE=sjung solo +SING_NOTES=noter +SING_GOLDEN_NOTES=gyllene noter +SING_PHRASE_BONUS=linjebonus +SING_EXIT=avsluta +SING_TOP_5_CHARTS=fem-i-topp listor +SING_ENTER_PLAYER_NAME=skriv spelarens namn diff --git a/Languages/Turkish.ini b/Languages/Turkish.ini new file mode 100644 index 00000000..a6b56951 --- /dev/null +++ b/Languages/Turkish.ini @@ -0,0 +1,69 @@ +[Text] +SING_LOADING=yükleniyor... +SING_SING=sarki +SING_SING_DESC=oyuna basla: tek kisi yada düet +SING_EDITOR=editör +SING_EDITOR_DESC=kendi müzigini yarat +SING_EXIT_DESC=oyundan cik + +SING_OPTIONS_GAME=oyun +SING_OPTIONS_GRAPHICS=grafikler +SING_OPTIONS_SOUND=sesler +SING_OPTIONS_LYRICS=lirikler +SING_OPTIONS_THEMES=temalar +SING_OPTIONS_EXIT=cikis + +SING_OPTIONS_GAME_DESC=oyun ayarlarý +SING_OPTIONS_GAME_PLAYERS=Oyuncular +SING_OPTIONS_GAME_DIFFICULTY=Zorluk +SING_OPTIONS_GAME_LANGUAGE=Dil +SING_OPTIONS_GAME_TABS=Tablar +SING_OPTIONS_GAME_SORTING=Listeleme +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_DESC=grafik secenekleri +SING_OPTIONS_GRAPHICS_RESOLUTION=Cözünürlük +SING_OPTIONS_GRAPHICS_FULLSCREEN=Tam Ekran +SING_OPTIONS_GRAPHICS_DEPTH=Derinlik +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osiloskop +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Film Boyutu + +SING_OPTIONS_SOUND_DESC=ses secenekleri +SING_OPTIONS_SOUND_MIC_BOOST=Mic boost +SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist +SING_OPTIONS_SOUND_BEAT_CLICK=Beat click +SING_OPTIONS_SOUND_THRESHOLD=Threshold +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Iki kisilik mod + +SING_OPTIONS_LYRICS_DESC=lirik ayarlarý +SING_OPTIONS_LYRICS_FONT=Font +SING_OPTIONS_LYRICS_EFFECT=Efektler +SING_OPTIONS_LYRICS_SOLMIZATION=Solmizasyon + +SING_OPTIONS_THEMES_DESC=tema secenekleri +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_COLOR=Renk + + + +SING_CHOOSE_MODE=Mod Sec +SING_GAME_OPTIONS=oyun secenekleri +SING_GAME_OPTIONS_DESC=oyun seceneklerini degistir +SING_LEGEND_SELECT=SECIM +SING_LEGEND_NAVIGATE=NAVIGASYON +SING_OPTIONS=ayarlar +SING_DIFFICULTY=zorluk sec +SING_EASY=kolay +SING_MEDIUM=orta +SING_HARD=zor +SING_TIME=ZMN +SING_TOTAL=Toplam +SING_SONG_SELECTION=sarki secimi +SING_CHOOSE_SONG=sarkini sec +SING_SING_MODE=Solo +SING_NOTES=notalar +SING_GOLDEN_NOTES=altin notalar +SING_PHRASE_BONUS=cizgi bonusu +SING_EXIT=cikis +SING_TOP_5_CHARTS=top 5 tablosu +SING_ENTER_PLAYER_NAME=oyuncu isminizi girin \ No newline at end of file -- cgit v1.2.3 From a48be5b4dd13db5cbc2cce4932508e61ff354340 Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 21 Mar 2007 21:35:49 +0000 Subject: Golden notes are implemented from now on. So "golden notes" twinkle, and perfect sung notes twinkle too. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@12 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 22 +-- Game/Code/Classes/UGraphicClasses.pas | 266 ++++++++++++++++++++++++++++++++++ Game/Code/Screens/UScreenSing.pas | 8 +- Game/Code/UltraStar.dpr | 7 + 4 files changed, 293 insertions(+), 10 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index e9433790..4e4691ad 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -1,7 +1,7 @@ unit UDraw; interface -uses UThemes, ModiSDK; +uses UThemes, ModiSDK, UGraphicClasses; procedure SingDraw; procedure SingModiDraw (PlayerInfo: TPlayerInfo); @@ -200,6 +200,8 @@ var Pet: integer; TempR: real; R,G,B: real; + + GoldenStarPos : real; begin glColor3f(1, 1, 1); glEnable(GL_TEXTURE_2D); @@ -214,11 +216,9 @@ begin // Golden Note Patch case Wartosc of 1: glColor4f(1, 1, 1, 0.85); - 2: glColor4f(1, 1, 0.3, 0.85); + 2: glColor4f(1, 1, 1, 0.85); // no stars, paint yellow -> glColor4f(1, 1, 0.3, 0.85); end; // case - - // lewa czesc - left part Rec.Left := (Start-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left + 0.5 + 10*ScreenX; Rec.Right := Rec.Left + NotesW; @@ -232,6 +232,11 @@ begin glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; + //We keep the postion of the top left corner b4 it's overwritten + GoldenStarPos := Rec.Left; + //done + + // srodkowa czesc - middle part Rec.Left := Rec.Right; Rec.Right := (Start+Dlugosc-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left - NotesW - 0.5 + 10*ScreenX; @@ -256,12 +261,11 @@ begin glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; - // Golden Star Patch - //case Wartosc of - // 2: SingGoldenStar(Rec.Left, Rec.Top, 1, StarfrG); - //end; // case - + if Wartosc = 2 then + begin + GoldenRec.SaveGoldenStarsRec(GoldenStarPos, Rec.Top, Rec.Right, Rec.Bottom); + end; end; // if not FreeStyle end; // with diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index abb59e4b..d66bd142 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -2,6 +2,272 @@ unit UGraphicClasses; interface +type + TParticle = Class + X, Y : Real; //Position + Frame : Byte; //act. Frame + Tex : Cardinal; //Tex num from Textur Manager + Live : Byte; //How many Cycles before Kill + RecIndex : Integer; //To which rectangle belongs this particle + + Constructor Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; RecArrayIndex : Integer); + procedure Draw; + end; + + RectanglePositions = Record + xTop, yTop, xBottom, yBottom : Real; + TotalStarCount : Integer; + CurrentStarCount : Integer; + end; + + PerfectNotePositions = Record + xPos, yPos : Real; + end; + + TEffectManager = Class + Particle : array of TParticle; + LastTime : Cardinal; + RecArray : Array of RectanglePositions; + PerfNoteArray : Array of PerfectNotePositions; + + constructor Create; + procedure Draw; + function Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer): Cardinal; + procedure SpawnRec(); + procedure Kill(index: Cardinal); + procedure KillAll(); + procedure SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); + procedure SpawnNotePerfect(xPos,yPos : real); + procedure SavePerfectNotePos(Xtop, Ytop: Real); + end; + +var GoldenRec : TEffectManager; + implementation +uses sysutils, Windows,OpenGl12, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; + +//TParticle +Constructor TParticle.Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; RecArrayIndex : Integer); +begin + X := cX; + Y := cY; + Tex := cTex; + Live := cLive; + Frame:= cFrame; + RecIndex := RecArrayIndex; +end; + + +procedure TParticle.Draw; +var + W, H: real; + Alpha : real; +begin + W := 20; + H := 20; + + Alpha := (-cos((Frame+1)*2*pi/16)+1); //Fade Eyecandy + + glColor4f(0.99, 1, 0.6, Alpha); + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_Note_Star.TexNum); + + begin + glBegin(GL_QUADS); + glTexCoord2f((1/16) * Frame, 0); glVertex2f(X-W, Y-H); + glTexCoord2f((1/16) * Frame + (1/16), 0); glVertex2f(X-W, Y+H); + glTexCoord2f((1/16) * Frame + (1/16), 1); glVertex2f(X+W, Y+H); + glTexCoord2f((1/16) * Frame, 1); glVertex2f(X+W, Y-H); + glEnd; + end; + glcolor4f(1,1,1,1); +end; + + + +constructor TEffectManager.Create; +begin + LastTime := GetTickCount; +end; + + +procedure TEffectManager.Draw; +var + I: Integer; + CurrentTime: Cardinal; +const + DelayBetweenFrames : Integer = 100; +begin + + CurrentTime := GetTickCount; + //Manage particle life + if (CurrentTime > (LastTime + DelayBetweenFrames)) then + begin + LastTime := CurrentTime; + for I := 0 to high(Particle) do + begin + Particle[I].Frame := (Particle[I].Frame + 1 ) mod 16; + //Live = 0 => Live forever + if (Particle[I].Live > 0) then + begin + Dec(Particle[I].Live); + end; + end; + end; + I := 0; + //Kill dead particles + while (I <= High(Particle)) do + begin + if (Particle[I].Live <= 0) then + begin + kill(I); + end + else + begin + inc(I); + end; + end; + + //Draw + for I := 0 to high(Particle) do + begin + Particle[I].Draw; + end; +end; + + +function TEffectManager.Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer): Cardinal; +begin + Result := Length(Particle); + SetLength(Particle, (Result + 1)); + Particle[Result] := TParticle.Create(X, Y, Tex, Live, StartFrame, RecArrayIndex); +end; + + +procedure TEffectManager.SpawnRec(); +Var + Xkatze, Ykatze : Real; + RandomFrame : Integer; + P : Integer; // P as seen on TV as Positionman +begin +//Spawn a random amount of stars within the given coordinates +//RandomRange(0,14) <- this one starts at a random frame, 16 is our last frame - would be senseless to start a particle with 16, cause it would be dead at the next frame +for P:= 0 to high(RecArray) do + begin + while (RecArray[P].TotalStarCount > RecArray[P].CurrentStarCount) do + begin + Xkatze := RandomRange(Ceil(RecArray[P].xTop), Ceil(RecArray[P].xBottom)); + Ykatze := RandomRange(Ceil(RecArray[P].yTop), Ceil(RecArray[P].yBottom)); + RandomFrame := RandomRange(0,14); + Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, P); + inc(RecArray[P].CurrentStarCount); + end; + end; + draw; +end; + + +procedure TEffectManager.SpawnNotePerfect(xPos,yPos : real); +Var + Xkatze, Ykatze : Real; + RandomFrame : Integer; + P : Integer; // P as seen on TV as Positionman +begin +//Spawn a random amount of stars within the given coordinates +//RandomRange(0,14) <- this one starts at a random frame, 16 is our last frame - would be senseless to start a particle with 16, cause it would be dead at the next frame +for P:= 0 to 2 do + begin + Xkatze := RandomRange(ceil(xPos) - 5 , ceil(xPos) + 10); + Ykatze := RandomRange(ceil(yPos) - 5 , ceil(yPos) + 10); + RandomFrame := RandomRange(0,14); + Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, -1); + end; + draw; +end; + + +procedure TEffectManager.Kill(Index: Cardinal); +var + LastParticleIndex : Cardinal; +begin +// We put the last element of the array on the place where our element_to_delete resides and then we shorten the array - cool, hu? :P + +LastParticleIndex := high(Particle); +if not(LastParticleIndex = -1) then + begin + Try + Finally + if not(Particle[Index].RecIndex = -1) then + dec(RecArray[Particle[Index].RecIndex].CurrentStarCount); + Particle[Index].Destroy; + Particle[Index] := Particle[LastParticleIndex]; + SetLength(Particle, LastParticleIndex); + end; + end; +end; + +procedure TEffectManager.KillAll(); +begin +//It's the kill all kennies rotuine + while Length(Particle) > 0 do + Kill(0); + SetLength(RecArray,0); + SetLength(PerfNoteArray,0); +end; + +procedure TEffectManager.SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); +var + P : Integer; // P like used in Positions + NewIndex : Integer; +begin + For P := 0 to high(RecArray) do // Do we already have that "new" position? + begin + if ((ceil(RecArray[P].xTop) = ceil(Xtop)) and (ceil(RecArray[P].yTop) = ceil(Ytop))) then + exit; // it's already in the array, so we don't have to create a new one + end; + +// we got a new position, add the new positions to our array + NewIndex := Length(RecArray); + SetLength(RecArray, NewIndex + 1); + RecArray[NewIndex].xTop := Xtop; + RecArray[NewIndex].yTop := Ytop; + RecArray[NewIndex].xBottom := Xbottom; + RecArray[NewIndex].yBottom := Ybottom; + RecArray[NewIndex].TotalStarCount := ceil(Xbottom - Xtop) div 12 + 3; + RecArray[NewIndex].CurrentStarCount := 0; +end; + +procedure TEffectManager.SavePerfectNotePos(Xtop, Ytop: Real); +var + P : Integer; // P like used in Positions + NewIndex : Integer; + + RandomFrame : Integer; + Xkatze, Ykatze : Integer; +begin + For P := 0 to high(PerfNoteArray) do // Do we already have that "new" position? + begin + if ((ceil(PerfNoteArray[P].xPos) = ceil(Xtop)) and (ceil(PerfNoteArray[P].yPos) = ceil(Ytop))) then + exit; // it's already in the array, so we don't have to create a new one + end; + +// we got a new position, add the new positions to our array + NewIndex := Length(PerfNoteArray); + SetLength(PerfNoteArray, NewIndex + 1); + PerfNoteArray[NewIndex].xPos := Xtop; + PerfNoteArray[NewIndex].yPos := Ytop; + + for P:= 0 to 2 do + begin + Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); + Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); + RandomFrame := RandomRange(0,14); + Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, -1); + end; + +end; end. + diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 2a97482d..3dd1119a 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -3,7 +3,7 @@ unit UScreenSing; interface uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, - TextGL, OpenGL12, BASS, UThemes, ULCD; + TextGL, OpenGL12, BASS, UThemes, ULCD, UGraphicClasses; type TScreenSing = class(TMenu) @@ -973,6 +973,9 @@ begin // draw custom items SingDraw; // always draw +//GoldenNoteStarsTwinkle Mod + GoldenRec.SpawnRec; +//GoldenNoteStarsTwinkle Mod // back stereo Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; @@ -1116,6 +1119,9 @@ Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; end; //PhrasenBonus - Line Bonus Mod End// } +//GoldenStarsTwinkle Mod + GoldenRec.KillAll; +//GoldenStarsTwinkle Mod End end; end. diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 5c598eda..b0d49610 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -258,6 +258,13 @@ begin Log.BenchmarkEnd(1); Log.LogBenchmark('Loading Score DB System', 1); + //GoldenStarsTwinkleMod + Log.BenchmarkStart(1); + Log.LogStatus('GoldenStars', 'Initialization'); + GoldenRec := TEffectManager.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading GoldenStars', 1); + // Joypad if Ini.Joypad = 1 then begin Log.BenchmarkStart(1); -- cgit v1.2.3 From cca5f57513b0ea2cf9ade1027420962bb1ed51f8 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 22 Mar 2007 17:58:30 +0000 Subject: changed Theme Files uploaded git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@13 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Ball3.bmp | Bin 0 -> 536 bytes Skins/Classic/Bar.jpg | Bin 0 -> 1377 bytes Skins/Classic/Button.jpg | Bin 0 -> 5112 bytes Skins/Classic/Button3.jpg | Bin 0 -> 39324 bytes Skins/Classic/Left gray.bmp | Bin 0 -> 822 bytes Skins/Classic/Line Bonus PopUp.JPG | Bin 0 -> 1995 bytes Skins/Classic/Line.jpg | Bin 0 -> 1041 bytes Skins/Classic/Main Bar.jpg | Bin 0 -> 2115 bytes Skins/Classic/Main Bar2.jpg | Bin 0 -> 18979 bytes Skins/Classic/Main Cursor.jpg | Bin 0 -> 942 bytes Skins/Classic/Main Exit.jpg | Bin 0 -> 3065 bytes Skins/Classic/Main Heart.jpg | Bin 0 -> 3070 bytes Skins/Classic/Main Multi.jpg | Bin 0 -> 2965 bytes Skins/Classic/Main Options.jpg | Bin 0 -> 2875 bytes Skins/Classic/Main Solo.jpg | Bin 0 -> 3070 bytes Skins/Classic/Mid gray.bmp | Bin 0 -> 3126 bytes Skins/Classic/Note BG Left.bmp | Bin 0 -> 1590 bytes Skins/Classic/Note BG Mid.bmp | Bin 0 -> 1590 bytes Skins/Classic/Note BG Right.bmp | Bin 0 -> 1590 bytes Skins/Classic/Note Star.jpg | Bin 0 -> 20091 bytes Skins/Classic/P.jpg | Bin 0 -> 1487 bytes Skins/Classic/Right gray.bmp | Bin 0 -> 822 bytes Skins/Classic/Score Box.jpg | Bin 0 -> 690 bytes Skins/Classic/Score Level Round.jpg | Bin 0 -> 616 bytes Skins/Classic/Score Level.jpg | Bin 0 -> 1245 bytes Skins/Classic/Score Line.jpg | Bin 0 -> 730 bytes Skins/Classic/Sing Bar Back.jpg | Bin 0 -> 1098 bytes Skins/Classic/Sing Bar Bar.jpg | Bin 0 -> 1143 bytes Skins/Classic/Sing Bar Front.jpg | Bin 0 -> 1117 bytes Skins/Classic/Sing Score BG.jpg | Bin 0 -> 3692 bytes Skins/Classic/Song Cover.jpg | Bin 0 -> 11840 bytes Skins/Classic/Song Fade.jpg | Bin 0 -> 2537 bytes Skins/Classic/Song Selection.jpg | Bin 0 -> 3418 bytes Skins/Classic/Square.jpg | Bin 0 -> 1574 bytes Skins/Classic/Standard.ini | 58 + Skins/Classic/Text Bar.jpg | Bin 0 -> 8123 bytes Skins/Deluxe/Ball3.bmp | Bin 0 -> 536 bytes Skins/Deluxe/Bar.jpg | Bin 0 -> 1377 bytes Skins/Deluxe/Blue.ini | 62 + Skins/Deluxe/Blue.jpg | Bin 0 -> 110682 bytes Skins/Deluxe/Button.jpg | Bin 0 -> 15137 bytes Skins/Deluxe/Buttonf.jpg | Bin 0 -> 17717 bytes Skins/Deluxe/Editor.jpg | Bin 0 -> 47675 bytes Skins/Deluxe/Left gray.bmp | Bin 0 -> 822 bytes Skins/Deluxe/Line Bonus PopUp.JPG | Bin 0 -> 1995 bytes Skins/Deluxe/Line.jpg | Bin 0 -> 1041 bytes Skins/Deluxe/LoadingBackground.jpg | Bin 0 -> 244428 bytes Skins/Deluxe/Main Bar.jpg | Bin 0 -> 15387 bytes Skins/Deluxe/MainBG_Blue.jpg | Bin 0 -> 110682 bytes Skins/Deluxe/MainBG_W&C.jpg | Bin 0 -> 225987 bytes Skins/Deluxe/Mid gray.bmp | Bin 0 -> 3126 bytes Skins/Deluxe/Note BG Left.bmp | Bin 0 -> 1590 bytes Skins/Deluxe/Note BG Mid.bmp | Bin 0 -> 1590 bytes Skins/Deluxe/Note BG Right.bmp | Bin 0 -> 1590 bytes Skins/Deluxe/Note Star.jpg | Bin 0 -> 20091 bytes Skins/Deluxe/P.jpg | Bin 0 -> 1487 bytes Skins/Deluxe/Pointer.jpg | Bin 0 -> 517 bytes Skins/Deluxe/Right gray.bmp | Bin 0 -> 822 bytes Skins/Deluxe/Score Box.jpg | Bin 0 -> 690 bytes Skins/Deluxe/Score Level Round.jpg | Bin 0 -> 616 bytes Skins/Deluxe/Score Level.jpg | Bin 0 -> 1245 bytes Skins/Deluxe/Score Line.jpg | Bin 0 -> 730 bytes Skins/Deluxe/Sing Bar Back.jpg | Bin 0 -> 1098 bytes Skins/Deluxe/Sing Bar Bar.jpg | Bin 0 -> 1143 bytes Skins/Deluxe/Sing Bar Front.jpg | Bin 0 -> 1117 bytes Skins/Deluxe/Sing Score BG.jpg | Bin 0 -> 3692 bytes Skins/Deluxe/Sing.jpg | Bin 0 -> 48870 bytes Skins/Deluxe/Song Cover.jpg | Bin 0 -> 11840 bytes Skins/Deluxe/Song Fade.jpg | Bin 0 -> 2537 bytes Skins/Deluxe/Song Selection.jpg | Bin 0 -> 35720 bytes Skins/Deluxe/Song Selection1.jpg | Bin 0 -> 26572 bytes Skins/Deluxe/Song Selection2.jpg | Bin 0 -> 1303 bytes Skins/Deluxe/Square.jpg | Bin 0 -> 1574 bytes Skins/Deluxe/Text Bar.jpg | Bin 0 -> 8123 bytes Skins/Deluxe/W&C.ini | 65 + Skins/Deluxe/W&C.jpg | Bin 0 -> 200184 bytes Skins/Deluxe/cd.jpg | Bin 0 -> 43852 bytes Skins/Deluxe/exit.jpg | Bin 0 -> 50189 bytes Skins/Deluxe/leiste1.jpg | Bin 0 -> 21373 bytes Skins/Deluxe/leiste2.jpg | Bin 0 -> 23774 bytes Skins/Deluxe/options.jpg | Bin 0 -> 50923 bytes Themes/Classic.ini | 3209 ++++++++++++++++++++++++ Themes/Deluxe.ini | 4582 +++++++++++++++++++++++++++++++++++ 83 files changed, 7976 insertions(+) create mode 100644 Skins/Classic/Ball3.bmp create mode 100644 Skins/Classic/Bar.jpg create mode 100644 Skins/Classic/Button.jpg create mode 100644 Skins/Classic/Button3.jpg create mode 100644 Skins/Classic/Left gray.bmp create mode 100644 Skins/Classic/Line Bonus PopUp.JPG create mode 100644 Skins/Classic/Line.jpg create mode 100644 Skins/Classic/Main Bar.jpg create mode 100644 Skins/Classic/Main Bar2.jpg create mode 100644 Skins/Classic/Main Cursor.jpg create mode 100644 Skins/Classic/Main Exit.jpg create mode 100644 Skins/Classic/Main Heart.jpg create mode 100644 Skins/Classic/Main Multi.jpg create mode 100644 Skins/Classic/Main Options.jpg create mode 100644 Skins/Classic/Main Solo.jpg create mode 100644 Skins/Classic/Mid gray.bmp create mode 100644 Skins/Classic/Note BG Left.bmp create mode 100644 Skins/Classic/Note BG Mid.bmp create mode 100644 Skins/Classic/Note BG Right.bmp create mode 100644 Skins/Classic/Note Star.jpg create mode 100644 Skins/Classic/P.jpg create mode 100644 Skins/Classic/Right gray.bmp create mode 100644 Skins/Classic/Score Box.jpg create mode 100644 Skins/Classic/Score Level Round.jpg create mode 100644 Skins/Classic/Score Level.jpg create mode 100644 Skins/Classic/Score Line.jpg create mode 100644 Skins/Classic/Sing Bar Back.jpg create mode 100644 Skins/Classic/Sing Bar Bar.jpg create mode 100644 Skins/Classic/Sing Bar Front.jpg create mode 100644 Skins/Classic/Sing Score BG.jpg create mode 100644 Skins/Classic/Song Cover.jpg create mode 100644 Skins/Classic/Song Fade.jpg create mode 100644 Skins/Classic/Song Selection.jpg create mode 100644 Skins/Classic/Square.jpg create mode 100644 Skins/Classic/Standard.ini create mode 100644 Skins/Classic/Text Bar.jpg create mode 100644 Skins/Deluxe/Ball3.bmp create mode 100644 Skins/Deluxe/Bar.jpg create mode 100644 Skins/Deluxe/Blue.ini create mode 100644 Skins/Deluxe/Blue.jpg create mode 100644 Skins/Deluxe/Button.jpg create mode 100644 Skins/Deluxe/Buttonf.jpg create mode 100644 Skins/Deluxe/Editor.jpg create mode 100644 Skins/Deluxe/Left gray.bmp create mode 100644 Skins/Deluxe/Line Bonus PopUp.JPG create mode 100644 Skins/Deluxe/Line.jpg create mode 100644 Skins/Deluxe/LoadingBackground.jpg create mode 100644 Skins/Deluxe/Main Bar.jpg create mode 100644 Skins/Deluxe/MainBG_Blue.jpg create mode 100644 Skins/Deluxe/MainBG_W&C.jpg create mode 100644 Skins/Deluxe/Mid gray.bmp create mode 100644 Skins/Deluxe/Note BG Left.bmp create mode 100644 Skins/Deluxe/Note BG Mid.bmp create mode 100644 Skins/Deluxe/Note BG Right.bmp create mode 100644 Skins/Deluxe/Note Star.jpg create mode 100644 Skins/Deluxe/P.jpg create mode 100644 Skins/Deluxe/Pointer.jpg create mode 100644 Skins/Deluxe/Right gray.bmp create mode 100644 Skins/Deluxe/Score Box.jpg create mode 100644 Skins/Deluxe/Score Level Round.jpg create mode 100644 Skins/Deluxe/Score Level.jpg create mode 100644 Skins/Deluxe/Score Line.jpg create mode 100644 Skins/Deluxe/Sing Bar Back.jpg create mode 100644 Skins/Deluxe/Sing Bar Bar.jpg create mode 100644 Skins/Deluxe/Sing Bar Front.jpg create mode 100644 Skins/Deluxe/Sing Score BG.jpg create mode 100644 Skins/Deluxe/Sing.jpg create mode 100644 Skins/Deluxe/Song Cover.jpg create mode 100644 Skins/Deluxe/Song Fade.jpg create mode 100644 Skins/Deluxe/Song Selection.jpg create mode 100644 Skins/Deluxe/Song Selection1.jpg create mode 100644 Skins/Deluxe/Song Selection2.jpg create mode 100644 Skins/Deluxe/Square.jpg create mode 100644 Skins/Deluxe/Text Bar.jpg create mode 100644 Skins/Deluxe/W&C.ini create mode 100644 Skins/Deluxe/W&C.jpg create mode 100644 Skins/Deluxe/cd.jpg create mode 100644 Skins/Deluxe/exit.jpg create mode 100644 Skins/Deluxe/leiste1.jpg create mode 100644 Skins/Deluxe/leiste2.jpg create mode 100644 Skins/Deluxe/options.jpg create mode 100644 Themes/Classic.ini create mode 100644 Themes/Deluxe.ini diff --git a/Skins/Classic/Ball3.bmp b/Skins/Classic/Ball3.bmp new file mode 100644 index 00000000..5b7d7943 Binary files /dev/null and b/Skins/Classic/Ball3.bmp differ diff --git a/Skins/Classic/Bar.jpg b/Skins/Classic/Bar.jpg new file mode 100644 index 00000000..e6191a95 Binary files /dev/null and b/Skins/Classic/Bar.jpg differ diff --git a/Skins/Classic/Button.jpg b/Skins/Classic/Button.jpg new file mode 100644 index 00000000..32e455ef Binary files /dev/null and b/Skins/Classic/Button.jpg differ diff --git a/Skins/Classic/Button3.jpg b/Skins/Classic/Button3.jpg new file mode 100644 index 00000000..bb283c41 Binary files /dev/null and b/Skins/Classic/Button3.jpg differ diff --git a/Skins/Classic/Left gray.bmp b/Skins/Classic/Left gray.bmp new file mode 100644 index 00000000..328e0122 Binary files /dev/null and b/Skins/Classic/Left gray.bmp differ diff --git a/Skins/Classic/Line Bonus PopUp.JPG b/Skins/Classic/Line Bonus PopUp.JPG new file mode 100644 index 00000000..4b399cb0 Binary files /dev/null and b/Skins/Classic/Line Bonus PopUp.JPG differ diff --git a/Skins/Classic/Line.jpg b/Skins/Classic/Line.jpg new file mode 100644 index 00000000..b3540a60 Binary files /dev/null and b/Skins/Classic/Line.jpg differ diff --git a/Skins/Classic/Main Bar.jpg b/Skins/Classic/Main Bar.jpg new file mode 100644 index 00000000..4e9693e3 Binary files /dev/null and b/Skins/Classic/Main Bar.jpg differ diff --git a/Skins/Classic/Main Bar2.jpg b/Skins/Classic/Main Bar2.jpg new file mode 100644 index 00000000..f541b90c Binary files /dev/null and b/Skins/Classic/Main Bar2.jpg differ diff --git a/Skins/Classic/Main Cursor.jpg b/Skins/Classic/Main Cursor.jpg new file mode 100644 index 00000000..ee98f9d7 Binary files /dev/null and b/Skins/Classic/Main Cursor.jpg differ diff --git a/Skins/Classic/Main Exit.jpg b/Skins/Classic/Main Exit.jpg new file mode 100644 index 00000000..55494e65 Binary files /dev/null and b/Skins/Classic/Main Exit.jpg differ diff --git a/Skins/Classic/Main Heart.jpg b/Skins/Classic/Main Heart.jpg new file mode 100644 index 00000000..a7e3d82a Binary files /dev/null and b/Skins/Classic/Main Heart.jpg differ diff --git a/Skins/Classic/Main Multi.jpg b/Skins/Classic/Main Multi.jpg new file mode 100644 index 00000000..ad5980d7 Binary files /dev/null and b/Skins/Classic/Main Multi.jpg differ diff --git a/Skins/Classic/Main Options.jpg b/Skins/Classic/Main Options.jpg new file mode 100644 index 00000000..5e1bff71 Binary files /dev/null and b/Skins/Classic/Main Options.jpg differ diff --git a/Skins/Classic/Main Solo.jpg b/Skins/Classic/Main Solo.jpg new file mode 100644 index 00000000..a7e3d82a Binary files /dev/null and b/Skins/Classic/Main Solo.jpg differ diff --git a/Skins/Classic/Mid gray.bmp b/Skins/Classic/Mid gray.bmp new file mode 100644 index 00000000..90d97860 Binary files /dev/null and b/Skins/Classic/Mid gray.bmp differ diff --git a/Skins/Classic/Note BG Left.bmp b/Skins/Classic/Note BG Left.bmp new file mode 100644 index 00000000..83e61525 Binary files /dev/null and b/Skins/Classic/Note BG Left.bmp differ diff --git a/Skins/Classic/Note BG Mid.bmp b/Skins/Classic/Note BG Mid.bmp new file mode 100644 index 00000000..bc85ede9 Binary files /dev/null and b/Skins/Classic/Note BG Mid.bmp differ diff --git a/Skins/Classic/Note BG Right.bmp b/Skins/Classic/Note BG Right.bmp new file mode 100644 index 00000000..62682410 Binary files /dev/null and b/Skins/Classic/Note BG Right.bmp differ diff --git a/Skins/Classic/Note Star.jpg b/Skins/Classic/Note Star.jpg new file mode 100644 index 00000000..dcdd805c Binary files /dev/null and b/Skins/Classic/Note Star.jpg differ diff --git a/Skins/Classic/P.jpg b/Skins/Classic/P.jpg new file mode 100644 index 00000000..5217c6b1 Binary files /dev/null and b/Skins/Classic/P.jpg differ diff --git a/Skins/Classic/Right gray.bmp b/Skins/Classic/Right gray.bmp new file mode 100644 index 00000000..a4cbc1ae Binary files /dev/null and b/Skins/Classic/Right gray.bmp differ diff --git a/Skins/Classic/Score Box.jpg b/Skins/Classic/Score Box.jpg new file mode 100644 index 00000000..b37f7e46 Binary files /dev/null and b/Skins/Classic/Score Box.jpg differ diff --git a/Skins/Classic/Score Level Round.jpg b/Skins/Classic/Score Level Round.jpg new file mode 100644 index 00000000..dbc5b5af Binary files /dev/null and b/Skins/Classic/Score Level Round.jpg differ diff --git a/Skins/Classic/Score Level.jpg b/Skins/Classic/Score Level.jpg new file mode 100644 index 00000000..e47280cb Binary files /dev/null and b/Skins/Classic/Score Level.jpg differ diff --git a/Skins/Classic/Score Line.jpg b/Skins/Classic/Score Line.jpg new file mode 100644 index 00000000..2fd951aa Binary files /dev/null and b/Skins/Classic/Score Line.jpg differ diff --git a/Skins/Classic/Sing Bar Back.jpg b/Skins/Classic/Sing Bar Back.jpg new file mode 100644 index 00000000..ead02155 Binary files /dev/null and b/Skins/Classic/Sing Bar Back.jpg differ diff --git a/Skins/Classic/Sing Bar Bar.jpg b/Skins/Classic/Sing Bar Bar.jpg new file mode 100644 index 00000000..a7466084 Binary files /dev/null and b/Skins/Classic/Sing Bar Bar.jpg differ diff --git a/Skins/Classic/Sing Bar Front.jpg b/Skins/Classic/Sing Bar Front.jpg new file mode 100644 index 00000000..35b4ff88 Binary files /dev/null and b/Skins/Classic/Sing Bar Front.jpg differ diff --git a/Skins/Classic/Sing Score BG.jpg b/Skins/Classic/Sing Score BG.jpg new file mode 100644 index 00000000..9a1cc5e0 Binary files /dev/null and b/Skins/Classic/Sing Score BG.jpg differ diff --git a/Skins/Classic/Song Cover.jpg b/Skins/Classic/Song Cover.jpg new file mode 100644 index 00000000..ba84359c Binary files /dev/null and b/Skins/Classic/Song Cover.jpg differ diff --git a/Skins/Classic/Song Fade.jpg b/Skins/Classic/Song Fade.jpg new file mode 100644 index 00000000..1d6b80ff Binary files /dev/null and b/Skins/Classic/Song Fade.jpg differ diff --git a/Skins/Classic/Song Selection.jpg b/Skins/Classic/Song Selection.jpg new file mode 100644 index 00000000..b6c0065e Binary files /dev/null and b/Skins/Classic/Song Selection.jpg differ diff --git a/Skins/Classic/Square.jpg b/Skins/Classic/Square.jpg new file mode 100644 index 00000000..8af62b71 Binary files /dev/null and b/Skins/Classic/Square.jpg differ diff --git a/Skins/Classic/Standard.ini b/Skins/Classic/Standard.ini new file mode 100644 index 00000000..1bb98a39 --- /dev/null +++ b/Skins/Classic/Standard.ini @@ -0,0 +1,58 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Classic +Name=UltraStar +Creator=UltraStar Deluxe Team +Color=Blue + +[Textures] +GrayLeft=Left Gray.bmp +GrayMid=Mid Gray.bmp +GrayRight=Right Gray.bmp +NoteBGLeft=Note BG Left.bmp +NoteBGMid=Note BG Mid.bmp +NoteBGRight=Note BG Right.bmp +NoteStar=Note Star.jpg +Ball=Ball.bmp +SongCover=Song Cover.jpg + +Button=Button.jpg + +#BGS: +#LoadingBG= +#MainBG= +#SongBG= +#ScoreBG= +#Top5BG= +#OptionsBG= + +MainBar=Main Bar.jpg +Logo=Main Bar2.jpg +MainCursor=Main Cursor.jpg +MainSolo=Main Solo.jpg +MainMulti=Main Multi.jpg +MainOptions=Main Options.jpg +MainExit=Main Exit.jpg +SongFade=Song Fade.jpg +SongSelection=Song Selection.jpg +Bar=Bar.jpg +ButtonF=Button.jpg +P=P.jpg +ScoreLine=Score Line.jpg +ScoreBox=Score Box.jpg +ScoreLevel=Score Level.jpg +ScoreLevelRound=Score Level Round.jpg + +ScoreBG=Sing Score BG.jpg + +LyricBar=Text Bar.jpg + +SingBarBack=Sing Bar Back.jpg +SingBarBar=Sing Bar Bar.jpg +SingBarFront=Sing Bar Front.jpg + +LineBonusBack=Line Bonus PopUp.jpg \ No newline at end of file diff --git a/Skins/Classic/Text Bar.jpg b/Skins/Classic/Text Bar.jpg new file mode 100644 index 00000000..bf55226d Binary files /dev/null and b/Skins/Classic/Text Bar.jpg differ diff --git a/Skins/Deluxe/Ball3.bmp b/Skins/Deluxe/Ball3.bmp new file mode 100644 index 00000000..5b7d7943 Binary files /dev/null and b/Skins/Deluxe/Ball3.bmp differ diff --git a/Skins/Deluxe/Bar.jpg b/Skins/Deluxe/Bar.jpg new file mode 100644 index 00000000..e6191a95 Binary files /dev/null and b/Skins/Deluxe/Bar.jpg differ diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini new file mode 100644 index 00000000..81985a0f --- /dev/null +++ b/Skins/Deluxe/Blue.ini @@ -0,0 +1,62 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Blue +Color=Blue + +[Textures] +GrayLeft=Left Gray.bmp +GrayMid=Mid Gray.bmp +GrayRight=Right Gray.bmp +NoteBGLeft=Note BG Left.bmp +NoteBGMid=Note BG Mid.bmp +NoteBGRight=Note BG Right.bmp +NoteStar=Note Star.jpg +Ball=Ball.bmp +SongCover=Song Cover.jpg + +Button=Button.jpg + +LoadingBG=LoadingBackground.jpg +MainBG=MainBG_Blue.jpg +SongBG=Blue.jpg +ScoreBG=Blue.jpg +Top5BG=Blue.jpg +OptionsBG=Blue.jpg + +MainSolo=Sing.jpg +MainMulti=Editor.jpg +MainOptions=Options.jpg +MainExit=Exit.jpg + +SongCD=cd.jpg + +Leiste1=Leiste1.jpg +Leiste2=Leiste2.jpg + +MainBar=Main Bar.jpg +Logo=Main Bar2.jpg + +SongSelection1=Song Selection1.jpg +SongSelection2=Song Selection2.jpg +Bar=Bar.jpg +ButtonF=Buttonf.jpg +P=P.jpg +ScoreLine=Score Line.jpg +ScoreBox=Score Box.jpg +ScoreLevel=Score Level.jpg +ScoreLevelRound=Score Level Round.jpg + +ScoreBG=Sing Score BG.jpg + +LyricBar=Text Bar.jpg + +SingBarBack=Sing Bar Back.jpg +SingBarBar=Sing Bar Bar.jpg +SingBarFront=Sing Bar Front.jpg + +LineBonusBack=Line Bonus PopUp.jpg \ No newline at end of file diff --git a/Skins/Deluxe/Blue.jpg b/Skins/Deluxe/Blue.jpg new file mode 100644 index 00000000..27b31463 Binary files /dev/null and b/Skins/Deluxe/Blue.jpg differ diff --git a/Skins/Deluxe/Button.jpg b/Skins/Deluxe/Button.jpg new file mode 100644 index 00000000..52eca5f6 Binary files /dev/null and b/Skins/Deluxe/Button.jpg differ diff --git a/Skins/Deluxe/Buttonf.jpg b/Skins/Deluxe/Buttonf.jpg new file mode 100644 index 00000000..d844add5 Binary files /dev/null and b/Skins/Deluxe/Buttonf.jpg differ diff --git a/Skins/Deluxe/Editor.jpg b/Skins/Deluxe/Editor.jpg new file mode 100644 index 00000000..d02613b2 Binary files /dev/null and b/Skins/Deluxe/Editor.jpg differ diff --git a/Skins/Deluxe/Left gray.bmp b/Skins/Deluxe/Left gray.bmp new file mode 100644 index 00000000..328e0122 Binary files /dev/null and b/Skins/Deluxe/Left gray.bmp differ diff --git a/Skins/Deluxe/Line Bonus PopUp.JPG b/Skins/Deluxe/Line Bonus PopUp.JPG new file mode 100644 index 00000000..4b399cb0 Binary files /dev/null and b/Skins/Deluxe/Line Bonus PopUp.JPG differ diff --git a/Skins/Deluxe/Line.jpg b/Skins/Deluxe/Line.jpg new file mode 100644 index 00000000..b3540a60 Binary files /dev/null and b/Skins/Deluxe/Line.jpg differ diff --git a/Skins/Deluxe/LoadingBackground.jpg b/Skins/Deluxe/LoadingBackground.jpg new file mode 100644 index 00000000..7ec91d14 Binary files /dev/null and b/Skins/Deluxe/LoadingBackground.jpg differ diff --git a/Skins/Deluxe/Main Bar.jpg b/Skins/Deluxe/Main Bar.jpg new file mode 100644 index 00000000..2b8390db Binary files /dev/null and b/Skins/Deluxe/Main Bar.jpg differ diff --git a/Skins/Deluxe/MainBG_Blue.jpg b/Skins/Deluxe/MainBG_Blue.jpg new file mode 100644 index 00000000..27b31463 Binary files /dev/null and b/Skins/Deluxe/MainBG_Blue.jpg differ diff --git a/Skins/Deluxe/MainBG_W&C.jpg b/Skins/Deluxe/MainBG_W&C.jpg new file mode 100644 index 00000000..e1e76df6 Binary files /dev/null and b/Skins/Deluxe/MainBG_W&C.jpg differ diff --git a/Skins/Deluxe/Mid gray.bmp b/Skins/Deluxe/Mid gray.bmp new file mode 100644 index 00000000..90d97860 Binary files /dev/null and b/Skins/Deluxe/Mid gray.bmp differ diff --git a/Skins/Deluxe/Note BG Left.bmp b/Skins/Deluxe/Note BG Left.bmp new file mode 100644 index 00000000..83e61525 Binary files /dev/null and b/Skins/Deluxe/Note BG Left.bmp differ diff --git a/Skins/Deluxe/Note BG Mid.bmp b/Skins/Deluxe/Note BG Mid.bmp new file mode 100644 index 00000000..bc85ede9 Binary files /dev/null and b/Skins/Deluxe/Note BG Mid.bmp differ diff --git a/Skins/Deluxe/Note BG Right.bmp b/Skins/Deluxe/Note BG Right.bmp new file mode 100644 index 00000000..62682410 Binary files /dev/null and b/Skins/Deluxe/Note BG Right.bmp differ diff --git a/Skins/Deluxe/Note Star.jpg b/Skins/Deluxe/Note Star.jpg new file mode 100644 index 00000000..dcdd805c Binary files /dev/null and b/Skins/Deluxe/Note Star.jpg differ diff --git a/Skins/Deluxe/P.jpg b/Skins/Deluxe/P.jpg new file mode 100644 index 00000000..5217c6b1 Binary files /dev/null and b/Skins/Deluxe/P.jpg differ diff --git a/Skins/Deluxe/Pointer.jpg b/Skins/Deluxe/Pointer.jpg new file mode 100644 index 00000000..39ee57f4 Binary files /dev/null and b/Skins/Deluxe/Pointer.jpg differ diff --git a/Skins/Deluxe/Right gray.bmp b/Skins/Deluxe/Right gray.bmp new file mode 100644 index 00000000..a4cbc1ae Binary files /dev/null and b/Skins/Deluxe/Right gray.bmp differ diff --git a/Skins/Deluxe/Score Box.jpg b/Skins/Deluxe/Score Box.jpg new file mode 100644 index 00000000..b37f7e46 Binary files /dev/null and b/Skins/Deluxe/Score Box.jpg differ diff --git a/Skins/Deluxe/Score Level Round.jpg b/Skins/Deluxe/Score Level Round.jpg new file mode 100644 index 00000000..dbc5b5af Binary files /dev/null and b/Skins/Deluxe/Score Level Round.jpg differ diff --git a/Skins/Deluxe/Score Level.jpg b/Skins/Deluxe/Score Level.jpg new file mode 100644 index 00000000..e47280cb Binary files /dev/null and b/Skins/Deluxe/Score Level.jpg differ diff --git a/Skins/Deluxe/Score Line.jpg b/Skins/Deluxe/Score Line.jpg new file mode 100644 index 00000000..2fd951aa Binary files /dev/null and b/Skins/Deluxe/Score Line.jpg differ diff --git a/Skins/Deluxe/Sing Bar Back.jpg b/Skins/Deluxe/Sing Bar Back.jpg new file mode 100644 index 00000000..ead02155 Binary files /dev/null and b/Skins/Deluxe/Sing Bar Back.jpg differ diff --git a/Skins/Deluxe/Sing Bar Bar.jpg b/Skins/Deluxe/Sing Bar Bar.jpg new file mode 100644 index 00000000..a7466084 Binary files /dev/null and b/Skins/Deluxe/Sing Bar Bar.jpg differ diff --git a/Skins/Deluxe/Sing Bar Front.jpg b/Skins/Deluxe/Sing Bar Front.jpg new file mode 100644 index 00000000..35b4ff88 Binary files /dev/null and b/Skins/Deluxe/Sing Bar Front.jpg differ diff --git a/Skins/Deluxe/Sing Score BG.jpg b/Skins/Deluxe/Sing Score BG.jpg new file mode 100644 index 00000000..9a1cc5e0 Binary files /dev/null and b/Skins/Deluxe/Sing Score BG.jpg differ diff --git a/Skins/Deluxe/Sing.jpg b/Skins/Deluxe/Sing.jpg new file mode 100644 index 00000000..ae2d3f57 Binary files /dev/null and b/Skins/Deluxe/Sing.jpg differ diff --git a/Skins/Deluxe/Song Cover.jpg b/Skins/Deluxe/Song Cover.jpg new file mode 100644 index 00000000..ba84359c Binary files /dev/null and b/Skins/Deluxe/Song Cover.jpg differ diff --git a/Skins/Deluxe/Song Fade.jpg b/Skins/Deluxe/Song Fade.jpg new file mode 100644 index 00000000..1d6b80ff Binary files /dev/null and b/Skins/Deluxe/Song Fade.jpg differ diff --git a/Skins/Deluxe/Song Selection.jpg b/Skins/Deluxe/Song Selection.jpg new file mode 100644 index 00000000..b9c207c8 Binary files /dev/null and b/Skins/Deluxe/Song Selection.jpg differ diff --git a/Skins/Deluxe/Song Selection1.jpg b/Skins/Deluxe/Song Selection1.jpg new file mode 100644 index 00000000..c26b3fcb Binary files /dev/null and b/Skins/Deluxe/Song Selection1.jpg differ diff --git a/Skins/Deluxe/Song Selection2.jpg b/Skins/Deluxe/Song Selection2.jpg new file mode 100644 index 00000000..e6f7be54 Binary files /dev/null and b/Skins/Deluxe/Song Selection2.jpg differ diff --git a/Skins/Deluxe/Square.jpg b/Skins/Deluxe/Square.jpg new file mode 100644 index 00000000..8af62b71 Binary files /dev/null and b/Skins/Deluxe/Square.jpg differ diff --git a/Skins/Deluxe/Text Bar.jpg b/Skins/Deluxe/Text Bar.jpg new file mode 100644 index 00000000..bf55226d Binary files /dev/null and b/Skins/Deluxe/Text Bar.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini new file mode 100644 index 00000000..2adfce3b --- /dev/null +++ b/Skins/Deluxe/W&C.ini @@ -0,0 +1,65 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=W & C +Color=Blue + +[Textures] +GrayLeft=Left Gray.bmp +GrayMid=Mid Gray.bmp +GrayRight=Right Gray.bmp +NoteBGLeft=Note BG Left.bmp +NoteBGMid=Note BG Mid.bmp +NoteBGRight=Note BG Right.bmp +NoteStar=Note Star.jpg +Ball=Ball.bmp +SongCover=Song Cover.jpg + +Button=Button.jpg + +LoadingBG=LoadingBackground.jpg +MainBG=MainBG_W&C.jpg +SongBG=W&C.jpg +ScoreScreenBG=W&C.jpg +Top5BG=W&C.jpg +OptionsBG=W&C.jpg +PartyBG=W&C.jpg + +MainSolo=Sing.jpg +MainMulti=Editor.jpg +MainOptions=Options.jpg +MainExit=Exit.jpg + +SongCD=cd.jpg + +Leiste1=Leiste1.jpg +Leiste2=Leiste2.jpg + +MainBar=Main Bar.jpg +Logo=Main Bar2.jpg + +SongSelection1=Song Selection1.jpg +SongSelection2=Song Selection2.jpg +Bar=Bar.jpg +ButtonF=Buttonf.jpg +P=P.jpg +ScoreLine=Score Line.jpg +ScoreBox=Score Box.jpg +ScoreLevel=Score Level.jpg +ScoreLevelRound=Score Level Round.jpg + +ScoreBG=Sing Score BG.jpg + +LyricBar=Text Bar.jpg + +SingBarBack=Sing Bar Back.jpg +SingBarBar=Sing Bar Bar.jpg +SingBarFront=Sing Bar Front.jpg + +LineBonusBack=Line Bonus PopUp.jpg + +HDL_Pointer=Pointer.BMP \ No newline at end of file diff --git a/Skins/Deluxe/W&C.jpg b/Skins/Deluxe/W&C.jpg new file mode 100644 index 00000000..dd10355b Binary files /dev/null and b/Skins/Deluxe/W&C.jpg differ diff --git a/Skins/Deluxe/cd.jpg b/Skins/Deluxe/cd.jpg new file mode 100644 index 00000000..b751a021 Binary files /dev/null and b/Skins/Deluxe/cd.jpg differ diff --git a/Skins/Deluxe/exit.jpg b/Skins/Deluxe/exit.jpg new file mode 100644 index 00000000..6c0e8bf4 Binary files /dev/null and b/Skins/Deluxe/exit.jpg differ diff --git a/Skins/Deluxe/leiste1.jpg b/Skins/Deluxe/leiste1.jpg new file mode 100644 index 00000000..698c9c03 Binary files /dev/null and b/Skins/Deluxe/leiste1.jpg differ diff --git a/Skins/Deluxe/leiste2.jpg b/Skins/Deluxe/leiste2.jpg new file mode 100644 index 00000000..6f8f3358 Binary files /dev/null and b/Skins/Deluxe/leiste2.jpg differ diff --git a/Skins/Deluxe/options.jpg b/Skins/Deluxe/options.jpg new file mode 100644 index 00000000..a593eaa2 Binary files /dev/null and b/Skins/Deluxe/options.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini new file mode 100644 index 00000000..c64da214 --- /dev/null +++ b/Themes/Classic.ini @@ -0,0 +1,3209 @@ +;0.5.1 Mod +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Theme] +Name=Classic +Creator=Ultrastar Deluxe Team + +[Colors] +White = 255 255 255 +GrayLightest = 223 223 223 +GrayLight = 191 191 191 +Gray = 127 127 127 +GrayDark = 63 63 63 +Black = 0 0 0 + +[Loading] +Texts =2 +Fade = 1 + +[LoadingBackground] +Tex=LoadingBG + +[LoadingText1] +X =400 +Y =290 +Color =GrayDark +Font =1 +Align =1 +Size =14 +Text =SING_LOADING + +[LoadingText2] +X =628 +Y =583 +Color=Grey +Font =0 +Size =6 +Align=0 +Text=US_VERSION + +[Main] +Texts =3 +Statics=2 + +[MainBackground] +Tex=MainBG + +[MainText1] +X =30 +Y =180 +Color=GrayLight +Font =1 +Size =22 +Text=SING_CHOOSE_MODE +Align=0 + +[MainText2] +X =250 +Y =550 +Color=Gray +Font =1 +Size =8 +Text=SING_LEGEND_NAVIGATE +Align=0 + +[MainText3] +X =500 +Y =550 +Color=Gray +Font =1 +Size =8 +Text=SING_LEGEND_SELECT +Align=0 + +[MainTextDescription] +X =50 +Y =248 +Color=Gray +Font =1 +Size =10 +Align=0 +Text= + +[MainTextDescriptionLong] +X =50 +Y =280 +Color=Black +Font =0 +Size =10 +Align=0 +Text= + +[MainStatic1] +Tex =Logo +X =30 +Y =320 +W =740 +H =275 +Color =ColorDark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[MainStatic2] +Tex =MainCursor +X =20 +Y =250 +W =32 +H =32 +Color =ColorDark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[MainButtonSolo] +X =470 +Y =250 +W =58 +H =56 +Tex =MainSolo +Color =ColorDark +Int = 1 +DColor = GrayLightest +DInt = 0.5 +Type=Font Black +Texts=0 + +[MainButtonEditor] +X =530 +Y =250 +W =58 +H =56 +Tex =MainMulti +Color =ColorDark +Int = 1 +DColor = GrayLightest +DInt = 0.5 +Type=Font Black +Texts=0 + +[MainButtonOptions] +X =590 +Y =250 +W =58 +H =56 +Tex =MainOptions +Color =ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type=Font Black +Texts=0 + +[MainButtonExit] +X =650 +Y =250 +W =58 +H =56 +Tex =MainExit +Color =ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type=Font Black +Texts=0 + +[Song] +Texts =3 + +[SongBackground] +Tex=SongBG + +[SongCover] +X=300 +Y=140 +W=300 +H=200 +Style=4 +Reflections=0 + +[SongEqualizer] +Visible=1 +Direction=1 +Color =Grey +Alpha=1 +X=245 +Y=400 +Z=1 +PieceW=6 +PieceH=2 +Space=1 +Bands=5 +Length=15 + +[SongText1] +X =30 +Y =455 +Color=GrayLight +Font =1 +Size =15 +Text=SING_SONG_SELECTION +Align=0 + +[SongText2] +X =50 +Y =500 +Color=Gray +Font =1 +Size =10 +Text=SING_CHOOSE_SONG +Align=0 + +[SongText3] +X =380 +Y =570 +Color=Black +Font =0 +Size =8 +Text =US_VERSION +Align=0 + +[SongStatic1] +X =0 +Y =100 +W =800 +H =350 +Color=Black +Tex =SongFade +Type=Font Black +TexX1=0.1 +TexY1=0.1 +TexX2=0.9 +TexY2=0.9 + +[SongStatic2] +X =20 +Y =500 +W =32 +H =32 +Color =ColorDark +Tex =MainCursor +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStatic3] +X =270 +Y =120 +Z = 0.5 +W =260 +H =240 +Color =Gray +Tex =SongSelection +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongTextArtist] +X =400 +Y =360 +Color=Black +Font =0 +Size =9 +Align =1 +Text= + +[SongTextTitle] +X =400 +Y =390 +Color=GrayDark +Font =0 +Size =9 +Align =1 +Text= + +[SongTextNumber] +X =400 +Y =425 +Color=Gray +Font =1 +Size =7 +Align =1 +Text= + +[SongTextCat] +X =100 +Y =15 +Color=Gray +Font =1 +Size =7 +Align =0 +Text=Moin Moin Maus Fans + +[SongStaticCat] +Tex =Button +X =12 +Y =7 +W =85 +H =85 +Color=White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Sing] +Texts =1 + +[SingText1] +Text =SING_TIME +X =43 +Y =17 +Font =1 +Size =6 +Color =White +Align=1 + +[SingStatic1] +;TextBG +Tex =LyricBar +X =10 +Y =490 +W =780 +H =105 +Color =GrayLightest +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingStatic2] +;Time BG +Tex =LyricBar +X =12 +Y =5 +W =328 +H =42 +Color =GrayLightest +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingStatic3] +Tex =Bar +X =20 +Y =10 +W =46 +H =30 +Color =Black +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP1Static] +Tex =P +X =16 +Y =55 +W =45 +H =50 +Color =P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP1Static2] +Tex =ScoreBG +X =75 +Y =55 +W =100 +H =40 +Color =P1Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP1Text] +Text =P1 +X =27 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP1TextScore] +Text =00000 +X =90 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[SingP2RStatic] +Tex =P +X =739 +Y =55 +W =45 +H =50 +Color =P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP2RStatic2] +Tex =ScoreBG +X =620 +Y =55 +W =100 +H =40 +Color =P2Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP2RText] +Text =P2 +X =750 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP2RTextScore] +Text =00000 +X =635 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[SingP2MStatic] +Tex =P +X =311 +Y =55 +W =45 +H =50 +Color =P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP2MStatic2] +Tex =ScoreBG +X =370 +Y =55 +W =100 +H =40 +Color =P2Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP2MText] +Text =P2 +X =321 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP2MTextScore] +Text =00000 +X =385 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[SingP3RStatic] +Tex =P +X =611 +Y =55 +W =45 +H =50 +Color =P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP3RStatic2] +Tex =ScoreBG +X =670 +Y =55 +W =100 +H =40 +Color =P3Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP3RText] +Text =P3 +X =621 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP3RTextScore] +Text =00000 +X =685 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[Score] +Texts =1 + +[ScoreBackground] +Tex=ScoreBG + +[ScoreText1] +X =90 +Y =500 +Color =GrayDark +Font =1 +Size =17 +Text =song score +Align=0 + +[ScoreTextArtist] +X =450 +Y =500 +Color=GrayDark +Font =0 +Size =9 +Text =Artist +Align=0 + +[ScoreTextTitle] +X =450 +Y =525 +Font =0 +Size =9 +Text =Title +Align=0 +Color=Gray + +[ScoreTextName1] +X =200 +Y =160 +Font =1 +Size =12 +Text =P1 +Color =P1Dark +Align=0 + +[ScoreTextName2] +X =50 +Y =160 +Font =1 +Size =12 +Text =P1 +Color =P1Dark +Align=0 + +[ScoreTextName3] +X =510 +Y =160 +Font =1 +Size =12 +Text =P2 +Color =P2Dark +Align=0 + +[ScoreTextScore1] +X =250 +Y =110 +Color=GrayDark +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextScore2] +X =100 +Y =110 +Color=GrayDark +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextScore3] +X =560 +Y =110 +Color=GrayDark +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextNotes1] +X =235 +Y =220 +Color=GrayDark +Font =0 +Size =9 +Text=SING_NOTES +Align=0 + +[ScoreTextNotes2] +X =85 +Y =220 +Color=GrayDark +Font =0 +Size =9 +Text=SING_NOTES +Align=0 + +[ScoreTextNotes3] +X =545 +Y =220 +Color=GrayDark +Font =0 +Size =9 +Text =SING_NOTES +Align=0 + +[ScoreTextNotesScore1] +X =440 +Y =220 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextNotesScore2] +X =290 +Y =220 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextNotesScore3] +X =750 +Y =220 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextLineBonus1] +X =235 +Y =260 +Color=GrayDark +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonus2] +X =85 +Y =260 +Color=GrayDark +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonus3] +X =545 +Y =260 +Color=GrayDark +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonusScore1] +X =440 +Y =260 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextLineBonusScore2] +X =290 +Y =260 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextLineBonusScore3] +X =750 +Y =260 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextGoldenNotes1] +X =235 +Y =300 +Color=GrayDark +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotes2] +X =85 +Y =300 +Color=GrayDark +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotes3] +X =545 +Y =300 +Color=GrayDark +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotesScore1] +X =440 +Y =300 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextGoldenNotesScore2] +X =290 +Y =300 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextGoldenNotesScore3] +X =750 +Y =300 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextTotal1] +X =200 +Y =370 +Color=GrayDark +Font =0 +Size =9 +Text=SING_TOTAL +Align=0 + +[ScoreTextTotal2] +X =50 +Y =370 +Color=GrayDark +Font =0 +Size =9 +Text =SING_TOTAL +Align=0 + +[ScoreTextTotal3] +X =510 +Y =370 +Color=GrayDark +Font =0 +Size =9 +Text =SING_TOTAL +Align=0 + +[ScoreTextTotalSCore1] +X =440 +Y =360 +Color=GrayDark +Font =1 +Size =15 +Align =2 +Text =00000 + +[ScoreTextTotalSCore2] +X =290 +Y =360 +Color=GrayDark +Font =1 +Size =15 +Align =2 +Text =00000 + +[ScoreTextTotalScore3] +X =750 +Y =360 +Color=GrayDark +Font =1 +Size =15 +Align =2 +Text =00000 + +[ScorePlayer1Static1] +Tex =ScoreLine +X =200 +Y =205 +W =240 +H =6 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer1Static2] +Tex =ScoreLine +X =200 +Y =345 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer1Static3] +Tex =ScoreLine +X =200 +Y =410 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest1] +Tex =ScoreBox +X =200 +Y =220 +W =30 +H =30 +Color =P1Lightest +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight1] +Tex =ScoreBox +X =200 +Y =260 +W =30 +H =30 +Color =P1Light +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark1] +Tex =ScoreBox +X =200 +Y =300 +W =30 +H =30 +Color =P1Dark +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer2Static1] +Tex =ScoreLine +X =50 +Y =205 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer2Static2] +Tex =ScoreLine +X =50 +Y =345 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer2Static3] +Tex =ScoreLine +X =50 +Y =410 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest2] +Tex =ScoreBox +X =50 +Y =220 +W =30 +H =30 +Color =P1Lightest +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight2] +Tex =ScoreBox +X =50 +Y =260 +W =30 +H =30 +Color =P1Light +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark2] +Tex =ScoreBox +X =50 +Y =300 +W =30 +H =30 +Color =P1Dark +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer3Static1] +Tex =ScoreLine +X =510 +Y =205 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer3Static2] +Tex =ScoreLine +X =510 +Y =345 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer3Static3] +Tex =ScoreLine +X =510 +Y =410 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest3] +Tex =ScoreBox +X =510 +Y =220 +W =30 +H =30 +Color =P2Lightest +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight3] +Tex =ScoreBox +X =510 +Y =260 +W =30 +H =30 +Color =P2Light +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark3] +Tex =ScoreBox +X =510 +Y =300 +W =30 +H =30 +Color =P2Dark +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBackLevel1] +Tex =ScoreLevel +X =460 +Y =140 +W =120 +H =300 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticBackLevelRound1] +Tex =ScoreLevelRound +X =460 +Y =110 +W =120 +H =30 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticLevel1] +Tex =ScoreLevel +X =460 +Y =410 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticLevelRound1] +Tex =ScoreLevelRound +X =460 +Y =380 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticBackLevel2] +Tex =ScoreLevel +X =290 +Y =140 +W =120 +H =300 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticBackLevelRound2] +Tex =ScoreLevelRound +X =290 +Y =110 +W =120 +H =30 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticLevel2] +Tex =ScoreLevel +X =290 +Y =410 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticLevelRound2] +Tex =ScoreLevelRound +X =290 +Y =380 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticBackLevel3] +Tex =ScoreLevel +X =390 +Y =140 +W =120 +H =300 +Color =P2Lightest +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticBackLevelRound3] +Tex =ScoreLevelRound +X =390 +Y =110 +W =120 +H =30 +Color =P2Lightest +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticLevel3] +Tex =ScoreLevel +X =390 +Y =410 +W =120 +H =30 +Color =P2Light +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticLevelRound3] +Tex =ScoreLevelRound +X =390 +Y =380 +W =120 +H =30 +Color =P2Light +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScorePlayer4Static1] +X=20 +Y=205 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer4Static2] +X=20 +Y=345 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer4Static3] +X=20 +Y=410 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest4] +X=20 +Y=220 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P1Lightest +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight4] +X=20 +Y=260 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P1Light +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark4] +X=20 +Y=300 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P1Dark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreTextName4] +X=20 +Y=160 +Font=1 +Size=12 +Align=0 +Text=P1 +Color=P1Dark +[ScoreTextScore4] +X=70 +Y=110 +Font=1 +Size=9 +Align=0 +Text=Tone Deaf +Color=GrayDark +[ScoreTextNotes4] +X=55 +Y=220 +Font=0 +Size=9 +Align=0 +Text=SING_NOTES +Color=GrayDark +[ScoreTextNotesScore4] +X=260 +Y=220 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextLineBonus4] +X=55 +Y=260 +Font=0 +Size=9 +Align=0 +Text=SING_PHRASE_BONUS +Color=GrayDark +[ScoreTextLineBonusScore4] +X=260 +Y=260 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextGoldenNotes4] +X=55 +Y=300 +Font=0 +Size=9 +Align=0 +Text=SING_GOLDEN_NOTES +Color=GrayDark +[ScoreTextGoldenNotesScore4] +X=260 +Y=300 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextTotal4] +X=20 +Y=370 +Font=0 +Size=9 +Align=0 +Text=SING_TOTAL +Color=GrayDark +[ScoreTextTotalScore4] +X=260 +Y=360 +Font=1 +Size=15 +Align=2 +Text=00000 +Color=GrayDark +[ScoreStaticBackLevel4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticBackLevelRound4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevel4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevelRound4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreTextName5] +X=280 +Y=160 +Font=1 +Size=12 +Align=0 +Text=P2 +Color=P2Dark +[ScoreTextScore5] +X=330 +Y=110 +Font=1 +Size=9 +Align=0 +Text=Tone Deaf +Color=GrayDark +[ScoreTextNotes5] +X=315 +Y=220 +Font=0 +Size=9 +Align=0 +Text=SING_NOTES +Color=GrayDark +[ScoreTextNotesScore5] +X=520 +Y=220 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextLineBonus5] +X=315 +Y=260 +Font=0 +Size=9 +Align=0 +Text=SING_PHRASE_BONUS +Color=GrayDark +[ScoreTextLineBonusScore5] +X=520 +Y=260 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextGoldenNotes5] +X=315 +Y=300 +Font=0 +Size=9 +Align=0 +Text=SING_GOLDEN_NOTES +Color=GrayDark +[ScoreTextGoldenNotesScore5] +X=520 +Y=300 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextTotal5] +X=280 +Y=370 +Font=0 +Size=9 +Align=0 +Text=SING_TOTAL +Color=GrayDark +[ScoreTextTotalScore5] +X=520 +Y=360 +Font=1 +Size=15 +Align=2 +Text=00000 +Color=GrayDark +[ScoreStaticBackLevel5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticBackLevelRound5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevel5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevelRound5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreTextName6] +X=540 +Y=160 +Font=1 +Size=12 +Align=0 +Text=P2 +Color=P3Dark +[ScoreTextScore6] +X=590 +Y=110 +Font=1 +Size=9 +Align=0 +Text=Tone Deaf +Color=GrayDark +[ScoreTextNotes6] +X=575 +Y=220 +Font=0 +Size=9 +Align=0 +Text=SING_NOTES +Color=GrayDark +[ScoreTextNotesScore6] +X=780 +Y=220 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextLineBonus6] +X=575 +Y=260 +Font=0 +Size=9 +Align=0 +Text=SING_PHRASE_BONUS +Color=GrayDark +[ScoreTextLineBonusScore6] +X=780 +Y=260 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextGoldenNotes6] +X=575 +Y=300 +Font=0 +Size=9 +Align=0 +Text=SING_GOLDEN_NOTES +Color=GrayDark +[ScoreTextGoldenNotesScore6] +X=780 +Y=300 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextTotal6] +X=540 +Y=370 +Font=0 +Size=9 +Align=0 +Text=SING_TOTAL +Color=GrayDark +[ScoreTextTotalScore6] +X=780 +Y=360 +Font=1 +Size=15 +Align=2 +Text=00000 +Color=GrayDark +[ScoreStaticBackLevel6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticBackLevelRound6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevel6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevelRound6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer5Static1] +X=280 +Y=205 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer5Static2] +X=280 +Y=345 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer5Static3] +X=280 +Y=410 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest5] +X=280 +Y=220 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P2Lightest +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight5] +X=280 +Y=260 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P2Light +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark5] +X=280 +Y=300 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P2Dark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer6Static1] +X=540 +Y=205 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer6Static2] +X=540 +Y=345 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer6Static3] +X=540 +Y=410 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest6] +X=540 +Y=220 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P3Lightest +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight6] +X=540 +Y=260 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P3Light +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark6] +X=540 +Y=300 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P3Dark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Options] +Texts = 3 + +[OptionsBackground] +Tex=OptionsBG + + +[OptionsText1] +X = 50 +Y = 170 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text = SING_OPTIONS + +[OptionsText2] +X = 250 +Y = 550 +ColR = 0.5 +ColG = 0.5 +ColB = 0.5 +Font = 1 +Size = 8 +Text=SING_LEGEND_NAVIGATE + +[OptionsText3] +X = 500 +Y = 550 +ColR = 0.5 +ColG = 0.5 +ColB = 0.5 +Font = 1 +Size = 8 +Text=SING_LEGEND_SELECT + +[OptionsStatic1] +Tex=MainCursor +X=40 +Y=250 +W=32 +H=32 +Color=ColorDark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + + +[OptionsTextDescription] +X = 70 +Y = 248 +ColR = 0.5 +ColG = 0.5 +ColB = 0.5 +Font = 1 +Size = 10 + +[OptionsButtonGame] +X = 40 +Y = 310 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonGraphics] +X = 270 +Y = 310 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonSound] +X = 500 +Y = 310 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonLyrics] +X = 40 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonThemes] +X = 270 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonRecord] +X = 500 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonExit] +X = 500 +Y = 450 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsGame] +Texts = 1 + +[OptionsGameBackground] +Tex=OptionsBG + +[OptionsGameText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_GAME_DESC + +[OptionsGameSelectPlayers] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_GAME_PLAYERS +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectDifficulty] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_GAME_DIFFICULTY +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + + +[OptionsGameSelectSlideLanguage] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_GAME_LANGUAGE +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectTabs] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GAME_TABS +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectSlideSorting] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GAME_SORTING +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectDebug] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GAME_DEBUG +X = 40 +Y = 450 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameButtonExit] +X = 40 +Y = 520 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsGraphics] +Texts = 1 + +[OptionsGraphicsBackground] +Tex=OptionsBG + +[OptionsGraphicsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_GRAPHICS_DESC + +[OptionsGraphicsSelectSlideResolution] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_GRAPHICS_RESOLUTION +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectFullscreen] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_FULLSCREEN +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectDepth] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_DEPTH +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectOscilloscope] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_OSCILLOSCOPE +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectLineBonus] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_LINEBONUS +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectMovieSize] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE +X = 40 +Y = 450 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsButtonExit] +X = 40 +Y = 520 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsSound] +Texts = 1 + +[OptionsSoundBackground] +Tex=OptionsBG + +[OptionsSoundText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_SOUND_DESC + +[OptionsSoundSelectMicBoost] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_MIC_BOOST +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectClickAssist] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_CLICK_ASSIST +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectBeatClick] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_BEAT_CLICK +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectThreshold] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_THRESHOLD +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectTwoPlayerMode] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_TWO_PLAYERS_MODE +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundButtonExit] +X = 40 +Y = 460 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsLyrics] +Texts = 1 + +[OptionsLyricsBackground] +Tex=OptionsBG + +[OptionsLyricsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_LYRICS_DESC + +[OptionsLyricsSelectLyricsFont] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_LYRICS_FONT +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsLyricsSelectLyricsEffect] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_LYRICS_EFFECT +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsLyricsSelectSolmization] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_LYRICS_SOLMIZATION +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsLyricsButtonExit] +X = 40 +Y = 450 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsThemes] +Texts = 1 + +[OptionsThemesBackground] +Tex=OptionsBG + +[OptionsThemesText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_THEMES_DESC + +[OptionsThemesSelectTheme] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_THEMES_THEME +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsThemesSelectSkin] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_THEMES_SKIN +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsThemesSelectColor] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_THEMES_COLOR +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsThemesButtonExit] +X = 40 +Y = 450 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsRecord] +Texts = 1 + +[OptionsRecordBackground] +Tex=OptionsBG + +[OptionsRecordText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_RECORD_DESC + +[OptionsRecordSelectSlideCard] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_CARD +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordSelectSlideInput] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_INPUT +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordSelectSlideChannelL] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_CHANNELL +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordSelectSlideChannelR] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_CHANNELR +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordButtonExit] +X = 40 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[Top5] +Texts=1 + +[Top5Background] +Tex=Top5BG + + +[Top5Text1] +X =100 +Y =50 +Color =Gray +Font =1 +Size =20 +Align =0 +Text =SING_TOP_5_CHARTS + +[Top5Static1] +Tex=Bar +X=560 +Y=55 +W=140 +H=50 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5TextLevel] +X =630 +Y =65 +Color =White +Font =1 +Size =10 +Align =1 +Text =easy + + +[Top5TextArtistTitle] +X =100 +Y =120 +Color =Black +Font =0 +Size =10 +Align =0 +Text =artist - title + +[Top5TextName1] +X =170 +Y =200 +Color =GrayDark +Font =1 +Size =14 +Align =0 +Text =1. Player1 + +[Top5TextName2] +X =150 +Y =290 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =2. Player2 + +[Top5TextName3] +X =150 +Y =340 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =3. Player3 + +[Top5TextName4] +X =150 +Y =390 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =4. Player4 + +[Top5TextName5] +X =150 +Y =440 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =5. Player5 + + +[Top5TextScore1] +X =680 +Y =195 +Color =GrayDark +Font =1 +Size =17 +Align =2 +Text =00000 + +[Top5TextScore2] +X =680 +Y =290 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextScore3] +X =680 +Y =340 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextScore4] +X =680 +Y =390 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextScore5] +X =680 +Y =440 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextNumber1] +X =130 +Y =202 +Color =White +Font =1 +Size =11 +Align =1 +Text =1 + +[Top5TextNumber2] +X =120 +Y =293 +Color =White +Font =1 +Size =9 +Align =1 +Text =2 + +[Top5TextNumber3] +X =120 +Y =343 +Color =White +Font =1 +Size =9 +Align =1 +Text =3 + +[Top5TextNumber4] +X =120 +Y =393 +Color =White +Font =1 +Size =9 +Align =1 +Text =4 + +[Top5TextNumber5] +X =120 +Y =443 +Color =White +Font =1 +Size =9 +Align =1 +Text =5 + +[Top5StaticNumber1] +Tex=Bar +X=100 +Y=190 +W=60 +H=60 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber2] +Tex=Bar +X=100 +Y=286 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber3] +Tex=Bar +X=100 +Y=336 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber4] +Tex=Bar +X=100 +Y=386 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber5] +Tex=Bar +X=100 +Y=436 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Level] +Texts=2 + +[LevelBackground] +Tex=MainBG + +[LevelStatic1] +X=20 +Y=250 +W=32 +H=32 +Tex=MainCursor +Type=Font Black +Color=ColorDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[LevelButtonEasy] +Tex=MainBar +X=25 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=ColorDark +Int = 1 +DColor = White +DInt = 0.5 + +[LevelButtonMedium] +Tex=MainBar +X=275 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=ColorDark +Int = 1 +DColor = White +DInt = 0.5 + +[LevelButtonHard] +Tex=MainBar +X=525 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=ColorDark +Int = 1 +DColor = White +DInt = 0.5 + +[LevelText1] +X=30 +Y=180 +Font=1 +Size=22 +Align=0 +Text=SING_SING_MODE +Color=GrayLight + +[LevelText2] +X=50 +Y=248 +Font=1 +Size=10 +Align=0 +Text=SING_DIFFICULTY +Color=Gray + +[LevelButtonEasyText1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text=SING_EASY +Color=White + +[LevelButtonMediumText1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text=SING_MEDIUM +Color=White + +[LevelButtonHardText1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text=SING_HARD +Color=White + + +[Name] +Texts=2 + +[NameBackground] +Tex=MainBG + +[NameStatic1] +X=20 +Y=250 +W=32 +H=32 +Tex=MainCursor +Type=Font Black +Color=ColorDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[NameText1] +X=30 +Y=180 +Font=1 +Size=22 +Align=0 +Text=SING_SING_MODE +Color=GrayLight + +[NameText2] +X=50 +Y=248 +Font=1 +Size=10 +Align=0 +Text=SING_ENTER_PLAYER_NAME +Color=Gray + +[NameButtonPlayer1] +Tex=MainBar +X=25 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=P1Dark +DColor=P1Lightest +DInt=0.5 + +[NameButtonPlayer1Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer2] +Tex=MainBar +X=25 +Y=380 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=P2Dark +DColor=P2Lightest +DInt=0.5 + +[NameButtonPlayer2Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer3] +Tex=MainBar +X=25 +Y=450 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=P3Dark +DColor=P3Lightest +DInt=0.5 + +[NameButtonPlayer3Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer4] +Tex=MainBar +X=425 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=P4Dark +DColor=P4Lightest +DInt=0.5 + +[NameButtonPlayer5] +Tex=MainBar +X=425 +Y=380 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=P5Dark +DColor=P5Lightest +DInt=0.5 + +[NameButtonPlayer6] +Tex=MainBar +X=425 +Y=450 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=P6Dark +DColor=P6Lightest +DInt=0.5 + +[NameButtonPlayer4Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer5Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer6Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini new file mode 100644 index 00000000..bf0debb6 --- /dev/null +++ b/Themes/Deluxe.ini @@ -0,0 +1,4582 @@ +;0.5.1 Mod +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Theme] +Name=Deluxe +Creator=Ultrastar Deluxe Team + +[Colors] +White = 255 255 255 +LightBlue = 119 187 210 +DarkBlue = 28 126 171 +LightRed = 170 146 146 +DarkRed = 155 113 113 +LightGreen = 136 168 136 +DarkGreen = 106 152 104 +LightPurple = 155 136 168 +DarkPurple = 145 104 152 +LightOrange = 168 155 136 +DarkOrange = 151 131 76 +LightYellow = 168 168 136 +DarkYellow = 150 151 76 +Turkis = 13 186 167 +GrayLightest = 223 223 223 +GrayLight = 191 191 191 +Gray = 127 127 127 +GrayDark = 63 63 63 +Black = 0 0 0 + + +[Loading] +Texts =2 +Fade = 1 + +[LoadingBackground] +Tex=LoadingBG + +[LoadingText1] +X =30 +Y =500 +Color =White +Font =1 +Align =0 +Size =12 +Text =SING_LOADING + +[LoadingText2] +X =628 +Y =583 +Color=White +Font =0 +Size =6 +Align=0 +Text=US_VERSION + +[Main] +Texts =1 +Statics=2 + +[MainBackground] +Tex=MainBG + +[MainText1] +X =120 +Y =550 +Color=White +Font =0 +Size =8 +Align=0 +Text=SING_MENU + +[MainTextDescriptionLong] +X =300 +Y =550 +Color=White +Font =0 +Size =8 +Align=0 +Text= + +[MainStatic1] +X =0 +Y =550 +W =254 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[MainStatic2] +X =254 +Y =550 +W =548 +H =30 +Tex=Leiste2 +Color =Gray +Int = 1 +Type=Font Black + +[MainButtonSolo] +X =200 +Y =250 +W =150 +H =67 +Tex =MainSolo +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Type=Font Black +Texts=0 +Reflection=1 + +[MainButtonEditor] +X =350 +Y =250 +W =150 +H =67 +Tex =MainMulti +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Type=Font Black +Texts=0 +Reflection=1 + +[MainButtonOptions] +X =500 +Y =250 +W =150 +H =67 +Tex =MainOptions +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Type=Font Black +Texts=0 +Reflection=1 + +[MainButtonExit] +X =650 +Y =250 +W =150 +H =67 +Tex =MainExit +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Type=Font Black +Texts=0 +Reflection=1 + +[Song] +Texts =3 + +[SongBackground] +Tex=SongBG + +[SongCover] +X=252 +Y=125 +W=320 +H=190 +Style=5 +Reflections=1 + +[SongEqualizer] +Visible=1 +Direction=1 +Color= White +Alpha=1 +X=205 +Y=423 +Z=1 +PieceW=6 +PieceH=6 +Space=1 +Bands=5 +Length=26 + +[SongText1] +X =70 +Y =40 +Color=White +Font =1 +Size =15 +Text=SING_SONG_SELECTION +Align=0 + +[SongText2] +X =120 +Y =550 +Color=White +Font =0 +Size =8 +Align=0 +Text=SING_SONGSELECTION + +[SongText3] +X =300 +Y =550 +Color=White +Font =0 +Size =8 +Align=0 +Text=US_VERSION + +[SongStatic1] +X =40 +Y =52 +W =25 +H =25 +Color =White +Tex =SongCD +Type=Font Black + +[SongStatic2] +X =248 +Y =320 +W =200 +H =200 +Z=1 +Color =LightBlue +Tex =SongSelection2 +Type=Font Black + + +[SongStatic3] +X =0 +Y =550 +W =254 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[SongStatic4] +X =254 +Y =550 +W =548 +H =30 +Tex=Leiste2 +Color =Gray +Int = 1 +Type=Font Black + +[SongStatic5] +X =200 +Y =120 +W =300 +H =200 +Color =LightBlue +Tex =SongSelection1 +Type=Font Black + +[SongTextArtist] +X =350 +Y =320 +Color=White +Font =1 +Size =9 +Align =1 +Text= + +[SongTextTitle] +X =350 +Y =345 +Color=White +Font =0 +Size =9 +Align =1 +Text= + +[SongTextNumber] +X =350 +Y =380 +Color=White +Font =0 +Size =8 +Align =1 +Text= + +[SongTextCat] +X =400 +Y = 50 +Color=White +Font =1 +Size =10 +Align =0 +Text=Moin Moin Maus Fans + +[SongStaticCat] +Tex =Button +X =12 +Y =7 +W =85 +H =85 +Color=White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker1] +Tex =P +X =10 +Y =10 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker2] +Tex =P +X =70 +Y =10 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker3] +Tex =P +X =130 +Y =10 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker4] +Tex =P +X =190 +Y =10 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker5] +Tex =P +X =250 +Y =10 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker1] +Tex =P +X =10 +Y =70 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker2] +Tex =P +X =70 +Y =70 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker3] +Tex =P +X =130 +Y =70 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker4] +Tex =P +X =190 +Y =70 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker5] +Tex =P +X =250 +Y =70 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker1] +Tex =P +X =10 +Y =130 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker2] +Tex =P +X =70 +Y =130 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker3] +Tex =P +X =130 +Y =130 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker4] +Tex =P +X =190 +Y =130 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker5] +Tex =P +X =250 +Y =130 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Sing] +Texts =1 + +[SingText1] +Text =SING_TIME +X =43 +Y =17 +Font =1 +Size =6 +Color =White +Align=1 + +[SingStatic1] +;TextBG +Tex =LyricBar +X =10 +Y =490 +W =780 +H =105 +Color =GrayLightest +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingStatic2] +;Time BG +Tex =LyricBar +X =12 +Y =5 +W =328 +H =42 +Color =GrayLightest +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingStatic3] +Tex =Bar +X =20 +Y =10 +W =46 +H =30 +Color =Black +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP1Static] +Tex =P +X =16 +Y =55 +W =45 +H =50 +Color =P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP1Static2] +Tex =ScoreBG +X =75 +Y =55 +W =100 +H =40 +Color =P1Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP1Text] +Text =P1 +X =27 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP1TextScore] +Text =00000 +X =90 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[SingP2RStatic] +Tex =P +X =739 +Y =55 +W =45 +H =50 +Color =P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP2RStatic2] +Tex =ScoreBG +X =620 +Y =55 +W =100 +H =40 +Color =P2Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP2RText] +Text =P2 +X =750 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP2RTextScore] +Text =00000 +X =635 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[SingP2MStatic] +Tex =P +X =311 +Y =55 +W =45 +H =50 +Color =P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP2MStatic2] +Tex =ScoreBG +X =370 +Y =55 +W =100 +H =40 +Color =P2Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP2MText] +Text =P2 +X =321 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP2MTextScore] +Text =00000 +X =385 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[SingP3RStatic] +Tex =P +X =611 +Y =55 +W =45 +H =50 +Color =P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SingP3RStatic2] +Tex =ScoreBG +X =670 +Y =55 +W =100 +H =40 +Color =P3Dark +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 + +[SingP3RText] +Text =P3 +X =621 +Y =65 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP3RTextScore] +Text =00000 +X =685 +Y =60 +Font =0 +Size =10 +Color =White +Align=0 + +[Score] +Texts =1 + +[ScoreBackground] +Tex=ScoreScreenBG + +[ScoreText1] +X =90 +Y =500 +Color =GrayDark +Font =1 +Size =17 +Text =song score +Align=0 + +[ScoreTextArtist] +X =450 +Y =500 +Color=GrayDark +Font =0 +Size =9 +Text =Artist +Align=0 + +[ScoreTextTitle] +X =450 +Y =525 +Font =0 +Size =9 +Text =Title +Align=0 +Color=Gray + +[ScoreTextName1] +X =200 +Y =160 +Font =1 +Size =12 +Text =P1 +Color =P1Dark +Align=0 + +[ScoreTextName2] +X =50 +Y =160 +Font =1 +Size =12 +Text =P1 +Color =P1Dark +Align=0 + +[ScoreTextName3] +X =510 +Y =160 +Font =1 +Size =12 +Text =P2 +Color =P2Dark +Align=0 + +[ScoreTextScore1] +X =250 +Y =110 +Color=GrayDark +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextScore2] +X =100 +Y =110 +Color=GrayDark +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextScore3] +X =560 +Y =110 +Color=GrayDark +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextNotes1] +X =235 +Y =220 +Color=GrayDark +Font =0 +Size =9 +Text=SING_NOTES +Align=0 + +[ScoreTextNotes2] +X =85 +Y =220 +Color=GrayDark +Font =0 +Size =9 +Text=SING_NOTES +Align=0 + +[ScoreTextNotes3] +X =545 +Y =220 +Color=GrayDark +Font =0 +Size =9 +Text =SING_NOTES +Align=0 + +[ScoreTextNotesScore1] +X =440 +Y =220 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextNotesScore2] +X =290 +Y =220 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextNotesScore3] +X =750 +Y =220 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextLineBonus1] +X =235 +Y =260 +Color=GrayDark +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonus2] +X =85 +Y =260 +Color=GrayDark +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonus3] +X =545 +Y =260 +Color=GrayDark +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonusScore1] +X =440 +Y =260 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextLineBonusScore2] +X =290 +Y =260 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextLineBonusScore3] +X =750 +Y =260 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextGoldenNotes1] +X =235 +Y =300 +Color=GrayDark +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotes2] +X =85 +Y =300 +Color=GrayDark +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotes3] +X =545 +Y =300 +Color=GrayDark +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotesScore1] +X =440 +Y =300 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextGoldenNotesScore2] +X =290 +Y =300 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextGoldenNotesScore3] +X =750 +Y =300 +Color=GrayDark +Font =1 +Size =10 +Align =2 +Text =0000 + +[ScoreTextTotal1] +X =200 +Y =370 +Color=GrayDark +Font =0 +Size =9 +Text=SING_TOTAL +Align=0 + +[ScoreTextTotal2] +X =50 +Y =370 +Color=GrayDark +Font =0 +Size =9 +Text =SING_TOTAL +Align=0 + +[ScoreTextTotal3] +X =510 +Y =370 +Color=GrayDark +Font =0 +Size =9 +Text =SING_TOTAL +Align=0 + +[ScoreTextTotalSCore1] +X =440 +Y =360 +Color=GrayDark +Font =1 +Size =15 +Align =2 +Text =00000 + +[ScoreTextTotalSCore2] +X =290 +Y =360 +Color=GrayDark +Font =1 +Size =15 +Align =2 +Text =00000 + +[ScoreTextTotalScore3] +X =750 +Y =360 +Color=GrayDark +Font =1 +Size =15 +Align =2 +Text =00000 + +[ScorePlayer1Static1] +Tex =ScoreLine +X =200 +Y =205 +W =240 +H =6 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer1Static2] +Tex =ScoreLine +X =200 +Y =345 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer1Static3] +Tex =ScoreLine +X =200 +Y =410 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest1] +Tex =ScoreBox +X =200 +Y =220 +W =30 +H =30 +Color =P1Lightest +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight1] +Tex =ScoreBox +X =200 +Y =260 +W =30 +H =30 +Color =P1Light +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark1] +Tex =ScoreBox +X =200 +Y =300 +W =30 +H =30 +Color =P1Dark +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer2Static1] +Tex =ScoreLine +X =50 +Y =205 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer2Static2] +Tex =ScoreLine +X =50 +Y =345 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer2Static3] +Tex =ScoreLine +X =50 +Y =410 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest2] +Tex =ScoreBox +X =50 +Y =220 +W =30 +H =30 +Color =P1Lightest +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight2] +Tex =ScoreBox +X =50 +Y =260 +W =30 +H =30 +Color =P1Light +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark2] +Tex =ScoreBox +X =50 +Y =300 +W =30 +H =30 +Color =P1Dark +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer3Static1] +Tex =ScoreLine +X =510 +Y =205 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer3Static2] +Tex =ScoreLine +X =510 +Y =345 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer3Static3] +Tex =ScoreLine +X =510 +Y =410 +W =240 +H =6 +Type =Font Black +Color =GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest3] +Tex =ScoreBox +X =510 +Y =220 +W =30 +H =30 +Color =P2Lightest +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight3] +Tex =ScoreBox +X =510 +Y =260 +W =30 +H =30 +Color =P2Light +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark3] +Tex =ScoreBox +X =510 +Y =300 +W =30 +H =30 +Color =P2Dark +Type= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBackLevel1] +Tex =ScoreLevel +X =460 +Y =140 +W =120 +H =300 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticBackLevelRound1] +Tex =ScoreLevelRound +X =460 +Y =110 +W =120 +H =30 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticLevel1] +Tex =ScoreLevel +X =460 +Y =410 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticLevelRound1] +Tex =ScoreLevelRound +X =460 +Y =380 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticBackLevel2] +Tex =ScoreLevel +X =290 +Y =140 +W =120 +H =300 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticBackLevelRound2] +Tex =ScoreLevelRound +X =290 +Y =110 +W =120 +H =30 +Color =P1Lightest +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticLevel2] +Tex =ScoreLevel +X =290 +Y =410 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticLevelRound2] +Tex =ScoreLevelRound +X =290 +Y =380 +W =120 +H =30 +Color =P1Light +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticBackLevel3] +Tex =ScoreLevel +X =390 +Y =140 +W =120 +H =300 +Color =P2Lightest +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticBackLevelRound3] +Tex =ScoreLevelRound +X =390 +Y =110 +W =120 +H =30 +Color =P2Lightest +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScoreStaticLevel3] +Tex =ScoreLevel +X =390 +Y =410 +W =120 +H =30 +Color =P2Light +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 + +[ScoreStaticLevelRound3] +Tex =ScoreLevelRound +X =390 +Y =380 +W =120 +H =30 +Color =P2Light +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=0.5 + +[ScorePlayer4Static1] +X=20 +Y=205 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer4Static2] +X=20 +Y=345 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer4Static3] +X=20 +Y=410 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest4] +X=20 +Y=220 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P1Lightest +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight4] +X=20 +Y=260 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P1Light +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark4] +X=20 +Y=300 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P1Dark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreTextName4] +X=20 +Y=160 +Font=1 +Size=12 +Align=0 +Text=P1 +Color=P1Dark +[ScoreTextScore4] +X=70 +Y=110 +Font=1 +Size=9 +Align=0 +Text=Tone Deaf +Color=GrayDark +[ScoreTextNotes4] +X=55 +Y=220 +Font=0 +Size=9 +Align=0 +Text=SING_NOTES +Color=GrayDark +[ScoreTextNotesScore4] +X=260 +Y=220 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextLineBonus4] +X=55 +Y=260 +Font=0 +Size=9 +Align=0 +Text=SING_PHRASE_BONUS +Color=GrayDark +[ScoreTextLineBonusScore4] +X=260 +Y=260 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextGoldenNotes4] +X=55 +Y=300 +Font=0 +Size=9 +Align=0 +Text=SING_GOLDEN_NOTES +Color=GrayDark +[ScoreTextGoldenNotesScore4] +X=260 +Y=300 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextTotal4] +X=20 +Y=370 +Font=0 +Size=9 +Align=0 +Text=SING_TOTAL +Color=GrayDark +[ScoreTextTotalScore4] +X=260 +Y=360 +Font=1 +Size=15 +Align=2 +Text=00000 +Color=GrayDark +[ScoreStaticBackLevel4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticBackLevelRound4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevel4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevelRound4] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreTextName5] +X=280 +Y=160 +Font=1 +Size=12 +Align=0 +Text=P2 +Color=P2Dark +[ScoreTextScore5] +X=330 +Y=110 +Font=1 +Size=9 +Align=0 +Text=Tone Deaf +Color=GrayDark +[ScoreTextNotes5] +X=315 +Y=220 +Font=0 +Size=9 +Align=0 +Text=SING_NOTES +Color=GrayDark +[ScoreTextNotesScore5] +X=520 +Y=220 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextLineBonus5] +X=315 +Y=260 +Font=0 +Size=9 +Align=0 +Text=SING_PHRASE_BONUS +Color=GrayDark +[ScoreTextLineBonusScore5] +X=520 +Y=260 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextGoldenNotes5] +X=315 +Y=300 +Font=0 +Size=9 +Align=0 +Text=SING_GOLDEN_NOTES +Color=GrayDark +[ScoreTextGoldenNotesScore5] +X=520 +Y=300 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextTotal5] +X=280 +Y=370 +Font=0 +Size=9 +Align=0 +Text=SING_TOTAL +Color=GrayDark +[ScoreTextTotalScore5] +X=520 +Y=360 +Font=1 +Size=15 +Align=2 +Text=00000 +Color=GrayDark +[ScoreStaticBackLevel5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticBackLevelRound5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevel5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevelRound5] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreTextName6] +X=540 +Y=160 +Font=1 +Size=12 +Align=0 +Text=P2 +Color=P3Dark +[ScoreTextScore6] +X=590 +Y=110 +Font=1 +Size=9 +Align=0 +Text=Tone Deaf +Color=GrayDark +[ScoreTextNotes6] +X=575 +Y=220 +Font=0 +Size=9 +Align=0 +Text=SING_NOTES +Color=GrayDark +[ScoreTextNotesScore6] +X=780 +Y=220 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextLineBonus6] +X=575 +Y=260 +Font=0 +Size=9 +Align=0 +Text=SING_PHRASE_BONUS +Color=GrayDark +[ScoreTextLineBonusScore6] +X=780 +Y=260 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextGoldenNotes6] +X=575 +Y=300 +Font=0 +Size=9 +Align=0 +Text=SING_GOLDEN_NOTES +Color=GrayDark +[ScoreTextGoldenNotesScore6] +X=780 +Y=300 +Font=1 +Size=10 +Align=2 +Text=0000 +Color=GrayDark +[ScoreTextTotal6] +X=540 +Y=370 +Font=0 +Size=9 +Align=0 +Text=SING_TOTAL +Color=GrayDark +[ScoreTextTotalScore6] +X=780 +Y=360 +Font=1 +Size=15 +Align=2 +Text=00000 +Color=GrayDark +[ScoreStaticBackLevel6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticBackLevelRound6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevel6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScoreStaticLevelRound6] +X=0 +Y=0 +W=0 +H=0 +Tex= +Type= +Color= +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer5Static1] +X=280 +Y=205 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer5Static2] +X=280 +Y=345 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer5Static3] +X=280 +Y=410 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest5] +X=280 +Y=220 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P2Lightest +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight5] +X=280 +Y=260 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P2Light +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark5] +X=280 +Y=300 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P2Dark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScorePlayer6Static1] +X=540 +Y=205 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer6Static2] +X=540 +Y=345 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +[ScorePlayer6Static3] +X=540 +Y=410 +W=240 +H=6 +Tex=ScoreLine +Type=Font Black +Color=GrayDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLightest6] +X=540 +Y=220 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P3Lightest +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxLight6] +X=540 +Y=260 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P3Light +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreStaticBoxDark6] +X=540 +Y=300 +W=30 +H=30 +Tex=ScoreBox +Type= +Color=P3Dark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Options] +Texts = 3 +Fade = 2 + +[OptionsBackground] +Tex=OptionsBG + + +[OptionsText1] +X = 50 +Y = 170 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text = SING_OPTIONS + +[OptionsText2] +X = 250 +Y = 550 +ColR = 0.5 +ColG = 0.5 +ColB = 0.5 +Font = 1 +Size = 8 +Text=SING_LEGEND_NAVIGATE + +[OptionsText3] +X = 500 +Y = 550 +ColR = 0.5 +ColG = 0.5 +ColB = 0.5 +Font = 1 +Size = 8 +Text=SING_LEGEND_SELECT + +[OptionsStatic1] +Tex=MainCursor +X=40 +Y=250 +W=32 +H=32 +Color=ColorDark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + + +[OptionsTextDescription] +X = 70 +Y = 248 +ColR = 0.5 +ColG = 0.5 +ColB = 0.5 +Font = 1 +Size = 10 + +[OptionsButtonGame] +X = 40 +Y = 310 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonGraphics] +X = 270 +Y = 310 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonSound] +X = 500 +Y = 310 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonLyrics] +X = 40 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonThemes] +X = 270 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonRecord] +X = 500 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsButtonExit] +X = 500 +Y = 450 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[OptionsGame] +Texts = 1 +Fade = 2 + +[OptionsGameBackground] +Tex=OptionsBG + +[OptionsGameText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_GAME_DESC + +[OptionsGameSelectPlayers] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_GAME_PLAYERS +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectDifficulty] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_GAME_DIFFICULTY +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + + +[OptionsGameSelectSlideLanguage] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_GAME_LANGUAGE +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectTabs] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GAME_TABS +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectSlideSorting] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GAME_SORTING +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameSelectDebug] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GAME_DEBUG +X = 40 +Y = 450 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGameButtonExit] +X = 40 +Y = 520 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsGraphics] +Texts = 1 + +[OptionsGraphicsBackground] +Tex=OptionsBG + +[OptionsGraphicsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_GRAPHICS_DESC + +[OptionsGraphicsSelectSlideResolution] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_GRAPHICS_RESOLUTION +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectFullscreen] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_FULLSCREEN +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectDepth] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_DEPTH +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectOscilloscope] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_OSCILLOSCOPE +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectLineBonus] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_LINEBONUS +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsSelectMovieSize] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE +X = 40 +Y = 450 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsGraphicsButtonExit] +X = 40 +Y = 520 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsSound] +Texts = 1 + +[OptionsSoundBackground] +Tex=OptionsBG + +[OptionsSoundText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_SOUND_DESC + +[OptionsSoundSelectMicBoost] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_MIC_BOOST +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectClickAssist] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_CLICK_ASSIST +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectBeatClick] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_BEAT_CLICK +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectThreshold] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_THRESHOLD +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectTwoPlayerMode] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_SOUND_TWO_PLAYERS_MODE +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundButtonExit] +X = 40 +Y = 460 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsLyrics] +Texts = 1 + +[OptionsLyricsBackground] +Tex=OptionsBG + +[OptionsLyricsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_LYRICS_DESC + +[OptionsLyricsSelectLyricsFont] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_LYRICS_FONT +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsLyricsSelectLyricsEffect] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_LYRICS_EFFECT +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsLyricsSelectSolmization] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_LYRICS_SOLMIZATION +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsLyricsButtonExit] +X = 40 +Y = 450 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsThemes] +Texts = 1 + +[OptionsThemesBackground] +Tex=OptionsBG + +[OptionsThemesText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_THEMES_DESC + +[OptionsThemesSelectTheme] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_THEMES_THEME +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsThemesSelectSkin] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_THEMES_SKIN +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsThemesSelectColor] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_THEMES_COLOR +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsThemesButtonExit] +X = 40 +Y = 450 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[OptionsRecord] +Texts = 1 + +[OptionsRecordBackground] +Tex=OptionsBG + +[OptionsRecordText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_RECORD_DESC + +[OptionsRecordSelectSlideCard] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_CARD +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordSelectSlideInput] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_INPUT +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordSelectSlideChannelL] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_CHANNELL +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordSelectSlideChannelR] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_RECORD_CHANNELR +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsRecordButtonExit] +X = 40 +Y = 380 +W = 230 +H = 70 +Tex = MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + +[Top5] +Texts=1 + +[Top5Background] +Tex=Top5BG + + +[Top5Text1] +X =100 +Y =50 +Color =Gray +Font =1 +Size =20 +Align =0 +Text =SING_TOP_5_CHARTS + +[Top5Static1] +Tex=Bar +X=560 +Y=55 +W=140 +H=50 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5TextLevel] +X =630 +Y =65 +Color =White +Font =1 +Size =10 +Align =1 +Text =easy + + +[Top5TextArtistTitle] +X =100 +Y =120 +Color =Black +Font =0 +Size =10 +Align =0 +Text =artist - title + +[Top5TextName1] +X =170 +Y =200 +Color =GrayDark +Font =1 +Size =14 +Align =0 +Text =1. Player1 + +[Top5TextName2] +X =150 +Y =290 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =2. Player2 + +[Top5TextName3] +X =150 +Y =340 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =3. Player3 + +[Top5TextName4] +X =150 +Y =390 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =4. Player4 + +[Top5TextName5] +X =150 +Y =440 +Color =GrayDark +Font =0 +Size =11 +Align =0 +Text =5. Player5 + + +[Top5TextScore1] +X =680 +Y =195 +Color =GrayDark +Font =1 +Size =17 +Align =2 +Text =00000 + +[Top5TextScore2] +X =680 +Y =290 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextScore3] +X =680 +Y =340 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextScore4] +X =680 +Y =390 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextScore5] +X =680 +Y =440 +Color =GrayDark +Font =1 +Size =14 +Align =2 +Text =00000 + +[Top5TextNumber1] +X =130 +Y =202 +Color =White +Font =1 +Size =11 +Align =1 +Text =1 + +[Top5TextNumber2] +X =120 +Y =293 +Color =White +Font =1 +Size =9 +Align =1 +Text =2 + +[Top5TextNumber3] +X =120 +Y =343 +Color =White +Font =1 +Size =9 +Align =1 +Text =3 + +[Top5TextNumber4] +X =120 +Y =393 +Color =White +Font =1 +Size =9 +Align =1 +Text =4 + +[Top5TextNumber5] +X =120 +Y =443 +Color =White +Font =1 +Size =9 +Align =1 +Text =5 + +[Top5StaticNumber1] +Tex=Bar +X=100 +Y=190 +W=60 +H=60 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber2] +Tex=Bar +X=100 +Y=286 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber3] +Tex=Bar +X=100 +Y=336 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber4] +Tex=Bar +X=100 +Y=386 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5StaticNumber5] +Tex=Bar +X=100 +Y=436 +W=40 +H=40 +Color=ColorLight +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Level] +Texts=2 + +[LevelBackground] +Tex=MainBG + +[LevelStatic1] +X =0 +Y =550 +W =254 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[LevelStatic2] +X =254 +Y =550 +W =548 +H =30 +Tex=Leiste2 +Color =Gray +Int = 1 +Type=Font Black + +[LevelButtonEasy] +Tex=Button +X=25 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=1 + +[LevelButtonMedium] +Tex=Button +X=275 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=1 + +[LevelButtonHard] +Tex=Button +X=525 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=1 + +[LevelText1] +X=30 +Y=180 +Font=1 +Size=22 +Align=0 +Text=SING_SING_MODE +Color=GrayLight + +[LevelText2] +X=50 +Y=248 +Font=1 +Size=10 +Align=0 +Text=SING_DIFFICULTY +Color=Gray + +[LevelButtonEasyText1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text=SING_EASY +Color=White + +[LevelButtonMediumText1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text=SING_MEDIUM +Color=White + +[LevelButtonHardText1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text=SING_HARD +Color=White + +[Name] +Texts=2 + +[NameBackground] +Tex=MainBG + +[NameStatic1] +X =0 +Y =550 +W =254 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[NameStatic2] +X =254 +Y =550 +W =548 +H =30 +Tex=Leiste2 +Color =Gray +Int = 1 +Type=Font Black + +[NameText1] +X=40 +Y=200 +Font=1 +Size=20 +Align=0 +Text=SING_ENTER_PLAYER_NAME +Color=White + +[NameButtonPlayer1] +Tex=Button +X=25 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=LightBlue +Int=0.8 +DColor=DarkBlue +DInt=0.7 + +[NameButtonPlayer1Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer2] +Tex=Button +X=25 +Y=380 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=LightRed +Int=0.8 +DColor=DarkRed +DInt=0.7 + + +[NameButtonPlayer2Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer3] +Tex=Button +X=25 +Y=450 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=LightGreen +Int=0.8 +DColor=DarkGreen +DInt=0.7 + +[NameButtonPlayer3Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer4] +Tex=Button +X=425 +Y=310 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=LightPurple +Int=0.8 +DColor=DarkPurple +DInt=0.7 + +[NameButtonPlayer5] +Tex=Button +X=425 +Y=380 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=LightOrange +Int=0.8 +DColor=DarkOrange +DInt=0.7 + +[NameButtonPlayer6] +Tex=Button +X=425 +Y=450 +W=250 +H=70 +Type=Font Black +Texts=1 +Color=LightYellow +Int=0.8 +DColor=DarkYellow +DInt=0.7 + +[NameButtonPlayer4Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer5Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[NameButtonPlayer6Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + +[PartyNewRound] +Texts =0 + +[PartyNewRoundBackground] +Tex=MainBG + +[PartyNewRoundTextRound1] +X =50 +Y =60 +Color =GrayDark +Font =1 +Size =17 +Text =Round 1 +Align=0 + +[PartyNewRoundTextRound2] +X =50 +Y =100 +Color =GrayDark +Font =1 +Size =17 +Text =Round 2 +Align=0 + +[PartyNewRoundTextRound3] +X =50 +Y =140 +Color =GrayDark +Font =1 +Size =17 +Text =Round 3 +Align=0 + +[PartyNewRoundTextRound4] +X =50 +Y =180 +Color =GrayDark +Font =1 +Size =17 +Text =Round 4 +Align=0 + +[PartyNewRoundTextRound5] +X =50 +Y =220 +Color =GrayDark +Font =1 +Size =17 +Text =Round 5 +Align=0 + +[PartyNewRoundTextRound6] +X =50 +Y =260 +Color =GrayDark +Font =1 +Size =17 +Text =Round 6 +Align=0 + +[PartyNewRoundTextRound7] +X =50 +Y =300 +Color =GrayDark +Font =1 +Size =17 +Text =Round 7 +Align=0 + +[PartyNewRoundTextWinner1] +X =260 +Y =60 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 1 +Align=0 + +[PartyNewRoundTextWinner2] +X =260 +Y =100 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 2 +Align=0 + +[PartyNewRoundTextWinner3] +X =260 +Y =140 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 3 +Align=0 + +[PartyNewRoundTextWinner4] +X =260 +Y =180 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 4 +Align=0 + +[PartyNewRoundTextWinner5] +X =260 +Y =220 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 5 +Align=0 + +[PartyNewRoundTextWinner6] +X =260 +Y =260 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 6 +Align=0 + +[PartyNewRoundTextWinner7] +X =260 +Y =300 +Color =GrayDark +Font =1 +Size =17 +Text =Winner 7 +Align=0 + +[PartyNewRoundStaticRound1] +Tex =button +X =40 +Y =55 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundStaticRound2] +Tex =button +X =40 +Y =95 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundStaticRound3] +Tex =button +X =40 +Y =135 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundStaticRound4] +Tex =button +X =40 +Y =175 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundStaticRound5] +Tex =button +X =40 +Y =215 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundStaticRound6] +Tex =button +X =40 +Y =255 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundStaticRound7] +Tex =button +X =40 +Y =295 +W =240 +H =35 +Color =GrayDark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[PartyNewRoundTextNextRound] +X =500 +Y =300 +Color =White +Font =1 +Size =17 +Text =Next Round +Align=0 + +[PartyNewRoundTextNextRoundNo] +X =450 +Y =300 +Color =White +Font =1 +Size =17 +Text =99 +Align=0 + +[PartyNewRoundTextScoreTeam1] +X =100 +Y =70 +Color =White +Font =1 +Size =13 +Text =3000 +Align=0 + +[PartyNewRoundTextScoreTeam2] +X =300 +Y =70 +Color =White +Font =1 +Size =13 +Text =2000 +Align=0 + +[PartyNewRoundTextScoreTeam3] +X =500 +Y =70 +Color =White +Font =1 +Size =13 +Text =1000 +Align=0 + +[PartyNewRoundTextNameTeam1] +X =100 +Y =20 +Color =White +Font =1 +Size =13 +Text =Team 1 +Align=0 + +[PartyNewRoundTextNameTeam2] +X =300 +Y =20 +Color =White +Font =1 +Size =13 +Text =Team 2 +Align=0 + +[PartyNewRoundTextNameTeam3] +X =500 +Y =20 +Color =White +Font =1 +Size =13 +Text =Team 3 +Align=0 + +[PartyNewRoundTextNextPlayer1] +X =450 +Y =400 +Color =White +Font =1 +Size =13 +Text =Player 1 +Align=0 + +[PartyNewRoundTextNextPlayer2] +X =550 +Y =400 +Color =White +Font =1 +Size =13 +Text =Player 2 +Align=0 + +[PartyNewRoundTextNextPlayer3] +X =650 +Y =400 +Color =White +Font =1 +Size =13 +Text =Player 3 +Align=0 + +[PartyScore] +Texts=0 + +[PartyScoreBackground] +Tex=PartyBG + +[PartyScoreTextWinner] +X =150 +Y =20 +Color =White +Font =1 +Size =14 +Text =The Winner is... +Align=0 + +[PartyScoreTextScoreTeam1] +X =280 +Y =100 +Color =White +Font =1 +Size =13 +Text =3000 +Align=0 + +[PartyScoreTextScoreTeam2] +X =280 +Y =250 +Color =White +Font =1 +Size =13 +Text =2000 +Align=0 + +[PartyScoreTextScoreTeam3] +X =280 +Y =400 +Color =White +Font =1 +Size =13 +Text =1000 +Align=0 + +[PartyScoreTextNameTeam1] +X =80 +Y =100 +Color =White +Font =1 +Size =13 +Text =Team 1 +Align=0 + +[PartyScoreTextNameTeam2] +X =80 +Y =250 +Color =White +Font =1 +Size =13 +Text =Team 2 +Align=0 + +[PartyScoreTextNameTeam3] +X =80 +Y =400 +Color =White +Font =1 +Size =13 +Text =Team 3 +Align=0 + +[PartyScoreStaticTeam1] +X =380 +Y =100 +W =300 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[PartyScoreStaticTeam2] +X =380 +Y =250 +W =300 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[PartyScoreStaticTeam3] +X =380 +Y =400 +W =300 +H =30 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[PartyWin] +Texts=0 + +[PartyWinBackground] +Tex=PartyBG + +[PartyWinTextWinner] +X =150 +Y =20 +Color =White +Font =1 +Size =14 +Text =The Winner is... +Align=0 + +[PartyWinTextScoreTeam1] +X =400 +Y =150 +Color =White +Font =1 +Size =15 +Text =3000 +Align=1 + +[PartyWinTextScoreTeam2] +X =100 +Y =450 +Color =White +Font =1 +Size =13 +Text =2000 +Align=0 + +[PartyWinTextScoreTeam3] +X =400 +Y =450 +Color =White +Font =1 +Size =13 +Text =1000 +Align=0 + +[PartyWinTextNameTeam1] +X =400 +Y =100 +Color =White +Font =1 +Size =15 +Text =Team 1 +Align=1 + +[PartyWinTextNameTeam2] +X =100 +Y =400 +Color =White +Font =1 +Size =13 +Text =Team 2 +Align=0 + +[PartyWinTextNameTeam3] +X =400 +Y =400 +Color =White +Font =1 +Size =13 +Text =Team 3 +Align=0 + +[PartyWinStaticTeam1] +X =380 +Y =100 +W =0 +H =00 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[PartyWinStaticTeam2] +X =380 +Y =250 +W =0 +H =0 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + +[PartyWinStaticTeam3] +X =380 +Y =400 +W =0 +H =0 +Tex=Leiste1 +Color =DarkBlue +Int = 1 +Type=Font Black + + +[PartyOptions] +Texts = 1 + +[PartyOptionsBackground] +Tex=PartyBG + +[PartyOptionsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=PARTY_OPTIONS_DESC + +[PartyOptionsSelectLevel] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_DIFFICULTY +X = 40 +Y = 50 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayList] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_PLAYLIST +X = 40 +Y = 120 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayList2] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_PLAYLIST +X = 40 +Y = 190 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectRounds] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_ROUNDS +X = 40 +Y = 260 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectTeams] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS +X = 40 +Y = 340 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayers1] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS_PLAYER1 +X = 40 +Y = 410 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayers2] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS_PLAYER2 +X = 40 +Y = 480 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayers3] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS_PLAYER3 +X = 40 +Y = 540 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyPlayer] +Texts=2 + +[PartyPlayerBackground] +Tex=PartyBG + +[PartyPlayerTeam1Name] +Tex=Button +X=25 +Y=50 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkRed +Int = 0.8 +DColor = LightRed +DInt = 0.7 +Reflection=0 + +[PartyPlayerTeam1NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Team 1 +Color=White + +[PartyPlayerPlayer1Name] +Tex=Button +X=25 +Y=120 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer1NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 1 +Color=White + +[PartyPlayerPlayer2Name] +Tex=Button +X=25 +Y=190 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer2NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text= Player 2 +Color=White + +[PartyPlayerPlayer3Name] +Tex=Button +X=25 +Y=260 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer3NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 3 +Color=White + +[PartyPlayerPlayer4Name] +Tex=Button +X=25 +Y=330 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer4NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 4 +Color=White + +[PartyPlayerTeam2Name] +Tex=Button +X=300 +Y=50 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkRed +Int = 0.8 +DColor = LightRed +DInt = 0.7 +Reflection=0 + +[PartyPlayerTeam2NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Team 2 +Color=White + +[PartyPlayerPlayer5Name] +Tex=Button +X=300 +Y=120 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer5NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 5 +Color=White + +[PartyPlayerPlayer6Name] +Tex=Button +X=300 +Y=190 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer6NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 6 +Color=White + +[PartyPlayerPlayer7Name] +Tex=Button +X=300 +Y=260 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer7NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 7 +Color=White + +[PartyPlayerPlayer8Name] +Tex=Button +X=300 +Y=330 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer8NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 8 +Color=White + +[PartyPlayerTeam3Name] +Tex=Button +X=25 +Y=360 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkRed +Int = 0.8 +DColor = LightRed +DInt = 0.7 +Reflection=0 + +[PartyPlayerTeam3NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Team 3 +Color=White + +[PartyPlayerPlayer9Name] +Tex=Button +X=25 +Y=400 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer9NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 9 +Color=White + +[PartyPlayerPlayer10Name] +Tex=Button +X=25 +Y=460 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer10NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 10 +Color=White + +[PartyPlayerPlayer11Name] +Tex=Button +X=25 +Y=500 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer11NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 11 +Color=White + +[PartyPlayerPlayer12Name] +Tex=Button +X=25 +Y=540 +W=250 +H=70 +Type=Font Black +Texts=1 +Color =DarkBlue +Int = 0.8 +DColor = LightBlue +DInt = 0.7 +Reflection=0 + +[PartyPlayerPlayer12NameText1] +X=125 +Y=15 +Font=1 +Size=9 +Align=1 +Text=Player 12 +Color=White + +[PartyPlayerText1] +X=30 +Y=180 +Font=1 +Size=22 +Align=0 +Text=PARTY_SELECT_PLAYER +Color=GrayLight + +[SongMenu] +Texts=0 +Statics=1 + +[SongMenuButton1] +X = 450 +Y = 280 +Z = 1 +W = 160 +H = 50 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[SongMenuButton2] +X = 450 +Y = 330 +Z = 1 +W = 160 +H = 50 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[SongMenuButton3] +X = 450 +Y = 380 +Z = 1 +W = 160 +H = 50 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[SongMenuButton4] +X = 450 +Y = 430 +Z = 1 +W = 160 +H = 50 +Tex = MainBar +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black + +[SongMenuSelectSlide3] +Tex = MainBar +TexSBG = MainBar +Text = +X = 450 +Y = 380 +Z = 1 +W = 0 +H = 50 +SkipX = 0 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[SongMenuTextMenu] +X =450 +Y =240 +Color=White +Font =1 +Size =15 +Text=Menu +Align=0 + +[SongMenuStatic1] +Tex =ScoreBG +X =450 +Y =235 +W =200 +H =250 +Z =1 +Int=0.6 +Color =LightBlue +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 +TexY2=0.98 \ No newline at end of file -- cgit v1.2.3 From b6d5c314031498281c73dbfe53bba323430e031a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 22 Mar 2007 19:36:12 +0000 Subject: Fixed Bug: If Nobody gets Points, everybody wins git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@14 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Modis/Blind/Blind.dpr | 2 +- Modis/Duell/Duell.dpr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Modis/Blind/Blind.dpr b/Modis/Blind/Blind.dpr index 99c7d7eb..ab440e67 100644 --- a/Modis/Blind/Blind.dpr +++ b/Modis/Blind/Blind.dpr @@ -74,7 +74,7 @@ begin 5: Result := 32; end; end - else if (PlayerInfo.Playerinfo[I].Score = MaxScore) then + else if (PlayerInfo.Playerinfo[I].Score = MaxScore) AND (PlayerInfo.Playerinfo[I].Score <> 0) then begin Case I of 0: Result := Result OR 1; diff --git a/Modis/Duell/Duell.dpr b/Modis/Duell/Duell.dpr index 40ae11ed..4a22a5d7 100644 --- a/Modis/Duell/Duell.dpr +++ b/Modis/Duell/Duell.dpr @@ -72,7 +72,7 @@ begin 5: Result := 32; end; end - else if (PlayerInfo.Playerinfo[I].Score = MaxScore) then + else if (PlayerInfo.Playerinfo[I].Score = MaxScore) AND (PlayerInfo.Playerinfo[I].Score <> 0) then begin Case I of 0: Result := Result OR 1; -- cgit v1.2.3 From 541b91c3f40f283411faebe83d7cc50e2507c66e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 22 Mar 2007 19:37:09 +0000 Subject: Fixed Crash at Startup (OpenGL Pointers not Inited) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@15 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Modis/Don't_Get_Worse/Hold_The_Line.dpr | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Modis/Don't_Get_Worse/Hold_The_Line.dpr b/Modis/Don't_Get_Worse/Hold_The_Line.dpr index 87fea3db..a6eb9a3a 100644 --- a/Modis/Don't_Get_Worse/Hold_The_Line.dpr +++ b/Modis/Don't_Get_Worse/Hold_The_Line.dpr @@ -52,26 +52,28 @@ function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sen var I: Integer; Texname, TexType: PChar; -begin { +begin TexName := CreateStr(PChar('HDL_Pointer')); TexType := CreateStr(PChar('Plain')); - //PointerTex := LoadTex(TexName, TexType); + PointerTex := LoadTex(TexName, TexType); FreeStr(TexName); FreeStr(TexType); - //CountSentences := Sentences.High; + CountSentences := Sentences.High; Limit := 0; Frame := 0; fPrint := Print; - {for I := 0 to PlayerInfo.NumPlayers-1 do + for I := 0 to PlayerInfo.NumPlayers-1 do begin PlayerInfo.Playerinfo[I].Enabled := True; PlayerInfo.Playerinfo[I].Percentage := 100; PlayerTimes[I] := 0; - end; } + end; + + LoadOpenGL; Result := True; end; @@ -110,12 +112,12 @@ begin begin PlayerInfo.Playerinfo[I].Enabled := False; Inc(C); - PlayerTimes[I] := Frame; //Save Tiem of Dismission + PlayerTimes[I] := Frame; //Save Time of Dismission //ToDo: PlaySound end; //Draw Pointer; - //glBindTexture(GL_TEXTURE_2D, PointerTex.TexNum); + glBindTexture(GL_TEXTURE_2D, PointerTex.TexNum); glBegin(GL_QUADS); glTexCoord2f(1/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY - 4); @@ -131,7 +133,7 @@ begin //Draw Dismissed Text := CreateStr(PChar('PARTY_DISMISSED')); //Str := 'Test123'; - //fPrint (1, 6, PlayerInfo.Playerinfo[I].PosX, PlayerInfo.Playerinfo[I].PosY-8, Text); + fPrint (1, 6, PlayerInfo.Playerinfo[I].PosX, PlayerInfo.Playerinfo[I].PosY-8, Text); FreeStr(Text); end; end; @@ -150,6 +152,7 @@ for I := 0 to PlayerInfo.NumPlayers-1 do PlayerInfo.Playerinfo[I].Percentage := (PlayerTimes[I] * 100) div Frame; if (PlayerInfo.Playerinfo[I].Enabled) then begin + PlayerInfo.Playerinfo[I].Percentage := 100; Case I of 0: Result := Result OR 1; 1: Result := Result OR 2; -- cgit v1.2.3 From c33620b856f5106ba95638106c5a55ff88e5290c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 22 Mar 2007 19:59:00 +0000 Subject: Fixed Bug: No BG in Party Mode and little Code clean up git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@16 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 1 + Game/Code/Classes/UIni.pas | 4 +- Game/Code/Classes/ULanguage.pas | 18 +++++---- Game/Code/Classes/UThemes.pas | 9 +++-- Game/Code/Screens/UScreenSingModi.pas | 41 ++++++++++--------- Game/Code/UltraStar.dpr | 76 +++++++++++++++++++---------------- 6 files changed, 83 insertions(+), 66 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 4e4691ad..31291788 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -71,6 +71,7 @@ begin if ScreenSing.Tex_Background.TexNum >= 1 then begin glClearColor (1, 1, 1, 1); + glColor4f (1, 1, 1, 1); if (Ini.MovieSize = 0) then //HalfSize BG begin diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index beadabb6..a17ba52d 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -483,11 +483,11 @@ begin for Pet := 0 to High(IJoypad) do if Tekst = IJoypad[Pet] then Ini.Joypad := Pet; - // SoundCard + {// SoundCard for I := 0 to 7 do begin Ini.SoundCard[I, 1] := IniFile.ReadInteger('SoundCards', 'SoundCard'+IntToStr(I+1)+'L', Ini.SoundCard[I, 1]); Ini.SoundCard[I, 2] := IniFile.ReadInteger('SoundCards', 'SoundCard'+IntToStr(I+1)+'R', Ini.SoundCard[I, 2]); - end; + end; } // LCD Tekst := IniFile.ReadString('Devices', 'LPT', ILPT[0]); diff --git a/Game/Code/Classes/ULanguage.pas b/Game/Code/Classes/ULanguage.pas index bc3793e3..afdac87c 100644 --- a/Game/Code/Classes/ULanguage.pas +++ b/Game/Code/Classes/ULanguage.pas @@ -14,7 +14,7 @@ type end; TLanguage = class - private + public Entry: array of TLanguageEntry; //Entrys of Chosen Language SEntry: array of TLanguageEntry; //Entrys of Standard Language CEntry: array of TLanguageEntry; //Constant Entrys e.g. Version @@ -68,6 +68,8 @@ begin SEntry[J] := Entry[J]; SetLength(Entry, 0); + + Break; end; if (I = high(List)) then @@ -139,6 +141,9 @@ var E: integer; // entry begin Result := Text; + Text := Uppercase(Result); + + Log.LogError('Text: "' + Text + '" L: ' + InttoStr(Length(Entry))); //Const Mod for E := 0 to high(CEntry) do @@ -158,14 +163,11 @@ begin //Standard Language (If a Language File is Incomplete) //Then use Standard Language - if Text = Result then + for E := low(SEntry) to high(SEntry) do + if Text = SEntry[E].ID then begin - for E := low(SEntry) to high(SEntry) do - if Text = SEntry[E].ID then - begin - Result := SEntry[E].Text; - exit; - end; + Result := SEntry[E].Text; + Break; end; //Standard Language END end; diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 29647db6..c4b83d8b 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -2,7 +2,11 @@ unit UThemes; interface -uses IniFiles, SysUtils, Classes; +uses +{$IFDEF TRANSLATE} + ULanguage, +{$ENDIF} +IniFiles, SysUtils, Classes; type TRGB = record @@ -576,9 +580,6 @@ var implementation uses -{$IFDEF TRANSLATE} - ULanguage, -{$ENDIF} USkins, UIni; constructor TTheme.Create(FileName: string); diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index 88034f61..ec47dc60 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -585,16 +585,16 @@ begin Log.LogStatus('End', 'onShow'); } -PlayersPlay := TeamInfo.NumTeams; + PlayersPlay := TeamInfo.NumTeams; -if DLLMan.Selected.LoadSong then //Start with Song -begin - inherited; -end -else //Start Without Song -begin - Music.CaptureStart; -end; + if DLLMan.Selected.LoadSong then //Start with Song + begin + inherited; + end + else //Start Without Song + begin + Music.CaptureStart; + end; //Set Playerinfo PlayerInfo.NumPlayers := PlayersPlay; @@ -648,16 +648,21 @@ end; //Music.CaptureStart; //Music.MoveTo(AktSong.Start); -//Init Plugin -if not DLLMan.PluginInit(TeamInfo, PlayerInfo, ToSentences(Czesci[0]), LoadTex, Print, LoadSound, PlaySound) then -begin -//Fehler -Log.LogError('Could not Init Plugin'); -Halt; -end; + //Init Plugin + if not DLLMan.PluginInit(TeamInfo, PlayerInfo, ToSentences(Czesci[0]), LoadTex, Print, LoadSound, PlaySound) then + begin + //Fehler + Log.LogError('Could not Init Plugin'); + Halt; + end; + + // Set Background (Little Workaround, maybe change sometime) + if (DLLMan.Selected.LoadBack) AND (DLLMan.Selected.LoadSong) then + ScreenSing.Tex_Background := Tex_Background; + + Winner := 0; -Winner := 0; -//Set Score Visibility + //Set Score Visibility if PlayersPlay = 1 then begin Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index b0d49610..1bc19dcf 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -6,16 +6,9 @@ {$R 'UltraStar.res' 'UltraStar.rc'} uses - {//Earlyer in Code Dir.. Now in SearchDir - DDKint in '..\ZLPortIO\ddkint.pas', - ZLPortIO in '..\ZLPortIO\zlportio.pas', - SQLiteTable3 in '..\SQLite\SQLiteTable3.pas', - SQLite3 in '..\SQLite\SQLite3.pas',} - Windows, - SDL, - SysUtils, - - //Menu Objects + //------------------------------ + //Includes - Menu System + //------------------------------ UDisplay in 'Menu\UDisplay.pas', UMenu in 'Menu\UMenu.pas', UMenuStatic in 'Menu\UMenuStatic.pas', @@ -26,11 +19,14 @@ uses UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', UDrawTexture in 'Menu\UDrawTexture.pas', - //Classes + //------------------------------ + //Includes - Classes + //------------------------------ UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', UPliki in 'Classes\UPliki.pas', + ULanguage in 'Classes\ULanguage.pas', UMain in 'Classes\UMain.pas', UDraw in 'Classes\UDraw.pas', URecord in 'Classes\URecord.pas', @@ -47,7 +43,6 @@ uses ULCD in 'Classes\ULCD.pas', ULight in 'Classes\ULight.pas', UScores in 'Classes\UScores.pas', - ULanguage in 'Classes\ULanguage.pas', UCovers in 'Classes\UCovers.pas', UCatCovers in 'Classes\UCatCovers.pas', UFiles in 'Classes\UFiles.pas', @@ -55,7 +50,9 @@ uses UDLLManager in 'Classes\UDLLManager.pas', UParty in 'Classes\UParty.pas', - //Screens + //------------------------------ + //Includes - Screens + //------------------------------ UScreenLoading in 'Screens\UScreenLoading.pas', UScreenWelcome in 'Screens\UScreenWelcome.pas', UScreenMain in 'Screens\UScreenMain.pas', @@ -78,7 +75,10 @@ uses UScreenOpen in 'Screens\UScreenOpen.pas', UScreenTop5 in 'Screens\UScreenTop5.pas', UScreenSongMenu in 'Screens\UScreenSongMenu.pas', - //PartyMode + + //------------------------------ + //Includes - Screens PartyMode + //------------------------------ UScreenSingModi in 'Screens\UScreenSingModi.pas', UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', UScreenPartyScore in 'Screens\UScreenPartyScore.pas', @@ -86,8 +86,17 @@ uses UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', UScreenPartyWin in 'Screens\UScreenPartyWin.pas', - //Modi SDK - ModiSDK in '..\..\Modis\SDK\ModiSDK.pas'; + //------------------------------ + //Includes - Modi SDK + //------------------------------ + ModiSDK in '..\..\Modis\SDK\ModiSDK.pas', + + //------------------------------ + //Includes - Delphi + //------------------------------ + Windows, + SDL, + SysUtils; const Version = 'UltraStar Deluxe V 0.90 Beta'; @@ -100,7 +109,9 @@ var begin WndTitle := Version; + //------------------------------ //Start more than One Time Prevention + //------------------------------ hWnd:= FindWindow(nil, PChar(WndTitle)); //Programm already started if (hWnd <> 0) then @@ -120,15 +131,15 @@ begin Exit; end; - - + //------------------------------ + //StartUp - Create Classes and Load Files + //------------------------------ USTime := TTime.Create; // Log + Benchmark Log := TLog.Create; Log.Title := WndTitle; Log.BenchmarkStart(0); -// Log.LogError(IntToStr(DayOfTheYear(Date))); // Language Log.BenchmarkStart(1); @@ -152,8 +163,6 @@ begin Log.BenchmarkEnd(1); Log.LogBenchmark('Loading Skin List', 1); - //Log.LogBenchmark(inttostr(Skin.), 1); - // Sound Card List Log.BenchmarkStart(1); Log.LogStatus('Loading Soundcard list', 'Initialization'); @@ -187,7 +196,6 @@ begin Log.LogStatus('Load Light', 'Initialization'); Light := TLight.Create; if Ini.LPT = 2 then begin Light.Enable; -// Light.LightOne(0, 1000); end; Log.BenchmarkEnd(1); Log.LogBenchmark('Loading Light', 1); @@ -223,9 +231,6 @@ begin Log.BenchmarkStart(1); Log.LogStatus('PluginManager', 'Initialization'); DLLMan := TDLLMan.Create; //Load PluginList - - Log.LogError(inttostr(Length(DLLMan.Plugins)) + ' Plugins Loaded'); - Log.BenchmarkEnd(1); Log.LogBenchmark('Loading PluginManager', 1); @@ -260,10 +265,10 @@ begin //GoldenStarsTwinkleMod Log.BenchmarkStart(1); - Log.LogStatus('GoldenStars', 'Initialization'); + Log.LogStatus('Effect Manager', 'Initialization'); GoldenRec := TEffectManager.Create; Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading GoldenStars', 1); + Log.LogBenchmark('Loading Particel System', 1); // Joypad if Ini.Joypad = 1 then begin @@ -277,15 +282,18 @@ begin Log.LogBenchmark('Loading Time', 0); -// Music.SetLoop(true); -// Music.SetVolume(50); -// Music.Open(SkinPath + 'Menu Music 3.mp3'); -// Music.Play; + //------------------------------ + //Start- Mainloop + //------------------------------ + //Music.SetLoop(true); + //Music.SetVolume(50); + //Music.Open(SkinPath + 'Menu Music 3.mp3'); + //Music.Play; Log.LogStatus('Main Loop', 'Initialization'); MainLoop; -// sleep(3000); - - // finish + //------------------------------ + //Finish Application + //------------------------------ if Ini.LPT = 1 then LCD.Clear; if Ini.LPT = 2 then Light.TurnOff; -- cgit v1.2.3 From 07174bc088f8b14203a1417e7ffe0cc8a8be5e73 Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 22 Mar 2007 22:10:33 +0000 Subject: Added new texture for perfect sung note (formerly NoteStar), now named NotePerfectStar (view skin: W&C.ini). NoteStar is now used for golden notes. There's also a difference in drawing both, PerfectNoteStar is bigger, and drawn in white - whereas GoldenNotes are smaller and yellow. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@17 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 15 +++++++----- Game/Code/Classes/UGraphic.pas | 3 +++ Game/Code/Classes/UGraphicClasses.pas | 43 ++++++++++++++++++++++------------ Skins/Deluxe/Note Star.jpg | Bin 20091 -> 22332 bytes Skins/Deluxe/NotePerfectStar.jpg | Bin 0 -> 27633 bytes Skins/Deluxe/W&C.ini | 1 + 6 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 Skins/Deluxe/NotePerfectStar.jpg diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 31291788..2e742172 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -12,9 +12,10 @@ procedure SingDrawBeatDelimeters(Left, Top, Right: real; NrCzesci: integer); procedure SingDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); procedure SingDrawPlayerCzesc(X, Y, W: real; NrGracza: integer; Space: integer); procedure SingDrawPlayerBGCzesc(Left, Top, Right: real; NrCzesci, NrGracza: integer; Space: integer); +{ for no use since we have UGraphicClasses procedure SingDrawStar(X, Y, A: real); procedure SingGoldenStar(X, Y, A: real); - +} // The Singbar procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer); @@ -381,8 +382,8 @@ var //inc(Starfr); //Starfr := Starfr mod 128; - - SingDrawStar(Rec.Left+2, Rec.Top+4, A); + GoldenRec.SavePerfectNotePos(Rec.Left, Rec.Top); + { SingDrawStar(Rec.Left+2, Rec.Top+4, A);} end; // detekt @@ -500,6 +501,7 @@ begin end; end; +{not used anymore tough we have UGraphicClasses procedure SingDrawStar(X, Y, A: real); var TempR: real; @@ -509,7 +511,7 @@ var W := 32; H := 32; - // Golden Star Patch +// Golden Star Patch // case Z of // 1: glColor4f(1, 1, 1, A); // 2: glColor4f(1, 1, 0.3, A); @@ -530,8 +532,9 @@ var glTexCoord2f((1/16) * Starframe, 1); glVertex2f(X+W, Y-H); glEnd; end; +} - +{not used anymore tough we have UGraphicClasses procedure SingGoldenStar(X, Y, A: real); var TempR: real; @@ -554,7 +557,7 @@ var glTexCoord2f((1/16) * StarfrG2, 1); glVertex2f(X+W, Y-H); glEnd; end; - +} procedure SingDraw; var diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 05a9fda7..8238eace 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -70,6 +70,8 @@ var Tex_BG_Right: array[1..6] of TTexture; Tex_Note_Star: TTexture; + Tex_Note_Perfect_Star: TTexture; + Tex_Ball: TTexture; FullScreen: boolean; @@ -186,6 +188,7 @@ begin Tex_BG_Right[P] := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteBGRight')), 'BMP', 'Alpha Black Colored', Col); end; + Tex_Note_Perfect_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NotePerfectStar')), 'JPG', 'Font Black', 0); Tex_Note_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteStar')), 'JPG', 'Font Black', 0); Tex_Ball := Texture.LoadTexture(pchar(Skin.GetTextureFileName('Ball')), 'BMP', 'Transparent', $FF00FF); diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index d66bd142..6c131b50 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -8,9 +8,10 @@ type Frame : Byte; //act. Frame Tex : Cardinal; //Tex num from Textur Manager Live : Byte; //How many Cycles before Kill - RecIndex : Integer; //To which rectangle belongs this particle + RecIndex : Integer; //To which rectangle this particle belongs + StarType : Integer; // 1: GoldenNote | 2: PerfectNote - Constructor Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; RecArrayIndex : Integer); + Constructor Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : Integer); procedure Draw; end; @@ -32,7 +33,7 @@ type constructor Create; procedure Draw; - function Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer): Cardinal; + function Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : Integer): Cardinal; procedure SpawnRec(); procedure Kill(index: Cardinal); procedure KillAll(); @@ -47,14 +48,15 @@ implementation uses sysutils, Windows,OpenGl12, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; //TParticle -Constructor TParticle.Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; RecArrayIndex : Integer); +Constructor TParticle.Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : Integer); begin X := cX; Y := cY; Tex := cTex; Live := cLive; Frame:= cFrame; - RecIndex := RecArrayIndex; + RecIndex := cRecArrayIndex; + StarType := cStarType; end; @@ -63,16 +65,27 @@ var W, H: real; Alpha : real; begin - W := 20; - H := 20; - Alpha := (-cos((Frame+1)*2*pi/16)+1); //Fade Eyecandy - glColor4f(0.99, 1, 0.6, Alpha); + Case StarType of + 1: + begin + W := 20; + H := 20; + glColor4f(0.99, 1, 0.6, Alpha); + end; + 2: + begin + W := 30; + H := 30; + glColor4f(1, 1, 0.95, Alpha); + end; + end; + glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBindTexture(GL_TEXTURE_2D, Tex_Note_Star.TexNum); + glBindTexture(GL_TEXTURE_2D, Tex); begin glBegin(GL_QUADS); @@ -139,11 +152,11 @@ begin end; -function TEffectManager.Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer): Cardinal; +function TEffectManager.Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : Integer): Cardinal; begin Result := Length(Particle); SetLength(Particle, (Result + 1)); - Particle[Result] := TParticle.Create(X, Y, Tex, Live, StartFrame, RecArrayIndex); + Particle[Result] := TParticle.Create(X, Y, Tex, Live, StartFrame, RecArrayIndex, StarType); end; @@ -162,7 +175,7 @@ for P:= 0 to high(RecArray) do Xkatze := RandomRange(Ceil(RecArray[P].xTop), Ceil(RecArray[P].xBottom)); Ykatze := RandomRange(Ceil(RecArray[P].yTop), Ceil(RecArray[P].yBottom)); RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, P); + Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, P, 1); inc(RecArray[P].CurrentStarCount); end; end; @@ -183,7 +196,7 @@ for P:= 0 to 2 do Xkatze := RandomRange(ceil(xPos) - 5 , ceil(xPos) + 10); Ykatze := RandomRange(ceil(yPos) - 5 , ceil(yPos) + 10); RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, -1); + Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, -1, 2); end; draw; end; @@ -265,7 +278,7 @@ begin Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, -1); + Spawn(Xkatze, Ykatze, Tex_Note_Perfect_Star.TexNum, 16 - RandomFrame, RandomFrame, -1, 2); end; end; diff --git a/Skins/Deluxe/Note Star.jpg b/Skins/Deluxe/Note Star.jpg index dcdd805c..1ef6243d 100644 Binary files a/Skins/Deluxe/Note Star.jpg and b/Skins/Deluxe/Note Star.jpg differ diff --git a/Skins/Deluxe/NotePerfectStar.jpg b/Skins/Deluxe/NotePerfectStar.jpg new file mode 100644 index 00000000..189a22a3 Binary files /dev/null and b/Skins/Deluxe/NotePerfectStar.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 2adfce3b..992ab1dc 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -16,6 +16,7 @@ NoteBGLeft=Note BG Left.bmp NoteBGMid=Note BG Mid.bmp NoteBGRight=Note BG Right.bmp NoteStar=Note Star.jpg +NotePerfectStar=NotePerfectStar.jpg Ball=Ball.bmp SongCover=Song Cover.jpg -- cgit v1.2.3 From 2732871a342cfdf766ccd9c9bd9644939ec58695 Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 22 Mar 2007 22:49:45 +0000 Subject: Applied recent changes to actual available skins (see previous revision details for more info) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@18 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Note Star.jpg | Bin 20091 -> 22332 bytes Skins/Classic/Standard.ini | 1 + Skins/Deluxe/Blue.ini | 1 + 3 files changed, 2 insertions(+) diff --git a/Skins/Classic/Note Star.jpg b/Skins/Classic/Note Star.jpg index dcdd805c..1ef6243d 100644 Binary files a/Skins/Classic/Note Star.jpg and b/Skins/Classic/Note Star.jpg differ diff --git a/Skins/Classic/Standard.ini b/Skins/Classic/Standard.ini index 1bb98a39..76005d81 100644 --- a/Skins/Classic/Standard.ini +++ b/Skins/Classic/Standard.ini @@ -17,6 +17,7 @@ NoteBGLeft=Note BG Left.bmp NoteBGMid=Note BG Mid.bmp NoteBGRight=Note BG Right.bmp NoteStar=Note Star.jpg +NotePerfectStar=NotePerfectStar.jpg Ball=Ball.bmp SongCover=Song Cover.jpg diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 81985a0f..d79647ca 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -16,6 +16,7 @@ NoteBGLeft=Note BG Left.bmp NoteBGMid=Note BG Mid.bmp NoteBGRight=Note BG Right.bmp NoteStar=Note Star.jpg +NotePerfectStar=NotePerfectStar.jpg Ball=Ball.bmp SongCover=Song Cover.jpg -- cgit v1.2.3 From 47c091672034720666ca036e181dcff494ba04ee Mon Sep 17 00:00:00 2001 From: mogguh Date: Fri, 23 Mar 2007 13:54:37 +0000 Subject: Some tidying in UGraphicClasses.pas (actually deleting an unused procedure) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@19 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphicClasses.pas | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index 6c131b50..d5eb44ab 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -38,7 +38,6 @@ type procedure Kill(index: Cardinal); procedure KillAll(); procedure SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); - procedure SpawnNotePerfect(xPos,yPos : real); procedure SavePerfectNotePos(Xtop, Ytop: Real); end; @@ -183,25 +182,6 @@ for P:= 0 to high(RecArray) do end; -procedure TEffectManager.SpawnNotePerfect(xPos,yPos : real); -Var - Xkatze, Ykatze : Real; - RandomFrame : Integer; - P : Integer; // P as seen on TV as Positionman -begin -//Spawn a random amount of stars within the given coordinates -//RandomRange(0,14) <- this one starts at a random frame, 16 is our last frame - would be senseless to start a particle with 16, cause it would be dead at the next frame -for P:= 0 to 2 do - begin - Xkatze := RandomRange(ceil(xPos) - 5 , ceil(xPos) + 10); - Ykatze := RandomRange(ceil(yPos) - 5 , ceil(yPos) + 10); - RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, -1, 2); - end; - draw; -end; - - procedure TEffectManager.Kill(Index: Cardinal); var LastParticleIndex : Cardinal; -- cgit v1.2.3 From 95dc3d90b3eb11080fdcd5edae37cbd35c4ffb57 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 23 Mar 2007 17:40:06 +0000 Subject: Some Changes on Database System and Header Reader Fixed Bug: Scores with 0 are added to DB Made a Class instead of many Functions Fixed a Bug in UFiles, not reading Gap from Header correctly git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@20 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDataBase.pas | 163 ++++++++++++++++++++++++++++++++++++++ Game/Code/Classes/UFiles.pas | 10 +++ Game/Code/Classes/UScores.pas | 144 --------------------------------- Game/Code/Screens/UScreenTop5.pas | 8 +- Game/Code/UltraStar.dpr | 9 ++- 5 files changed, 182 insertions(+), 152 deletions(-) create mode 100644 Game/Code/Classes/UDataBase.pas delete mode 100644 Game/Code/Classes/UScores.pas diff --git a/Game/Code/Classes/UDataBase.pas b/Game/Code/Classes/UDataBase.pas new file mode 100644 index 00000000..1ebc18db --- /dev/null +++ b/Game/Code/Classes/UDataBase.pas @@ -0,0 +1,163 @@ +unit UDataBase; + +interface + +uses USongs, SQLiteTable3; + +//-------------------- +//DataBaseSystem - Class including all DB Methods +//-------------------- +type + TDataBaseSystem = class + private + ScoreDB: TSqliteDatabase; + sFilename: string; + public + + + Destructor Free; + + Procedure Init(const Filename: string); + procedure ReadScore(var Song: TSong); + procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); + procedure WriteScore(var Song: TSong); + end; + +var + DataBase: TDataBaseSystem; + +implementation + +uses IniFiles, SysUtils; + +//-------------------- +//Create - Opens Database and Create Tables if not Exist +//-------------------- + +Procedure TDataBaseSystem.Init(const Filename: string); +begin + //Open Database + ScoreDB := TSqliteDatabase.Create(Filename); + sFilename := Filename; + + try + //Look for Tables => When not exist Create them + if not ScoreDB.TableExists('US_Scores') then + ScoreDB.execsql('CREATE TABLE `US_Scores` (`SongID` INT( 11 ) NOT NULL , `Difficulty` INT( 1 ) NOT NULL , `Player` VARCHAR( 150 ) NOT NULL , `Score` INT( 5 ) NOT NULL );'); + + if not ScoreDB.TableExists('US_Songs') then + ScoreDB.execsql('CREATE TABLE `US_Songs` (`ID` INTEGER PRIMARY KEY, `Artist` VARCHAR( 255 ) NOT NULL , `Title` VARCHAR( 255 ) NOT NULL , `TimesPlayed` int(5) NOT NULL );'); + //Not possible because of String Limitation to 255 Chars //Need to rewrite Wrapper + {if not ScoreDB.TableExists('US_SongCache') then + ScoreDB.ExecSQL('CREATE TABLE `US_SongCache` (`Path` VARCHAR( 255 ) NOT NULL , `Filename` VARCHAR( 255 ) NOT NULL , `Title` VARCHAR( 255 ) NOT NULL , `Artist` VARCHAR( 255 ) NOT NULL , `Folder` VARCHAR( 255 ) NOT NULL , `Genre` VARCHAR( 255 ) NOT NULL , `Edition` VARCHAR( 255 ) NOT NULL , `Language` VARCHAR( 255 ) NOT NULL , `Creator` VARCHAR( 255 ) NOT NULL , `Cover` VARCHAR( 255 ) NOT NULL , `Background` VARCHAR( 255 ) NOT NULL , `Video` VARCHAR( 255 ) NOT NULL , `VideoGap` FLOAT NOT NULL , `Gap` FLOAT NOT NULL , `Start` FLOAT NOT NULL , `Finish` INT( 11 ) NOT NULL , `BPM` INT( 5 ) NOT NULL , `Relative` BOOLEAN NOT NULL , `NotesGap` INT( 11 ) NOT NULL);');} + + + finally + //ScoreDB.Free; + end; + +end; + +//-------------------- +//Free - Frees Database +//-------------------- +Destructor TDataBaseSystem.Free; +begin + ScoreDB.Free; +end; + +//-------------------- +//ReadScore - Read Scores into SongArray +//-------------------- +procedure TDataBaseSystem.ReadScore(var Song: TSong); +var + TableData: TSqliteTable; + Dif: Byte; +begin + //ScoreDB := TSqliteDatabase.Create(sFilename); + try + try + //Search Song in DB + TableData := ScoreDB.GetTable('SELECT `Difficulty`, `Player`, `Score` FROM `us_scores` WHERE `SongID` = (SELECT `ID` FROM `us_songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '" LIMIT 1) ORDER BY `Score` DESC LIMIT 15'); + //Empty Old Scores + SetLength (Song.Score[0], 0); + SetLength (Song.Score[1], 0); + SetLength (Song.Score[2], 0); + + while not TableData.Eof do//Go through all Entrys + begin//Add one Entry to Array + Dif := StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Difficulty'])); + if (Dif>=0) AND (Dif<=2) then + begin + SetLength(Song.Score[Dif], Length(Song.Score[Dif]) + 1); + + Song.Score[Dif, high(Song.Score[Dif])].Name := TableData.FieldAsString(TableData.FieldIndex['Player']); + Song.Score[Dif, high(Song.Score[Dif])].Score:= StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Score'])); + end; + TableData.Next; + end; + + except //Im Fehlerfall + for Dif := 0 to 2 do + begin + SetLength(Song.Score[Dif], 1); + Song.Score[Dif, 1].Name := 'Error Reading ScoreDB'; + end; + end; + finally + //ScoreDb.Free; + end; +end; + +//-------------------- +//AddScore - Add one new Score to DB +//-------------------- +procedure TDataBaseSystem.AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); +var +ID: Integer; +TableData: TSqliteTable; +begin + //ScoreDB := TSqliteDatabase.Create(sFilename); + try + //Prevent 0 Scores from being added + if (Score > 0) then + begin + + ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); + if ID = 0 then //Song doesn't exist -> Create + begin + ScoreDB.ExecSQL ('INSERT INTO `US_Songs` ( `ID` , `Artist` , `Title` , `TimesPlayed` ) VALUES (NULL , "' + Song.Artist + '", "' + Song.Title + '", "0");'); + ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); + if ID = 0 then //Could not Create Table + exit; + end; + //Create new Entry + ScoreDB.ExecSQL('INSERT INTO `US_Scores` ( `SongID` , `Difficulty` , `Player` , `Score` ) VALUES ("' + InttoStr(ID) + '", "' + InttoStr(Level) + '", "' + Name + '", "' + InttoStr(Score) + '");'); + + //Delete Last Position when there are more than 5 Entrys + if ScoreDB.GetTableValue('SELECT COUNT(`SongID`) FROM `US_Scores` WHERE `SongID` = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'"') > 5 then + begin + TableData := ScoreDB.GetTable('SELECT `Player`, `Score` FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" ORDER BY `Score` ASC LIMIT 1'); + ScoreDB.ExecSQL('DELETE FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" AND `Player` = "' + TableData.FieldAsString(TableData.FieldIndex['Player']) + '" AND `Score` = "' + TableData.FieldAsString(TableData.FieldIndex['Score']) + '"'); + end; + + end; + finally + //ScoreDB.Free; + end; +end; + +//-------------------- +//WriteScore - Not needed with new System; But used for Increment Played Count +//-------------------- +procedure TDataBaseSystem.WriteScore(var Song: TSong); +begin + try + //Increase TimesPlayed + ScoreDB.ExecSQL ('UPDATE `us_songs` SET `TimesPlayed` = `TimesPlayed` + "1" WHERE `Title` = "' + Song.Title + '" AND `Artist` = "' + Song.Artist + '";'); + except + + end; +end; + +end. diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index 61fdab03..fed9b7f1 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -171,6 +171,16 @@ begin //Additional Header Information //--------- + // Video Gap + else if (Identifier = 'GAP') then + begin + // Replace . with , + if (Pos('.', Value) <> 0) then + Value[Pos('.', Value)] := ','; + + Song.GAP := StrtoFloatDef (Value, 0); + end + //Cover Picture else if (Identifier = 'COVER') then begin diff --git a/Game/Code/Classes/UScores.pas b/Game/Code/Classes/UScores.pas deleted file mode 100644 index f1243868..00000000 --- a/Game/Code/Classes/UScores.pas +++ /dev/null @@ -1,144 +0,0 @@ -unit UScores; - -interface - -uses USongs, SQLiteTable3; - -procedure InitScore(const Filename: string); -procedure ReadScore(var Song: TSong); -procedure WriteScore(var Song: TSong); -procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); - -var -ScoreDB: TSqliteDatabase; -sFilename: string; - -implementation - -uses IniFiles, SysUtils; - -procedure InitScore(const Filename: string); -//var - //TableData: TSqliteTable; -begin - //Open Database - ScoreDB := TSqliteDatabase.Create(Filename); - sFilename := Filename; - - try - //Look for Tables => When not exist Create them - if not ScoreDB.TableExists('US_Scores') then - ScoreDB.execsql('CREATE TABLE `US_Scores` (`SongID` INT( 11 ) NOT NULL , `Difficulty` INT( 1 ) NOT NULL , `Player` VARCHAR( 150 ) NOT NULL , `Score` INT( 5 ) NOT NULL );'); - - if not ScoreDB.TableExists('US_Songs') then - ScoreDB.execsql('CREATE TABLE `US_Songs` (`ID` INTEGER PRIMARY KEY, `Artist` VARCHAR( 255 ) NOT NULL , `Title` VARCHAR( 255 ) NOT NULL );'); - - finally - //ScoreDB.Free; - end; - -end; - -procedure ReadScore(var Song: TSong); -var - TableData: TSqliteTable; - Dif: Byte; -begin - //ScoreDB := TSqliteDatabase.Create(sFilename); - try - try - //Search Song in DB - TableData := ScoreDB.GetTable('SELECT `Difficulty`, `Player`, `Score` FROM `us_scores` WHERE `SongID` = (SELECT `ID` FROM `us_songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '" LIMIT 1) ORDER BY `Score` DESC LIMIT 15'); - //Empty Old Scores - SetLength (Song.Score[0], 0); - SetLength (Song.Score[1], 0); - SetLength (Song.Score[2], 0); - - while not TableData.Eof do//Go through all Entrys - begin//Add one Entry to Array - Dif := StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Difficulty'])); - if (Dif>=0) AND (Dif<=2) then - begin - SetLength(Song.Score[Dif], Length(Song.Score[Dif]) + 1); - - Song.Score[Dif, high(Song.Score[Dif])].Name := TableData.FieldAsString(TableData.FieldIndex['Player']); - Song.Score[Dif, high(Song.Score[Dif])].Score:= StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Score'])); - end; - TableData.Next; - end; - - except //Im Fehlerfall - for Dif := 0 to 2 do - begin - SetLength(Song.Score[Dif], 1); - Song.Score[Dif, 1].Name := 'Error Reading ScoreDB'; - end; - end; - finally - //ScoreDb.Free; - end; -end; - -procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); -var -ID: Integer; -TableData: TSqliteTable; -begin - //ScoreDB := TSqliteDatabase.Create(sFilename); - try - - ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); - if ID = 0 then //Song doesn't exist -> Create - begin - ScoreDB.ExecSQL ('INSERT INTO `US_Songs` ( `ID` , `Artist` , `Title` ) VALUES (NULL , "' + Song.Artist + '", "' + Song.Title + '");'); - ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); - if ID = 0 then //Could not Create Table - exit; - end; - //Create new Entry - ScoreDB.ExecSQL('INSERT INTO `US_Scores` ( `SongID` , `Difficulty` , `Player` , `Score` ) VALUES ("' + InttoStr(ID) + '", "' + InttoStr(Level) + '", "' + Name + '", "' + InttoStr(Score) + '");'); - - //Delete Last Position when there are more than 5 Entrys - if ScoreDB.GetTableValue('SELECT COUNT(`SongID`) FROM `US_Scores` WHERE `SongID` = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'"') > 5 then - begin - TableData := ScoreDB.GetTable('SELECT `Player`, `Score` FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" ORDER BY `Score` ASC LIMIT 1'); - ScoreDB.ExecSQL('DELETE FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" AND `Player` = "' + TableData.FieldAsString(TableData.FieldIndex['Player']) + '" AND `Score` = "' + TableData.FieldAsString(TableData.FieldIndex['Score']) + '"'); - end; - - finally - //ScoreDB.Free; - end; -end; - -//Not used with new SQLLite DB System -procedure WriteScore(var Song: TSong); -{var - F: TIniFile; - S: integer; - Lev: integer; - LevS: string; - FileName: string;} -begin - {FileName := Song.Path + ChangeFileExt(Song.FileName, '.sco'); - if (not FileExists(FileName)) or (FileExists(FileName) and DeleteFile(FileName)) then begin - // file has been deleted -> creating new file - F := TIniFile.Create(FileName); - - for Lev := 0 to 2 do begin - case Lev of - 0: LevS := 'Easy'; - 1: LevS := 'Normal'; - 2: LevS := 'Hard'; - end; - - for S := 0 to high(Song.Score[Lev]) do begin - F.WriteString(LevS + IntToStr(S+1), 'Name', Song.Score[Lev, S].Name); - F.WriteInteger(LevS + IntToStr(S+1), 'Score', Song.Score[Lev, S].Score); - - end; // for S - end; // for Lev - F.Free; - end; // if} -end; - -end. diff --git a/Game/Code/Screens/UScreenTop5.pas b/Game/Code/Screens/UScreenTop5.pas index 41f96281..94f3de1e 100644 --- a/Game/Code/Screens/UScreenTop5.pas +++ b/Game/Code/Screens/UScreenTop5.pas @@ -25,7 +25,7 @@ type implementation -uses UGraphic, UScores, UMain, UIni; +uses UGraphic, UDataBase, UMain, UIni; function TScreenTop5.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin @@ -94,10 +94,10 @@ begin PMax := Ini.Players; if Ini.Players = 4 then Ini.Players := 5; for I := 0 to PMax do - AddScore(AktSong, Ini.Difficulty, Ini.Name[I], Round(Player[I].ScoreTotalI)); + DataBase.AddScore(AktSong, Ini.Difficulty, Ini.Name[I], Round(Player[I].ScoreTotalI)); - //WriteScore(AktSong); - ReadScore(AktSong); + DataBase.WriteScore(AktSong); + DataBase.ReadScore(AktSong); Text[TextArtistTitle].Text := AktSong.Artist + ' - ' + AktSong.Title; diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 1bc19dcf..408405f8 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -42,7 +42,7 @@ uses UJoystick in 'Classes\UJoystick.pas', ULCD in 'Classes\ULCD.pas', ULight in 'Classes\ULight.pas', - UScores in 'Classes\UScores.pas', + UDataBase in 'Classes\UDataBase.pas', UCovers in 'Classes\UCovers.pas', UCatCovers in 'Classes\UCatCovers.pas', UFiles in 'Classes\UFiles.pas', @@ -258,10 +258,11 @@ begin // Score Saving System Log.BenchmarkStart(1); - Log.LogStatus('Score DB System', 'Initialization'); - InitScore('Scores.db'); + Log.LogStatus('DataBase System', 'Initialization'); + DataBase := TDataBaseSystem.Create; + DataBase.Init ('Ultrastar.db'); Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Score DB System', 1); + Log.LogBenchmark('Loading DataBase System', 1); //GoldenStarsTwinkleMod Log.BenchmarkStart(1); -- cgit v1.2.3 From 7c809200754d707f440ec45686692db405da8ae1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 12:23:00 +0000 Subject: Fixed Bug: Not translating Texts reading Theme.Ini Compiler doesn't define CompilerConst Translate correctly. Fixed by Commenting IFDEF Operations out git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@21 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 26 +++++++++++++------------- Game/Code/Screens/UScreenScore.pas | 10 +++++----- Game/Code/UltraStar.dpr | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index c4b83d8b..7dbac5a9 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -3,9 +3,6 @@ unit UThemes; interface uses -{$IFDEF TRANSLATE} - ULanguage, -{$ENDIF} IniFiles, SysUtils, Classes; type @@ -580,6 +577,9 @@ var implementation uses +{{$IFDEF TRANSLATE} + ULanguage, +{{$ENDIF} USkins, UIni; constructor TTheme.Create(FileName: string); @@ -716,7 +716,7 @@ begin //Score Text Translation Start - {$IFDEF TRANSLATE} + {{$IFDEF TRANSLATE} Main.Description[0] := Language.Translate('SING_SING'); Main.DescriptionLong[0] := Language.Translate('SING_SING_DESC'); Main.Description[1] := Language.Translate('SING_EDITOR'); @@ -725,7 +725,7 @@ begin Main.DescriptionLong[2] := Language.Translate('SING_GAME_OPTIONS_DESC'); Main.Description[3] := Language.Translate('SING_EXIT'); Main.DescriptionLong[3] := Language.Translate('SING_EXIT_DESC'); - {$ENDIF} + {{$ENDIF} //Score Text Translation End @@ -910,7 +910,7 @@ begin ThemeLoadButton(Options.ButtonRecord, 'OptionsButtonRecord'); ThemeLoadButton(Options.ButtonExit, 'OptionsButtonExit'); - {$IFDEF TRANSLATE} + {{$IFDEF TRANSLATE} Options.Description[0] := Language.Translate('SING_OPTIONS_GAME'); Options.Description[1] := Language.Translate('SING_OPTIONS_GRAPHICS'); Options.Description[2] := Language.Translate('SING_OPTIONS_SOUND'); @@ -918,7 +918,7 @@ begin Options.Description[4] := Language.Translate('SING_OPTIONS_THEMES'); Options.Description[5] := Language.Translate('SING_OPTIONS_RECORD'); Options.Description[6] := Language.Translate('SING_OPTIONS_EXIT'); - {$ENDIF} + {{$ENDIF} ThemeLoadText(Options.TextDescription, 'OptionsTextDescription'); Options.TextDescription.Text := Options.Description[0]; @@ -1137,9 +1137,9 @@ begin ThemeText.Size := ThemeIni.ReadInteger(Name, 'Size', 0); ThemeText.Align := ThemeIni.ReadInteger(Name, 'Align', 0); - {$IFDEF TRANSLATE} + {{$IFDEF TRANSLATE} ThemeText.Text := Language.Translate(ThemeIni.ReadString(Name, 'Text', '')); - {$ELSE} + {{$ELSE}{ ThemeText.Text := ThemeIni.ReadString(Name, 'Text', ''); {$ENDIF} @@ -1268,9 +1268,9 @@ var begin DecimalSeparator := '.'; - {$IFDEF TRANSLATE} + {{$IFDEF TRANSLATE} ThemeSelect.Text := Language.Translate(ThemeIni.ReadString(Name, 'Text', '')); - {$ELSE} + {{$ELSE}{ ThemeSelect.Text := ThemeIni.ReadString(Name, 'Text', ''); {$ENDIF} @@ -1314,9 +1314,9 @@ var begin DecimalSeparator := '.'; - {$IFDEF TRANSLATE} + {{$IFDEF TRANSLATE} ThemeSelectS.Text := Language.Translate(ThemeIni.ReadString(Name, 'Text', '')); - {$ELSE} + {{$ELSE}{ ThemeSelectS.Text := ThemeIni.ReadString(Name, 'Text', ''); {$ENDIF} diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index 2e509a6f..eb92a3d2 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -45,11 +45,11 @@ type implementation -{$IFDEF TRANSLATE} +{{$IFDEF TRANSLATE} uses UGraphic, UScreenSong, UMenuStatic, UTime, UMain, UIni, ULanguage; -{$ELSE} +{{$ELSE}{ uses UGraphic, UScreenSong, UMenuStatic, UTime, UMain, UIni; -{$ENDIF} +{{$ENDIF} function TScreenScore.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin Result := true; @@ -291,7 +291,7 @@ begin Text[TextName[PP]].Text := Ini.Name[P]; - {$IFDEF TRANSLATE} + {{$IFDEF TRANSLATE} case (Player[P].ScoreTotalI) of 0..2000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_TONE_DEAF'); 2010..4000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_AMATEUR'); @@ -301,7 +301,7 @@ begin 9010..9800: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_SUPERSTAR'); 9810..10000: Text[TextScore[PP]].Text := Language.Translate('SING_SCORE_ULTRASTAR'); end; - {$ELSE} + {{$ELSE}{ case (Player[P].ScoreTotalI) of 0..2000: Text[TextScore[PP]].Text := 'Tone Deaf'; 2010..4000: Text[TextScore[PP]].Text := 'Amateur'; diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 408405f8..9b73883a 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -1,4 +1,4 @@ - program UltraStar; +program UltraStar; {$DEFINE TRANSLATE} //DEFINE THEMESAVE} -- cgit v1.2.3 From 59314cc9dc1812715687edb8a92fbe9d1b6d2591 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 13:32:54 +0000 Subject: Changed Fonts from BMP to PNG git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@22 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Fonts/512x512 Normal.dat | Bin 512 -> 0 bytes Game/Fonts/Bold/Font 1024 Bold 16.bmp | Bin 524406 -> 0 bytes Game/Fonts/Bold/Font 1024 Bold 16.old.bmp | Bin 524408 -> 0 bytes Game/Fonts/Bold/Font 1024 Bold 16.png | Bin 0 -> 44587 bytes Game/Fonts/Normal/Font Normal 16.bmp | Bin 131190 -> 0 bytes Game/Fonts/Normal/Font Normal 16.old.bmp | Bin 131192 -> 0 bytes Game/Fonts/Normal/Font Normal 16.png | Bin 0 -> 47016 bytes Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp | Bin 524406 -> 0 bytes Game/Fonts/Outline 1/Outline 36 (1024) 16c.png | Bin 0 -> 49840 bytes Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp | Bin 131190 -> 0 bytes Game/Fonts/Outline 2/Outline 36 (1024) 16c.png | Bin 0 -> 49019 bytes 11 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Game/Fonts/512x512 Normal.dat delete mode 100644 Game/Fonts/Bold/Font 1024 Bold 16.bmp delete mode 100644 Game/Fonts/Bold/Font 1024 Bold 16.old.bmp create mode 100644 Game/Fonts/Bold/Font 1024 Bold 16.png delete mode 100644 Game/Fonts/Normal/Font Normal 16.bmp delete mode 100644 Game/Fonts/Normal/Font Normal 16.old.bmp create mode 100644 Game/Fonts/Normal/Font Normal 16.png delete mode 100644 Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp create mode 100644 Game/Fonts/Outline 1/Outline 36 (1024) 16c.png delete mode 100644 Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp create mode 100644 Game/Fonts/Outline 2/Outline 36 (1024) 16c.png diff --git a/Game/Fonts/512x512 Normal.dat b/Game/Fonts/512x512 Normal.dat deleted file mode 100644 index 52666d1a..00000000 Binary files a/Game/Fonts/512x512 Normal.dat and /dev/null differ diff --git a/Game/Fonts/Bold/Font 1024 Bold 16.bmp b/Game/Fonts/Bold/Font 1024 Bold 16.bmp deleted file mode 100644 index f0611a53..00000000 Binary files a/Game/Fonts/Bold/Font 1024 Bold 16.bmp and /dev/null differ diff --git a/Game/Fonts/Bold/Font 1024 Bold 16.old.bmp b/Game/Fonts/Bold/Font 1024 Bold 16.old.bmp deleted file mode 100644 index d485567d..00000000 Binary files a/Game/Fonts/Bold/Font 1024 Bold 16.old.bmp and /dev/null differ diff --git a/Game/Fonts/Bold/Font 1024 Bold 16.png b/Game/Fonts/Bold/Font 1024 Bold 16.png new file mode 100644 index 00000000..148cf1c1 Binary files /dev/null and b/Game/Fonts/Bold/Font 1024 Bold 16.png differ diff --git a/Game/Fonts/Normal/Font Normal 16.bmp b/Game/Fonts/Normal/Font Normal 16.bmp deleted file mode 100644 index 6534d9c3..00000000 Binary files a/Game/Fonts/Normal/Font Normal 16.bmp and /dev/null differ diff --git a/Game/Fonts/Normal/Font Normal 16.old.bmp b/Game/Fonts/Normal/Font Normal 16.old.bmp deleted file mode 100644 index 725f05bd..00000000 Binary files a/Game/Fonts/Normal/Font Normal 16.old.bmp and /dev/null differ diff --git a/Game/Fonts/Normal/Font Normal 16.png b/Game/Fonts/Normal/Font Normal 16.png new file mode 100644 index 00000000..f4a8a713 Binary files /dev/null and b/Game/Fonts/Normal/Font Normal 16.png differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp b/Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp deleted file mode 100644 index 25b03a57..00000000 Binary files a/Game/Fonts/Outline 1/Outline 36 (1024) 16c.bmp and /dev/null differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024) 16c.png b/Game/Fonts/Outline 1/Outline 36 (1024) 16c.png new file mode 100644 index 00000000..1e213823 Binary files /dev/null and b/Game/Fonts/Outline 1/Outline 36 (1024) 16c.png differ diff --git a/Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp b/Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp deleted file mode 100644 index 6d78ba77..00000000 Binary files a/Game/Fonts/Outline 2/5 - Outline dark edited 16c.bmp and /dev/null differ diff --git a/Game/Fonts/Outline 2/Outline 36 (1024) 16c.png b/Game/Fonts/Outline 2/Outline 36 (1024) 16c.png new file mode 100644 index 00000000..d0a0a390 Binary files /dev/null and b/Game/Fonts/Outline 2/Outline 36 (1024) 16c.png differ -- cgit v1.2.3 From 5ce375d1b7493e41a3ac14b979932d6cf7d73285 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 13:37:12 +0000 Subject: Copyed PNG Texture Support from UltraStar 0.5.3 git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@23 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UTexture.pas | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas index 767d53ec..b50ab6bf 100644 --- a/Game/Code/Classes/UTexture.pas +++ b/Game/Code/Classes/UTexture.pas @@ -11,7 +11,7 @@ unit UTexture; // Arrow (for arrows, white is white, gray has color, black is transparent); interface -uses OpenGL12, Windows, Math, Classes, SysUtils, Graphics, JPEG, UThemes; +uses OpenGL12, Windows, Math, Classes, SysUtils, Graphics, JPEG, UThemes, PNGImage; procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32; //procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32; @@ -192,6 +192,7 @@ var Res: TResourceStream; TextureB: TBitmap; TextureJ: TJPEGImage; + TexturePNG: TPNGObject; Pet: integer; Pet2: integer; @@ -215,10 +216,14 @@ begin end; if FromRegistry or ((not FromRegistry) and FileExists(Nazwa)) then begin - TextureB := TBitmap.Create; - if Format = 'JPG' then begin + if Format = 'BMP' then begin + if FromRegistry then TextureB.LoadFromStream(Res) + else TextureB.LoadFromFile(Nazwa); + end + + else if Format = 'JPG' then begin TextureJ := TJPEGImage.Create; if FromRegistry then TextureJ.LoadFromStream(Res) else begin @@ -229,10 +234,19 @@ begin end; TextureB.Assign(TextureJ); TextureJ.Free; - end; - if Format = 'BMP' then begin - if FromRegistry then TextureB.LoadFromStream(Res) - else TextureB.LoadFromFile(Nazwa); + end + + else if Format = 'PNG' then begin + TexturePNG := TPNGObject.Create; + if FromRegistry then TexturePNG.LoadFromStream(Res) + else begin + if FileExists(Nazwa) then + TexturePNG.LoadFromFile(Nazwa) + else + Exit; + end; + TextureB.Assign(TexturePNG); + TexturePNG.Free; end; if FromRegistry then Res.Free; -- cgit v1.2.3 From 467e742c7c03c78f0de5053cfe012cf6a9299960 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 14:01:23 +0000 Subject: Changed Fonts from BMP to PNG git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@24 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/TextGL.pas | 8 ++++---- Game/Code/UltraStar.rc | 12 +++++------- Game/Fonts/Bold/Font 1024 Bold.dat | Bin 256 -> 256 bytes Game/Fonts/Normal/Font Normal.dat | Bin 256 -> 256 bytes Game/Fonts/Outline 1/Outline 36 (1024).dat | Bin 256 -> 256 bytes Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG | Bin 0 -> 49019 bytes Game/Fonts/Outline 2/Outline.dat | Bin 256 -> 256 bytes 7 files changed, 9 insertions(+), 11 deletions(-) create mode 100644 Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG diff --git a/Game/Code/Classes/TextGL.pas b/Game/Code/Classes/TextGL.pas index cf09e48b..0f4ae82e 100644 --- a/Game/Code/Classes/TextGL.pas +++ b/Game/Code/Classes/TextGL.pas @@ -62,25 +62,25 @@ begin ActFont := 0; SetLength(Fonts, 5); - Fonts[0].Tex := Texture.LoadTexture(true, 'Font', 'BMP', 'Font', 0); + Fonts[0].Tex := Texture.LoadTexture(true, 'Font', 'PNG', 'Font', 0); Fonts[0].Tex.H := 30; Fonts[0].AspectW := 0.9; Fonts[0].Done := -1; Fonts[0].Outline := 0; - Fonts[1].Tex := Texture.LoadTexture(true, 'FontB', 'BMP', 'Font', 0); + Fonts[1].Tex := Texture.LoadTexture(true, 'FontB', 'PNG', 'Font', 0); Fonts[1].Tex.H := 30; Fonts[1].AspectW := 1; Fonts[1].Done := -1; Fonts[1].Outline := 0; - Fonts[2].Tex := Texture.LoadTexture(true, 'FontO', 'BMP', 'Font Outline', 0); + Fonts[2].Tex := Texture.LoadTexture(true, 'FontO', 'PNG', 'Font Outline', 0); Fonts[2].Tex.H := 30; Fonts[2].AspectW := 0.95; Fonts[2].Done := -1; Fonts[2].Outline := 5; - Fonts[3].Tex := Texture.LoadTexture(true, 'FontO2', 'BMP', 'Font Outline 2', 0); + Fonts[3].Tex := Texture.LoadTexture(true, 'FontO2', 'PNG', 'Font Outline 2', 0); Fonts[3].Tex.H := 30; Fonts[3].AspectW := 0.95; Fonts[3].Done := -1; diff --git a/Game/Code/UltraStar.rc b/Game/Code/UltraStar.rc index 22ee2142..0ae2b756 100644 --- a/Game/Code/UltraStar.rc +++ b/Game/Code/UltraStar.rc @@ -1,15 +1,13 @@ -Button JPG "..\Graphics\MusicWheelItem song.jpg" - -Font BMP "..\Fonts\Normal\Font Normal 16.bmp" +Font PNG "..\Fonts\Normal\Font Normal 16.PNG" Font FNT "..\Fonts\Normal\Font Normal.dat" -FontB BMP "..\Fonts\Bold\Font 1024 Bold 16.bmp" +FontB PNG "..\Fonts\Bold\Font 1024 Bold 16.PNG" FontB FNT "..\Fonts\Bold\Font 1024 Bold.dat" -FontO BMP "..\Fonts\Outline 1\Outline 36 (1024) 16c.bmp" +FontO PNG "..\Fonts\Outline 1\Outline 36 (1024) 16c.PNG" FontO FNT "..\Fonts\Outline 1\Outline 36 (1024).dat" -FontO2 BMP "..\Fonts\Outline 2\5 - Outline Dark Edited 16c.bmp" +FontO2 PNG "..\Fonts\Outline 2\5 - Outline Dark Edited 16c.PNG" FontO2 FNT "..\Fonts\Outline 2\Outline.dat" -MAINICON ICON "..\Graphics\us.ico" +MAINICON ICON "..\Graphics\us.ico" \ No newline at end of file diff --git a/Game/Fonts/Bold/Font 1024 Bold.dat b/Game/Fonts/Bold/Font 1024 Bold.dat index 280a6cb4..ea9f2484 100644 Binary files a/Game/Fonts/Bold/Font 1024 Bold.dat and b/Game/Fonts/Bold/Font 1024 Bold.dat differ diff --git a/Game/Fonts/Normal/Font Normal.dat b/Game/Fonts/Normal/Font Normal.dat index 1b517a0e..b4f02d90 100644 Binary files a/Game/Fonts/Normal/Font Normal.dat and b/Game/Fonts/Normal/Font Normal.dat differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024).dat b/Game/Fonts/Outline 1/Outline 36 (1024).dat index 280a6cb4..ea9f2484 100644 Binary files a/Game/Fonts/Outline 1/Outline 36 (1024).dat and b/Game/Fonts/Outline 1/Outline 36 (1024).dat differ diff --git a/Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG b/Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG new file mode 100644 index 00000000..d0a0a390 Binary files /dev/null and b/Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG differ diff --git a/Game/Fonts/Outline 2/Outline.dat b/Game/Fonts/Outline 2/Outline.dat index 9f1042e6..ea9f2484 100644 Binary files a/Game/Fonts/Outline 2/Outline.dat and b/Game/Fonts/Outline 2/Outline.dat differ -- cgit v1.2.3 From 75a6663b386f30a05814d82291786c1d73b3e5c1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 14:03:53 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@25 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Fonts/Bold/Thumbs.db | Bin 9216 -> 0 bytes Game/Fonts/Normal/Thumbs.db | Bin 20992 -> 0 bytes Game/Fonts/Outline 1/Photoshop.psd | Bin 952610 -> 0 bytes Game/Fonts/Outline 1/Thumbs.db | Bin 9728 -> 0 bytes Game/Fonts/Outline 2/Outline 36 (1024) 16c.png | Bin 49019 -> 0 bytes Game/Fonts/Outline 2/Thumbs.db | Bin 9216 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Game/Fonts/Bold/Thumbs.db delete mode 100644 Game/Fonts/Normal/Thumbs.db delete mode 100644 Game/Fonts/Outline 1/Photoshop.psd delete mode 100644 Game/Fonts/Outline 1/Thumbs.db delete mode 100644 Game/Fonts/Outline 2/Outline 36 (1024) 16c.png delete mode 100644 Game/Fonts/Outline 2/Thumbs.db diff --git a/Game/Fonts/Bold/Thumbs.db b/Game/Fonts/Bold/Thumbs.db deleted file mode 100644 index a445e690..00000000 Binary files a/Game/Fonts/Bold/Thumbs.db and /dev/null differ diff --git a/Game/Fonts/Normal/Thumbs.db b/Game/Fonts/Normal/Thumbs.db deleted file mode 100644 index 2cad5e2b..00000000 Binary files a/Game/Fonts/Normal/Thumbs.db and /dev/null differ diff --git a/Game/Fonts/Outline 1/Photoshop.psd b/Game/Fonts/Outline 1/Photoshop.psd deleted file mode 100644 index d7d0e99d..00000000 Binary files a/Game/Fonts/Outline 1/Photoshop.psd and /dev/null differ diff --git a/Game/Fonts/Outline 1/Thumbs.db b/Game/Fonts/Outline 1/Thumbs.db deleted file mode 100644 index b6e96879..00000000 Binary files a/Game/Fonts/Outline 1/Thumbs.db and /dev/null differ diff --git a/Game/Fonts/Outline 2/Outline 36 (1024) 16c.png b/Game/Fonts/Outline 2/Outline 36 (1024) 16c.png deleted file mode 100644 index d0a0a390..00000000 Binary files a/Game/Fonts/Outline 2/Outline 36 (1024) 16c.png and /dev/null differ diff --git a/Game/Fonts/Outline 2/Thumbs.db b/Game/Fonts/Outline 2/Thumbs.db deleted file mode 100644 index 685a4ee5..00000000 Binary files a/Game/Fonts/Outline 2/Thumbs.db and /dev/null differ -- cgit v1.2.3 From 150741a2137e0d097d91831273be01fb8aed516d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 14:04:06 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@26 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp | Bin 524408 -> 0 bytes Game/Fonts/Backup/Bold/Font 1024 Bold.dat | Bin 256 -> 0 bytes Game/Fonts/Backup/Bold/Thumbs.db | Bin 9216 -> 0 bytes Game/Fonts/Backup/Normal/Font Normal 16.bmp | Bin 131192 -> 0 bytes Game/Fonts/Backup/Normal/Font Normal.dat | Bin 256 -> 0 bytes Game/Fonts/Backup/Normal/Thumbs.db | Bin 8704 -> 0 bytes Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp | Bin 524408 -> 0 bytes Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat | Bin 256 -> 0 bytes Game/Fonts/Backup/Outline 1/Thumbs.db | Bin 9728 -> 0 bytes .../Backup/Outline 2/5 - Outline dark edited 16c.bmp | Bin 131192 -> 0 bytes Game/Fonts/Backup/Outline 2/Outline.dat | Bin 256 -> 0 bytes Game/Fonts/Backup/Outline 2/Thumbs.db | Bin 9216 -> 0 bytes 12 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp delete mode 100644 Game/Fonts/Backup/Bold/Font 1024 Bold.dat delete mode 100644 Game/Fonts/Backup/Bold/Thumbs.db delete mode 100644 Game/Fonts/Backup/Normal/Font Normal 16.bmp delete mode 100644 Game/Fonts/Backup/Normal/Font Normal.dat delete mode 100644 Game/Fonts/Backup/Normal/Thumbs.db delete mode 100644 Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp delete mode 100644 Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat delete mode 100644 Game/Fonts/Backup/Outline 1/Thumbs.db delete mode 100644 Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp delete mode 100644 Game/Fonts/Backup/Outline 2/Outline.dat delete mode 100644 Game/Fonts/Backup/Outline 2/Thumbs.db diff --git a/Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp b/Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp deleted file mode 100644 index d485567d..00000000 Binary files a/Game/Fonts/Backup/Bold/Font 1024 Bold 16.bmp and /dev/null differ diff --git a/Game/Fonts/Backup/Bold/Font 1024 Bold.dat b/Game/Fonts/Backup/Bold/Font 1024 Bold.dat deleted file mode 100644 index ac64a71a..00000000 Binary files a/Game/Fonts/Backup/Bold/Font 1024 Bold.dat and /dev/null differ diff --git a/Game/Fonts/Backup/Bold/Thumbs.db b/Game/Fonts/Backup/Bold/Thumbs.db deleted file mode 100644 index a445e690..00000000 Binary files a/Game/Fonts/Backup/Bold/Thumbs.db and /dev/null differ diff --git a/Game/Fonts/Backup/Normal/Font Normal 16.bmp b/Game/Fonts/Backup/Normal/Font Normal 16.bmp deleted file mode 100644 index 725f05bd..00000000 Binary files a/Game/Fonts/Backup/Normal/Font Normal 16.bmp and /dev/null differ diff --git a/Game/Fonts/Backup/Normal/Font Normal.dat b/Game/Fonts/Backup/Normal/Font Normal.dat deleted file mode 100644 index 5f69cfc8..00000000 Binary files a/Game/Fonts/Backup/Normal/Font Normal.dat and /dev/null differ diff --git a/Game/Fonts/Backup/Normal/Thumbs.db b/Game/Fonts/Backup/Normal/Thumbs.db deleted file mode 100644 index 469eaf5c..00000000 Binary files a/Game/Fonts/Backup/Normal/Thumbs.db and /dev/null differ diff --git a/Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp b/Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp deleted file mode 100644 index 893725d4..00000000 Binary files a/Game/Fonts/Backup/Outline 1/Outline 36 (1024) 16c.bmp and /dev/null differ diff --git a/Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat b/Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat deleted file mode 100644 index e9fb10fa..00000000 Binary files a/Game/Fonts/Backup/Outline 1/Outline 36 (1024).dat and /dev/null differ diff --git a/Game/Fonts/Backup/Outline 1/Thumbs.db b/Game/Fonts/Backup/Outline 1/Thumbs.db deleted file mode 100644 index 94e6c896..00000000 Binary files a/Game/Fonts/Backup/Outline 1/Thumbs.db and /dev/null differ diff --git a/Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp b/Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp deleted file mode 100644 index b7285946..00000000 Binary files a/Game/Fonts/Backup/Outline 2/5 - Outline dark edited 16c.bmp and /dev/null differ diff --git a/Game/Fonts/Backup/Outline 2/Outline.dat b/Game/Fonts/Backup/Outline 2/Outline.dat deleted file mode 100644 index 16ca7fd7..00000000 Binary files a/Game/Fonts/Backup/Outline 2/Outline.dat and /dev/null differ diff --git a/Game/Fonts/Backup/Outline 2/Thumbs.db b/Game/Fonts/Backup/Outline 2/Thumbs.db deleted file mode 100644 index 685a4ee5..00000000 Binary files a/Game/Fonts/Backup/Outline 2/Thumbs.db and /dev/null differ -- cgit v1.2.3 -- cgit v1.2.3 From 061c58bc7c3395fc4f3ceafb4b9ce75a70fe1a22 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 24 Mar 2007 18:28:22 +0000 Subject: Initial Release There is Still a Bug Converting DB Scores to SCO Files git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@28 b956fd51-792f-4845-bead-9b4dfca2ff2c --- ScoreConverter/ScoreConverter.dpr | 17 +++ ScoreConverter/ScoreConverter.ico | Bin 0 -> 766 bytes ScoreConverter/ScoreConverter.res | Bin 0 -> 876 bytes ScoreConverter/ToDo.txt | 2 + ScoreConverter/UScores.pas | 102 +++++++++++++++++ ScoreConverter/USongs.pas | 160 ++++++++++++++++++++++++++ ScoreConverter/Umainform.dfm | 123 ++++++++++++++++++++ ScoreConverter/Umainform.pas | 228 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 632 insertions(+) create mode 100644 ScoreConverter/ScoreConverter.dpr create mode 100644 ScoreConverter/ScoreConverter.ico create mode 100644 ScoreConverter/ScoreConverter.res create mode 100644 ScoreConverter/ToDo.txt create mode 100644 ScoreConverter/UScores.pas create mode 100644 ScoreConverter/USongs.pas create mode 100644 ScoreConverter/Umainform.dfm create mode 100644 ScoreConverter/Umainform.pas diff --git a/ScoreConverter/ScoreConverter.dpr b/ScoreConverter/ScoreConverter.dpr new file mode 100644 index 00000000..5736b733 --- /dev/null +++ b/ScoreConverter/ScoreConverter.dpr @@ -0,0 +1,17 @@ +program ScoreConverter; + +uses + Forms, + Umainform in 'Umainform.pas' {mainform}, + UScores in 'UScores.pas', + UDataBase in '..\Game\Code\Classes\UDataBase.pas', + USongs in 'USongs.pas'; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Score Converter'; + Application.CreateForm(Tmainform, mainform); + Application.Run; +end. diff --git a/ScoreConverter/ScoreConverter.ico b/ScoreConverter/ScoreConverter.ico new file mode 100644 index 00000000..80319014 Binary files /dev/null and b/ScoreConverter/ScoreConverter.ico differ diff --git a/ScoreConverter/ScoreConverter.res b/ScoreConverter/ScoreConverter.res new file mode 100644 index 00000000..2d3bea87 Binary files /dev/null and b/ScoreConverter/ScoreConverter.res differ diff --git a/ScoreConverter/ToDo.txt b/ScoreConverter/ToDo.txt new file mode 100644 index 00000000..e8987f87 --- /dev/null +++ b/ScoreConverter/ToDo.txt @@ -0,0 +1,2 @@ +There is still a Bug when Writing Scores from DB back to SCo files. +Most high entrys are duplicated don't know why... \ No newline at end of file diff --git a/ScoreConverter/UScores.pas b/ScoreConverter/UScores.pas new file mode 100644 index 00000000..3e2c4e92 --- /dev/null +++ b/ScoreConverter/UScores.pas @@ -0,0 +1,102 @@ +unit UScores; + +interface + +uses USongs; + +procedure ReadScore(var Song: TSong); +procedure WriteScore(var Song: TSong); +procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); + +implementation + +uses IniFiles, SysUtils; + +procedure ReadScore(var Song: TSong); +var + F: TIniFile; + S: string; + P: integer; + Lev: integer; + LevS: string; +begin + F := TIniFile.Create(Song.Path + ChangeFileExt(Song.FileName, '.sco')); + + for Lev := 0 to 2 do begin + case Lev of + 0: LevS := 'Easy'; + 1: LevS := 'Normal'; + 2: LevS := 'Hard'; + end; + + P := 1; + S := F.ReadString(LevS + IntToStr(P), 'Name', ''); + while (S <> '') and (P<=5) do begin + SetLength(Song.Score[Lev], P); + Song.Score[Lev, P-1].Name := S; + Song.Score[Lev, P-1].Score := F.ReadInteger(LevS + IntToStr(P), 'Score', 0); + + Inc(P); + S := F.ReadString(LevS + IntToStr(P), 'Name', ''); + end; + end; +end; + +procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); +var + S: integer; + S2: integer; +begin + S := 0; + while (S <= High(Song.Score[Level])) and (Score <= Song.Score[Level, S].Score) do + Inc(S); + // S has the number for new score + + + // we create new score + SetLength(Song.Score[Level], Length(Song.Score[Level]) + 1); + + // we move down old scores + for S2 := High(Song.Score[Level])-1 downto S do + Song.Score[Level, S2+1] := Song.Score[Level, S2]; + + // we fill new score + Song.Score[Level, S].Name := Name; + Song.Score[Level, S].Score := Score; + + if Length(Song.Score[Level]) > 5 then begin + SetLength(Song.Score[Level], 5); + end; +end; + +procedure WriteScore(var Song: TSong); +var + F: TIniFile; + S: integer; + Lev: integer; + LevS: string; + FileName: string; +begin + FileName := Song.Path + ChangeFileExt(Song.FileName, '.sco'); + if (not FileExists(FileName)) or (FileExists(FileName) and DeleteFile(FileName)) then begin + // file has been deleted -> creating new file + F := TIniFile.Create(FileName); + + for Lev := 0 to 2 do begin + case Lev of + 0: LevS := 'Easy'; + 1: LevS := 'Normal'; + 2: LevS := 'Hard'; + end; + + for S := 0 to high(Song.Score[Lev]) do begin + F.WriteString(LevS + IntToStr(S+1), 'Name', Song.Score[Lev, S].Name); + F.WriteInteger(LevS + IntToStr(S+1), 'Score', Song.Score[Lev, S].Score); + + end; // for S + end; // for Lev + F.Free; + end; // if +end; + +end. diff --git a/ScoreConverter/USongs.pas b/ScoreConverter/USongs.pas new file mode 100644 index 00000000..a43ea61e --- /dev/null +++ b/ScoreConverter/USongs.pas @@ -0,0 +1,160 @@ +unit USongs; + +interface + +type + TScore = record + Name: string; + Score: integer; + Length: string; + end; + + TSong = record + Path: string; + FileName: string; + + Title: string; + Artist: string; + + Score: array[0..2] of array of TScore; + end; + + TSongs = class + LastCount: Integer; + Song: array of TSong; // array of songs + + function ReadHeader(var rSong: TSong): boolean; + procedure BrowseDir(Dir: string); // Browse a dir + subdirs for songfiles + end; + + var Songs: TSongs; + +implementation +uses Sysutils, UMainForm, Dialogs; + +function TSongs.ReadHeader(var rSong: TSong): boolean; +var + Line, Identifier, Value: String; + Temp: word; + Done: byte; + SongFile: Textfile; +begin + Result := False; + + + //Open File and set File Pointer to the beginning + AssignFile(SongFile, rSong.Path + rSong.FileName); + Reset(SongFile); + + //Read Header + Result := true; + + //Read first Line + ReadLn (SongFile, Line); + + if (Length(Line)<=0) then + begin + Result := False; + Exit; + end; + Done := 0; + //Read Lines while Line starts with # + While (Line[1] = '#') do + begin + Temp := Pos(':', Line); + + //Line has a Seperator-> Headerline + if (Temp <> 0) then + begin + //Read Identifier and Value + Identifier := Uppercase(Trim(Copy(Line, 2, Temp - 2))); //Uppercase is for Case Insensitive Checks + Value := Trim(Copy(Line, Temp + 1,Length(Line) - Temp)); + + //Check the Identifier (If Value is given) + if (Length(Value) <> 0) then + begin + + //----------- + //Required Attributes + //----------- + + //Title + if (Identifier = 'TITLE') then + begin + rSong.Title := Value; + + //Add Title Flag to Done + Done := Done or 1; + end + + //Artist + else if (Identifier = 'ARTIST') then + begin + rSong.Artist := Value; + + //Add Artist Flag to Done + Done := Done or 2; + end; + + end; + end; + + if not EOf(SongFile) then + ReadLn (SongFile, Line) + else + begin + Result := False; + break; + end; + + //End on first empty Line + if (Length(Line) = 0) then + break; + end; + + //Check if all Required Values are given + if (Done <> 3) then + begin + Result := False; + end; + + //And Close File + CloseFile(SongFile); +end; + +procedure TSongs.BrowseDir(Dir: string); +var + SR: TSearchRec; // for parsing Songs Directory + SLen: integer; +begin + if FindFirst(Dir + '*', faDirectory, SR) = 0 then begin + repeat + if (SR.Name <> '.') and (SR.Name <> '..') then + BrowseDir(Dir + Sr.Name + '\'); + until FindNext(SR) <> 0; + end; + FindClose(SR); + + if FindFirst(Dir + '*.txt', 0, SR) = 0 then begin + repeat + SLen := Length(Song); + SetLength(Song, SLen + 1); + + Song[SLen].Path := Dir; + Song[SLen].FileName := SR.Name; + + if (ReadHeader(Song[SLen]) = false) then SetLength(Song, SLen); + + //update Songs Label + if LastCount <> SLen div 30 then + begin + LastCount := SLen div 30; + MainForm.UpdateLoadedSongs(Dir, SLen); + end; + + until FindNext(SR) <> 0; + end; // if FindFirst + FindClose(SR); +end; + +end. diff --git a/ScoreConverter/Umainform.dfm b/ScoreConverter/Umainform.dfm new file mode 100644 index 00000000..a4291e7b --- /dev/null +++ b/ScoreConverter/Umainform.dfm @@ -0,0 +1,123 @@ +object mainform: Tmainform + Left = 328 + Top = 228 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + BorderIcons = [biSystemMenu, biMinimize] + BorderStyle = bsSingle + Caption = 'Ultrastar Deluxe Score Converter' + ClientHeight = 159 + ClientWidth = 449 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poDesktopCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 8 + Top = 8 + Width = 60 + Height = 13 + Caption = 'SongFolder: ' + end + object lFolder: TLabel + Left = 8 + Top = 24 + Width = 29 + Height = 13 + Caption = 'Folder' + end + object Label2: TLabel + Left = 8 + Top = 48 + Width = 49 + Height = 13 + Caption = 'Database:' + end + object lDatabase: TLabel + Left = 8 + Top = 64 + Width = 46 + Height = 13 + Caption = 'Database' + end + object lDatabase2: TLabel + Left = 72 + Top = 48 + Width = 54 + Height = 13 + Caption = 'lDatabase2' + end + object lFolder2: TLabel + Left = 72 + Top = 8 + Width = 37 + Height = 13 + Caption = 'lFolder2' + end + object lStatus: TLabel + Left = 0 + Top = 96 + Width = 449 + Height = 13 + Alignment = taCenter + AutoSize = False + Caption = 'lStatus' + end + object bFLoad: TButton + Left = 176 + Top = 8 + Width = 57 + Height = 17 + Caption = 'Load' + TabOrder = 0 + OnClick = bFLoadClick + end + object bDLoad: TButton + Left = 176 + Top = 48 + Width = 57 + Height = 17 + Caption = 'Load' + TabOrder = 1 + OnClick = bDLoadClick + end + object bToDB: TButton + Left = 16 + Top = 112 + Width = 153 + Height = 17 + Caption = 'Convert *.SCO to Database' + Enabled = False + TabOrder = 2 + OnClick = bToDBClick + end + object bFromDB: TButton + Left = 288 + Top = 112 + Width = 145 + Height = 17 + Caption = 'Convert Database to *.SCO' + Enabled = False + TabOrder = 3 + OnClick = bFromDBClick + end + object pProgress: TProgressBar + Left = 8 + Top = 136 + Width = 433 + Height = 17 + TabOrder = 4 + end + object oDatabase: TOpenDialog + Filter = 'Ultrastar Deluxe Database|ultrastar.db' + Left = 136 + Top = 48 + end +end diff --git a/ScoreConverter/Umainform.pas b/ScoreConverter/Umainform.pas new file mode 100644 index 00000000..20c3e494 --- /dev/null +++ b/ScoreConverter/Umainform.pas @@ -0,0 +1,228 @@ +unit Umainform; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, UDataBase, ShellAPI, ShlObj, USongs; + +type + Tmainform = class(TForm) + Label1: TLabel; + lFolder: TLabel; + bFLoad: TButton; + Label2: TLabel; + lDatabase: TLabel; + bDLoad: TButton; + lDatabase2: TLabel; + lFolder2: TLabel; + bToDB: TButton; + bFromDB: TButton; + pProgress: TProgressBar; + oDatabase: TOpenDialog; + lStatus: TLabel; + procedure FormCreate(Sender: TObject); + procedure bDLoadClick(Sender: TObject); + function BrowseDialog (const Title: string; const Flag: integer): string; + procedure bFLoadClick(Sender: TObject); + procedure UpdateLoadedSongs(Path: String; Count: integer); + procedure bToDBClick(Sender: TObject); + procedure bFromDBClick(Sender: TObject); + private + { Private-Deklarationen } + public + { Public-Deklarationen } + end; + +var + mainform: Tmainform; + DBLoaded: Boolean; + SFLoaded: Boolean; + + +implementation + +uses UScores; + +{$R *.dfm} + +function Tmainform.BrowseDialog + (const Title: string; const Flag: integer): string; +var + lpItemID : PItemIDList; + BrowseInfo : TBrowseInfo; + DisplayName : array[0..MAX_PATH] of char; + TempPath : array[0..MAX_PATH] of char; +begin + Result:=''; + FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); + with BrowseInfo do begin + hwndOwner := Application.Handle; + pszDisplayName := @DisplayName; + lpszTitle := PChar(Title); + ulFlags := Flag; + end; + lpItemID := SHBrowseForFolder(BrowseInfo); + if lpItemId <> nil then begin + SHGetPathFromIDList(lpItemID, TempPath); + Result := TempPath; + GlobalFreePtr(lpItemID); + end; +end; + +procedure Tmainform.FormCreate(Sender: TObject); +begin + Database := TDataBaseSystem.Create; + Songs := TSongs.Create; + lStatus.Caption := 'Welcome to USD Score Converter'; + lFolder2.Caption := 'No Songs loaded'; + lFolder.Caption := ''; + lDataBase2.Caption := 'No Database loaded'; + lDataBase.Caption := ''; +end; + +procedure Tmainform.bDLoadClick(Sender: TObject); +begin + if oDatabase.Execute then + begin + try + Database.Init(oDataBase.FileName); + lDataBase2.Caption := 'Database loaded'; + lDataBase.Caption := oDataBase.FileName; + DBLoaded := True; + except + lDataBase2.Caption := 'No Database loaded'; + lDataBase.Caption := ''; + DBLoaded := False; + end; + end; + bToDB.Enabled := DBLoaded and SFLoaded; + bFromDB.Enabled := bToDB.Enabled; +end; + +procedure Tmainform.bFLoadClick(Sender: TObject); +var + Path: String; +begin + Path := BrowseDialog('Select UltraStar SongFolder', BIF_RETURNONLYFSDIRS); + + if Path <> '' then + begin + SetLength(Songs.Song, 0); + try + Songs.BrowseDir(Path + '\'); + lFolder2.Caption := Inttostr(Length(Songs.Song)) + ' Songs loaded'; + lFolder.Caption := Path; + SFLoaded := True; + except + lFolder2.Caption := 'No Songs loaded'; + lFolder.Caption := ''; + SFLoaded := False; + end; + end; + + bToDB.Enabled := DBLoaded and SFLoaded; + bFromDB.Enabled := bToDB.Enabled; +end; + +procedure Tmainform.UpdateLoadedSongs(Path: String; Count: integer); +begin + lFolder2.Caption := Inttostr(Count) + ' Songs loaded'; + lFolder.Caption := Path; + Application.ProcessMessages; +end; + +procedure Tmainform.bToDBClick(Sender: TObject); +var + I, J, K: Integer; + LastI: integer; +begin + pProgress.Max := high(Songs.Song); + pProgress.Position := 0; + // Go through all Songs + For I := 0 to high(Songs.Song) do + begin + try + //Read Scores from .SCO File + ReadScore (Songs.Song[I]); + + //Go from Easy to Difficult + For J := 0 to 2 do + begin + //Go through all Score Entrys with Difficulty J + For K := 0 to high(Songs.Song[I].Score[J]) do + begin + //Add to DataBase + DataBase.AddScore(Songs.Song[I], J, Songs.Song[I].Score[J][K].Name, Songs.Song[I].Score[J][K].Score); + end; + end; + + except + showmessage ('Error Converting Score From Song: ' + Songs.Song[I].Path + Songs.Song[I].FileName); + end; + + //Update ProgressBar + if (LastI <> I div 30) then + begin + LastI := I div 30; + pProgress.Position := I; + lStatus.Caption := 'Adding Songscore: ' + Songs.Song[I].Artist + ' - ' + Songs.Song[I].Title; + Application.ProcessMessages; + end; + end; + + pProgress.Position := pProgress.Max; + lStatus.Caption := 'Finished'; +end; + +procedure Tmainform.bFromDBClick(Sender: TObject); +var + I, J, K: Integer; + LastI: integer; + anyScoreinthere: boolean; +begin + pProgress.Max := high(Songs.Song); + pProgress.Position := 0; + // Go through all Songs + For I := 0 to high(Songs.Song) do + begin + try + //Not Write ScoreFile when there are no Scores for this File + anyScoreinthere := false; + //Read Scores from DB File + Database.ReadScore (Songs.Song[I]); + + //Go from Easy to Difficult + For J := 0 to 2 do + begin + //Go through all Score Entrys with Difficulty J + For K := 0 to high(Songs.Song[I].Score[J]) do + begin + //Add to ScoreFile + AddScore(Songs.Song[I], J, Songs.Song[I].Score[J][K].Name, Songs.Song[I].Score[J][K].Score); + anyScoreinthere := True; + end; + end; + + if AnyScoreinThere then + WriteScore(Songs.Song[I]); + + except + showmessage ('Error Converting Score From Song: ' + Songs.Song[I].Path + Songs.Song[I].FileName); + end; + + //Update ProgressBar + if (LastI <> I div 30) then + begin + LastI := I div 30; + pProgress.Position := I; + lStatus.Caption := 'Writing ScoreFile: ' + Songs.Song[I].Artist + ' - ' + Songs.Song[I].Title; + Application.ProcessMessages; + end; + end; + + pProgress.Position := pProgress.Max; + lStatus.Caption := 'Finished'; +end; + +end. -- cgit v1.2.3 -- cgit v1.2.3 From b7ae6bb3c682473abc6c642ce4f15a4ffa9d630d Mon Sep 17 00:00:00 2001 From: mogguh Date: Sat, 24 Mar 2007 20:20:47 +0000 Subject: Bugfix: UScreenSing.pas fixed a minor bug that would've caused redrawing of golden stars in a different song git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@30 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSing.pas | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 3dd1119a..f6ec6224 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -636,6 +636,10 @@ begin // prepare timer (II) CountSkipTimeSet; + +//GoldenStarsTwinkle Mod + GoldenRec.KillAll; +//GoldenStarsTwinkle Mod End end; function TScreenSing.Draw: boolean; -- cgit v1.2.3 From baa7e70626941c6c64e5370bdad3b89340c63ffb Mon Sep 17 00:00:00 2001 From: mogguh Date: Sat, 24 Mar 2007 21:56:14 +0000 Subject: New fonts git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@31 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/UltraStar.rc | 8 ++++---- Game/Fonts/Bold/eurostar_regular_bold.dat | Bin 0 -> 256 bytes Game/Fonts/Bold/eurostar_regular_bold.png | Bin 0 -> 29453 bytes Game/Fonts/Normal/eurostar_regular.dat | Bin 0 -> 256 bytes Game/Fonts/Normal/eurostar_regular.png | Bin 0 -> 18554 bytes 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 Game/Fonts/Bold/eurostar_regular_bold.dat create mode 100644 Game/Fonts/Bold/eurostar_regular_bold.png create mode 100644 Game/Fonts/Normal/eurostar_regular.dat create mode 100644 Game/Fonts/Normal/eurostar_regular.png diff --git a/Game/Code/UltraStar.rc b/Game/Code/UltraStar.rc index 0ae2b756..9b095726 100644 --- a/Game/Code/UltraStar.rc +++ b/Game/Code/UltraStar.rc @@ -1,8 +1,8 @@ -Font PNG "..\Fonts\Normal\Font Normal 16.PNG" -Font FNT "..\Fonts\Normal\Font Normal.dat" +Font PNG "..\Fonts\Normal\eurostar_regular.png" +Font FNT "..\Fonts\Normal\eurostar_regular.dat" -FontB PNG "..\Fonts\Bold\Font 1024 Bold 16.PNG" -FontB FNT "..\Fonts\Bold\Font 1024 Bold.dat" +FontB PNG "..\Fonts\Bold\eurostar_regular_bold.png" +FontB FNT "..\Fonts\Bold\eurostar_regular_bold.dat" FontO PNG "..\Fonts\Outline 1\Outline 36 (1024) 16c.PNG" FontO FNT "..\Fonts\Outline 1\Outline 36 (1024).dat" diff --git a/Game/Fonts/Bold/eurostar_regular_bold.dat b/Game/Fonts/Bold/eurostar_regular_bold.dat new file mode 100644 index 00000000..1b2023e2 Binary files /dev/null and b/Game/Fonts/Bold/eurostar_regular_bold.dat differ diff --git a/Game/Fonts/Bold/eurostar_regular_bold.png b/Game/Fonts/Bold/eurostar_regular_bold.png new file mode 100644 index 00000000..a5ed53ce Binary files /dev/null and b/Game/Fonts/Bold/eurostar_regular_bold.png differ diff --git a/Game/Fonts/Normal/eurostar_regular.dat b/Game/Fonts/Normal/eurostar_regular.dat new file mode 100644 index 00000000..bd3c8f7c Binary files /dev/null and b/Game/Fonts/Normal/eurostar_regular.dat differ diff --git a/Game/Fonts/Normal/eurostar_regular.png b/Game/Fonts/Normal/eurostar_regular.png new file mode 100644 index 00000000..797d00b5 Binary files /dev/null and b/Game/Fonts/Normal/eurostar_regular.png differ -- cgit v1.2.3 From 60521ca33e23a91f2ea8aecf506b9aa5e6bda54a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 25 Mar 2007 10:41:53 +0000 Subject: 2 Bugs in Cover Positions fixed: Style4 (Classic): Positions now Readed from Theme, No Overlapping Style5 (Deluxe): correct Positions of Covers in the Front No Cut from Last to First Todo: Correct Positions of Covers in the back(Now Invisible) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@32 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 6 +-- Game/Code/Screens/UScreenSong.pas | 82 +++++++++++----------------------- Game/Graphics/MusicWheelItem song.jpg | Bin 27550 -> 0 bytes Game/Graphics/Thumbs.db | Bin 10752 -> 0 bytes 4 files changed, 28 insertions(+), 60 deletions(-) delete mode 100644 Game/Graphics/MusicWheelItem song.jpg delete mode 100644 Game/Graphics/Thumbs.db diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 7dbac5a9..1d632073 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -759,11 +759,11 @@ begin //Load Cover Pos and Size from Theme Mod Song.Cover.X := ThemeIni.ReadInteger('SongCover', 'X', 400); - Song.Cover.Y := ThemeIni.ReadInteger('SongCover', 'Y', 100); + Song.Cover.Y := ThemeIni.ReadInteger('SongCover', 'Y', 140); Song.Cover.Z := ThemeIni.ReadInteger('SongCover', 'Z', 250); - Song.Cover.W := ThemeIni.ReadInteger('SongCover', 'W', 200); + Song.Cover.W := ThemeIni.ReadInteger('SongCover', 'W', 300); Song.Cover.H := ThemeIni.ReadInteger('SongCover', 'H', 200); - Song.Cover.Style := ThemeIni.ReadInteger('SongCover', 'Style', 5); + Song.Cover.Style := ThemeIni.ReadInteger('SongCover', 'Style', 4); Song.Cover.Reflections := (ThemeIni.ReadInteger('SongCover', 'Reflections', 0) = 1); //Load Cover Pos and Size from Theme Mod End diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 0d7860a7..cd412ceb 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1021,21 +1021,19 @@ begin Button[B].Visible := CatSongs.Song[B].Visible; // nowe if Button[B].Visible then begin // 0.5.0 optimization for 1000 songs - updates only visible songs, hiding in tabs becomes useful for maintaing good speed -// Wsp := 2 * pi * (B - SongCurrent) / Length(Button); -// Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - 0) / CatSongs.VisibleSongs; Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / VS {CatSongs.VisibleSongs};// 0.5.0 (II): takes another 16ms - Z := (1 + cos(Wsp)) / 2; + Z := (1 + cos(Wsp)) / 2 - 0.02; Z2 := (1 + 2*Z) / 3; - Button[B].X := Theme.Song.Cover.X + (300 + 37 * VS {CatSongs.VisibleSongs} {Length(Button)} * sin(Wsp) - 400) * Z2; // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs + Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W + 0.185 * Theme.Song.Cover.H * VS * sin(Wsp) - Theme.Song.Cover.X) * Z2; // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs Button[B].Z := Z; - Button[B].H := Theme.Song.Cover.H * Z2; - Button[B].W := Button[B].H; + Button[B].W := Theme.Song.Cover.H * Z2; // Button[B].Y := {50 +} 140 + 50 - 50 * Z2; - Button[B].Y := Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.65; + Button[B].Y := Theme.Song.Cover.Y + (Theme.Song.Cover.H - Abs(Button[B].H)) * 0.7 ; + Button[B].H := Button[B].W; end; end; end; @@ -1158,17 +1156,17 @@ begin if Button[B].Visible then //Only Change Pos for Visible Buttons begin Pos := (CatSongs.VisibleIndex(B) - SongCurrent); - if (Pos < -VS) then + if (Pos < -VS/2) then Pos := Pos + VS - else if (Pos > VS) then + else if (Pos > VS/2) then Pos := Pos - VS; - if (Abs(Pos) < 3) then {fixed Positions} + if (Abs(Pos) < 2.5) then {fixed Positions} begin Angle := Pi * (Pos / 5); //Button[B].Visible := False; - Button[B].H := Theme.Song.Cover.H * cos(Angle);//Power(Z2, 3); + Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle));//Power(Z2, 3); Button[B].Z := 0.95 - Abs(Pos) * 0.01; @@ -1178,67 +1176,37 @@ begin Diff := (Button[B].H - Theme.Song.Cover.H)/2;; - if (X < 0) then - Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle){ - Theme.Song.Cover.H/2} - Diff - else - Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle){ - Theme.Song.Cover.H/2}- Diff; + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle) - Diff; - Button[B].Visible := True; end else begin {Behind the Front Covers} - //Button[B].Visible := False; - Pos := Frac(Pos / VS); - if Pos < 0 then - Pos := Pos + 1; - - Angle := Abs(2 * pi * ((Pos) / VS / 2)); - //Pos := Power(Pos*2 - 1, 3); + Button[B].Visible := False; - Button[B].Z := (0.2 + Pos/2) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers + if Pos < 0 then + Pos := (Pos - VS/2) /VS + else + Pos := (Pos + VS/2) /VS; - //Pos := abs(Pos) mod 1; + Angle := 2 * pi * Pos; - X := sin(Angle); - //Button[B].H := (0.2 + 0.4 * Abs(Pos)) * Theme.Song.Cover.H; //Cover High + Width - Button[B].H := 80; - Button[B].W := Button[B].H; + Button[B].Z := (0.5 - Abs(Pos/4)) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers - Diff := (Theme.Song.Cover.H - Button[B].H)/2; + Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle));//Power(Z2, 3); - //Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W) * Sin(Angle) - diff - //Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Pos - Diff; + Button[B].W := Button[B].H; - if (X < 0) then - Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle) - Theme.Song.Cover.H/2 + Diff - else - Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle) - Theme.Song.Cover.H/2; - - end; + Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); - Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H)/1.5); //Cover at down border of the change field + Diff := (Button[B].H - Theme.Song.Cover.H)/2;; - {X := sin(Angle); + Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W + Theme.Song.Cover.H*VS*0.185)* Sin(Angle) - Diff - Button[B].H := (0.5 + Power(cos(Angle), 1.7))/1.5 * Theme.Song.Cover.H; //Cover High + Width - Button[B].W := Button[B].H; - - {if (X < 0) then - Diff := Theme.Song.Cover.H - Button[B].H - else - Diff := 0; - - if (((CatSongs.VisibleIndex(B) - SongCurrent)>= -3) AND ((CatSongs.VisibleIndex(B) - SongCurrent) <= 3)) OR (((CatSongs.VisibleIndex(B) - SongCurrent)>= -3 + VS) AND ((CatSongs.VisibleIndex(B) - SongCurrent) <= 3 + VS)) OR (((CatSongs.VisibleIndex(B) - SongCurrent)>= -3 - VS) AND ((CatSongs.VisibleIndex(B) - SongCurrent) <= 3 - VS)) then - Button[B].X := Theme.Song.Cover.X + diff + margin(CatSongs.VisibleIndex(B), SongCurrent, VS)* 30 - else - Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * X + diff;}{ + end; - Diff := (Button[B].H - Theme.Song.Cover.H)/2; + //Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H)/1.5); //Cover at down border of the change field + Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); - if X < 0 then - Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W) * -Power(-X, 1/2) - diff - else - Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W) * Power(X, 1/2) - diff;} end; end; end; diff --git a/Game/Graphics/MusicWheelItem song.jpg b/Game/Graphics/MusicWheelItem song.jpg deleted file mode 100644 index 87671377..00000000 Binary files a/Game/Graphics/MusicWheelItem song.jpg and /dev/null differ diff --git a/Game/Graphics/Thumbs.db b/Game/Graphics/Thumbs.db deleted file mode 100644 index 901e717c..00000000 Binary files a/Game/Graphics/Thumbs.db and /dev/null differ -- cgit v1.2.3 From 2bcebe90daa1865f1bc335d1f2fc2ca31637bc59 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 25 Mar 2007 11:24:07 +0000 Subject: Some Code Cleanup git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@33 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 1d632073..e9aa2141 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -780,6 +780,15 @@ begin Song.Equalizer.Bands := ThemeIni.ReadInteger('SongEqualizer', 'Bands', 5); Song.Equalizer.Length := ThemeIni.ReadInteger('SongEqualizer', 'Length', 12); + //Color + I := ColorExists(ThemeIni.ReadString('SongEqualizer', 'Color', 'Black')); + if I >= 0 then begin + Song.Equalizer.ColR := Color[I].RGB.R; + Song.Equalizer.ColG := Color[I].RGB.G; + Song.Equalizer.ColB := Color[I].RGB.B; + end; + //Load Equalizer Pos and Size from Theme Mod End + //Party Mode ThemeLoadStatic(Song.StaticTeam1Joker1, 'SongStaticTeam1Joker1'); ThemeLoadStatic(Song.StaticTeam1Joker2, 'SongStaticTeam1Joker2'); @@ -799,15 +808,6 @@ begin ThemeLoadStatic(Song.StaticTeam3Joker4, 'SongStaticTeam3Joker4'); ThemeLoadStatic(Song.StaticTeam3Joker5, 'SongStaticTeam3Joker5'); - //Color - I := ColorExists(ThemeIni.ReadString('SongEqualizer', 'Color', 'Black')); - if I >= 0 then begin - Song.Equalizer.ColR := Color[I].RGB.R; - Song.Equalizer.ColG := Color[I].RGB.G; - Song.Equalizer.ColB := Color[I].RGB.B; - end; - //Load Equalizer Pos and Size from Theme Mod End - // Sing ThemeLoadBasic(Sing, 'Sing'); -- cgit v1.2.3 From cad7f94fbc44d277261cfbb81d3047bb97b67771 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 25 Mar 2007 15:19:42 +0000 Subject: Fixed Normal Font! Fixed .Dat File Positions by Hand, Made Fonts Size Bigger git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@34 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Fonts/Normal/eurostar_regular.dat | Bin 256 -> 256 bytes Game/Fonts/Normal/eurostar_regular.png | Bin 18554 -> 40330 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Game/Fonts/Normal/eurostar_regular.dat b/Game/Fonts/Normal/eurostar_regular.dat index bd3c8f7c..f44ae7d8 100644 Binary files a/Game/Fonts/Normal/eurostar_regular.dat and b/Game/Fonts/Normal/eurostar_regular.dat differ diff --git a/Game/Fonts/Normal/eurostar_regular.png b/Game/Fonts/Normal/eurostar_regular.png index 797d00b5..90cef19c 100644 Binary files a/Game/Fonts/Normal/eurostar_regular.png and b/Game/Fonts/Normal/eurostar_regular.png differ -- cgit v1.2.3 From ccb5946db9ae26b5b40a171110e4a5fc595cb0bf Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 25 Mar 2007 15:20:46 +0000 Subject: Changed Music.SetVolume from Global Wave Volume to Application-Only BassConfig git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@35 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMusic.pas | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index db1675c5..f7f0e20d 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -342,7 +342,12 @@ end; procedure TMusic.SetVolume(Volume: integer); begin - BASS_SetVolume(Volume); + //Old Sets Wave Volume + //BASS_SetVolume(Volume); + //New: Sets Volume only for this Application + BASS_SetConfig(BASS_CONFIG_GVOL_SAMPLE, Volume); + BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, Volume); + BASS_SetConfig(BASS_CONFIG_GVOL_MUSIC, Volume); end; procedure TMusic.SetLoop(Enabled: boolean); -- cgit v1.2.3 From e558c05847fc836ceecbfe9de67af36b84f2b367 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 25 Mar 2007 15:23:10 +0000 Subject: ScreenEditSub: Automatically set down music playback-volume to hear the Midi Sounds better. Also Show Note Names in Editor (e.g. c, d'', F#) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@36 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenEditSub.pas | 41 ++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 7bdbac0d..52cd0b26 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -55,6 +55,8 @@ type procedure PasteText; procedure CopySentence(Src, Dst: integer); procedure CopySentences(Src, Dst, Num: integer); + //Note Name Mod + function GetNoteName(Note: Integer): String; public Tex_Background: TTexture; FadeOut: boolean; @@ -1110,7 +1112,9 @@ begin Czesci[0].Czesc[0].Nuta[0].Color := 1; Music.Open(Path + AktSong.Mp3); - + //Set Down Music Volume for Better hearability of Midi Sounds + Music.SetVolume(40); + Lyric.Clear; Lyric.X := 400; Lyric.Y := 500; @@ -1207,7 +1211,7 @@ begin // Note info Text[TextNStart].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); Text[TextNDlugosc].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); - Text[TextNTon].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton); + Text[TextNTon].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton) + ' ( ' + GetNoteName(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton) + ' )'; Text[TextNText].Text := Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst; // Text Edit Mode @@ -1231,6 +1235,39 @@ procedure TScreenEditSub.onHide; begin MidiOut.Close; MidiOut.Free; + Music.SetVolume(100); +end; + +function TScreenEditSub.GetNoteName(Note: Integer): String; +var N1, N2: Integer; +begin + N1 := Note mod 12; + N2 := Note div 12; + + case N1 of + 0: Result := 'c'; + 1: Result := 'c#'; + 2: Result := 'd'; + 3: Result := 'd#'; + 4: Result := 'e'; + 5: Result := 'f'; + 6: Result := 'f#'; + 7: Result := 'g'; + 8: Result := 'g#'; + 9: Result := 'a'; + 10: Result := 'b'; + 11: Result := 'h'; + end; + + case N2 of + 0: Result := UpperCase(Result); //Normal Uppercase Note, 1: Normal lowercase Note + 2: Result := Result + ''''; //One Striped + 3: Result := Result + ''''''; //Two Striped + 4: Result := Result + ''''''''; //etc. + 5: Result := Result + ''''''''''; + 6: Result := Result + ''''''''''''; + 7: Result := Result + ''''''''''''''; + end; end; end. -- cgit v1.2.3 From 67efd56b02dff045be3b8d16418e8db285e210c4 Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 26 Mar 2007 19:14:38 +0000 Subject: Theme: just some refining done at welcome/loadscreen picture, and the add of a round edge at the song selection sprite git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@37 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/LoadingBackground.jpg | Bin 244428 -> 41690 bytes Skins/Deluxe/Song Selection.jpg | Bin 35720 -> 3614 bytes Skins/Deluxe/Song Selection2.jpg | Bin 1303 -> 1031 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/LoadingBackground.jpg b/Skins/Deluxe/LoadingBackground.jpg index 7ec91d14..b05a1ab1 100644 Binary files a/Skins/Deluxe/LoadingBackground.jpg and b/Skins/Deluxe/LoadingBackground.jpg differ diff --git a/Skins/Deluxe/Song Selection.jpg b/Skins/Deluxe/Song Selection.jpg index b9c207c8..c8f06315 100644 Binary files a/Skins/Deluxe/Song Selection.jpg and b/Skins/Deluxe/Song Selection.jpg differ diff --git a/Skins/Deluxe/Song Selection2.jpg b/Skins/Deluxe/Song Selection2.jpg index e6f7be54..cb3a3396 100644 Binary files a/Skins/Deluxe/Song Selection2.jpg and b/Skins/Deluxe/Song Selection2.jpg differ -- cgit v1.2.3 From 158ee45acaa045b91e7614d756a353de00414f1f Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 27 Mar 2007 01:55:29 +0000 Subject: Skin: Changed minor things that where too annoying (major crap) Icon: Added the first version of a new icon, hope it suits more than the last one Theme: Fixed problem with showing a button instead of a cd git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@38 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/UltraStar.RES | Bin 0 -> 192780 bytes Game/Code/UltraStar.rc | 3 ++- Game/Graphics/ustar-icon_v01.ico | Bin 0 -> 22486 bytes Skins/Deluxe/Editor.jpg | Bin 47675 -> 7482 bytes Skins/Deluxe/Main Bar.jpg | Bin 15387 -> 2957 bytes Skins/Deluxe/MainBG_W&C.jpg | Bin 225987 -> 150599 bytes Skins/Deluxe/Sing.jpg | Bin 48870 -> 8060 bytes Skins/Deluxe/W&C.jpg | Bin 200184 -> 150599 bytes Skins/Deluxe/cd.jpg | Bin 43852 -> 11146 bytes Skins/Deluxe/exit.jpg | Bin 50189 -> 9099 bytes Skins/Deluxe/leiste1.jpg | Bin 21373 -> 1143 bytes Skins/Deluxe/leiste2.jpg | Bin 23774 -> 2087 bytes Skins/Deluxe/options.jpg | Bin 50923 -> 9136 bytes Themes/Deluxe.ini | 35 ++++++++++++++++++----------------- 14 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 Game/Code/UltraStar.RES create mode 100644 Game/Graphics/ustar-icon_v01.ico diff --git a/Game/Code/UltraStar.RES b/Game/Code/UltraStar.RES new file mode 100644 index 00000000..bf1f3d01 Binary files /dev/null and b/Game/Code/UltraStar.RES differ diff --git a/Game/Code/UltraStar.rc b/Game/Code/UltraStar.rc index 9b095726..68d68e4b 100644 --- a/Game/Code/UltraStar.rc +++ b/Game/Code/UltraStar.rc @@ -10,4 +10,5 @@ FontO FNT "..\Fonts\Outline 1\Outline 36 (1024).dat" FontO2 PNG "..\Fonts\Outline 2\5 - Outline Dark Edited 16c.PNG" FontO2 FNT "..\Fonts\Outline 2\Outline.dat" -MAINICON ICON "..\Graphics\us.ico" \ No newline at end of file +MAINICON ICON "..\Graphics\ustar-icon_v01.ico" +//MAINICON ICON "..\Graphics\us.ico" \ No newline at end of file diff --git a/Game/Graphics/ustar-icon_v01.ico b/Game/Graphics/ustar-icon_v01.ico new file mode 100644 index 00000000..e5b21364 Binary files /dev/null and b/Game/Graphics/ustar-icon_v01.ico differ diff --git a/Skins/Deluxe/Editor.jpg b/Skins/Deluxe/Editor.jpg index d02613b2..ac1b3889 100644 Binary files a/Skins/Deluxe/Editor.jpg and b/Skins/Deluxe/Editor.jpg differ diff --git a/Skins/Deluxe/Main Bar.jpg b/Skins/Deluxe/Main Bar.jpg index 2b8390db..fa4cbd78 100644 Binary files a/Skins/Deluxe/Main Bar.jpg and b/Skins/Deluxe/Main Bar.jpg differ diff --git a/Skins/Deluxe/MainBG_W&C.jpg b/Skins/Deluxe/MainBG_W&C.jpg index e1e76df6..887623a7 100644 Binary files a/Skins/Deluxe/MainBG_W&C.jpg and b/Skins/Deluxe/MainBG_W&C.jpg differ diff --git a/Skins/Deluxe/Sing.jpg b/Skins/Deluxe/Sing.jpg index ae2d3f57..45fc6ea4 100644 Binary files a/Skins/Deluxe/Sing.jpg and b/Skins/Deluxe/Sing.jpg differ diff --git a/Skins/Deluxe/W&C.jpg b/Skins/Deluxe/W&C.jpg index dd10355b..887623a7 100644 Binary files a/Skins/Deluxe/W&C.jpg and b/Skins/Deluxe/W&C.jpg differ diff --git a/Skins/Deluxe/cd.jpg b/Skins/Deluxe/cd.jpg index b751a021..a6949864 100644 Binary files a/Skins/Deluxe/cd.jpg and b/Skins/Deluxe/cd.jpg differ diff --git a/Skins/Deluxe/exit.jpg b/Skins/Deluxe/exit.jpg index 6c0e8bf4..8fc068f7 100644 Binary files a/Skins/Deluxe/exit.jpg and b/Skins/Deluxe/exit.jpg differ diff --git a/Skins/Deluxe/leiste1.jpg b/Skins/Deluxe/leiste1.jpg index 698c9c03..40237354 100644 Binary files a/Skins/Deluxe/leiste1.jpg and b/Skins/Deluxe/leiste1.jpg differ diff --git a/Skins/Deluxe/leiste2.jpg b/Skins/Deluxe/leiste2.jpg index 6f8f3358..5af6841f 100644 Binary files a/Skins/Deluxe/leiste2.jpg and b/Skins/Deluxe/leiste2.jpg differ diff --git a/Skins/Deluxe/options.jpg b/Skins/Deluxe/options.jpg index a593eaa2..aa08275a 100644 Binary files a/Skins/Deluxe/options.jpg and b/Skins/Deluxe/options.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index bf0debb6..24d01b30 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -27,7 +27,7 @@ GrayLight = 191 191 191 Gray = 127 127 127 GrayDark = 63 63 63 Black = 0 0 0 - +AquaLightGreen = 0 180 140 [Loading] Texts =2 @@ -85,9 +85,10 @@ Y =550 W =254 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black +# [MainStatic2] X =254 @@ -106,7 +107,7 @@ W =150 H =67 Tex =MainSolo Color =DarkBlue -Int = 0.8 +Int = 1 DColor = LightBlue DInt = 0.7 Type=Font Black @@ -120,7 +121,7 @@ W =150 H =67 Tex =MainMulti Color =DarkBlue -Int = 0.8 +Int = 1 DColor = LightBlue DInt = 0.7 Type=Font Black @@ -134,7 +135,8 @@ W =150 H =67 Tex =MainOptions Color =DarkBlue -Int = 0.8 +Int = 1 +#Int = 0.8 DColor = LightBlue DInt = 0.7 Type=Font Black @@ -148,7 +150,7 @@ W =150 H =67 Tex =MainExit Color =DarkBlue -Int = 0.8 +Int = 1 DColor = LightBlue DInt = 0.7 Type=Font Black @@ -236,7 +238,7 @@ Y =550 W =254 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -296,7 +298,7 @@ Align =0 Text=Moin Moin Maus Fans [SongStaticCat] -Tex =Button +Tex =cd X =12 Y =7 W =85 @@ -2088,7 +2090,6 @@ TexY1=0 TexX2=1 TexY2=1 - [OptionsTextDescription] X = 70 Y = 248 @@ -3145,7 +3146,7 @@ Y =550 W =254 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3258,7 +3259,7 @@ Y =550 W =254 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3811,7 +3812,7 @@ Y =100 W =300 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3821,7 +3822,7 @@ Y =250 W =300 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3831,7 +3832,7 @@ Y =400 W =300 H =30 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3910,7 +3911,7 @@ Y =100 W =0 H =00 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3920,7 +3921,7 @@ Y =250 W =0 H =0 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black @@ -3930,7 +3931,7 @@ Y =400 W =0 H =0 Tex=Leiste1 -Color =DarkBlue +Color =AquaLightGreen Int = 1 Type=Font Black -- cgit v1.2.3 From 3ba33f8e920a9e9a3114f159e2b6fda4273a6efb Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 28 Mar 2007 13:08:41 +0000 Subject: Added Jumpto Ability to SongScreen (Press J) Fixed: Golden Notes are not shown in PartyMode git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@39 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphic.pas | 9 +- Game/Code/Classes/USongs.pas | 77 ++++++- Game/Code/Classes/UThemes.pas | 16 +- Game/Code/Screens/UScreenSing.pas | 9 +- Game/Code/Screens/UScreenSingModi.pas | 6 +- Game/Code/Screens/UScreenSong.pas | 371 ++++++++++++++-------------------- Game/Code/Screens/UScreenSongMenu.pas | 1 + Game/Code/UltraStar.dpr | 1 + 8 files changed, 248 insertions(+), 242 deletions(-) diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 8238eace..d9831143 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -6,7 +6,7 @@ uses UScreenWelcome, UScreenMain, UScreenName, UScreenLevel, UScreenOptions, UScreenOptionsGame, UScreenOptionsGraphics, UScreenOptionsSound, UScreenOptionsLyrics, UScreenOptionsThemes, UScreenOptionsRecord, UScreenSong, UScreenSing, UScreenScore, UScreenTop5, UScreenEditSub, - UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, + UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, UScreenSongJumpto, {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer; type @@ -51,6 +51,7 @@ var ScreenOpen: TScreenOpen; ScreenSongMenu: TScreenSongMenu; + ScreenSongJumpto: TScreenSongJumpto; //Party Screens ScreenSingModi: TScreenSingModi; @@ -390,9 +391,11 @@ begin ScreenOpen := TScreenOpen.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Open', 3); Log.BenchmarkStart(3); ScreenSingModi := TScreenSingModi.Create; - Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen SongMenu', 3); Log.BenchmarkStart(3); - //ScreenSongMenu := TScreenSongMenu.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Sing with Modi support', 3); Log.BenchmarkStart(3); + ScreenSongMenu := TScreenSongMenu.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen SongMenu', 3); Log.BenchmarkStart(3); + ScreenSongJumpto := TScreenSongJumpto.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen SongJumpto', 3); Log.BenchmarkStart(3); ScreenPartyNewRound := TScreenPartyNewRound.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyNewRound', 3); Log.BenchmarkStart(3); ScreenPartyScore := TScreenPartyScore.Create; diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index c2532a03..5b75879d 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -82,6 +82,8 @@ type function FindNextVisible(SearchFrom:integer): integer; //Find Next visible Song function VisibleSongs: integer; // returns number of visible songs (for tabs) function VisibleIndex(Index: integer): integer; // returns visible song index (skips invisible) + + function SetFilter(FilterStr: String; const fType: Byte): Cardinal; end; var @@ -91,7 +93,7 @@ var implementation -uses UPliki, UIni, UFiles; +uses UPliki, UIni, UFiles, StrUtils; procedure TSongs.LoadSongList; begin @@ -572,12 +574,12 @@ var S: integer; // song begin CatNumShow := Index; - for S := 0 to high(CatSongs.Song) do begin - if CatSongs.Song[S].OrderNum = Index then + for S := 0 to high(CatSongs.Song) do + begin + if (CatSongs.Song[S].OrderNum = Index) AND (Not CatSongs.Song[S].Main) then CatSongs.Song[S].Visible := true else - if not CatSongs.Song[S].Main then - CatSongs.Song[S].Visible := false; + CatSongs.Song[S].Visible := false; end; end; @@ -599,12 +601,6 @@ begin if Num <> CatNumShow then begin ShowCategory(Num); - //Hide Categorys when in Category Hack - for S := low(CatSongs.Song) to high(CatSongs.Song) do begin - if CatSongs.Song[S].Main then //Hide all Cats - CatSongs.Song[S].Visible := false - end; - //Hide Categorys when in Category Hack End end else begin ShowCategoryList; @@ -664,4 +660,63 @@ begin if CatSongs.Song[S].Visible = true then Inc(Result); end; +function TCatSongs.SetFilter(FilterStr: String; const fType: Byte): Cardinal; +var + I, J: Integer; + cString: String; + SearchStr: Array of String; +begin + {fType: 0: All + 1: Title + 2: Artist} + if FilterStr<>'' then begin + Result := 0; + //Create Search Array + SetLength(SearchStr, 1); + I := Pos (' ', FilterStr); + While (I <> 0) do + begin + SetLength (SearchStr, Length(SearchStr) + 1); + cString := Copy(FilterStr, 1, I-1); + if (cString <> ' ') AND (cString <> '') then + SearchStr[High(SearchStr)-1] := cString; + Delete (FilterStr, 1, I); + + I := Pos (' ', FilterStr); + end; + //Copy last Word + if (FilterStr <> ' ') AND (FilterStr <> '') then + SearchStr[High(SearchStr)] := FilterStr; + + for I:=0 to High(Song) do begin + if not Song[i].Main then + begin + case fType of + 0: cString := Song[I].Artist + ' ' + Song[i].Title + ' ' + Song[i].Folder; + 1: cString := Song[I].Title; + 2: cString := Song[I].Artist; + end; + Song[i].Visible:=True; + //Look for every Searched Word + For J := 0 to High(SearchStr) do + begin + Song[i].Visible := Song[i].Visible AND AnsiContainsText(cString, SearchStr[J]) + end; + if Song[i].Visible then + Inc(Result); + end + else + Song[i].Visible:=False; + end; + CatNumShow := -2; + end + else begin + for i:=0 to High(Song) do begin + Song[i].Visible:=(Ini.Tabs=1)=Song[i].Main; + CatNumShow := -1; + end; + Result := 0; + end; +end; + end. diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index e9aa2141..e31e94d2 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -393,6 +393,12 @@ type TextMenu: TThemeText; end; + TThemeSongJumpTo = class(TThemeBasic) + ButtonSearchText: TThemeButton; + SelectSlideType: TThemeSelectSlide; + TextFound: TThemeText; + end; + //Party Screens TThemePartyNewRound = class(TThemeBasic) TextRound1: TThemeText; @@ -525,6 +531,7 @@ type OptionsRecord: TThemeOptionsRecord; //Menu SongMenu: TThemeSongMenu; + SongJumpto: TThemeSongJumpTo; //Party Screens: PartyNewRound: TThemePartyNewRound; PartyScore: TThemePartyScore; @@ -606,6 +613,7 @@ begin OptionsRecord := TThemeOptionsRecord.Create; SongMenu := TThemeSongMenu.Create; + SongJumpto := TThemeSongJumpto.Create; //Party Screens PartyNewRound := TThemePartyNewRound.Create; PartyWin := TThemePartyWin.Create; @@ -980,7 +988,7 @@ begin ThemeLoadSelectSlide(OptionsRecord.SelectSlideChannelR, 'OptionsRecordSelectSlideChannelR'); ThemeLoadButton(OptionsRecord.ButtonExit, 'OptionsRecordButtonExit'); - //Song Menu + //Song Menu ThemeLoadBasic (SongMenu, 'SongMenu'); ThemeLoadButton(SongMenu.Button1, 'SongMenuButton1'); ThemeLoadButton(SongMenu.Button2, 'SongMenuButton2'); @@ -990,6 +998,12 @@ begin ThemeLoadText(SongMenu.TextMenu, 'SongMenuTextMenu'); + //Song Jumpto + ThemeLoadBasic (SongJumpto, 'SongJumpto'); + ThemeLoadButton(SongJumpto.ButtonSearchText, 'SongJumptoButtonSearchText'); + ThemeLoadSelectSlide(SongJumpto.SelectSlideType, 'SongJumptoSelectSlideType'); + ThemeLoadText(SongJumpto.TextFound, 'SongJumptoTextFound'); + //Party Screens: //Party NewRound ThemeLoadBasic(PartyNewRound, 'PartyNewRound'); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index f6ec6224..7b96e273 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -636,10 +636,6 @@ begin // prepare timer (II) CountSkipTimeSet; - -//GoldenStarsTwinkle Mod - GoldenRec.KillAll; -//GoldenStarsTwinkle Mod End end; function TScreenSing.Draw: boolean; @@ -1016,6 +1012,11 @@ begin Music.CaptureStop; Music.Stop; + //Kill all Stars not Killed yet + //GoldenStarsTwinkle Mod + GoldenRec.KillAll; + //GoldenStarsTwinkle Mod End + if Ini.SavePlayback = 1 then begin Log.BenchmarkStart(0); Log.LogVoice(0); diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index ec47dc60..bf342e7a 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -63,7 +63,7 @@ procedure PlaySound (const Index: Cardinal); stdcall; //Plays a Custom Sou function ToSentences(Const Czeski: TCzesci): TSentences; implementation -uses UGraphic, UDraw, UMain, Classes, URecord, ULanguage, math, UDLLManager, USkins; +uses UGraphic, UDraw, UMain, Classes, URecord, ULanguage, math, UDLLManager, USkins, UGraphicClasses; // Method for input parsing. If False is returned, GetNextWindow // should be checked to know the next window to load; @@ -967,6 +967,10 @@ end; // draw custom items SingModiDraw(PlayerInfo); // always draw + //GoldenNoteStarsTwinkle Mod + GoldenRec.SpawnRec; + //GoldenNoteStarsTwinkle Mod + //Update PlayerInfo for I := 0 to PlayerInfo.NumPlayers-1 do begin diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index cd412ceb..69ec8639 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -69,7 +69,8 @@ type procedure SkipTo(Target: integer); procedure FixSelected; //Show Wrong Song when Tabs on Fix procedure FixSelected2; //Show Wrong Song when Tabs on Fix - procedure ShowCatTL(Cat: Integer);// Show Cat in Tob left + procedure ShowCatTL(Cat: Integer);// Show Cat in Top left + procedure ShowCatTLCustom(Caption: String);// Show Custom Text in Top left procedure HideCatTL;// Show Cat in Tob left procedure Refresh; //Refresh Song Sorting procedure DrawEqualizer; @@ -81,6 +82,9 @@ type procedure StartSong; procedure OpenEditor; procedure DoJoker(Team: Byte); + + //Extensions + procedure DrawExtensions; end; implementation @@ -92,37 +96,50 @@ uses UGraphic, UMain, UCovers, math, OpenGL12, Windows, USkins, UDLLManager, UPa procedure TScreenSong.FixSelected; var I, I2: Integer; begin - I2:= 0; - for I := low(CatSongs.Song) to High(Catsongs.Song) do + if CatSongs.VisibleSongs > 0 then begin - if CatSongs.Song[I].Visible then - inc(I2); + I2:= 0; + for I := low(CatSongs.Song) to High(Catsongs.Song) do + begin + if CatSongs.Song[I].Visible then + inc(I2); - if I = Interaction - 1 then - break; - end; + if I = Interaction - 1 then + break; + end; - SongCurrent := I2; - SongTarget := I2; + SongCurrent := I2; + SongTarget := I2; + end; end; procedure TScreenSong.FixSelected2; var I, I2: Integer; begin - I2:= 0; - for I := low(CatSongs.Song) to High(Catsongs.Song) do + if CatSongs.VisibleSongs > 0 then begin - if CatSongs.Song[I].Visible then - inc(I2); + I2:= 0; + for I := low(CatSongs.Song) to High(Catsongs.Song) do + begin + if CatSongs.Song[I].Visible then + inc(I2); - if I = Interaction - 1 then - break; - end; + if I = Interaction - 1 then + break; + end; - SongTarget := I2; + SongTarget := I2; + end; end; //Show Wrong Song when Tabs on Fix End + procedure TScreenSong.ShowCatTLCustom(Caption: String);// Show Custom Text in Top left + begin + Text[TextCat].Text := Caption; + Text[TextCat].Visible := true; + Static[StaticCat].Visible := False; + end; + //Show Cat in Top Left Mod procedure TScreenSong.ShowCatTL(Cat: Integer); begin @@ -162,164 +179,24 @@ var begin Result := true; - //Song Menu + //Song Screen Extensions (Jumpto + Menu) if (ScreenSongMenu.Visible) then begin Result := ScreenSongMenu.ParseInput(PressedKey, ScanCode, PressedDown); Exit; + end + else if (ScreenSongJumpto.Visible) then + begin + Result := ScreenSongJumpto.ParseInput(PressedKey, ScanCode, PressedDown); + Exit; end; If (PressedDown) Then begin // Key Down -// HS := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT); -{ if (not HighSpeed) and (HS > 0) then begin - HighSpeed := true; - SDL_EnableKeyRepeat(50, 50); - end; - if (HighSpeed) and (HS = 0) then begin - HighSpeed := false; - SDL_EnableKeyRepeat(125, 125); - end;} - - SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); - // Jump to Key Mod - if (SDL_ModState = KMOD_LALT) AND (Mode = 0) then //Jump to Key - begin - //get Letter - case PressedKey of - SDLK_A : Letter := 'A'; - SDLK_B : Letter := 'B'; - SDLK_C : Letter := 'C'; - SDLK_D : Letter := 'D'; - SDLK_E : Letter := 'E'; - SDLK_F : Letter := 'F'; - SDLK_G : Letter := 'G'; - SDLK_H : Letter := 'H'; - SDLK_I : Letter := 'I'; - SDLK_J : Letter := 'J'; - SDLK_K : Letter := 'K'; - SDLK_L : Letter := 'L'; - SDLK_M : Letter := 'M'; - SDLK_N : Letter := 'N'; - SDLK_O : Letter := 'O'; - SDLK_P : Letter := 'P'; - SDLK_Q : Letter := 'Q'; - SDLK_R : Letter := 'R'; - SDLK_S : Letter := 'S'; - SDLK_T : Letter := 'T'; - SDLK_U : Letter := 'U'; - SDLK_V : Letter := 'V'; - SDLK_W : Letter := 'W'; - SDLK_X : Letter := 'X'; - SDLK_Y : Letter := 'Y'; - SDLK_Z : Letter := 'Z'; - SDLK_1 : Letter := '1'; - SDLK_2 : Letter := '2'; - SDLK_3 : Letter := '3'; - SDLK_4 : Letter := '4'; - SDLK_5 : Letter := '5'; - SDLK_6 : Letter := '6'; - SDLK_7 : Letter := '7'; - SDLK_8 : Letter := '8'; - SDLK_9 : Letter := '9'; - SDLK_0 : Letter := '0'; - else exit; - end; - - {//Search Letter - for I := Interaction + 1 to high(CatSongs.Song) do - begin - if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then - break; //Found Song - if I = Interaction then //went through complete array but nothing Found - break; - if I = high(CatSongs.Song) then //At the end of the array->Go to beginning - for I2 := low(CatSongs.Song) to Interaction do - if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then - break; //Found Song - end; } - - for I := 0 to High(CatSongs.Song) do begin - if (CatSongs.Song[I].Visible) AND (UpperCase(CatSongs.Song[I].Artist[1]) = Letter) then - begin - //Select Song - Interaction := I; - SkipTo(Interaction); - break; - end; - end; - - //Don't do other Functions - exit; - end; - - if (SDL_ModState = KMOD_LALT or KMOD_LSHIFT) then //Jump to Key - begin - //get Letter - case PressedKey of - SDLK_a..SDLK_z : Letter := Chr(Ord('a')+PressedKey-97); - SDLK_1 : Letter := '1'; - SDLK_2 : Letter := '2'; - SDLK_3 : Letter := '3'; - SDLK_4 : Letter := '4'; - SDLK_5 : Letter := '5'; - SDLK_6 : Letter := '6'; - SDLK_7 : Letter := '7'; - SDLK_8 : Letter := '8'; - SDLK_9 : Letter := '9'; - SDLK_0 : Letter := '0'; - else exit; - end; - - {//Search Letter - for I := Interaction + 1 to high(CatSongs.Song) do - begin - if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then - break; //Found Song - if I = Interaction then //went through complete array but nothing Found - break; - if I = high(CatSongs.Song) then //At the end of the array->Go to beginning - for I2 := low(CatSongs.Song) to Interaction do - if CatSongs.Song[I].Visible and (Letter = Uppercase(CatSongs.Song[I].Artist)[1]) then - break; //Found Song - end; } - - {for I := 0 to High(CatSongs.Song) do begin - if (CatSongs.Song[I].Visible) AND (UpperCase(CatSongs.Song[I].Artist[1]) = Letter) then} - - for I := Interaction + 1 to high(CatSongs.Song) + 1 do - begin - if (I > high(CatSongs.Song)) then - begin - for I2 := low(CatSongs.Song) to Interaction do - begin - if CatSongs.Song[I2].Visible and (Letter = lowercase(CatSongs.Song[I2].Artist[1])) then - begin - Interaction := I2; - break; //Found Song - end; - end; - break; - end - else if CatSongs.Song[I].Visible and (Letter = lowercase(CatSongs.Song[I].Artist[1])) then - begin - Interaction := I; - break; //Found Song - end; - end; - - - //Select Song - SkipTo(Interaction); - - //Don't do other Functions - exit; - end; - - case PressedKey of SDLK_ESCAPE : begin @@ -406,7 +283,6 @@ begin end else if (Mode = 1) then //PartyMode -> Show Menu begin - ScreenSongMenu.Visible := True; ScreenSongMenu.MenuShow(SM_Party_Main); end; end; @@ -417,12 +293,19 @@ begin begin if Length(Songs.Song) > 0 then begin if not CatSongs.Song[Interaction].Main then begin // clicked on Song - ScreenSongMenu.Visible := True; ScreenSongMenu.MenuShow(SM_Main); end; end; end; + SDLK_J: //Show SongMenu + begin + if Length(Songs.Song) > 0 then + begin + ScreenSongJumpto.Visible := True; + end; + end; + SDLK_DOWN: begin if (Mode = 0) then @@ -788,25 +671,47 @@ begin end; procedure TScreenSong.SetScroll; +var + VS, B: Integer; begin -//Set Positions - Case Theme.Song.Cover.Style of - 3: SetScroll3; - 5: SetScroll5 - else SetScroll4; - end; -//Set Texts: - Text[TextArtist].Text := CatSongs.Song[Interaction].Artist; - Text[TextTitle].Text := CatSongs.Song[Interaction].Title; - if (Ini.Tabs_at_startup = 1) And (CatSongs.CatNumShow = -1) then + VS := CatSongs.VisibleSongs; + if VS > 0 then begin - Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].OrderNum) + '/' + IntToStr(CatSongs.CatCount); - Text[TextTitle].Text := '(' + IntToStr(CatSongs.Song[Interaction].CatNumber) + ' ' + Language.Translate('SING_SONGS_IN_CAT') + ')'; + //Set Positions + Case Theme.Song.Cover.Style of + 3: SetScroll3; + 5:begin + if VS > 5 then + SetScroll5 + else + SetScroll4; + end; + else SetScroll4; + end; + //Set Texts: + Text[TextArtist].Text := CatSongs.Song[Interaction].Artist; + Text[TextTitle].Text := CatSongs.Song[Interaction].Title; + if (Ini.Tabs_at_startup = 1) And (CatSongs.CatNumShow = -1) then + begin + Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].OrderNum) + '/' + IntToStr(CatSongs.CatCount); + Text[TextTitle].Text := '(' + IntToStr(CatSongs.Song[Interaction].CatNumber) + ' ' + Language.Translate('SING_SONGS_IN_CAT') + ')'; + end + else if (CatSongs.CatNumShow = -2) then + Text[TextNumber].Text := IntToStr(CatSongs.VisibleIndex(Interaction)+1) + '/' + IntToStr(VS) + else if (Ini.Tabs_at_startup = 1) then + Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].CatNumber) + '/' + IntToStr(CatSongs.Song[Interaction - CatSongs.Song[Interaction].CatNumber].CatNumber) + else + Text[TextNumber].Text := IntToStr(Interaction+1) + '/' + IntToStr(Length(CatSongs.Song)); end - else if (Ini.Tabs_at_startup = 1) then - Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].CatNumber) + '/' + IntToStr(CatSongs.Song[Interaction - CatSongs.Song[Interaction].CatNumber].CatNumber) else - Text[TextNumber].Text := IntToStr(Interaction+1) + '/' + IntToStr(Length(CatSongs.Song)); + begin + Text[TextNumber].Text := '0/0'; + Text[TextArtist].Text := ''; + Text[TextTitle].Text := ''; + for B := 0 to High(Button) do + Button[B].Visible := False; + + end; end; procedure TScreenSong.SetScroll1; @@ -1023,7 +928,7 @@ begin Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / VS {CatSongs.VisibleSongs};// 0.5.0 (II): takes another 16ms - Z := (1 + cos(Wsp)) / 2 - 0.02; + Z := (1 + cos(Wsp)) / 2 - 0.2; Z2 := (1 + 2*Z) / 3; Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W + 0.185 * Theme.Song.Cover.H * VS * sin(Wsp) - Theme.Song.Cover.X) * Z2; // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs @@ -1247,6 +1152,19 @@ begin SetJoker; end; +procedure TScreenSong.DrawExtensions; +begin + //Draw Song Menu + if (ScreenSongMenu.Visible) then + begin + ScreenSongMenu.Draw; + end + else if (ScreenSongJumpto.Visible) then + begin + ScreenSongJumpto.Draw; + end +end; + function TScreenSong.Draw: boolean; var dx: real; @@ -1286,71 +1204,80 @@ begin if Theme.Song.Equalizer.Visible then DrawEqualizer; - //Draw Song Menu - if (ScreenSongMenu.Visible) then - begin - ScreenSongMenu.Draw; - end; + DrawExtensions; end; procedure TScreenSong.SelectNext; var Skip: integer; I: integer; + VS: Integer; begin - CoverTime := 0; - Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture - Button[Interaction].Texture2.Alpha := 0; + VS := CatSongs.VisibleSongs; - //0.5.0: unload old full size texture - if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then - Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + if VS > 0 then + begin + CoverTime := 0; + Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture + Button[Interaction].Texture2.Alpha := 0; - Skip := 1; + //0.5.0: unload old full size texture + if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then + Texture.UnloadTexture(Button[Interaction].Texture.Name, false); - // this 1 could be changed by CatSongs.FindNextVisible - while (not CatSongs.Song[(Interaction + Skip) mod Length(Interactions)].Visible) do Inc(Skip); - SongTarget := SongTarget + 1;//Skip; + Skip := 1; - Interaction := (Interaction + Skip) mod Length(Interactions); + // this 1 could be changed by CatSongs.FindNextVisible + while (not CatSongs.Song[(Interaction + Skip) mod Length(Interactions)].Visible) do Inc(Skip); - // try to keep all at the beginning - if SongTarget > CatSongs.VisibleSongs-1 then begin - SongTarget := SongTarget - CatSongs.VisibleSongs; - SongCurrent := SongCurrent - CatSongs.VisibleSongs; - end; + SongTarget := SongTarget + 1;//Skip; - // Interaction -> Button, ktorego okladke przeczytamy -// Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); // 0.5.0: show uncached texture + Interaction := (Interaction + Skip) mod Length(Interactions); + + // try to keep all at the beginning + if SongTarget > VS-1 then begin + SongTarget := SongTarget - VS; + SongCurrent := SongCurrent - VS; + end; + + end; + // Interaction -> Button, ktorego okladke przeczytamy + // Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); // 0.5.0: show uncached texture end; procedure TScreenSong.SelectPrev; var Skip: integer; I: integer; + VS: Integer; begin - CoverTime := 0; - Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture - Button[Interaction].Texture2.Alpha := 0; + VS := CatSongs.VisibleSongs; - //0.5.0: unload old full size texture - if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then - Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + if VS > 0 then + begin + CoverTime := 0; + Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture + Button[Interaction].Texture2.Alpha := 0; - Skip := 1; + //0.5.0: unload old full size texture + if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then + Texture.UnloadTexture(Button[Interaction].Texture.Name, false); - while (not CatSongs.Song[(Interaction - Skip + Length(Interactions)) mod Length(Interactions)].Visible) do Inc(Skip); - SongTarget := SongTarget - 1;//Skip; + Skip := 1; - Interaction := (Interaction - Skip + Length(Interactions)) mod Length(Interactions); + while (not CatSongs.Song[(Interaction - Skip + Length(Interactions)) mod Length(Interactions)].Visible) do Inc(Skip); + SongTarget := SongTarget - 1;//Skip; - // try to keep all at the beginning - if SongTarget < 0 then begin - SongTarget := SongTarget + CatSongs.VisibleSongs; - SongCurrent := SongCurrent + CatSongs.VisibleSongs; - end; + Interaction := (Interaction - Skip + Length(Interactions)) mod Length(Interactions); -// Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); // 0.5.0: show uncached texture + // try to keep all at the beginning + if SongTarget < 0 then begin + SongTarget := SongTarget + CatSongs.VisibleSongs; + SongCurrent := SongCurrent + CatSongs.VisibleSongs; + end; + + // Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); // 0.5.0: show uncached texture + end; end; procedure TScreenSong.UpdateLCD; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 2a03a7c2..a5ae2083 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -165,6 +165,7 @@ end; procedure TScreenSongMenu.MenuShow(sMenu: Byte); begin Interaction := 0; //Reset Interaction + Visible := True; //Set Visible Case sMenu of SM_Main: begin diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 9b73883a..65a01257 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -75,6 +75,7 @@ uses UScreenOpen in 'Screens\UScreenOpen.pas', UScreenTop5 in 'Screens\UScreenTop5.pas', UScreenSongMenu in 'Screens\UScreenSongMenu.pas', + UScreenSongJumpto in 'Screens\UScreenSongJumpto.pas', //------------------------------ //Includes - Screens PartyMode -- cgit v1.2.3 From 5e798a4d262532bf5f06f06678961bafacf86aac Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 28 Mar 2007 13:11:12 +0000 Subject: =?UTF-8?q?Datei=20/=20Ordner=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@40 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/UltraStar.RES | Bin 192780 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Game/Code/UltraStar.RES diff --git a/Game/Code/UltraStar.RES b/Game/Code/UltraStar.RES deleted file mode 100644 index bf1f3d01..00000000 Binary files a/Game/Code/UltraStar.RES and /dev/null differ -- cgit v1.2.3 From 424a646f9b42a22fee671c9f6fba8688519e52c5 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 28 Mar 2007 13:13:48 +0000 Subject: Add Jumpto Screen to Theme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@41 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 24d01b30..575dc561 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -4580,4 +4580,68 @@ Type=Transparent TexX1=0.02 TexY1=0.05 TexX2=0.98 +TexY2=0.98 + + +[SongJumpto] +Texts=0 +Statics=1 + +[SongJumptoButtonSearchText] +X = 450 +Y = 240 +Z = 1 +W = 160 +H = 50 +Tex = button +Color = ColorDark +Int = 0.7 +DColor = White +DInt = 0.3 +Type = Font Black + +[SongJumptoSelectSlideType] +Tex = button +TexSBG = button +Text = SONG_JUMPTO_TYPE_DESC +X = 240 +Y = 185 +Z = 1 +W = 150 +H = 50 +SkipX = 20 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[SongJumptoTextFound] +X =450 +Y =395 +Color=Grey +Font =1 +Size =10 +Text=Dummy +Align=1 + +[SongJumptoStatic1] +Tex =Button +X =225 +Y =175 +W =350 +H =250 +Z =0.99 +Int=0.6 +Color =LightBlue +Type=Transparent +TexX1=0.02 +TexY1=0.05 +TexX2=0.98 TexY2=0.98 \ No newline at end of file -- cgit v1.2.3 From d21dbe560579792e45a5278ae7ad9963439ceaa7 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 28 Mar 2007 13:15:00 +0000 Subject: New Language Entrys git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@42 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Languages/German.ini b/Languages/German.ini index 56723cc2..0e1a76a3 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -124,6 +124,14 @@ SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=Joker spielen +SONG_JUMPTO_DESC=Jump to Song: +SONG_JUMPTO_TYPE_DESC=Suchen in: +SONG_JUMPTO_TYPE1=Allem +SONG_JUMPTO_TYPE2=Titel +SONG_JUMPTO_TYPE3=Artist +SONG_JUMPTO_SONGSFOUND=%d Songs gefunden +SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden + PARTY_SCORE_WINS=%s hat gewonnen! PARTY_OPTIONS_DESC=Party Modus @@ -136,6 +144,8 @@ PARTY_TEAMS_PLAYER2=Spieler Team2 PARTY_TEAMS_PLAYER3=Spieler Team3 PARTY_SELECT_PLAYER=Gib die Spielernamen ein! +PARTY_DISMISSED=Ausgeschieden + PLUGIN_HDL_NAME=BalkenHalten PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich PLUGIN_UNTIL5000_NAME=Bis 5000 -- cgit v1.2.3 From 72cd4a8849d2242da0673e270570bd8c631895b9 Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 28 Mar 2007 18:44:26 +0000 Subject: Theme/Skin: Pimped a big amount of the Deluxe skin/theme, like no pictures more for main menu buttons (important for translation). Added a funky bar at the bottom, which lacks reflection (but will be added in near future). Several other stuff.. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@43 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/NotePerfectStar.jpg | Bin 0 -> 27633 bytes Skins/Deluxe/Button.jpg | Bin 15137 -> 1519 bytes Skins/Deluxe/MainBG_W&C.jpg | Bin 150599 -> 169028 bytes Skins/Deluxe/W&C.ini | 1 + Skins/Deluxe/W&C.jpg | Bin 150599 -> 169028 bytes Skins/Deluxe/cd.jpg | Bin 11146 -> 1175 bytes Skins/Deluxe/leiste1.jpg | Bin 1143 -> 1128 bytes Skins/Deluxe/leiste2.jpg | Bin 2087 -> 950 bytes Skins/Deluxe/mainicon.jpg | Bin 0 -> 1153 bytes Themes/Deluxe.ini | 620 +++++++++++++++++++++----------------- 10 files changed, 337 insertions(+), 284 deletions(-) create mode 100644 Skins/Classic/NotePerfectStar.jpg create mode 100644 Skins/Deluxe/mainicon.jpg diff --git a/Skins/Classic/NotePerfectStar.jpg b/Skins/Classic/NotePerfectStar.jpg new file mode 100644 index 00000000..189a22a3 Binary files /dev/null and b/Skins/Classic/NotePerfectStar.jpg differ diff --git a/Skins/Deluxe/Button.jpg b/Skins/Deluxe/Button.jpg index 52eca5f6..15a34c66 100644 Binary files a/Skins/Deluxe/Button.jpg and b/Skins/Deluxe/Button.jpg differ diff --git a/Skins/Deluxe/MainBG_W&C.jpg b/Skins/Deluxe/MainBG_W&C.jpg index 887623a7..79f72163 100644 Binary files a/Skins/Deluxe/MainBG_W&C.jpg and b/Skins/Deluxe/MainBG_W&C.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 992ab1dc..f0142f84 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -36,6 +36,7 @@ MainOptions=Options.jpg MainExit=Exit.jpg SongCD=cd.jpg +MainIcon=mainicon.jpg Leiste1=Leiste1.jpg Leiste2=Leiste2.jpg diff --git a/Skins/Deluxe/W&C.jpg b/Skins/Deluxe/W&C.jpg index 887623a7..79f72163 100644 Binary files a/Skins/Deluxe/W&C.jpg and b/Skins/Deluxe/W&C.jpg differ diff --git a/Skins/Deluxe/cd.jpg b/Skins/Deluxe/cd.jpg index a6949864..d48dc4ff 100644 Binary files a/Skins/Deluxe/cd.jpg and b/Skins/Deluxe/cd.jpg differ diff --git a/Skins/Deluxe/leiste1.jpg b/Skins/Deluxe/leiste1.jpg index 40237354..e73fdb54 100644 Binary files a/Skins/Deluxe/leiste1.jpg and b/Skins/Deluxe/leiste1.jpg differ diff --git a/Skins/Deluxe/leiste2.jpg b/Skins/Deluxe/leiste2.jpg index 5af6841f..9268a3d1 100644 Binary files a/Skins/Deluxe/leiste2.jpg and b/Skins/Deluxe/leiste2.jpg differ diff --git a/Skins/Deluxe/mainicon.jpg b/Skins/Deluxe/mainicon.jpg new file mode 100644 index 00000000..5941256a Binary files /dev/null and b/Skins/Deluxe/mainicon.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 575dc561..86284ad2 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -38,16 +38,16 @@ Tex=LoadingBG [LoadingText1] X =30 -Y =500 +Y =550 Color =White Font =1 Align =0 -Size =12 +Size =10 Text =SING_LOADING [LoadingText2] -X =628 -Y =583 +X =590 +Y =556 Color=White Font =0 Size =6 @@ -63,100 +63,126 @@ Tex=MainBG [MainText1] X =120 -Y =550 -Color=White +Y =552 +Color=Black Font =0 -Size =8 +Size =7 Align=0 Text=SING_MENU [MainTextDescriptionLong] X =300 -Y =550 -Color=White +Y =552 +Color=Black Font =0 -Size =8 +Size =7 Align=0 Text= [MainStatic1] X =0 -Y =550 -W =254 -H =30 +Y =549 +W =252 +H =28 Tex=Leiste1 -Color =AquaLightGreen -Int = 1 -Type=Font Black -# +Color =White +Type=Plain +Reflection=1 [MainStatic2] X =254 -Y =550 +Y =549 W =548 -H =30 +H =28 Tex=Leiste2 -Color =Gray -Int = 1 -Type=Font Black +Color =White +Type=Plain +Reflection=1 [MainButtonSolo] -X =200 -Y =250 +X =180 +Y =270 W =150 -H =67 -Tex =MainSolo +H =50 +Tex =Button Color =DarkBlue -Int = 1 DColor = LightBlue -DInt = 0.7 Type=Font Black -Texts=0 +Texts=1 Reflection=1 +[MainButtonSoloText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_SING +Color=White + [MainButtonEditor] -X =350 -Y =250 +X =335 +Y =270 W =150 -H =67 -Tex =MainMulti +H =50 +Tex =Button Color =DarkBlue -Int = 1 DColor = LightBlue -DInt = 0.7 Type=Font Black -Texts=0 +Texts=1 Reflection=1 +[MainButtonEditorText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_EDITOR +Color=White + [MainButtonOptions] -X =500 -Y =250 +X =490 +Y =270 W =150 -H =67 -Tex =MainOptions +H =50 +Tex =Button Color =DarkBlue -Int = 1 -#Int = 0.8 DColor = LightBlue -DInt = 0.7 Type=Font Black -Texts=0 +Texts=1 Reflection=1 +[MainButtonOptionsText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS +Color=White + [MainButtonExit] -X =650 -Y =250 +X =645 +Y =270 W =150 -H =67 -Tex =MainExit +H =50 +Tex =Button Color =DarkBlue -Int = 1 DColor = LightBlue -DInt = 0.7 Type=Font Black -Texts=0 +Texts=1 Reflection=1 +[MainButtonExitText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_EXIT +Color=White + [Song] Texts =3 @@ -177,7 +203,7 @@ Direction=1 Color= White Alpha=1 X=205 -Y=423 +Y=514 Z=1 PieceW=6 PieceH=6 @@ -187,40 +213,49 @@ Length=26 [SongText1] X =70 -Y =40 +Y =6 Color=White -Font =1 -Size =15 +Font =0 +Size =20 Text=SING_SONG_SELECTION Align=0 +[SongTextCat] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=Moin Moin Maus Fans + +[SongStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =SongCD +Type=Font Black + [SongText2] X =120 -Y =550 -Color=White +Y =552 +Color=Black Font =0 -Size =8 +Size =7 Align=0 Text=SING_SONGSELECTION [SongText3] X =300 -Y =550 -Color=White +Y =552 +Color=Black Font =0 -Size =8 +Size =7 Align=0 Text=US_VERSION -[SongStatic1] -X =40 -Y =52 -W =25 -H =25 -Color =White -Tex =SongCD -Type=Font Black - [SongStatic2] X =248 Y =320 @@ -231,26 +266,25 @@ Color =LightBlue Tex =SongSelection2 Type=Font Black - [SongStatic3] X =0 -Y =550 -W =254 -H =30 +Y =549 +W =252 +H =28 Tex=Leiste1 -Color =AquaLightGreen -Int = 1 -Type=Font Black +Color =White +Type=Plain +Reflection=1 [SongStatic4] X =254 -Y =550 +Y =549 W =548 -H =30 +H =28 Tex=Leiste2 -Color =Gray -Int = 1 -Type=Font Black +Color =White +Type=Plain +Reflection=1 [SongStatic5] X =200 @@ -288,28 +322,6 @@ Size =8 Align =1 Text= -[SongTextCat] -X =400 -Y = 50 -Color=White -Font =1 -Size =10 -Align =0 -Text=Moin Moin Maus Fans - -[SongStaticCat] -Tex =cd -X =12 -Y =7 -W =85 -H =85 -Color=White -Type=Plain -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - [SongStaticTeam1Joker1] Tex =P X =10 @@ -2046,7 +2058,6 @@ Fade = 2 [OptionsBackground] Tex=OptionsBG - [OptionsText1] X = 50 Y = 170 @@ -3135,117 +3146,138 @@ TexX2=1 TexY2=1 [Level] -Texts=2 +Texts=4 [LevelBackground] Tex=MainBG +[LevelText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_SING_MODE +Color=White + +[LevelText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=SING_DIFFICULTY + [LevelStatic1] X =0 -Y =550 -W =254 -H =30 +Y =549 +W =252 +H =28 Tex=Leiste1 -Color =AquaLightGreen -Int = 1 -Type=Font Black +Color =White +Type=Plain +Reflection=1 [LevelStatic2] X =254 -Y =550 +Y =549 W =548 -H =30 +H =28 Tex=Leiste2 -Color =Gray -Int = 1 +Color =White +Type=Plain +Reflection=1 + +[LevelStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =MainIcon Type=Font Black +[LevelText3] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_SING_MODE + +[LevelText4] +X =300 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_DIFFICULTY + [LevelButtonEasy] -Tex=Button -X=25 -Y=310 -W=250 -H=70 -Type=Font Black -Texts=1 +X =180 +Y =270 +W =150 +H =50 +Tex =Button Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 +Type=Font Black +Texts=1 Reflection=1 [LevelButtonMedium] -Tex=Button -X=275 -Y=310 -W=250 -H=70 -Type=Font Black -Texts=1 +X =335 +Y =270 +W =150 +H =50 +Tex =Button Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 +Type=Font Black +Texts=1 Reflection=1 [LevelButtonHard] -Tex=Button -X=525 -Y=310 -W=250 -H=70 -Type=Font Black -Texts=1 +X =490 +Y =270 +W =150 +H =50 +Tex =Button Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 +Type=Font Black +Texts=1 Reflection=1 -[LevelText1] -X=30 -Y=180 -Font=1 -Size=22 -Align=0 -Text=SING_SING_MODE -Color=GrayLight - -[LevelText2] -X=50 -Y=248 -Font=1 -Size=10 -Align=0 -Text=SING_DIFFICULTY -Color=Gray - [LevelButtonEasyText1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text=SING_EASY Color=White +Text=SING_EASY [LevelButtonMediumText1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text=SING_MEDIUM Color=White +Text=SING_MEDIUM [LevelButtonHardText1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text=SING_HARD Color=White +Text=SING_HARD [Name] Texts=2 @@ -3255,165 +3287,186 @@ Tex=MainBG [NameStatic1] X =0 -Y =550 -W =254 -H =30 +Y =549 +W =252 +H =28 Tex=Leiste1 -Color =AquaLightGreen -Int = 1 -Type=Font Black +Color =White +Type=Plain +Reflection=1 [NameStatic2] X =254 -Y =550 +Y =549 W =548 -H =30 +H =28 Tex=Leiste2 -Color =Gray -Int = 1 +Color =White +Type=Plain +Reflection=1 + +[NameText2] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_OPTIONS_GAME_PLAYERS + +[NameText3] +X =300 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_ENTER_PLAYER_NAME + +[NameStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =MainIcon Type=Font Black [NameText1] -X=40 -Y=200 -Font=1 -Size=20 -Align=0 +X =70 +Y =6 +Color=White +Font =0 +Size =20 Text=SING_ENTER_PLAYER_NAME Color=White [NameButtonPlayer1] -Tex=Button -X=25 -Y=310 -W=250 -H=70 +X =180 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue Type=Font Black Texts=1 -Color=LightBlue -Int=0.8 -DColor=DarkBlue -DInt=0.7 +Reflection=1 [NameButtonPlayer1Text1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Color=White +Text= [NameButtonPlayer2] -Tex=Button -X=25 -Y=380 -W=250 -H=70 +X =335 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkRed +DColor = LightRed Type=Font Black Texts=1 -Color=LightRed -Int=0.8 -DColor=DarkRed -DInt=0.7 +Reflection=1 [NameButtonPlayer2Text1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Color=White +Text= [NameButtonPlayer3] -Tex=Button -X=25 -Y=450 -W=250 -H=70 +X =490 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkGreen +DColor = LightGreen Type=Font Black Texts=1 -Color=LightGreen -Int=0.8 -DColor=DarkGreen -DInt=0.7 +Reflection=1 [NameButtonPlayer3Text1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Color=White +Text= [NameButtonPlayer4] -Tex=Button -X=425 -Y=310 -W=250 -H=70 -Type=Font Black -Texts=1 -Color=LightPurple -Int=0.8 -DColor=DarkPurple -DInt=0.7 - -[NameButtonPlayer5] -Tex=Button -X=425 -Y=380 -W=250 -H=70 -Type=Font Black -Texts=1 -Color=LightOrange -Int=0.8 -DColor=DarkOrange -DInt=0.7 - -[NameButtonPlayer6] -Tex=Button -X=425 -Y=450 -W=250 -H=70 +X =180 +Y =400 +W =150 +H =50 +Tex =Button +Color =DarkPurple +DColor = LightPurple Type=Font Black Texts=1 -Color=LightYellow -Int=0.8 -DColor=DarkYellow -DInt=0.7 +Reflection=1 [NameButtonPlayer4Text1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Color=White +Text= + +[NameButtonPlayer5] +X =335 +Y =400 +W =150 +H =50 +Tex =Button +Color =DarkOrange +DColor = LightOrange +Type=Font Black +Texts=1 +Reflection=1 [NameButtonPlayer5Text1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Color=White +Text= + +[NameButtonPlayer6] +X =490 +Y =400 +W =150 +H =50 +Tex =Button +Color =DarkYellow +DColor = LightYellow +Type=Font Black +Texts=1 +Reflection=1 [NameButtonPlayer6Text1] -X=115 -Y=20 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Color=White +Text= [PartyNewRound] Texts =0 @@ -4582,7 +4635,6 @@ TexY1=0.05 TexX2=0.98 TexY2=0.98 - [SongJumpto] Texts=0 Statics=1 -- cgit v1.2.3 From 2bc1fdaec54eca194f6873589334cf0b649536d4 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 28 Mar 2007 19:01:01 +0000 Subject: Add Jumpto Screen to ThemeAdded Jumpto Ability to SongScreen (Press J) Fixed: Golden Notes are not shown in PartyMode git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@44 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 194 ++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 Game/Code/Screens/UScreenSongJumpto.pas diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas new file mode 100644 index 00000000..449141c3 --- /dev/null +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -0,0 +1,194 @@ +unit UScreenSongJumpto; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + +type + TScreenSongJumpto = class(TMenu) + private + Songsfound: String; + NoSongsfound: String; + CatText: String; + public + Visible: Boolean; //Whether the Menu should be Drawn + VisSongs: Integer; + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + function Draw: boolean; override; + + procedure SetTextFound(const Count: Cardinal); + end; + +var + IType: Array [0..2] of String; + SelectType: Integer; + + +implementation + +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, USongs, UScreenSong; + +function TScreenSongJumpto.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; + function IsVisible: Boolean; + begin + Result := True; + if (Interactions[Interaction].Typ = 0) then + begin + Result := Button[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 1) then + begin + //Result := Selects[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 3) then + begin + Result := SelectsS[Interactions[Interaction].Num].Visible; + end; + end; + + Procedure SelectNext; + begin + repeat + InteractNext; + until IsVisible; + end; + + Procedure SelectPrev; + begin + repeat + InteractPrev; + until IsVisible; + end; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + begin + if Interaction = 0 then + begin + Button[0].Text[0].Text := Button[0].Text[0].Text + chr(ScanCode); + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + end; + end; + + SDLK_BACKSPACE: + begin + if Interaction = 0 then + begin + Delete(Button[0].Text[0].Text, + Length(Button[0].Text[0].Text), 1); + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + end; + end; + + SDLK_ESCAPE : + begin + Music.PlayBack; + Visible := False; + if VisSongs = 0 then + CatSongs.SetFilter('', 0); + end; + + SDLK_RETURN: + begin + Visible := False; + Music.PlayBack; + if VisSongs = 0 then + CatSongs.SetFilter('', 0); + end; + + // Up and Down could be done at the same time, + // but I don't want to declare variables inside + // functions like this one, called so many times + SDLK_DOWN: SelectNext; + SDLK_UP: SelectPrev; + + SDLK_RIGHT: + begin + if (Interaction=1) then + InteractInc; + end; + SDLK_LEFT: + begin + if (Interaction=1) then + InteractDec; + end; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenSongJumpto.Create; +var + I: integer; +begin + inherited Create; + //Translate Texts //TODO: Port to UTheme (Linebonus and PartyScreens, too + IType[0] := Language.Translate('SONG_JUMPTO_TYPE1'); + IType[1] := Language.Translate('SONG_JUMPTO_TYPE2'); + IType[2] := Language.Translate('SONG_JUMPTO_TYPE3'); + SongsFound := Language.Translate('SONG_JUMPTO_SONGSFOUND'); + NoSongsFound := Language.Translate('SONG_JUMPTO_NOSONGSFOUND'); + CatText := Language.Translate('SONG_JUMPTO_CATTEXT'); + + AddBackground(Theme.SongJumpto.Background.Tex); + + AddButton(Theme.SongJumpto.ButtonSearchText); + if (Length(Button[0].Text) = 0) then + AddButtonText(14, 20, ''); + + SelectType := 0; + AddSelectSlide(Theme.SongJumpto.SelectSlideType, SelectType, IType); + + AddText(Theme.SongJumpto.TextFound); + + for I := 0 to High(Theme.SongJumpto.Static) do + AddStatic(Theme.SongJumpto.Static[I]); + + for I := 0 to High(Theme.SongJumpto.Text) do + AddText(Theme.SongJumpto.Text[I]); + + Interaction := 0; +end; + +procedure TScreenSongJumpto.onShow; +begin + Interaction := 0; + SetTextFound(0); +end; + +function TScreenSongJumpto.Draw: boolean; +begin + Result := inherited Draw; +end; + +procedure TScreenSongJumpto.SetTextFound(const Count: Cardinal); +begin + if (Count = 0) then + Text[0].Text := NoSongsFound + else + Text[0].Text := Format(SongsFound, [Count]); + + //Set CatTopLeftText + ScreenSong.ShowCatTLCustom(Format(CatText, [Button[0].Text[0].Text])); + + //visSongs setzen + VisSongs := Count; + + //Fix SongSelection + ScreenSong.Interaction := 0; + ScreenSong.SelectNext; + ScreenSong.FixSelected; +end; + +end. -- cgit v1.2.3 From 95ca54c5b91bda9aed3e834b220bedbf750d0aff Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 28 Mar 2007 19:10:47 +0000 Subject: Theme/Skin:Cleanup in Deluxe theme (unneeded buttons from main menu are now deleted) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@45 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Editor.jpg | Bin 7482 -> 0 bytes Skins/Deluxe/Sing.jpg | Bin 8060 -> 0 bytes Skins/Deluxe/exit.jpg | Bin 9099 -> 0 bytes Skins/Deluxe/options.jpg | Bin 9136 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Skins/Deluxe/Editor.jpg delete mode 100644 Skins/Deluxe/Sing.jpg delete mode 100644 Skins/Deluxe/exit.jpg delete mode 100644 Skins/Deluxe/options.jpg diff --git a/Skins/Deluxe/Editor.jpg b/Skins/Deluxe/Editor.jpg deleted file mode 100644 index ac1b3889..00000000 Binary files a/Skins/Deluxe/Editor.jpg and /dev/null differ diff --git a/Skins/Deluxe/Sing.jpg b/Skins/Deluxe/Sing.jpg deleted file mode 100644 index 45fc6ea4..00000000 Binary files a/Skins/Deluxe/Sing.jpg and /dev/null differ diff --git a/Skins/Deluxe/exit.jpg b/Skins/Deluxe/exit.jpg deleted file mode 100644 index 8fc068f7..00000000 Binary files a/Skins/Deluxe/exit.jpg and /dev/null differ diff --git a/Skins/Deluxe/options.jpg b/Skins/Deluxe/options.jpg deleted file mode 100644 index aa08275a..00000000 Binary files a/Skins/Deluxe/options.jpg and /dev/null differ -- cgit v1.2.3 From 41ebc89e949c070860078bcf3da2118c3ccb0955 Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 28 Mar 2007 23:03:04 +0000 Subject: Skin/Theme: Added description for shortcut keys within the bar at the bottom, hope this makes everything a bit more clear for new users git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@46 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 6 +- Skins/Deluxe/W&C.ini | 7 ++- Skins/Deluxe/button_alt.jpg | Bin 0 -> 1167 bytes Skins/Deluxe/button_az.jpg | Bin 0 -> 1189 bytes Skins/Deluxe/button_j.jpg | Bin 0 -> 1011 bytes Skins/Deluxe/button_m.jpg | Bin 0 -> 1045 bytes Themes/Deluxe.ini | 139 +++++++++++++++++++++++++++++++++++--------- 7 files changed, 123 insertions(+), 29 deletions(-) create mode 100644 Skins/Deluxe/button_alt.jpg create mode 100644 Skins/Deluxe/button_az.jpg create mode 100644 Skins/Deluxe/button_j.jpg create mode 100644 Skins/Deluxe/button_m.jpg diff --git a/Languages/German.ini b/Languages/German.ini index 0e1a76a3..10e0ed08 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -11,6 +11,7 @@ SING_EDITOR_DESC=Mach deinen eigenen Song SING_GAME_OPTIONS=Spiel-Optionen SING_GAME_OPTIONS_DESC=Verändere die Spieleinstellungen +SING_EXIT=Beenden SING_EXIT_DESC=Spiel verlassen SING_OPTIONS_GAME=Spiel @@ -124,12 +125,13 @@ SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=Joker spielen -SONG_JUMPTO_DESC=Jump to Song: + +SONG_JUMPTO_DESC=Jump to Song SONG_JUMPTO_TYPE_DESC=Suchen in: SONG_JUMPTO_TYPE1=Allem SONG_JUMPTO_TYPE2=Titel SONG_JUMPTO_TYPE3=Artist -SONG_JUMPTO_SONGSFOUND=%d Songs gefunden +SONG_JUMPTO_SONGSFOUND=%d Song(s) gefunden SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index f0142f84..9340dde1 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -64,4 +64,9 @@ SingBarFront=Sing Bar Front.jpg LineBonusBack=Line Bonus PopUp.jpg -HDL_Pointer=Pointer.BMP \ No newline at end of file +HDL_Pointer=Pointer.BMP + +ButtonM=button_m.jpg +ButtonJ=button_j.jpg +ButtonAlt=button_alt.jpg +ButtonAZ=button_az.jpg \ No newline at end of file diff --git a/Skins/Deluxe/button_alt.jpg b/Skins/Deluxe/button_alt.jpg new file mode 100644 index 00000000..2e5e885a Binary files /dev/null and b/Skins/Deluxe/button_alt.jpg differ diff --git a/Skins/Deluxe/button_az.jpg b/Skins/Deluxe/button_az.jpg new file mode 100644 index 00000000..62b2d21c Binary files /dev/null and b/Skins/Deluxe/button_az.jpg differ diff --git a/Skins/Deluxe/button_j.jpg b/Skins/Deluxe/button_j.jpg new file mode 100644 index 00000000..9d872087 Binary files /dev/null and b/Skins/Deluxe/button_j.jpg differ diff --git a/Skins/Deluxe/button_m.jpg b/Skins/Deluxe/button_m.jpg new file mode 100644 index 00000000..5b0f2015 Binary files /dev/null and b/Skins/Deluxe/button_m.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 86284ad2..df231597 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -99,6 +99,25 @@ Color =White Type=Plain Reflection=1 +[MainStatic3] +X =600 +Y =549 +W =25 +H =28 +Tex=ButtonM +Color =White +Type=Plain +Reflection=1 + +[MainText2] +X =625 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_OPTIONS_DESC + [MainButtonSolo] X =180 Y =270 @@ -227,7 +246,7 @@ Color=White Font =0 Size =10 Align =0 -Text=Moin Moin Maus Fans +Text=SING_CHOOSE_SONG [SongStatic1] X =40 @@ -247,21 +266,12 @@ Size =7 Align=0 Text=SING_SONGSELECTION -[SongText3] -X =300 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=US_VERSION - [SongStatic2] X =248 Y =320 W =200 H =200 -Z=1 +Z=0.98 Color =LightBlue Tex =SongSelection2 Type=Font Black @@ -286,6 +296,82 @@ Color =White Type=Plain Reflection=1 +[SongStatic8] +X =295 +Y =549 +W =29 +H =28 +Tex=ButtonAlt +Color =White +Type=Plain +Reflection=1 + +[SongText5] +X =324 +Y =556 +Color=Black +Font =1 +Size =5 +Align=0 +Text=+ + +[SongStatic9] +X =335 +Y =549 +W =29 +H =28 +Tex=ButtonAZ +Color =White +Type=Plain +Reflection=1 + +[SongText6] +X =370 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=Jump to .. + +[SongStatic6] +X =500 +Y =549 +W =25 +H =28 +Tex=ButtonM +Color =White +Type=Plain +Reflection=1 + +[SongText3] +X =525 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SONG_MENU_NAME_MAIN + +[SongStatic7] +X =600 +Y =549 +W =25 +H =28 +Tex=ButtonJ +Color =White +Type=Plain +Reflection=1 + +[SongText4] +X =625 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SONG_JUMPTO_DESC + [SongStatic5] X =200 Y =120 @@ -3321,7 +3407,7 @@ Color=Black Font =0 Size =7 Align=0 -Text=SING_ENTER_PLAYER_NAME +Text=PARTY_SELECT_PLAYER [NameStatic3] X =40 @@ -4646,42 +4732,43 @@ Z = 1 W = 160 H = 50 Tex = button -Color = ColorDark +Color = DarkGreen Int = 0.7 DColor = White DInt = 0.3 -Type = Font Black +Type = Plain + [SongJumptoSelectSlideType] Tex = button -TexSBG = button +TexSBG = mainicon Text = SONG_JUMPTO_TYPE_DESC X = 240 Y = 185 Z = 1 W = 150 H = 50 -SkipX = 20 -Fields=7 - -Color = ColorDark +SkipX = 0 +Fields=2 +Color = LightBlue DColor = Gray TColor = White TDColor = White -SBGTex = MainBar -SBGColor = ColorDark +SBGTex = button +SBGColor = LightGreen SBGDColor = Gray STColor = White -STDColor = GrayDark +STDColor = Gray [SongJumptoTextFound] X =450 Y =395 -Color=Grey -Font =1 +Color=White +Font =0 Size =10 Text=Dummy Align=1 +Z=1 [SongJumptoStatic1] Tex =Button @@ -4691,8 +4778,8 @@ W =350 H =250 Z =0.99 Int=0.6 -Color =LightBlue -Type=Transparent +Color =DarkBlue +Type=plain TexX1=0.02 TexY1=0.05 TexX2=0.98 -- cgit v1.2.3 From 92f5f8a835d4a5e6d68bd64057bd5198bf5ca63d Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 29 Mar 2007 01:39:22 +0000 Subject: Theme/Skin:"Jump to" is now more readable, still some glitches. Will be fixed when me matey adds some skin functions. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@47 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 2 +- Skins/Deluxe/W&C.ini | 4 +- Skins/Deluxe/jump_to_background.jpg | Bin 0 -> 1870 bytes Skins/Deluxe/mainsearch.jpg | Bin 0 -> 759 bytes Themes/Deluxe.ini | 95 ++++++++++++++++++++---------------- 5 files changed, 57 insertions(+), 44 deletions(-) create mode 100644 Skins/Deluxe/jump_to_background.jpg create mode 100644 Skins/Deluxe/mainsearch.jpg diff --git a/Languages/German.ini b/Languages/German.ini index 10e0ed08..f714c969 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -133,7 +133,7 @@ SONG_JUMPTO_TYPE2=Titel SONG_JUMPTO_TYPE3=Artist SONG_JUMPTO_SONGSFOUND=%d Song(s) gefunden SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden - +SONG_JUMPTO_HELP=Text eingeben um zu suchen PARTY_SCORE_WINS=%s hat gewonnen! PARTY_OPTIONS_DESC=Party Modus diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 9340dde1..d874d29c 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -37,6 +37,7 @@ MainExit=Exit.jpg SongCD=cd.jpg MainIcon=mainicon.jpg +MainSearch=mainsearch.jpg Leiste1=Leiste1.jpg Leiste2=Leiste2.jpg @@ -69,4 +70,5 @@ HDL_Pointer=Pointer.BMP ButtonM=button_m.jpg ButtonJ=button_j.jpg ButtonAlt=button_alt.jpg -ButtonAZ=button_az.jpg \ No newline at end of file +ButtonAZ=button_az.jpg +JumpToBG=Jump_to_background.jpg \ No newline at end of file diff --git a/Skins/Deluxe/jump_to_background.jpg b/Skins/Deluxe/jump_to_background.jpg new file mode 100644 index 00000000..a8b93e10 Binary files /dev/null and b/Skins/Deluxe/jump_to_background.jpg differ diff --git a/Skins/Deluxe/mainsearch.jpg b/Skins/Deluxe/mainsearch.jpg new file mode 100644 index 00000000..b5870592 Binary files /dev/null and b/Skins/Deluxe/mainsearch.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index df231597..97b113b0 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -4725,62 +4725,73 @@ TexY2=0.98 Texts=0 Statics=1 -[SongJumptoButtonSearchText] -X = 450 -Y = 240 -Z = 1 -W = 160 -H = 50 -Tex = button -Color = DarkGreen -Int = 0.7 -DColor = White -DInt = 0.3 -Type = Plain +[SongJumptoStatic1] +Tex =JumpToBG +X =171 +Y =175 +W =355 +H =175 +Z =0.99 +Int=1 +Color =DarkBlue +Type=Font Black +[SongJumptoStatic2] +X =184 +Y =185 +W =21 +H =21 +Color =White +Tex =MainSearch +Type=Font Black +Z=1 + +[SongJumptoText1] +X =210 +Y =175 +Color=White +Font =0 +Size =14 +Text=SONG_JUMPTO_TYPE_DESC +Align=0 +Z=1 [SongJumptoSelectSlideType] Tex = button TexSBG = mainicon -Text = SONG_JUMPTO_TYPE_DESC -X = 240 +#Text = SONG_JUMPTO_TYPE_DESC +Font=10 +X = 192 Y = 185 Z = 1 -W = 150 -H = 50 +W = 0 +H = 0 SkipX = 0 Fields=2 -Color = LightBlue -DColor = Gray +DColor = LightBlue TColor = White TDColor = White SBGTex = button -SBGColor = LightGreen -SBGDColor = Gray +SBGDColor = LightBlue STColor = White -STDColor = Gray +STDColor = LightBlue + +[SongJumptoButtonSearchText] +X = 200 +Y = 215 +Z = 1 +W = 160 +H = 50 +Size=14 +Font=1 +Align=0 [SongJumptoTextFound] -X =450 -Y =395 +X =184 +Y =295 Color=White Font =0 -Size =10 -Text=Dummy -Align=1 -Z=1 - -[SongJumptoStatic1] -Tex =Button -X =225 -Y =175 -W =350 -H =250 -Z =0.99 -Int=0.6 -Color =DarkBlue -Type=plain -TexX1=0.02 -TexY1=0.05 -TexX2=0.98 -TexY2=0.98 \ No newline at end of file +Size =8 +Text=SONG_JUMPTO_HELP +Align=0 +Z=1 \ No newline at end of file -- cgit v1.2.3 From 8d591b8344e0cb87e1a987961b3790fa26d323a6 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 29 Mar 2007 12:40:11 +0000 Subject: Fixed Some Bugs in JumpTo Screen: Now plays correct music Space Bug is gone Added onSentenceChange Procedure to ScreenSing git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@48 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMain.pas | 3 + Game/Code/Classes/USongs.pas | 1 + Game/Code/Screens/UScreenSing.pas | 116 +++++++++++++++++--------------- Game/Code/Screens/UScreenSong.pas | 58 +++++++--------- Game/Code/Screens/UScreenSongJumpto.pas | 41 ++++++++++- 5 files changed, 127 insertions(+), 92 deletions(-) diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 3ef65e1d..f92b9457 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -387,6 +387,9 @@ begin end; Sender.UpdateLCD; + + //On Sentence Change... + Sender.onSentenceChange(Czesci[0].Akt); end; procedure NewBeat(Sender: TScreenSing); diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index 5b75879d..cc3c8b95 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -669,6 +669,7 @@ begin {fType: 0: All 1: Title 2: Artist} + FilterStr := Trim(FilterStr); if FilterStr<>'' then begin Result := 0; //Create Search Array diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 7b96e273..201b97fa 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -50,6 +50,8 @@ type //OnSentenceEnd for LineBonus + Singbar procedure onSentenceEnd(S: Cardinal); + //OnSentenceChange (for Golden Notes) + procedure onSentenceChange(S: Cardinal); end; implementation @@ -1055,73 +1057,73 @@ A: Real; B: integer; //Max Points for Notes begin -//Check for Empty Sentence -if (Czesci[0].Czesc[S].TotalNotes<=0) then - exit; + //Check for Empty Sentence + if (Czesci[0].Czesc[S].TotalNotes<=0) then + exit; -//Set Max Note Points -if (Ini.LineBonus > 0) then - B := 9000 -else - B := 10000; + //Set Max Note Points + if (Ini.LineBonus > 0) then + B := 9000 + else + B := 10000; -for I := 0 to High(Player) do begin - A := Player[I].Score + Player[I].ScoreGolden - Player[I].ScoreLast + 2; + for I := 0 to High(Player) do begin + A := Player[I].Score + Player[I].ScoreGolden - Player[I].ScoreLast + 2; - //SingBar Mod - If ({(Ini.Oscilloscope = 2) and }(Czesci[0].Czesc[S].TotalNotes>0)) then - begin - Player[I].ScorePercentTarget := Player[I].ScorePercentTarget + floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 40 - 26); - if Player[I].ScorePercentTarget < 0 then Player[I].ScorePercentTarget := 0; - if Player[I].ScorePercentTarget > 99 then Player[I].ScorePercentTarget := 99; + //SingBar Mod + If ({(Ini.Oscilloscope = 2) and }(Czesci[0].Czesc[S].TotalNotes>0)) then + begin + Player[I].ScorePercentTarget := Player[I].ScorePercentTarget + floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 40 - 26); + if Player[I].ScorePercentTarget < 0 then Player[I].ScorePercentTarget := 0; + if Player[I].ScorePercentTarget > 99 then Player[I].ScorePercentTarget := 99; //end Singbar Mod - end; + end; //PhrasenBonus - Line Bonus Mod - If (Ini.LineBonus > 0) then - begin - - //Generate Steps 0 to 8 - A := Floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 8); - if A >= 8 then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_PERFECT') - else if (A = 6) or (A = 7) then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BETTER') - else if A = 5 then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_GOOD') - else if (A = 3) or (A = 4) then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_NORMAL') - else if A = 2 then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BAD') - else - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_WORST'); - - //PhrasenBonus give Points - Player[I].ScoreLine := Player[I].ScoreLine + (1000 / (Length(Czesci[0].Czesc) - NumEmptySentences) * A / 8); - Player[I].ScoreLineI := Round(Player[I].ScoreLine / 10) * 10; - //Update Total Score - Player[I].ScoreTotalI := Player[I].ScoreI + Player[I].ScoreGoldenI + Player[I].ScoreLineI; - - //Color - Player[I].LineBonus_Color.B := 0; - Player[I].LineBonus_Color.R := (8-A)/8; - Player[I].LineBonus_Color.G := A/10; - - Player[I].LineBonus_PosX := Player[I].LineBonus_StartX; - Player[I].LineBonus_PosY := Player[I].LineBonus_StartY; - Player[I].LineBonus_Alpha := 0.92; - Player[I].LineBonus_Visible := True; + If (Ini.LineBonus > 0) then + begin + + //Generate Steps 0 to 8 + A := Floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 8); + if A >= 8 then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_PERFECT') + else if (A = 6) or (A = 7) then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BETTER') + else if A = 5 then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_GOOD') + else if (A = 3) or (A = 4) then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_NORMAL') + else if A = 2 then + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BAD') + else + Player[I].LineBonus_Text := Language.Translate('LINEBONUS_WORST'); + + //PhrasenBonus give Points + Player[I].ScoreLine := Player[I].ScoreLine + (1000 / (Length(Czesci[0].Czesc) - NumEmptySentences) * A / 8); + Player[I].ScoreLineI := Round(Player[I].ScoreLine / 10) * 10; + //Update Total Score + Player[I].ScoreTotalI := Player[I].ScoreI + Player[I].ScoreGoldenI + Player[I].ScoreLineI; + + //Color + Player[I].LineBonus_Color.B := 0; + Player[I].LineBonus_Color.R := (8-A)/8; + Player[I].LineBonus_Color.G := A/10; + + Player[I].LineBonus_PosX := Player[I].LineBonus_StartX; + Player[I].LineBonus_PosY := Player[I].LineBonus_StartY; + Player[I].LineBonus_Alpha := 0.92; + Player[I].LineBonus_Visible := True; - end; + end; -//Refresh LastScore -Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; + //Refresh LastScore + Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; -end; + end; //PhrasenBonus - Line Bonus Mod End// } //GoldenStarsTwinkle Mod @@ -1129,4 +1131,10 @@ end; //GoldenStarsTwinkle Mod End end; +//Called on Sentence Change S= New Current Sentence +procedure TScreenSing.onSentenceChange(S: Cardinal); +begin + //Dummy +end; + end. diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 69ec8639..9202717d 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -74,6 +74,7 @@ type procedure HideCatTL;// Show Cat in Tob left procedure Refresh; //Refresh Song Sorting procedure DrawEqualizer; + procedure ChangeMusic; //Party Mode procedure SelectRandomSong; procedure SetJoker; @@ -269,11 +270,7 @@ begin FixSelected; //Play Music: - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; end else begin // clicked on song if (Mode = 0) then //Normal Mode -> Start Song @@ -342,11 +339,7 @@ begin //Play Music: Music.PlayChange; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; end; @@ -392,11 +385,7 @@ begin //Play Music: Music.PlayChange; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; end; @@ -412,11 +401,7 @@ begin SelectNext; // InteractNext; // SongTarget := Interaction; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; SetScroll4; UpdateLCD; Light.LightOne(1, 200); @@ -428,11 +413,7 @@ begin if (Length(Songs.Song) > 0)AND (Mode = 0) then begin Music.PlayChange; SelectPrev; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; SetScroll4; UpdateLCD; Light.LightOne(0, 200); @@ -514,11 +495,7 @@ begin end; Music.PlayChange; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; SetScroll4; UpdateLCD; end; @@ -1288,6 +1265,21 @@ begin LCD.WriteText(2, Text[TextTitle].Text); end; +//Procedure Change current played Preview +procedure TScreenSong.ChangeMusic; +begin + if (NOT CatSongs.Song[Interaction].Main) AND(CatSongs.VisibleSongs > 0) then + begin + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + Music.Play; + end; + end + else + Music.Stop; +end; + procedure TScreenSong.SkipTo(Target: integer); // 0.5.0 var Skip: integer; @@ -1447,11 +1439,7 @@ begin //Choose Song SkipTo(I2-I); - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - Music.Play; - end; + ChangeMusic; end; procedure TScreenSong.SetJoker; diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 449141c3..2bf0cb5b 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -11,10 +11,20 @@ type Songsfound: String; NoSongsfound: String; CatText: String; + + //For ChangeMusic + LastPlayed: Integer; + VisibleBool: Boolean; public - Visible: Boolean; //Whether the Menu should be Drawn VisSongs: Integer; + constructor Create; override; + + //Visible //Whether the Menu should be Drawn + //Whether the Menu should be Drawn + procedure SetVisible(Value: Boolean); + property Visible: Boolean read VisibleBool write SetVisible; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; function Draw: boolean; override; @@ -159,12 +169,29 @@ begin AddText(Theme.SongJumpto.Text[I]); Interaction := 0; + LastPlayed := 0; +end; + +procedure TScreenSongJumpto.SetVisible(Value: Boolean); +begin +//If change from unvisible to Visible then OnShow + if (VisibleBool = False) AND (Value = True) then + OnShow; + + VisibleBool := Value; end; procedure TScreenSongJumpto.onShow; begin - Interaction := 0; - SetTextFound(0); + //Reset Screen if no Old Search is Displayed + if (CatSongs.CatNumShow <> -2) then + begin + Interaction := 0; + SelectType := 0; + + Button[0].Text[0].Text := ''; + Text[0].Text := NoSongsFound; + end; end; function TScreenSongJumpto.Draw: boolean; @@ -189,6 +216,14 @@ begin ScreenSong.Interaction := 0; ScreenSong.SelectNext; ScreenSong.FixSelected; + + //Play Correct Music + if (ScreenSong.Interaction <> LastPlayed) then + begin + LastPlayed := ScreenSong.Interaction; + + ScreenSong.ChangeMusic; + end; end; end. -- cgit v1.2.3 From e0e16a3b1d28cf51fecf669d42465cf2a65728f3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 29 Mar 2007 16:54:52 +0000 Subject: Added SBGW to TSelectSlide: Defining the Width of the Selections BG Added W to TText + Pagebreaks. If Width is given the Text breaks at the given width. Breaks are not generated perfect yet, needs some tuning. Changed all affected Screens to fit the new TText Component git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@49 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 7 ++ Game/Code/Menu/UMenu.pas | 20 +++-- Game/Code/Menu/UMenuSelectSlide.pas | 7 +- Game/Code/Menu/UMenuText.pas | 141 +++++++++++++++++++++++++++---- Game/Code/Screens/UScreenEditHeader.pas | 2 +- Game/Code/Screens/UScreenName.pas | 3 +- Game/Code/Screens/UScreenOpen.pas | 6 +- Game/Code/Screens/UScreenPartyPlayer.pas | 3 +- Game/Code/Screens/UScreenSing.pas | 12 +-- Game/Code/Screens/UScreenSongJumpto.pas | 9 +- Themes/Deluxe.ini | 2 + 11 files changed, 169 insertions(+), 43 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index e31e94d2..a62c5aed 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -97,6 +97,7 @@ type TThemeText = record X: integer; Y: integer; + W: integer; Color: string; ColR: real; ColG: real; @@ -156,6 +157,10 @@ type Y: integer; W: integer; H: integer; + + //SBGW Mod + SBGW: integer; + Text: string; ColR, ColG, ColB, Int: real; DColR, DColG, DColB, DInt: real; @@ -1142,6 +1147,7 @@ begin DecimalSeparator := '.'; ThemeText.X := ThemeIni.ReadInteger(Name, 'X', 0); ThemeText.Y := ThemeIni.ReadInteger(Name, 'Y', 0); + ThemeText.W := ThemeIni.ReadInteger(Name, 'W', 0); ThemeText.ColR := ThemeIni.ReadFloat(Name, 'ColR', 0); ThemeText.ColG := ThemeIni.ReadFloat(Name, 'ColG', 0); @@ -1343,6 +1349,7 @@ begin ThemeSelectS.H := ThemeIni.ReadInteger(Name, 'H', 0); ThemeSelectS.SkipX := ThemeIni.ReadInteger(Name, 'SkipX', 0); + ThemeSelectS.SBGW := ThemeIni.ReadInteger(Name, 'SBGW', 450); LoadColor(ThemeSelectS.ColR, ThemeSelectS.ColG, ThemeSelectS.ColB, ThemeIni.ReadString(Name, 'Color', '')); ThemeSelectS.Int := ThemeIni.ReadFloat(Name, 'Int', 1); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index 7c256b5c..bf823b16 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -56,7 +56,7 @@ type function AddText(ThemeText: TThemeText): integer; overload; function AddText(X, Y: real; Tekst: string): integer; overload; function AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Tekst: string): integer; overload; - function AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; overload; + function AddText(X, Y, W: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; overload; // button function AddButton(ThemeButton: TThemeButton): integer; overload; @@ -82,7 +82,7 @@ type // select slide function AddSelectSlide(ThemeSelectS: TThemeSelectSlide; var Data: integer; Values: array of string): integer; overload; - function AddSelectSlide(X, Y, W, H, SkipX, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, + function AddSelectSlide(X, Y, W, H, SkipX, SBGW, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, TColR, TColG, TColB, TInt, TDColR, TDColG, TDColB, TDInt, SBGColR, SBGColG, SBGColB, SBGInt, SBGDColR, SBGDColG, SBGDColB, SBGDInt, STColR, STColG, STColB, STInt, STDColR, STDColG, STDColB, STDInt: real; @@ -320,7 +320,7 @@ end; function TMenu.AddText(ThemeText: TThemeText): integer; begin - Result := AddText(ThemeText.X, ThemeText.Y, ThemeText.Font, ThemeText.Size, + Result := AddText(ThemeText.X, ThemeText.Y, ThemeText.W, ThemeText.Font, ThemeText.Size, ThemeText.ColR, ThemeText.ColG, ThemeText.ColB, ThemeText.Align, ThemeText.Text); end; @@ -337,17 +337,17 @@ end; function TMenu.AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Tekst: string): integer; begin - Result := AddText(X, Y, Style, Size, ColR, ColG, ColB, 0, Tekst); + Result := AddText(X, Y, 0, Style, Size, ColR, ColG, ColB, 0, Tekst); end; -function TMenu.AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; +function TMenu.AddText(X, Y, W: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; var TextNum: integer; begin // adds text TextNum := Length(Text); SetLength(Text, TextNum + 1); - Text[TextNum] := TText.Create(X, Y, Style, Size, ColR, ColG, ColB, Align, Tekst); + Text[TextNum] := TText.Create(X, Y, W, Style, Size, ColR, ColG, ColB, Align, Tekst); Result := TextNum; end; @@ -846,7 +846,7 @@ function TMenu.AddSelectSlide(ThemeSelectS: TThemeSelectSlide; var Data: integer var SO: integer; begin - Result := AddSelectSlide(ThemeSelectS.X, ThemeSelectS.Y, ThemeSelectS.W, ThemeSelectS.H, ThemeSelectS.SkipX, + Result := AddSelectSlide(ThemeSelectS.X, ThemeSelectS.Y, ThemeSelectS.W, ThemeSelectS.H, ThemeSelectS.SkipX, ThemeSelectS.SBGW, ThemeSelectS.ColR, ThemeSelectS.ColG, ThemeSelectS.ColB, ThemeSelectS.Int, ThemeSelectS.DColR, ThemeSelectS.DColG, ThemeSelectS.DColB, ThemeSelectS.DInt, ThemeSelectS.TColR, ThemeSelectS.TColG, ThemeSelectS.TColB, ThemeSelectS.TInt, @@ -867,7 +867,7 @@ begin SelectsS[High(SelectsS)].SelectedOption := SelectsS[High(SelectsS)].SelectOptInt; // refresh end; -function TMenu.AddSelectSlide(X, Y, W, H, SkipX, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, +function TMenu.AddSelectSlide(X, Y, W, H, SkipX, SBGW, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt, TColR, TColG, TColB, TInt, TDColR, TDColG, TDColB, TDInt, SBGColR, SBGColG, SBGColB, SBGInt, SBGDColR, SBGDColG, SBGDColB, SBGDInt, STColR, STColG, STColB, STInt, STDColR, STDColG, STDColB, STDInt: real; @@ -886,6 +886,7 @@ begin SelectsS[S].Y := Y; SelectsS[S].W := W; SelectsS[S].H := H; + SelectsS[S].ColR := ColR; SelectsS[S].ColG := ColG; SelectsS[S].ColB := ColB; @@ -898,7 +899,8 @@ begin SelectsS[S].TextureSBG := Texture.GetTexture(SBGName, SBGTyp); SelectsS[S].TextureSBG.X := X + W + SkipX; SelectsS[S].TextureSBG.Y := Y; - SelectsS[S].TextureSBG.W := 450; + //SelectsS[S].TextureSBG.W := 450; + SelectsS[S].SBGW := SBGW; SelectsS[S].TextureSBG.H := H; SelectsS[S].SBGColR := SBGColR; SelectsS[S].SBGColG := SBGColG; diff --git a/Game/Code/Menu/UMenuSelectSlide.pas b/Game/Code/Menu/UMenuSelectSlide.pas index 7850cdf6..9885acc0 100644 --- a/Game/Code/Menu/UMenuSelectSlide.pas +++ b/Game/Code/Menu/UMenuSelectSlide.pas @@ -81,6 +81,8 @@ type // property W2: real read Texture2.w write Texture2.w; // property H2: real read Texture2.h write Texture2.h; + property SBGW: real read TextureSBG.w write TextureSBG.w; + // procedures procedure SetSelect(Value: boolean); property Selected: Boolean read SelectBool write SetSelect; @@ -104,6 +106,9 @@ begin SetLength(TextOpt, 1); TextOpt[0] := TText.Create; + //Set Standard Width for Selections Background + SBGW := 450; + Visible := True; {SetLength(TextOpt, 3); TextOpt[0] := TText.Create; @@ -326,7 +331,7 @@ begin TextOpt[I].Y := TextureSBG.Y + 20; //Better Look with 2 Options - if (Lines=2) then + if (Lines=2) AND (Length(TextOptT)= 2) then TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W -40 - glTextWidth(PChar(TextOptT[1]))) * I; end; //TextOpt[I] := TextOpt[0]; diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 5c435a18..4a5356d8 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -7,13 +7,14 @@ type TText = class private SelectBool: boolean; + TextString: String; + TextTiles: Array of String; public X: real; Y: real; -// W: real; // if text is wider than W then it is streched (not yet implemented) + W: real; // if text is wider than W then it is breaked // H: real; Size: real; - Text: string; ColR: real; ColG: real; ColB: real; @@ -25,43 +26,146 @@ type procedure SetSelect(Value: Boolean); property Selected: Boolean read SelectBool write SetSelect; + procedure SetText(Value: String); + property Text: String read TextString write SetText; + + procedure DeleteLastL; //Procedure to Delete Last Letter + procedure Draw; constructor Create; overload; constructor Create(X, Y: real; Tekst: string); overload; - constructor Create(ParX, ParY: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); overload; + constructor Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); overload; end; implementation -uses UGraphic; +uses UGraphic, StrUtils; procedure TText.SetSelect(Value: Boolean); begin SelectBool := Value; end; +procedure TText.SetText(Value: String); +var + I: Integer; + L: Integer; + LastPos: Integer; + LastBreak: Integer; +begin + TextString := Value; + + if (W > 0) then + begin + //Set Font Propertys + SetFontStyle(Style); + SetFontSize(Size); + + //Create New TextTiles Array + SetLength (TextTiles, 0); + L := 0; + + LastPos := 1; + LastBreak := 0; + I := Pos (' ', Value); + While (I <> 0) do + begin + if (glTextWidth(PChar(Copy (Value,LastBreak + 1,I))) > W) AND (LastPos <> 1) then + begin + //new Break + SetLength (TextTiles, L+1); + TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); + + Inc(L); + LastBreak := LastPos; + end; + + LastPos := I; + I := PosEx (' ', Value, I+1); + end; + + //Last Break + if (glTextWidth(PChar(Copy (Value,LastBreak + 1,Length(Value) - LastBreak))) > W) AND (LastPos <> 1) then + begin + //new Break + SetLength (TextTiles, L+1); + TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); + + Inc(L); + LastBreak := LastPos; + end; + + //last Part + SetLength (TextTiles, L+1); + TextTiles[L] := Copy (Value, LastBreak + 1, Length(Value) - LastBreak); + + end; +end; + +Procedure TText.DeleteLastL; +var + S: String; + L: Integer; +begin + S := TextString; + L := Length(S); + if (L > 0) then + SetLength(S, L-1); + + SetText(S); +end; + procedure TText.Draw; var - X2: real; + X2, Y2: real; Text2: string; + I: Integer; begin if Visible then begin SetFontStyle(Style); SetFontSize(Size); + SetFontItalic(False); glColor3f(ColR*Int, ColG*Int, ColB*Int); - if not SelectBool then - Text2 := Text + if (W <= 0) then //No Width set Draw as one Long String + begin + if not SelectBool then + Text2 := Text + else + Text2 := Text + '|'; + + case Align of + 0: X2 := X; + 1: X2 := X - glTextWidth(pchar(Text2))/2; + 2: X2 := X - glTextWidth(pchar(Text2)); + end; + + SetFontPos(X2, Y); + glPrint(PChar(Text2)); + SetFontStyle(0); // reset to default + end else - Text2 := Text + '|'; + begin //Draw Text as Many Strings + Y2 := Y; + for I := 0 to high(TextTiles) do + begin + if (not SelectBool) OR (I <> high(TextTiles)) then + Text2 := TextTiles[I] + else + Text2 := TextTiles[I] + '|'; - case Align of - 0: X2 := X; - 1: X2 := X - glTextWidth(pchar(Text2))/2; - 2: X2 := X - glTextWidth(pchar(Text2)); - end; + case Align of + 0: X2 := X; + 1: X2 := X - glTextWidth(pchar(Text2))/2; + 2: X2 := X - glTextWidth(pchar(Text2)); + end; - SetFontPos(X2, Y); - glPrint(PChar(Text2)); - SetFontStyle(0); // reset to default + SetFontPos(X2, Y2); + glPrint(PChar(Text2)); + + Y2 := Y2 + Size * 1.7; + end; + SetFontStyle(0); // reset to default + + end; end; end; @@ -72,14 +176,15 @@ end; constructor TText.Create(X, Y: real; Tekst: string); begin - Create(X, Y, 0, 10, 0, 0, 0, 0, Tekst); + Create(X, Y, 0, 0, 10, 0, 0, 0, 0, Tekst); end; -constructor TText.Create(ParX, ParY: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); +constructor TText.Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); begin inherited Create; X := ParX; Y := ParY; + W := ParW; Style := ParStyle; Size := ParSize; Text := ParTekst; diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas index 65f39e44..a601555a 100644 --- a/Game/Code/Screens/UScreenEditHeader.pas +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -105,7 +105,7 @@ begin begin T := Interaction - 2 + TextTitle; if (Interaction >= 2) and (Interaction <= 13) and (Length(Text[T].Text) >= 1) then begin - Delete(Text[T].Text, Length(Text[T].Text), 1); + Text[T].DeleteLastL; SetRoundButtons; end; end; diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index 99f5d40a..82519e87 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -33,8 +33,7 @@ begin SDLK_BACKSPACE: begin - Delete(Button[Interaction].Text[0].Text, - Length(Button[Interaction].Text[0].Text), 1); + Button[Interaction].Text[0].DeleteLastL; end; SDLK_ESCAPE : diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index 723f299f..264f57a9 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -43,9 +43,9 @@ begin case PressedKey of 8: // del begin - if Interaction = 0 then - if Length(Text[TextN].Text) >= 1 then begin - Delete(Text[TextN].Text, Length(Text[TextN].Text), 1); + if Interaction = 0 then + begin + Text[TextN].DeleteLastL; FileName := Text[TextN].Text; end; end; diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index b954212a..4fc43013 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -63,8 +63,7 @@ begin SDLK_BACKSPACE: begin - Delete(Button[Interaction].Text[0].Text, - Length(Button[Interaction].Text[0].Text), 1); + Button[Interaction].Text[0].DeleteLastL; end; SDLK_ESCAPE : diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 201b97fa..ee4bedc8 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -369,6 +369,11 @@ begin //Deactivate Pause Paused := False; + //Kill all Stars not Killed yet + //GoldenStarsTwinkle Mod + GoldenRec.KillAll; + //GoldenStarsTwinkle Mod End + {Static[StaticP2R].Visible := V2R; Static[StaticP2RScoreBG].Visible := V2R; Text[TextP2R].Visible := V2R; @@ -1014,11 +1019,6 @@ begin Music.CaptureStop; Music.Stop; - //Kill all Stars not Killed yet - //GoldenStarsTwinkle Mod - GoldenRec.KillAll; - //GoldenStarsTwinkle Mod End - if Ini.SavePlayback = 1 then begin Log.BenchmarkStart(0); Log.LogVoice(0); @@ -1032,6 +1032,8 @@ begin CloseSmpeg; AktSong.VideoLoaded := false; // to prevent drawing closed video end; + + SetFontItalic (False); end; procedure TScreenSing.UpdateLCD; diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 2bf0cb5b..0ba61450 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -90,8 +90,7 @@ begin begin if Interaction = 0 then begin - Delete(Button[0].Text[0].Text, - Length(Button[0].Text[0].Text), 1); + Button[0].Text[0].DeleteLastL; SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); end; end; @@ -121,12 +120,18 @@ begin SDLK_RIGHT: begin if (Interaction=1) then + begin InteractInc; + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + end; end; SDLK_LEFT: begin if (Interaction=1) then + begin InteractDec; + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + end; end; end; end diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 97b113b0..7107bf8a 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -393,6 +393,7 @@ Text= [SongTextTitle] X =350 Y =345 +W = 190 Color=White Font =0 Size =9 @@ -4767,6 +4768,7 @@ Z = 1 W = 0 H = 0 SkipX = 0 +SBGW= 300 Fields=2 DColor = LightBlue TColor = White -- cgit v1.2.3 From 563375e18e4aeba0152a9761f1f84d66aaeb27d2 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 12:19:08 +0000 Subject: Finished Code for Plugin Sound PlayBack Removed Debug Message from ULanguage git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@50 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/ULanguage.pas | 4 +--- Game/Code/Classes/UMusic.pas | 11 +++++++++-- Game/Code/Screens/UScreenSong.pas | 26 +++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/Game/Code/Classes/ULanguage.pas b/Game/Code/Classes/ULanguage.pas index afdac87c..b911b90a 100644 --- a/Game/Code/Classes/ULanguage.pas +++ b/Game/Code/Classes/ULanguage.pas @@ -52,7 +52,7 @@ begin Implode_Glue2 := ' and '; if (Length(List) = 0) then //No Language Files Loaded -> Abort Loading - Log.CriticalError('Could not load any Language Files'); + Log.CriticalError('Could not load any Language File'); //Standard Language (If a Language File is Incomplete) //Then use English Language @@ -143,8 +143,6 @@ begin Result := Text; Text := Uppercase(Result); - Log.LogError('Text: "' + Text + '" L: ' + InttoStr(Length(Entry))); - //Const Mod for E := 0 to high(CEntry) do if Text = CEntry[E].ID then diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index f7f0e20d..0e4e4ddd 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -731,11 +731,18 @@ begin end; function TMusic.LoadSoundFromFile(var hStream: hStream; Name: string): boolean; +var + L: Integer; begin if FileExists(Name) then begin Log.LogStatus('Loading Sound: "' + Name + '"', 'LoadPlayerFromFile'); try hStream := BASS_StreamCreateFile(False, pchar(Name), 0, 0, 0); + //Add CustomSound + L := High(CustomSounds) + 1; + SetLength (CustomSounds, L + 1); + CustomSounds[L].Filename := Name; + CustomSounds[L].Handle := hStream; except Log.LogError('Failed to open using BASS', 'LoadPlayerFromFile'); end; @@ -762,7 +769,7 @@ var F: String; begin //Search for Sound in already loaded Sounds - F := UpperCase(FileName); + F := UpperCase(SoundPath + FileName); For I := 0 to High(CustomSounds) do begin if (UpperCase(CustomSounds[I].Filename) = F) then @@ -772,7 +779,7 @@ begin end; end; - if LoadSoundFromFile(S, Filename) then + if LoadSoundFromFile(S, SoundPath + Filename) then Result := High(CustomSounds) else Result := 0; diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 9202717d..694ecc39 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -149,7 +149,7 @@ var I, I2: Integer; //showmessage(CatSongs.Song[Cat].Path + CatSongs.Song[Cat].Cover); //Static[StaticCat].Texture := Texture.GetTexture(Button[Cat].Texture.Name, 'Plain', true); - Static[StaticCat].Texture := Texture.GetTexture(CatSongs.Song[Cat].Path + CatSongs.Song[Cat].Cover, 'Plain', true); + Static[StaticCat].Texture := Texture.GetTexture(Button[Cat].Texture.Name, 'Plain', true); //Texture.GetTexture(Button[Cat].Texture.Name, 'Plain', false); //Button[Cat]. //Cover @@ -198,6 +198,30 @@ begin SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); + {//Jump To + if (SDL_ModState = KMOD_LALT) AND (PressedKey > SDLK_A) AND (PressedKey < SDLK_Z) then + begin + Letter := UpCase(Chr(ScanCode)); + Log.LogError(Letter); + I2 := Length(CatSongs.Song); + For I := 1 to high(CatSongs.Song) do + begin + if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND (UpCase(CatSongs.Song[(I + Interaction) mod I2].Title[1]) = Letter) then + begin + SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); + + Music.PlayChange; + + ChangeMusic; + SetScroll4; + UpdateLCD; + //Break and Exit + Exit; + end; + end; + Exit; + end; } + case PressedKey of SDLK_ESCAPE : begin -- cgit v1.2.3 From 066af80fcd332cae182f0ea84c94b820389e8df4 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 12:21:11 +0000 Subject: Finished Hold The Line Plugin: Better Generating of Percentage Play Sound at Dismission Load Textur correctly Finish if only one Player is Left git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@51 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Modis/Don't_Get_Worse/Hold_The_Line.dpr | 89 ++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 25 deletions(-) diff --git a/Modis/Don't_Get_Worse/Hold_The_Line.dpr b/Modis/Don't_Get_Worse/Hold_The_Line.dpr index a6eb9a3a..ef7a16f7 100644 --- a/Modis/Don't_Get_Worse/Hold_The_Line.dpr +++ b/Modis/Don't_Get_Worse/Hold_The_Line.dpr @@ -3,15 +3,21 @@ library Hold_The_Line; uses ModiSDK in '..\SDK\ModiSDK.pas', StrUtils in '..\SDK\StrUtils.pas', - OpenGL12; + OpenGL12, + Windows; var PointerTex: TSmallTexture; CountSentences: Cardinal; Limit: Byte; fPrint: fModi_Print; + fPlaySound: fModi_PlaySound; Frame: Integer; PlayerTimes: array[0..5] of Integer; + LastTick: Cardinal; + PointerVisible: Boolean; + + DismissedSound: Cardinal; //Gave the Plugins Info procedure PluginInfo (var Info: TPluginInfo); stdcall; @@ -54,17 +60,22 @@ var Texname, TexType: PChar; begin TexName := CreateStr(PChar('HDL_Pointer')); - TexType := CreateStr(PChar('Plain')); + TexType := CreateStr(PChar('Font Black')); PointerTex := LoadTex(TexName, TexType); FreeStr(TexName); FreeStr(TexType); + TexName := CreateStr(PChar('dismissed.mp3')); + DismissedSound := LoadSound (TexName); + FreeStr(TexName); + CountSentences := Sentences.High; Limit := 0; Frame := 0; fPrint := Print; + fPlaySound := PlaySound; for I := 0 to PlayerInfo.NumPlayers-1 do begin @@ -85,7 +96,28 @@ var L: Byte; C: Byte; Text: PChar; + Blink: Boolean; + tick: Cardinal; begin + //Aktivate Blink + If (CurSentence = CountSentences div 5 * 2 - 1) OR (CurSentence = CountSentences div 3 * 2 - 1) then + begin + Tick := Gettickcount div 400; + If (Tick <> LastTick) then + begin + LastTick := Tick; + PointerVisible := Not PointerVisible; + end; + end + else + PointerVisible := True; + + //Inc Limit + if (Limit = 0) And (CurSentence >= CountSentences div 5 * 2) then + Inc(Limit) + else if (Limit = 1) And (CurSentence >= CountSentences div 3 * 2) then + Inc(Limit); + case Limit of 0: L := 20; 1: L := 50; @@ -94,16 +126,8 @@ begin C:= 0; - Inc(Frame); - Result := True; - //Inc Limit - if (Limit = 0) And (CurSentence >= CountSentences div 5 * 2) then - Inc(Limit) - else if (Limit = 1) And (CurSentence >= CountSentences div 3 * 2) then - Inc(Limit); - for I := 0 to PlayerInfo.NumPlayers-1 do begin if PlayerInfo.Playerinfo[I].Enabled then @@ -112,19 +136,32 @@ begin begin PlayerInfo.Playerinfo[I].Enabled := False; Inc(C); - PlayerTimes[I] := Frame; //Save Time of Dismission - //ToDo: PlaySound + PlayerTimes[I] := CurSentence; //Save Time of Dismission + //PlaySound + fPlaySound (DismissedSound); end; - - //Draw Pointer; - glBindTexture(GL_TEXTURE_2D, PointerTex.TexNum); - glBegin(GL_QUADS); - glTexCoord2f(1/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY - 4); - glTexCoord2f(1/32, 1); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY + 12); - glTexCoord2f(31/32, 1); glVertex2f(PlayerInfo.Playerinfo[I].PosX+ L + 3, PlayerInfo.Playerinfo[I].PosY + 12); - glTexCoord2f(31/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX+ L + 3, PlayerInfo.Playerinfo[I].PosY - 4); - glEnd; + //Draw Pointer + if (PointerVisible) then + begin + glColor4f (0.2, 0.8, 0.1, 1); + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glBindTexture(GL_TEXTURE_2D, PointerTex.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(1/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY - 4); + glTexCoord2f(1/32, 1); glVertex2f(PlayerInfo.Playerinfo[I].PosX + L - 3, PlayerInfo.Playerinfo[I].PosY + 12); + glTexCoord2f(31/32, 1); glVertex2f(PlayerInfo.Playerinfo[I].PosX+ L + 3, PlayerInfo.Playerinfo[I].PosY + 12); + glTexCoord2f(31/32, 0); glVertex2f(PlayerInfo.Playerinfo[I].PosX+ L + 3, PlayerInfo.Playerinfo[I].PosY - 4); + glEnd; + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + end; end else @@ -132,13 +169,15 @@ begin Inc(C); //Draw Dismissed Text := CreateStr(PChar('PARTY_DISMISSED')); - //Str := 'Test123'; + + glColor4f (0.8, 0.8, 0.8, 1); + fPrint (1, 6, PlayerInfo.Playerinfo[I].PosX, PlayerInfo.Playerinfo[I].PosY-8, Text); FreeStr(Text); end; end; - {if (C >= PlayerInfo.NumPlayers-1) then - Result := False; } + if (C >= PlayerInfo.NumPlayers-1) then + Result := False; end; //Is Executed on Finish, Returns the Playernum of the Winner @@ -149,7 +188,7 @@ begin Result := 0; for I := 0 to PlayerInfo.NumPlayers-1 do begin - PlayerInfo.Playerinfo[I].Percentage := (PlayerTimes[I] * 100) div Frame; + PlayerInfo.Playerinfo[I].Percentage := (PlayerTimes[I] * 100) div CountSentences; if (PlayerInfo.Playerinfo[I].Enabled) then begin PlayerInfo.Playerinfo[I].Percentage := 100; -- cgit v1.2.3 From 91000e14b88b5a999d770fcfd8db80f78b53c508 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 12:24:48 +0000 Subject: Added temporary Pointer Textur for Hold the Line Plugin git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@52 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Pointer.bmp | Bin 0 -> 6198 bytes Skins/Classic/Standard.ini | 2 ++ Skins/Deluxe/Pointer.bmp | Bin 0 -> 6198 bytes Skins/Deluxe/Pointer.jpg | Bin 517 -> 0 bytes 4 files changed, 2 insertions(+) create mode 100644 Skins/Classic/Pointer.bmp create mode 100644 Skins/Deluxe/Pointer.bmp delete mode 100644 Skins/Deluxe/Pointer.jpg diff --git a/Skins/Classic/Pointer.bmp b/Skins/Classic/Pointer.bmp new file mode 100644 index 00000000..88bbcc3d Binary files /dev/null and b/Skins/Classic/Pointer.bmp differ diff --git a/Skins/Classic/Standard.ini b/Skins/Classic/Standard.ini index 76005d81..4db43476 100644 --- a/Skins/Classic/Standard.ini +++ b/Skins/Classic/Standard.ini @@ -52,6 +52,8 @@ ScoreBG=Sing Score BG.jpg LyricBar=Text Bar.jpg +HDL_Pointer=Pointer.BMP + SingBarBack=Sing Bar Back.jpg SingBarBar=Sing Bar Bar.jpg SingBarFront=Sing Bar Front.jpg diff --git a/Skins/Deluxe/Pointer.bmp b/Skins/Deluxe/Pointer.bmp new file mode 100644 index 00000000..88bbcc3d Binary files /dev/null and b/Skins/Deluxe/Pointer.bmp differ diff --git a/Skins/Deluxe/Pointer.jpg b/Skins/Deluxe/Pointer.jpg deleted file mode 100644 index 39ee57f4..00000000 Binary files a/Skins/Deluxe/Pointer.jpg and /dev/null differ -- cgit v1.2.3 From bc04876af66c3c47cf7ac2ad37f7184af50a040f Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 14:42:37 +0000 Subject: Refreshed English language file. Added a missing value to German language file. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@53 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 62 ++++++++++++++++++++++++++++++++++++++++++++++----- Languages/German.ini | 1 + 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index e46fd862..e7ff0562 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -92,9 +92,59 @@ SING_SCORE_HIT_ARTIST=Hit Artist SING_SCORE_SUPERSTAR=Superstar SING_SCORE_ULTRASTAR=Ultrastar -LINEBONUS_PERFECT=Perfect -LINEBONUS_BETTER=Better -LINEBONUS_GOOD=Good -LINEBONUS_NORMAL=Not really -LINEBONUS_BAD=Bad -LINEBONUS_WORST=Looser +LINEBONUS_PERFECT=Perfect! +LINEBONUS_BETTER=Cool! +LINEBONUS_GOOD=Good! +LINEBONUS_NORMAL=OK! +LINEBONUS_BAD=Bad! +LINEBONUS_WORST=Ghastly! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= and + +SONG_MENU_NAME_MAIN=Song Menu +SONG_MENU_PLAY=Sing +SONG_MENU_EDIT=Edit +SONG_MENU_MODI=Sing a Modi +SONG_MENU_CANCEL=Cancel + +SONG_MENU_NAME_PLAYLIST=Create Playlist +SONG_MENU_PLAYLIST_ADD=Add Song +SONG_MENU_PLAYLIST_DEL=Delete Song + +SONG_MENU_NAME_PARTY=Menu +SONG_MENU_JOKER=Joker + +SONG_MENU_NAME_PARTY_JOKER=take Joker + + +SONG_JUMPTO_DESC=Jump to Song +SONG_JUMPTO_TYPE_DESC=Search for: +SONG_JUMPTO_TYPE1=All +SONG_JUMPTO_TYPE2=Title +SONG_JUMPTO_TYPE3=Artist +SONG_JUMPTO_SONGSFOUND=%d Song(s) found +SONG_JUMPTO_NOSONGSFOUND=No Song found +SONG_JUMPTO_HELP=Type Text to Search for + +PARTY_SCORE_WINS=%s wins! +PARTY_OPTIONS_DESC=Party Mode +PARTY_DIFFICULTY=Difficulty +PARTY_PLAYLIST=Playlist Mode +PARTY_ROUNDS=Rounds +PARTY_TEAMS=Teams +PARTY_TEAMS_PLAYER1=Player Team1 +PARTY_TEAMS_PLAYER2=Player Team2 +PARTY_TEAMS_PLAYER3=Player Team3 +PARTY_SELECT_PLAYER=Enter Playernames! + +PARTY_DISMISSED=Dismissed! + +PLUGIN_HDL_NAME=Hold the Line +PLUGIN_HDL_DESC=Don't get worse than the Pointer at the Rating bar shows you. +PLUGIN_UNTIL5000_NAME=Until 5000 +PLUGIN_UNTIL5000_DESC=Who gets 5000 Points first wins the match +PLUGIN_DUELL_NAME=Duell +PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points +PLUGIN_BLIND_NAME=Blind Mode +PLUGIN_BLIND_DESC=Duell without seeing the Notes diff --git a/Languages/German.ini b/Languages/German.ini index f714c969..f44683e6 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -134,6 +134,7 @@ SONG_JUMPTO_TYPE3=Artist SONG_JUMPTO_SONGSFOUND=%d Song(s) gefunden SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden SONG_JUMPTO_HELP=Text eingeben um zu suchen +SONG_JUMPTO_CATTEXT=Suche nach: %s PARTY_SCORE_WINS=%s hat gewonnen! PARTY_OPTIONS_DESC=Party Modus -- cgit v1.2.3 From cf9ff4fabd3220815b2b800bcb00319703d82d0d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 14:50:39 +0000 Subject: Added Readme for Creating new Language Files git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@54 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/readme.txt | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Languages/readme.txt diff --git a/Languages/readme.txt b/Languages/readme.txt new file mode 100644 index 00000000..403d9e9a --- /dev/null +++ b/Languages/readme.txt @@ -0,0 +1,76 @@ +To translate USD to a new language, take the English Language File, or another one that is up to date and Edit the Texts behind the Equal Mark(=). + +To port a LanguageFile from Ultrastar 0.5.2 or Higher add the following Texts to the end of the file: + +SING_MENU=Main Menu + +#Ratings at the Score Screen +SING_SCORE_TONE_DEAF=Tone Deaf +SING_SCORE_AMATEUR=Amateur +SING_SCORE_RISING_STAR=Rising Star +SING_SCORE_LEAD_SINGER=Lead Singer +SING_SCORE_HIT_ARTIST=Hit Artist +SING_SCORE_SUPERSTAR=Superstar +SING_SCORE_ULTRASTAR=Ultrastar + +#Line Bonus PopUps +LINEBONUS_PERFECT=Perfect! +LINEBONUS_BETTER=Cool! +LINEBONUS_GOOD=Good! +LINEBONUS_NORMAL=OK! +LINEBONUS_BAD=Bad! +LINEBONUS_WORST=Ghastly! + +#To connect Strigns with, e.g.: He, you and I +IMPLODE_GLUE1=, +IMPLODE_GLUE2= and + +#Texts of the Menu that appears when M is Pressed at the SongSelection +SONG_MENU_NAME_MAIN=Song Menu +SONG_MENU_PLAY=Sing +SONG_MENU_EDIT=Edit +SONG_MENU_MODI=Sing a Modi +SONG_MENU_CANCEL=Cancel + +SONG_MENU_NAME_PLAYLIST=Create Playlist +SONG_MENU_PLAYLIST_ADD=Add Song +SONG_MENU_PLAYLIST_DEL=Delete Song + +SONG_MENU_NAME_PARTY=Menu +SONG_MENU_JOKER=Joker + +SONG_MENU_NAME_PARTY_JOKER=take Joker + +#Texts of the jumpto Window +SONG_JUMPTO_DESC=Jump to Song +SONG_JUMPTO_TYPE_DESC=Search for: +SONG_JUMPTO_TYPE1=All +SONG_JUMPTO_TYPE2=Title +SONG_JUMPTO_TYPE3=Artist +SONG_JUMPTO_SONGSFOUND=%d Song(s) found +SONG_JUMPTO_NOSONGSFOUND=No Song found +SONG_JUMPTO_HELP=Type Text to Search for + +#Texts for Party Mode +PARTY_SCORE_WINS=%s wins! +PARTY_OPTIONS_DESC=Party Mode +PARTY_DIFFICULTY=Difficulty +PARTY_PLAYLIST=Playlist Mode +PARTY_ROUNDS=Rounds +PARTY_TEAMS=Teams +PARTY_TEAMS_PLAYER1=Player Team1 +PARTY_TEAMS_PLAYER2=Player Team2 +PARTY_TEAMS_PLAYER3=Player Team3 +PARTY_SELECT_PLAYER=Enter Playernames! + +PARTY_DISMISSED=Dismissed! + +#Texts that descripts Plugins or Modis +PLUGIN_HDL_NAME=Hold the Line +PLUGIN_HDL_DESC=Don't get worse than the Pointer at the Rating bar shows you. +PLUGIN_UNTIL5000_NAME=Until 5000 +PLUGIN_UNTIL5000_DESC=Who gets 5000 Points first wins the match +PLUGIN_DUELL_NAME=Duell +PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points +PLUGIN_BLIND_NAME=Blind Mode +PLUGIN_BLIND_DESC=Duell without seeing the Notes -- cgit v1.2.3 From 162c1ce5d4c68fc6784fd4a8f0b975b857505574 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 19:17:23 +0000 Subject: Fixed a Bug that causes a wrong Category-Title is displayed in SongScreen after a Search without a result. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@55 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 0ba61450..c2107507 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -114,8 +114,17 @@ begin // Up and Down could be done at the same time, // but I don't want to declare variables inside // functions like this one, called so many times - SDLK_DOWN: SelectNext; - SDLK_UP: SelectPrev; + SDLK_DOWN: + begin + SelectNext; + Button[0].Text[0].Selected := (Interaction = 0); + end; + + SDLK_UP: + begin + SelectPrev; + Button[0].Text[0].Selected := (Interaction = 0); + end; SDLK_RIGHT: begin @@ -191,12 +200,15 @@ begin //Reset Screen if no Old Search is Displayed if (CatSongs.CatNumShow <> -2) then begin - Interaction := 0; SelectType := 0; Button[0].Text[0].Text := ''; Text[0].Text := NoSongsFound; end; + + //Select Input + Interaction := 0; + Button[0].Text[0].Selected := True; end; function TScreenSongJumpto.Draw: boolean; @@ -207,14 +219,20 @@ end; procedure TScreenSongJumpto.SetTextFound(const Count: Cardinal); begin if (Count = 0) then - Text[0].Text := NoSongsFound + begin + Text[0].Text := NoSongsFound; + ScreenSong.HideCatTL; + end else + begin Text[0].Text := Format(SongsFound, [Count]); - //Set CatTopLeftText - ScreenSong.ShowCatTLCustom(Format(CatText, [Button[0].Text[0].Text])); + //Set CatTopLeftText + ScreenSong.ShowCatTLCustom(Format(CatText, [Button[0].Text[0].Text])); + end; + - //visSongs setzen + //Set visSongs VisSongs := Count; //Fix SongSelection -- cgit v1.2.3 From eb7df4c30c7e119ad56eb3ba8506ff3e3afce4a4 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 30 Mar 2007 19:18:27 +0000 Subject: Added Cursor Blink to TText git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@56 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 4a5356d8..4b8ea391 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -9,6 +9,9 @@ type SelectBool: boolean; TextString: String; TextTiles: Array of String; + + STicks: Cardinal; + SelectBlink: Boolean; public X: real; Y: real; @@ -38,11 +41,15 @@ type end; implementation -uses UGraphic, StrUtils; +uses UGraphic, StrUtils, Windows; procedure TText.SetSelect(Value: Boolean); begin SelectBool := Value; + + //Set Cursor Visible + SelectBlink := True; + STicks := GettickCount div 550; end; procedure TText.SetText(Value: String); @@ -99,6 +106,10 @@ begin TextTiles[L] := Copy (Value, LastBreak + 1, Length(Value) - LastBreak); end; + + //Set Cursor Visible + SelectBlink := True; + STicks := GettickCount div 550; end; Procedure TText.DeleteLastL; @@ -125,9 +136,21 @@ begin SetFontSize(Size); SetFontItalic(False); glColor3f(ColR*Int, ColG*Int, ColB*Int); + + //If Selected Set Blink... + if SelectBool then + begin + I := Gettickcount div 550; + if I <> STicks then + begin //Change Visability + STicks := I; + SelectBlink := Not SelectBlink; + end; + end; + if (W <= 0) then //No Width set Draw as one Long String begin - if not SelectBool then + if not (SelectBool AND SelectBlink) then Text2 := Text else Text2 := Text + '|'; @@ -147,7 +170,7 @@ begin Y2 := Y; for I := 0 to high(TextTiles) do begin - if (not SelectBool) OR (I <> high(TextTiles)) then + if (not (SelectBool AND SelectBlink)) OR (I <> high(TextTiles)) then Text2 := TextTiles[I] else Text2 := TextTiles[I] + '|'; -- cgit v1.2.3 From 42717e4611f758f137d86fd99e69bf9791d3a727 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 12:50:05 +0000 Subject: Fixed: Not loading Button Texts from Ini Fixed: Exit Text in Option Screens not translated git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@57 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenOptions.pas | 21 ++++++++++++++------- Game/Code/Screens/UScreenOptionsGame.pas | 3 ++- Game/Code/Screens/UScreenOptionsGraphics.pas | 3 ++- Game/Code/Screens/UScreenOptionsLyrics.pas | 3 ++- Game/Code/Screens/UScreenOptionsRecord.pas | 3 ++- Game/Code/Screens/UScreenOptionsSound.pas | 3 ++- Game/Code/Screens/UScreenOptionsThemes.pas | 5 ++--- 7 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index 76ff2adc..f24b29c1 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -159,25 +159,32 @@ begin AddBackground(Theme.Options.Background.Tex); AddButton(Theme.Options.ButtonGame); - AddButtonText(14, 20, Theme.Options.Description[0]); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[0]); AddButton(Theme.Options.ButtonGraphics); - AddButtonText(14, 20, Theme.Options.Description[1]); + if (Length(Button[1].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[1]); AddButton(Theme.Options.ButtonSound); - AddButtonText(14, 20, Theme.Options.Description[2]); + if (Length(Button[2].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[2]); AddButton(Theme.Options.ButtonLyrics); - AddButtonText(14, 20, Theme.Options.Description[3]); + if (Length(Button[3].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[3]); AddButton(Theme.Options.ButtonThemes); - AddButtonText(14, 20, Theme.Options.Description[4]); + if (Length(Button[4].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[4]); AddButton(Theme.Options.ButtonRecord); - AddButtonText(14, 20, Theme.Options.Description[5]); + if (Length(Button[5].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[5]); AddButton(Theme.Options.ButtonExit); - AddButtonText(14, 20, Theme.Options.Description[6]); + if (Length(Button[6].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); for I := 0 to High(Theme.Options.Static) do AddStatic(Theme.Options.Static[I]); diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index 6f49bd19..cc6e850b 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -88,7 +88,8 @@ begin AddButton(Theme.OptionsGame.ButtonExit); - AddButtonText(14, 20, 'Exit'); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); end; diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index 1f30f9b5..62648e0c 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -89,7 +89,8 @@ begin AddButton(Theme.OptionsGraphics.ButtonExit); - AddButtonText(14, 20, 'Exit'); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); end; diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index 21a33998..0ce5c970 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -79,7 +79,8 @@ begin AddButton(Theme.OptionsLyrics.ButtonExit); - AddButtonText(14, 20, 'Exit'); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); end; diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index c27ec02a..b4075ba8 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -104,7 +104,8 @@ begin SelectSlideChannelR := AddSelectSlide(Theme.OptionsRecord.SelectSlideChannelR, Ini.CardList[0].ChannelR, IChannel); AddButton(Theme.OptionsRecord.ButtonExit); - AddButtonText(14, 20, 'Exit'); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index a99ae86d..ad6db766 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -80,7 +80,8 @@ begin //AddSelect(Theme.OptionsSound.SelectTwoPlayerMode, Ini.TwoPlayerMode, ITwoPlayerMode); AddButton(Theme.OptionsSound.ButtonExit); - AddButtonText(14, 20, 'Exit'); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index b7d18fa5..eb5ed33e 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -99,15 +99,14 @@ begin AddText(Theme.OptionsThemes.Text[I]); AddSelectSlide(Theme.OptionsThemes.SelectTheme, Ini.Theme, ITheme); - //SelectsS[High(SelectsS)].SetSelectOpt(Ini.Theme); SkinSelect := AddSelectSlide(Theme.OptionsThemes.SelectSkin, Ini.SkinNo, ISkin); - //AddSelectSlideOption('SingStar'); AddSelectSlide(Theme.OptionsThemes.SelectColor, Ini.Color, IColor); AddButton(Theme.OptionsThemes.ButtonExit); - AddButtonText(14, 20, 'Exit'); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); end; procedure TScreenOptionsThemes.onShow; -- cgit v1.2.3 From 5c46c303e25f84e49e36918bafc8d7eca09a507b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 13:43:20 +0000 Subject: Fixed: Button.Z Attribut not loaded from Theme Fixed: AddButton procedure don't set Result git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@58 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 50 ++++++++++++++++++++++++++++++++++----- Game/Code/Menu/UMenu.pas | 54 +++++++++++++++++++++---------------------- 2 files changed, 71 insertions(+), 33 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index a62c5aed..d2fb5b11 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -113,6 +113,7 @@ type Text: AThemeText; X: integer; Y: integer; + Z: Real; W: integer; H: integer; Color: string; @@ -280,6 +281,9 @@ type StaticP3RScoreBG: TThemeStatic; //Static for ScoreBG TextP3R: TThemeText; TextP3RScore: TThemeText; + + //Linebonus Translations + LineBonusText: Array [0..8] of String; end; TThemeScore = class(TThemeBasic) @@ -402,6 +406,12 @@ type ButtonSearchText: TThemeButton; SelectSlideType: TThemeSelectSlide; TextFound: TThemeText; + + //Translated Texts + Songsfound: String; + NoSongsfound: String; + CatText: String; + IType: array [0..2] of String; end; //Party Screens @@ -512,6 +522,11 @@ type ButtonPrev: TThemeButton;} end; + //Playlist Translations + TThemePlaylist = record + CatText: string; + end; + TTheme = class {$IFDEF THEMESAVE} ThemeIni: TIniFile; @@ -541,8 +556,10 @@ type PartyNewRound: TThemePartyNewRound; PartyScore: TThemePartyScore; PartyWin: TThemePartyWin; - PartyOptions: TThemePartyOptions; - PartyPlayer: TThemePartyPlayer; + PartyOptions: TThemePartyOptions; + PartyPlayer: TThemePartyPlayer; + + Playlist: TThemePlaylist; constructor Create(FileName: string); overload; // Initialize theme system constructor Create(FileName: string; Color: integer); overload; // Initialize theme system with color @@ -871,6 +888,16 @@ begin ThemeLoadText(Sing.TextP3R, 'SingP3RText'); ThemeLoadText(Sing.TextP3RScore, 'SingP3RTextScore'); + //Line Bonus Texts + Sing.LineBonusText[0] := Language.Translate('LINEBONUS_WORST'); + Sing.LineBonusText[1] := Sing.LineBonusText[0]; + Sing.LineBonusText[2] := Language.Translate('LINEBONUS_BAD'); + Sing.LineBonusText[3] := Language.Translate('LINEBONUS_NORMAL'); + Sing.LineBonusText[4] := Sing.LineBonusText[3]; + Sing.LineBonusText[5] := Language.Translate('LINEBONUS_GOOD'); + Sing.LineBonusText[6] := Language.Translate('LINEBONUS_BETTER'); + Sing.LineBonusText[7] := Sing.LineBonusText[6]; + Sing.LineBonusText[8] := Language.Translate('LINEBONUS_PERFECT'); // Score ThemeLoadBasic(Score, 'Score'); @@ -1008,6 +1035,13 @@ begin ThemeLoadButton(SongJumpto.ButtonSearchText, 'SongJumptoButtonSearchText'); ThemeLoadSelectSlide(SongJumpto.SelectSlideType, 'SongJumptoSelectSlideType'); ThemeLoadText(SongJumpto.TextFound, 'SongJumptoTextFound'); + //Translations + SongJumpto.IType[0] := Language.Translate('SONG_JUMPTO_TYPE1'); + SongJumpto.IType[1] := Language.Translate('SONG_JUMPTO_TYPE2'); + SongJumpto.IType[2] := Language.Translate('SONG_JUMPTO_TYPE3'); + SongJumpto.SongsFound := Language.Translate('SONG_JUMPTO_SONGSFOUND'); + SongJumpto.NoSongsFound := Language.Translate('SONG_JUMPTO_NOSONGSFOUND'); + SongJumpto.CatText := Language.Translate('SONG_JUMPTO_CATTEXT'); //Party Screens: //Party NewRound @@ -1122,6 +1156,9 @@ begin {ThemeLoadButton(ButtonNext, 'PartyPlayerButtonNext'); ThemeLoadButton(ButtonPrev, 'PartyPlayerButtonPrev');} + + //Playlist Translations + Playlist.CatText := Language.Translate('PLAYLIST_CATTEXT') end; ThemeIni.Free; @@ -1239,10 +1276,11 @@ var begin DecimalSeparator := '.'; ThemeButton.Tex := ThemeIni.ReadString(Name, 'Tex', ''); - ThemeButton.X := ThemeIni.ReadInteger(Name, 'X', 0); - ThemeButton.Y := ThemeIni.ReadInteger(Name, 'Y', 0); - ThemeButton.W := ThemeIni.ReadInteger(Name, 'W', 0); - ThemeButton.H := ThemeIni.ReadInteger(Name, 'H', 0); + ThemeButton.X := ThemeIni.ReadInteger (Name, 'X', 0); + ThemeButton.Y := ThemeIni.ReadInteger (Name, 'Y', 0); + ThemeButton.Z := ThemeIni.ReadFloat (Name, 'Z', 0); + ThemeButton.W := ThemeIni.ReadInteger (Name, 'W', 0); + ThemeButton.H := ThemeIni.ReadInteger (Name, 'H', 0); ThemeButton.Typ := ThemeIni.ReadString(Name, 'Type', ''); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index bf823b16..45a25cb7 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -369,6 +369,8 @@ begin ThemeButton.DColR, ThemeButton.DColG, ThemeButton.DColB, ThemeButton.DInt, Skin.GetTextureFileName(ThemeButton.Tex), 'JPG', ThemeButton.Typ, ThemeButton.Reflection); + Button[Result].Z := ThemeButton.Z; + BTLen := Length(ThemeButton.Text); for BT := 0 to BTLen-1 do begin @@ -390,44 +392,42 @@ begin end; function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean): integer; -var - ButNum : integer; begin // adds button - ButNum := Length(Button); - SetLength(Button, ButNum + 1); -// Button[ButNum] := TButton.Create(Texture.GetTexture(Name, Typ)); + Result := Length(Button); + SetLength(Button, Result + 1); +// Button[Result] := TButton.Create(Texture.GetTexture(Name, Typ)); // check here for cache // Texture.GetTexture(Name, Typ, false); // preloads textures and creates cahce mipmap when needed // if Covers.CoverExists(Name) then - Button[ButNum] := TButton.Create(Texture.GetTexture(Name, Typ, true)); // use cache texture + Button[Result] := TButton.Create(Texture.GetTexture(Name, Typ, true)); // use cache texture // else -// Button[ButNum] := TButton.Create(Texture.GetTexture(Name, Typ, false)); // don't use cache texture} +// Button[Result] := TButton.Create(Texture.GetTexture(Name, Typ, false)); // don't use cache texture} // configures button - Button[ButNum].Texture.X := X; - Button[ButNum].Texture.Y := Y; - Button[ButNum].Texture.W := W; - Button[ButNum].Texture.H := H; - Button[ButNum].SelectColR := ColR; - Button[ButNum].SelectColG := ColG; - Button[ButNum].SelectColB := ColB; - Button[ButNum].SelectInt := Int; - Button[ButNum].DeselectColR := DColR; - Button[ButNum].DeselectColG := DColG; - Button[ButNum].DeselectColB := DColB; - Button[ButNum].DeselectInt := DInt; - Button[ButNum].Texture.TexX1 := 0; - Button[ButNum].Texture.TexY1 := 0; - Button[ButNum].Texture.TexX2 := 1; - Button[ButNum].Texture.TexY2 := 1; - Button[ButNum].SetSelect(false); - - Button[ButNum].Reflection := Reflection; + Button[Result].Texture.X := X; + Button[Result].Texture.Y := Y; + Button[Result].Texture.W := W; + Button[Result].Texture.H := H; + Button[Result].SelectColR := ColR; + Button[Result].SelectColG := ColG; + Button[Result].SelectColB := ColB; + Button[Result].SelectInt := Int; + Button[Result].DeselectColR := DColR; + Button[Result].DeselectColG := DColG; + Button[Result].DeselectColB := DColB; + Button[Result].DeselectInt := DInt; + Button[Result].Texture.TexX1 := 0; + Button[Result].Texture.TexY1 := 0; + Button[Result].Texture.TexX2 := 1; + Button[Result].Texture.TexY2 := 1; + Button[Result].SetSelect(false); + + Button[Result].Reflection := Reflection; // adds interaction - AddInteraction(iButton, ButNum); + AddInteraction(iButton, Result); Interaction := 0; end; -- cgit v1.2.3 From e2cd03822f28a4866f98fb0893a73b02bd60ce03 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 14:37:58 +0000 Subject: Added Playlist Support Working correct with Standard Mode Only for now Now working on Playlist Support for Party Mode git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@59 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UPliki.pas | 3 + Game/Code/Screens/UScreenSong.pas | 32 ++++- Game/Code/Screens/UScreenSongJumpto.pas | 21 +-- Game/Code/Screens/UScreenSongMenu.pas | 242 +++++++++++++++++++++++++++++--- Game/Code/UltraStar.dpr | 33 ++--- 5 files changed, 270 insertions(+), 61 deletions(-) diff --git a/Game/Code/Classes/UPliki.pas b/Game/Code/Classes/UPliki.pas index 475a3752..f7692990 100644 --- a/Game/Code/Classes/UPliki.pas +++ b/Game/Code/Classes/UPliki.pas @@ -22,6 +22,7 @@ var CoversPath: string; LanguagesPath: string; PluginPath: string; + PlayListPath: string; Plik: TextFile; // all procedures in this unit operates on this file PlikC: char; @@ -49,6 +50,8 @@ begin //Modi Loader PluginPath := GamePath + 'Plugins\'; + PlaylistPath := GamePath + 'Playlists\'; + DecimalSeparator := ','; end; diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 694ecc39..6a1df197 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -314,12 +314,26 @@ begin begin if Length(Songs.Song) > 0 then begin if not CatSongs.Song[Interaction].Main then begin // clicked on Song - ScreenSongMenu.MenuShow(SM_Main); + if CatSongs.CatNumShow = -3 then + ScreenSongMenu.MenuShow(SM_Playlist) + else + ScreenSongMenu.MenuShow(SM_Main); + end + else + begin + ScreenSongMenu.MenuShow(SM_Playlist_Load); end; end; end; - SDLK_J: //Show SongMenu + SDLK_P: //Show Playlist Menu + begin + if Length(Songs.Song) > 0 then begin + ScreenSongMenu.MenuShow(SM_Playlist_Load); + end; + end; + + SDLK_J: //Show Jumpto Menu begin if Length(Songs.Song) > 0 then begin @@ -699,6 +713,8 @@ begin end else if (CatSongs.CatNumShow = -2) then Text[TextNumber].Text := IntToStr(CatSongs.VisibleIndex(Interaction)+1) + '/' + IntToStr(VS) + else if (CatSongs.CatNumShow = -3) then + Text[TextNumber].Text := IntToStr(CatSongs.VisibleIndex(Interaction)+1) + '/' + IntToStr(VS) else if (Ini.Tabs_at_startup = 1) then Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].CatNumber) + '/' + IntToStr(CatSongs.Song[Interaction - CatSongs.Song[Interaction].CatNumber].CatNumber) else @@ -1144,8 +1160,18 @@ begin UpdateLCD; end; + //Playlist Mode + if (Mode = 0) then + begin + //If Playlist Shown -> Select Next automatically + if (CatSongs.CatNumShow = -3) then + begin + SelectNext; + ChangeMusic; + end; + end //Party Mode - if (Mode = 1) then + else if (Mode = 1) then begin SelectRandomSong; end; diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index c2107507..123146c7 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -8,10 +8,6 @@ uses type TScreenSongJumpto = class(TMenu) private - Songsfound: String; - NoSongsfound: String; - CatText: String; - //For ChangeMusic LastPlayed: Integer; VisibleBool: Boolean; @@ -157,13 +153,6 @@ var I: integer; begin inherited Create; - //Translate Texts //TODO: Port to UTheme (Linebonus and PartyScreens, too - IType[0] := Language.Translate('SONG_JUMPTO_TYPE1'); - IType[1] := Language.Translate('SONG_JUMPTO_TYPE2'); - IType[2] := Language.Translate('SONG_JUMPTO_TYPE3'); - SongsFound := Language.Translate('SONG_JUMPTO_SONGSFOUND'); - NoSongsFound := Language.Translate('SONG_JUMPTO_NOSONGSFOUND'); - CatText := Language.Translate('SONG_JUMPTO_CATTEXT'); AddBackground(Theme.SongJumpto.Background.Tex); @@ -172,7 +161,7 @@ begin AddButtonText(14, 20, ''); SelectType := 0; - AddSelectSlide(Theme.SongJumpto.SelectSlideType, SelectType, IType); + AddSelectSlide(Theme.SongJumpto.SelectSlideType, SelectType, Theme.SongJumpto.IType); AddText(Theme.SongJumpto.TextFound); @@ -203,7 +192,7 @@ begin SelectType := 0; Button[0].Text[0].Text := ''; - Text[0].Text := NoSongsFound; + Text[0].Text := Theme.SongJumpto.NoSongsFound; end; //Select Input @@ -220,15 +209,15 @@ procedure TScreenSongJumpto.SetTextFound(const Count: Cardinal); begin if (Count = 0) then begin - Text[0].Text := NoSongsFound; + Text[0].Text := Theme.SongJumpto.NoSongsFound; ScreenSong.HideCatTL; end else begin - Text[0].Text := Format(SongsFound, [Count]); + Text[0].Text := Format(Theme.SongJumpto.SongsFound, [Count]); //Set CatTopLeftText - ScreenSong.ShowCatTLCustom(Format(CatText, [Button[0].Text[0].Text])); + ScreenSong.ShowCatTLCustom(Format(Theme.SongJumpto.CatText, [Button[0].Text[0].Text])); end; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index a5ae2083..849716c4 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -22,7 +22,16 @@ type const SM_Main = 1; + SM_PlayList = 64 or 1; + SM_Playlist_Add = 64 or 2; + SM_Playlist_New = 64 or 3; + + SM_Playlist_Del = 64 or 5; + + SM_Playlist_Load = 64 or 8 or 1; + + SM_Party_Main = 128 or 1; SM_Party_Joker = 128 or 2; @@ -33,7 +42,7 @@ var implementation -uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty; +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist; function TScreenSongMenu.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; function IsVisible: Boolean; @@ -70,6 +79,23 @@ begin Result := true; If (PressedDown) Then begin // Key Down + if (CurMenu = SM_Playlist_New) AND (Interaction=0) then + begin + case PressedKey of + SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + begin + Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + chr(ScanCode); + exit; + end; + + SDLK_BACKSPACE: + begin + Button[Interaction].Text[0].DeleteLastL; + exit; + end; + end; + end; + case PressedKey of SDLK_Q: begin @@ -87,9 +113,6 @@ begin HandleReturn; end; - // Up and Down could be done at the same time, - // but I don't want to declare variables inside - // functions like this one, called so many times SDLK_DOWN: SelectNext; SDLK_UP: SelectPrev; @@ -179,9 +202,9 @@ begin SelectsS[0].Visible := False; Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY'); - Button[1].Text[0].Text := Language.Translate('SONG_MENU_EDIT'); - Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYMODI'); - Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + Button[1].Text[0].Text := Language.Translate('SONG_MENU_CHANGEPLAYERS'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_EDIT'); end; SM_PlayList: @@ -189,18 +212,111 @@ begin CurMenu := sMenu; Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST'); + Button[0].Visible := True; + Button[1].Visible := True; + Button[2].Visible := True; + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY'); + Button[1].Text[0].Text := Language.Translate('SONG_MENU_CHANGEPLAYERS'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_DEL'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_EDIT'); + end; + + SM_Playlist_Add: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_ADD'); + + Button[0].Visible := True; + Button[1].Visible := False; + Button[2].Visible := False; + Button[3].Visible := True; + SelectsS[0].Visible := True; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD_NEW'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD_EXISTING'); + + SetLength(ISelections, Length(PlaylistMan.Playlists)); + PlaylistMan.GetNames(ISelections); + + if (Length(ISelections)>=1) then + begin + UpdateSelectSlideOptions(Theme.SongMenu.SelectSlide3, 0, ISelections, SelectValue); + end + else + begin + Button[3].Visible := False; + SelectsS[0].Visible := False; + Button[2].Visible := True; + Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); + end; + end; + + SM_Playlist_New: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_NEW'); + + Button[0].Visible := True; + Button[1].Visible := False; + Button[2].Visible := True; + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NEW_UNNAMED'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NEW_CREATE'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + end; + + SM_PlayList_Del: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_Del'); + Button[0].Visible := True; Button[1].Visible := False; Button[2].Visible := False; Button[3].Visible := True; SelectsS[0].Visible := False; - Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD'); - Button[1].Text[0].Text := ''; - Button[2].Text[0].Text := ''; + Button[0].Text[0].Text := Language.Translate('SONG_MENU_YES'); Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); end; + SM_Playlist_Load: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_LOAD'); + + Button[0].Visible := False; + Button[1].Visible := False; + Button[2].Visible := False; + Button[3].Visible := True; + SelectsS[0].Visible := True; + + Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_LOAD'); + + SetLength(ISelections, Length(PlaylistMan.Playlists)); + PlaylistMan.GetNames(ISelections); + + if (Length(ISelections)>=1) then + begin + UpdateSelectSlideOptions(Theme.SongMenu.SelectSlide3, 0, ISelections, SelectValue); + Interaction := 4; + end + else + begin + Button[3].Visible := False; + SelectsS[0].Visible := False; + Button[2].Visible := True; + Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); + Interaction := 3; + end; + end; + + SM_Party_Main: begin CurMenu := sMenu; @@ -242,21 +358,24 @@ begin Case CurMenu of SM_Main: begin - Visible := False; Case Interaction of 0: //Button 1 begin ScreenSong.StartSong; + Visible := False; end; 1: //Button 2 begin - ScreenSong.OpenEditor; + //Select New Players then Sing: + + Visible := False; end; 2: //Button 3 begin - //Todo: Add SingleRound Modi Support + //Show add to Playlist Menu + MenuShow(SM_Playlist_Add); end; 3: //SelectSlide 3 @@ -266,7 +385,8 @@ begin 4: //Button 4 begin - //Cancel... (Do Nothing) + ScreenSong.OpenEditor; + Visible := False; end; end; end; @@ -277,17 +397,21 @@ begin Case Interaction of 0: //Button 1 begin - // + ScreenSong.StartSong; + Visible := False; end; 1: //Button 2 begin - // + //Select New Players then Sing: + + Visible := False; end; 2: //Button 3 begin - //Todo + //Show add to Playlist Menu + MenuShow(SM_Playlist_Del); end; 3: //SelectSlide 3 @@ -297,7 +421,89 @@ begin 4: //Button 4 begin - // + ScreenSong.OpenEditor; + Visible := False; + end; + end; + end; + + SM_Playlist_Add: + begin + Case Interaction of + 0: //Button 1 + begin + MenuShow(SM_Playlist_New); + end; + + 3: //SelectSlide 3 + begin + //Dummy + end; + + 4: //Button 4 + begin + PlaylistMan.AddItem(ScreenSong.Interaction, SelectValue); + Visible := False; + end; + end; + end; + + SM_Playlist_New: + begin + Case Interaction of + 0: //Button 1 + begin + //Nothing, Button for Entering Name + end; + + 2: //Button 3 + begin + //Create Playlist and Add Song + PlaylistMan.AddItem( + ScreenSong.Interaction, + PlaylistMan.AddPlaylist(Button[0].Text[0].Text)); + Visible := False; + end; + + 3: //SelectSlide 3 + begin + //Cancel -> Go back to Add screen + MenuShow(SM_Playlist_Add); + end; + + 4: //Button 4 + begin + Visible := False; + end; + end; + end; + + SM_PlayList_Del: + begin + Visible := False; + Case Interaction of + 0: //Button 1 + begin + //Delete + PlayListMan.DelItem(PlayListMan.GetIndexbySongID(ScreenSong.Interaction)); + Visible := False; + end; + + 4: //Button 4 + begin + MenuShow(SM_Playlist); + end; + end; + end; + + SM_Playlist_Load: + begin + Case Interaction of + 4: //Button 4 + begin + //Load Playlist + PlaylistMan.SetPlayList(SelectValue); + Visible := False; end; end; end; diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 65a01257..66638832 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -6,9 +6,6 @@ program UltraStar; {$R 'UltraStar.res' 'UltraStar.rc'} uses - //------------------------------ - //Includes - Menu System - //------------------------------ UDisplay in 'Menu\UDisplay.pas', UMenu in 'Menu\UMenu.pas', UMenuStatic in 'Menu\UMenuStatic.pas', @@ -18,10 +15,6 @@ uses UMenuSelect in 'Menu\UMenuSelect.pas', UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', UDrawTexture in 'Menu\UDrawTexture.pas', - - //------------------------------ - //Includes - Classes - //------------------------------ UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', @@ -49,10 +42,6 @@ uses UGraphicClasses in 'Classes\UGraphicClasses.pas', UDLLManager in 'Classes\UDLLManager.pas', UParty in 'Classes\UParty.pas', - - //------------------------------ - //Includes - Screens - //------------------------------ UScreenLoading in 'Screens\UScreenLoading.pas', UScreenWelcome in 'Screens\UScreenWelcome.pas', UScreenMain in 'Screens\UScreenMain.pas', @@ -76,28 +65,17 @@ uses UScreenTop5 in 'Screens\UScreenTop5.pas', UScreenSongMenu in 'Screens\UScreenSongMenu.pas', UScreenSongJumpto in 'Screens\UScreenSongJumpto.pas', - - //------------------------------ - //Includes - Screens PartyMode - //------------------------------ UScreenSingModi in 'Screens\UScreenSingModi.pas', UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', UScreenPartyScore in 'Screens\UScreenPartyScore.pas', UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', UScreenPartyWin in 'Screens\UScreenPartyWin.pas', - - //------------------------------ - //Includes - Modi SDK - //------------------------------ ModiSDK in '..\..\Modis\SDK\ModiSDK.pas', - - //------------------------------ - //Includes - Delphi - //------------------------------ Windows, SDL, - SysUtils; + SysUtils, + UPlaylist in 'Classes\UPlaylist.pas'; const Version = 'UltraStar Deluxe V 0.90 Beta'; @@ -265,6 +243,13 @@ begin Log.BenchmarkEnd(1); Log.LogBenchmark('Loading DataBase System', 1); + //Playlist Manager + Log.BenchmarkStart(1); + Log.LogStatus('Playlist Manager', 'Initialization'); + PlaylistMan := TPlaylistManager.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Playlist Manager', 1); + //GoldenStarsTwinkleMod Log.BenchmarkStart(1); Log.LogStatus('Effect Manager', 'Initialization'); -- cgit v1.2.3 From 966955d94331c4cf78e16215bf2c30268be035ed Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 14:49:46 +0000 Subject: Fixed a spelling mistake in ScreenSongMenu Translation Texts Fixed Set wrong Interaction in Playlist Load Menu git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@60 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongMenu.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 849716c4..0b4a9d91 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -273,7 +273,7 @@ begin SM_PlayList_Del: begin CurMenu := sMenu; - Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_Del'); + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_DEL'); Button[0].Visible := True; Button[1].Visible := False; @@ -304,7 +304,7 @@ begin if (Length(ISelections)>=1) then begin UpdateSelectSlideOptions(Theme.SongMenu.SelectSlide3, 0, ISelections, SelectValue); - Interaction := 4; + Interaction := 3; end else begin @@ -312,7 +312,7 @@ begin SelectsS[0].Visible := False; Button[2].Visible := True; Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); - Interaction := 3; + Interaction := 2; end; end; -- cgit v1.2.3 From 34c7a7472078bd6f1d5551dedc9efd2ccccbc7c8 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 14:52:11 +0000 Subject: Added Playlist Support git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@61 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UPlaylist.pas | 398 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 Game/Code/Classes/UPlaylist.pas diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas new file mode 100644 index 00000000..585f9271 --- /dev/null +++ b/Game/Code/Classes/UPlaylist.pas @@ -0,0 +1,398 @@ +unit UPlaylist; + +interface + +type + TPlaylistItem = record + Artist: String; + Title: String; + SongID: Integer; + end; + + APlaylistItem = array of TPlaylistItem; + + TPlaylist = record + Name: String; + Filename: String; + Items: APlaylistItem; + end; + + APlaylist = array of TPlaylist; + + //---------- + //TPlaylistManager - Class for Managing Playlists (Loading, Displaying, Saving) + //---------- + TPlaylistManager = class + private + + public + Mode: Byte; //Current Playlist Mode for SongScreen + CurPlayList: Cardinal; + CurItem: Cardinal; + + Playlists: APlaylist; + + constructor Create; + Procedure LoadPlayLists; + Function LoadPlayList(Index: Cardinal; Filename: String): Boolean; + Procedure SavePlayList(Index: Cardinal); + + Procedure SetPlayList(Index: Cardinal); + + Function AddPlaylist(Name: String): Cardinal; + + Procedure AddItem(const SongID: Cardinal; const iPlaylist: Integer = -1); + Procedure DelItem(const iItem: Cardinal; const iPlaylist: Integer = -1); + + Procedure GetNames(var PLNames: array of String); + Function GetIndexbySongID(const SongID: Cardinal; const iPlaylist: Integer = -1): Integer; + end; + + {Modes: + 0: Standard Mode + 1: PlayList Mode + 2: Category Mode} + + var + PlayListMan: TPlaylistManager; + + +implementation +uses USongs, ULog, UPliki, UGraphic, UThemes, SysUtils; + +//---------- +//Create - Construct Class - Dummy for now +//---------- +constructor TPlayListManager.Create; +begin + LoadPlayLists; +end; + +//---------- +//LoadPlayLists - Load list of Playlists from PlayList Folder +//---------- +Procedure TPlayListManager.LoadPlayLists; +var + SR: TSearchRec; + Len: Integer; +begin + SetLength(Playlists, 0); + + if FindFirst(PlayListPath + '*.upl', 0, SR) = 0 then + begin + repeat + Len := Length(Playlists); + SetLength(Playlists, Len +1); + + if not LoadPlayList (Len, Sr.Name) then + SetLength(Playlists, Len); + + until FindNext(SR) <> 0; + FindClose(SR); + end; +end; + +//---------- +//LoadPlayList - Load a Playlist in the Array +//---------- +Function TPlayListManager.LoadPlayList(Index: Cardinal; Filename: String): Boolean; + var + F: TextFile; + Line: String; + PosDelimiter: Integer; + SongID: Integer; + Len: Integer; + + Function FindSong(Artist, Title: String): Integer; + var I: Integer; + begin + Result := -1; + + For I := low(CatSongs.Song) to high(CatSongs.Song) do + begin + if (CatSongs.Song[I].Title = Title) AND (CatSongs.Song[I].Artist = Artist) then + begin + Result := I; + Break; + end; + end; + end; +begin + if not FileExists(PlayListPath + Filename) then + begin + Log.LogError('Could not load Playlist: ' + Filename); + Result := False; + Exit; + end; + Result := True; + + //Load File + AssignFile(F, PlayListPath + FileName); + Reset(F); + + //Set Filename + PlayLists[Index].Filename := Filename; + PlayLists[Index].Name := ''; + + //Read Until End of File + While not Eof(F) do + begin + //Read Curent Line + Readln(F, Line); + + if (Length(Line) > 0) then + begin + PosDelimiter := Pos(':', Line); + if (PosDelimiter <> 0) then + begin + //Comment or Name String + if (Line[1] = '#') then + begin + //Found Name Value + if (Uppercase(Trim(copy(Line, 2, PosDelimiter - 2))) = 'NAME') then + PlayLists[Index].Name := Trim(copy(Line, PosDelimiter + 1,Length(Line) - PosDelimiter)) + + end + //Song Entry + else + begin + SongID := FindSong(Trim(copy(Line, 1, PosDelimiter - 1)), Trim(copy(Line, PosDelimiter + 1, Length(Line) - PosDelimiter))); + if (SongID <> -1) then + begin + Len := Length(PlayLists[Index].Items); + SetLength(PlayLists[Index].Items, Len + 1); + + PlayLists[Index].Items[Len].SongID := SongID; + + PlayLists[Index].Items[Len].Artist := Trim(copy(Line, 1, PosDelimiter - 1)); + PlayLists[Index].Items[Len].Title := Trim(copy(Line, PosDelimiter + 1, Length(Line) - PosDelimiter)); + end + else Log.LogError('Could not find Song in Playlist: ' + PlayLists[Index].Filename + ', ' + Line); + end; + end; + end; + end; + + //If no special name is given, use Filename + if PlayLists[Index].Name = '' then + begin + PlayLists[Index].Name := ChangeFileExt(FileName, ''); + end; + + //Finish (Close File) + CloseFile(F); +end; + +//---------- +//SavePlayList - Saves the specified Playlist +//---------- +Procedure TPlayListManager.SavePlayList(Index: Cardinal); +var + F: TextFile; + I: Integer; +begin + if (Not FileExists(PlaylistPath + Playlists[Index].Filename)) OR (Not FileisReadOnly(PlaylistPath + Playlists[Index].Filename)) then + begin + + //open File for Rewriting + AssignFile(F, PlaylistPath + Playlists[Index].Filename); + try + Rewrite(F); + + //Write Version (not nessecary but helpful) + WriteLn(F, '######################################'); + WriteLn(F, '#Ultrastar Deluxe Playlist Format v1.0'); + WriteLn(F, '#Playlist "' + Playlists[Index].Name + '" with ' + InttoStr(Length(Playlists[Index].Items)) + ' Songs.'); + WriteLn(F, '######################################'); + + //Write Name Information + WriteLn(F, '#Name: ' + Playlists[Index].Name); + + //Write Song Information + WriteLn(F, '#Songs:'); + + For I := 0 to high(Playlists[Index].Items) do + begin + WriteLn(F, Playlists[Index].Items[I].Artist + ' : ' + Playlists[Index].Items[I].Title); + end; + + finally + CloseFile(F); + end; + end; +end; + +//---------- +//SetPlayList - Display a Playlist in CatSongs +//---------- +Procedure TPlayListManager.SetPlayList(Index: Cardinal); +var + I: Integer; +begin + If (Index > High(PlayLists)) then + exit; + + //Hide all Songs + For I := 0 to high(CatSongs.Song) do + CatSongs.Song[I].Visible := False; + + //Show Songs in PL + For I := 0 to high(PlayLists[Index].Items) do + begin + CatSongs.Song[PlayLists[Index].Items[I].SongID].Visible := True; + end; + + //Set CatSongsMode + Playlist Mode + CatSongs.CatNumShow := -3; + Mode := 1; + + //Show Cat in Topleft: + ScreenSong.ShowCatTLCustom(Format(Theme.Playlist.CatText,[Playlists[Index].Name])); + + //Fix SongSelection + ScreenSong.Interaction := 0; + ScreenSong.SelectNext; + ScreenSong.FixSelected; + + //Play correct Music + ScreenSong.ChangeMusic; +end; + +//---------- +//AddPlaylist - Adds a Playlist and Returns the Index +//---------- +Function TPlayListManager.AddPlaylist(Name: String): Cardinal; +var I: Integer; +begin + Result := Length(Playlists); + SetLength(Playlists, Result + 1); + + Playlists[Result].Name := Name; + + I := 1; + + if (not FileExists(PlaylistPath + Name + '.upl')) then + Playlists[Result].Filename := Name + '.upl' + else + begin + repeat + Inc(I); + until not FileExists(PlaylistPath + Name + InttoStr(I) + '.upl'); + Playlists[Result].Filename := Name + InttoStr(I) + '.upl'; + end; + + //Save new Playlist + SavePlayList(Result); +end; + +//---------- +//AddItem - Adds an Item to a specific Playlist +//---------- +Procedure TPlayListManager.AddItem(const SongID: Cardinal; const iPlaylist: Integer); +var + P: Cardinal; + Len: Cardinal; +begin + if iPlaylist = -1 then + P := CurPlaylist + else if (iPlaylist >= 0) AND (iPlaylist <= high(Playlists)) then + P := iPlaylist + else + exit; + + if (SongID <= High(CatSongs.Song)) AND (NOT CatSongs.Song[SongID].Main) then + begin + Len := Length(Playlists[P].Items); + SetLength(Playlists[P].Items, Len + 1); + + Playlists[P].Items[Len].SongID := SongID; + Playlists[P].Items[Len].Title := CatSongs.Song[SongID].Title; + Playlists[P].Items[Len].Artist := CatSongs.Song[SongID].Artist; + + //Save Changes + SavePlayList(P); + + //Correct Display when Editing current Playlist + if (CatSongs.CatNumShow = -3) and (P = CurPlaylist) then + SetPlaylist(P); + end; +end; + +//---------- +//DelItem - Deletes an Item from a specific Playlist +//---------- +Procedure TPlayListManager.DelItem(const iItem: Cardinal; const iPlaylist: Integer); +var + I: Integer; + P: Cardinal; +begin + if iPlaylist = -1 then + P := CurPlaylist + else if (iPlaylist >= 0) AND (iPlaylist <= high(Playlists)) then + P := iPlaylist + else + exit; + + if (iItem <= high(Playlists[P].Items)) then + begin + //Move all entrys behind deleted one to Front + For I := iItem to High(Playlists[P].Items) - 1 do + Playlists[P].Items[I] := Playlists[P].Items[I + 1]; + + //Delete Last Entry + SetLength(PlayLists[P].Items, Length(PlayLists[P].Items) - 1); + + //Save Changes + SavePlayList(P); + end; + + //Correct Display when Editing current Playlist + if (CatSongs.CatNumShow = -3) and (P = CurPlaylist) then + SetPlaylist(P); +end; + +//---------- +//GetNames - Writes Playlist Names in a Array +//---------- +Procedure TPlayListManager.GetNames(var PLNames: array of String); +var + I: Integer; + Len: Integer; +begin + Len := High(Playlists); + + if (Length(PLNames) <> Len + 1) then + exit; + + For I := 0 to Len do + PLNames[I] := Playlists[I].Name; +end; + +//---------- +//GetIndexbySongID - Returns Index in the specified Playlist of the given Song +//---------- +Function TPlayListManager.GetIndexbySongID(const SongID: Cardinal; const iPlaylist: Integer): Integer; +var + P: Integer; + I: Integer; +begin + if iPlaylist = -1 then + P := CurPlaylist + else if (iPlaylist >= 0) AND (iPlaylist <= high(Playlists)) then + P := iPlaylist + else + exit; + + Result := -1; + + For I := 0 to high(Playlists[P].Items) do + begin + if (Playlists[P].Items[I].SongID = SongID) then + begin + Result := I; + Break; + end; + end; +end; + +end. -- cgit v1.2.3 From 1891cc1f7401a665d9f166b93c07fe1b86d972d5 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 15:02:35 +0000 Subject: Added new Language Entrys for Playlist Support git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@62 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 22 +++++++++++++++++++++- Languages/German.ini | 19 +++++++++++++++++-- Languages/readme.txt | 20 +++++++++++++++++++- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index e7ff0562..2d2b6bd4 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -106,12 +106,32 @@ SONG_MENU_NAME_MAIN=Song Menu SONG_MENU_PLAY=Sing SONG_MENU_EDIT=Edit SONG_MENU_MODI=Sing a Modi +SONG_MENU_CHANGEPLAYERS=Change Players SONG_MENU_CANCEL=Cancel -SONG_MENU_NAME_PLAYLIST=Create Playlist +SONG_MENU_NAME_PLAYLIST=Song Menu SONG_MENU_PLAYLIST_ADD=Add Song SONG_MENU_PLAYLIST_DEL=Delete Song +SONG_MENU_NAME_PLAYLIST=Song Menu +SONG_MENU_PLAYLIST_ADD=Add Song +SONG_MENU_PLAYLIST_DEL=Delete Song + +SONG_MENU_NAME_PLAYLIST_ADD=Add Song +SONG_MENU_PLAYLIST_ADD_NEW=to new playlist +SONG_MENU_PLAYLIST_ADD_EXISTING=to exiting playlist +SONG_MENU_PLAYLIST_NOEXISTING=No playlist available + +SONG_MENU_NAME_PLAYLIST_NEW=New Playlist +SONG_MENU_PLAYLIST_NEW_CREATE=Create +SONG_MENU_PLAYLIST_NEW_UNNAMED=Unnamed + +SONG_MENU_NAME_PLAYLIST_DEL=Really Delete? +SONG_MENU_YES=Yes + +SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist +SONG_MENU_PLAYLIST_LOAD=open + SONG_MENU_NAME_PARTY=Menu SONG_MENU_JOKER=Joker diff --git a/Languages/German.ini b/Languages/German.ini index f44683e6..2cf44abd 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -112,14 +112,29 @@ IMPLODE_GLUE2= und SONG_MENU_NAME_MAIN=Menü SONG_MENU_PLAY=Singen +SONG_MENU_CHANGEPLAYERS=Spieler Wechseln SONG_MENU_EDIT=Editor SONG_MENU_MODI=Ein Modi singen SONG_MENU_CANCEL=Abbrechen -SONG_MENU_NAME_PLAYLIST=Playlist erstellen +SONG_MENU_NAME_PLAYLIST=Menü SONG_MENU_PLAYLIST_ADD=Song hinzufügen SONG_MENU_PLAYLIST_DEL=Song löschen +SONG_MENU_NAME_PLAYLIST_ADD=Song hinzufügen +SONG_MENU_PLAYLIST_ADD_NEW=Zu neuer Playlist +SONG_MENU_PLAYLIST_ADD_EXISTING=Zu existierender Playlist +SONG_MENU_PLAYLIST_NOEXISTING=Keine Playlist vorhanden + +SONG_MENU_NAME_PLAYLIST_NEW=Neue Playliste +SONG_MENU_PLAYLIST_NEW_CREATE=Erstellen +SONG_MENU_PLAYLIST_NEW_UNNAMED=Unbenannt + +SONG_MENU_NAME_PLAYLIST_DEL=Wirklich löschen? +SONG_MENU_YES=Ja + +SONG_MENU_NAME_PLAYLIST_LOAD=Playlist öffnen +SONG_MENU_PLAYLIST_LOAD=Öffnen SONG_MENU_NAME_PARTY=Menü SONG_MENU_JOKER=Joker @@ -156,4 +171,4 @@ PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt PLUGIN_DUELL_NAME=Duell PLUGIN_DUELL_DESC=Normales Spiel PLUGIN_BLIND_NAME=Blind Mode -PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl \ No newline at end of file +PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl diff --git a/Languages/readme.txt b/Languages/readme.txt index 403d9e9a..fb605a49 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -30,12 +30,30 @@ SONG_MENU_NAME_MAIN=Song Menu SONG_MENU_PLAY=Sing SONG_MENU_EDIT=Edit SONG_MENU_MODI=Sing a Modi +SONG_MENU_CHANGEPLAYERS=Change Players SONG_MENU_CANCEL=Cancel -SONG_MENU_NAME_PLAYLIST=Create Playlist +#Playlist Menu +SONG_MENU_NAME_PLAYLIST=Song Menu SONG_MENU_PLAYLIST_ADD=Add Song SONG_MENU_PLAYLIST_DEL=Delete Song +SONG_MENU_NAME_PLAYLIST_ADD=Add Song +SONG_MENU_PLAYLIST_ADD_NEW=to new playlist +SONG_MENU_PLAYLIST_ADD_EXISTING=to exiting playlist +SONG_MENU_PLAYLIST_NOEXISTING=No playlist available + +SONG_MENU_NAME_PLAYLIST_NEW=New Playlist +SONG_MENU_PLAYLIST_NEW_CREATE=Create +SONG_MENU_PLAYLIST_NEW_UNNAMED=Unnamed + +SONG_MENU_NAME_PLAYLIST_DEL=Really Delete? +SONG_MENU_YES=Yes + +SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist +SONG_MENU_PLAYLIST_LOAD=open + +#Menu Party Modus SONG_MENU_NAME_PARTY=Menu SONG_MENU_JOKER=Joker -- cgit v1.2.3 From a84e1622187cd446c5b62a59ae23627931569e6b Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 5 Apr 2007 15:15:03 +0000 Subject: Theme/Skin: Beautified options screen, preparation for advanced tab, modified keyboard buttons in bottom bar Theme/Skin: Skinned song menu Language: added advanced screen entries to german.ini git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@63 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 9 + Skins/Deluxe/SongMenuBG.jpg | Bin 0 -> 1336 bytes Skins/Deluxe/W&C.ini | 10 +- Skins/Deluxe/[icon]options.jpg | Bin 0 -> 1063 bytes Skins/Deluxe/button_alt.jpg | Bin 1167 -> 1001 bytes Skins/Deluxe/button_az.jpg | Bin 1189 -> 1003 bytes Skins/Deluxe/button_j.jpg | Bin 1011 -> 892 bytes Skins/Deluxe/button_m.jpg | Bin 1045 -> 919 bytes Themes/Deluxe.ini | 700 +++++++++++++++++++++++++++-------------- 9 files changed, 470 insertions(+), 249 deletions(-) create mode 100644 Skins/Deluxe/SongMenuBG.jpg create mode 100644 Skins/Deluxe/[icon]options.jpg diff --git a/Languages/German.ini b/Languages/German.ini index 2cf44abd..a44ecc65 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -20,6 +20,7 @@ SING_OPTIONS_SOUND=Sound SING_OPTIONS_LYRICS=Lyrics SING_OPTIONS_THEMES=Themes SING_OPTIONS_RECORD=Aufnahme +SING_OPTIONS_ADVANCED=Erweitert SING_OPTIONS_EXIT=zurück SING_OPTIONS_GAME_DESC=Spiel Optionen @@ -61,6 +62,14 @@ SING_OPTIONS_RECORD_INPUT=Eingang SING_OPTIONS_RECORD_CHANNELL=Linker Kanal SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal +SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen +SING_OPTIONS_ADVANCED_GNOTE_TWINKLE=Goldene Noten glitzern +SING_OPTIONS_ADVANCED_PERFNOTE_TWINKLE=Perfekte Noten glitzern +SING_OPTIONS_ADVANCED_ANIMATED_LOADSCREEN=Ladebildschirm animiert +SING_OPTIONS_ADVANCED_SECURITY_QUESTIONS=Sicherheitsabfragen +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen +SING_OPTIONS_ADVANCED_EVENT_ON_ENTER=Enter bei SongAuswahl + SING_LEGEND_SELECT=AUSWÄHLEN SING_LEGEND_NAVIGATE=NAVIGIEREN SING_OPTIONS=Optionen diff --git a/Skins/Deluxe/SongMenuBG.jpg b/Skins/Deluxe/SongMenuBG.jpg new file mode 100644 index 00000000..77a5d6f6 Binary files /dev/null and b/Skins/Deluxe/SongMenuBG.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index d874d29c..f92f0432 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -30,14 +30,11 @@ Top5BG=W&C.jpg OptionsBG=W&C.jpg PartyBG=W&C.jpg -MainSolo=Sing.jpg -MainMulti=Editor.jpg -MainOptions=Options.jpg -MainExit=Exit.jpg - SongCD=cd.jpg MainIcon=mainicon.jpg MainSearch=mainsearch.jpg +IconOption=[icon]options.jpg +IconSongMenu=[icon]options.jpg Leiste1=Leiste1.jpg Leiste2=Leiste2.jpg @@ -71,4 +68,5 @@ ButtonM=button_m.jpg ButtonJ=button_j.jpg ButtonAlt=button_alt.jpg ButtonAZ=button_az.jpg -JumpToBG=Jump_to_background.jpg \ No newline at end of file +JumpToBG=Jump_to_background.jpg +SongMenuBG=SongMenuBG.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[icon]options.jpg b/Skins/Deluxe/[icon]options.jpg new file mode 100644 index 00000000..278f0adc Binary files /dev/null and b/Skins/Deluxe/[icon]options.jpg differ diff --git a/Skins/Deluxe/button_alt.jpg b/Skins/Deluxe/button_alt.jpg index 2e5e885a..d92be06c 100644 Binary files a/Skins/Deluxe/button_alt.jpg and b/Skins/Deluxe/button_alt.jpg differ diff --git a/Skins/Deluxe/button_az.jpg b/Skins/Deluxe/button_az.jpg index 62b2d21c..c748418a 100644 Binary files a/Skins/Deluxe/button_az.jpg and b/Skins/Deluxe/button_az.jpg differ diff --git a/Skins/Deluxe/button_j.jpg b/Skins/Deluxe/button_j.jpg index 9d872087..55647a48 100644 Binary files a/Skins/Deluxe/button_j.jpg and b/Skins/Deluxe/button_j.jpg differ diff --git a/Skins/Deluxe/button_m.jpg b/Skins/Deluxe/button_m.jpg index 5b0f2015..04bc5b0b 100644 Binary files a/Skins/Deluxe/button_m.jpg and b/Skins/Deluxe/button_m.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 7107bf8a..69a0e9b4 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -101,14 +101,15 @@ Reflection=1 [MainStatic3] X =600 -Y =549 -W =25 -H =28 +Y =553 +W =21 +H =22 Tex=ButtonM Color =White Type=Plain Reflection=1 + [MainText2] X =625 Y =552 @@ -298,16 +299,16 @@ Reflection=1 [SongStatic8] X =295 -Y =549 -W =29 -H =28 +Y =553 +W =25 +H =22 Tex=ButtonAlt Color =White Type=Plain Reflection=1 [SongText5] -X =324 +X =323 Y =556 Color=Black Font =1 @@ -317,9 +318,9 @@ Text=+ [SongStatic9] X =335 -Y =549 -W =29 -H =28 +Y =553 +W =25 +H =22 Tex=ButtonAZ Color =White Type=Plain @@ -336,9 +337,9 @@ Text=Jump to .. [SongStatic6] X =500 -Y =549 -W =25 -H =28 +Y =553 +W =21 +H =22 Tex=ButtonM Color =White Type=Plain @@ -355,9 +356,9 @@ Text=SONG_MENU_NAME_MAIN [SongStatic7] X =600 -Y =549 -W =25 -H =28 +Y =553 +W =21 +H =22 Tex=ButtonJ Color =White Type=Plain @@ -2139,147 +2140,241 @@ TexX2=1 TexY2=1 [Options] -Texts = 3 +#Texts = 4 Fade = 2 [OptionsBackground] Tex=OptionsBG [OptionsText1] -X = 50 -Y = 170 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text = SING_OPTIONS - -[OptionsText2] -X = 250 -Y = 550 -ColR = 0.5 -ColG = 0.5 -ColB = 0.5 -Font = 1 -Size = 8 -Text=SING_LEGEND_NAVIGATE +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS +Align=0 -[OptionsText3] -X = 500 -Y = 550 -ColR = 0.5 -ColG = 0.5 -ColB = 0.5 -Font = 1 -Size = 8 -Text=SING_LEGEND_SELECT +[OptionsTextDescription] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 [OptionsStatic1] -Tex=MainCursor -X=40 -Y=250 -W=32 -H=32 -Color=ColorDark +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[OptionsTextDescription] -X = 70 -Y = 248 -ColR = 0.5 -ColG = 0.5 -ColB = 0.5 -Font = 1 -Size = 10 +[OptionsStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 + +[OptionsStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 + +[OptionsText2] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_OPTIONS + +[OptionsText3] +X =300 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_OPTIONS_GAME_DESC [OptionsButtonGame] -X = 40 -Y = 310 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =100 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 + +[OptionsButtonGameText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_GAME +Color=White [OptionsButtonGraphics] -X = 270 -Y = 310 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =255 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 + +[OptionsButtonGraphicsText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_GRAPHICS +Color=White [OptionsButtonSound] -X = 500 -Y = 310 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =410 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 + +[OptionsButtonSoundText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_SOUND +Color=White [OptionsButtonLyrics] -X = 40 -Y = 380 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =565 +Y =270 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Align=0 +Texts=1 + +[OptionsButtonLyricsText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_LYRICS +Color=White [OptionsButtonThemes] -X = 270 -Y = 380 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =100 +Y =340 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Align=0 +Texts=1 + +[OptionsButtonThemesText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_THEMES +Color=White [OptionsButtonRecord] -X = 500 -Y = 380 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =255 +Y =340 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Align=0 +Texts=1 + +[OptionsButtonRecordText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_RECORD +Color=White +Texts=1 + +[OptionsButtonAdvanced] +X =410 +Y =340 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Align=0 + +[OptionsButtonAdvancedText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_ADVANCED +Color=White +Texts=1 [OptionsButtonExit] -X = 500 -Y = 450 -W = 230 -H = 70 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X =565 +Y =340 +W =150 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Align=0 +Texts=1 + +[OptionsButtonExitText1] +X =75 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_EXIT +Color=White [OptionsGame] Texts = 1 @@ -2289,14 +2384,22 @@ Fade = 2 Tex=OptionsBG [OptionsGameText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text=SING_OPTIONS_GAME_DESC +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS_GAME +Align=0 + +[OptionsGameStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black [OptionsGameSelectPlayers] Tex = MainBar @@ -2436,14 +2539,22 @@ Texts = 1 Tex=OptionsBG [OptionsGraphicsText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 +X =70 +Y =6 +Color=White +Font =0 +Size =20 Text=SING_OPTIONS_GRAPHICS_DESC +Align=0 + +[OptionsGraphicsStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black [OptionsGraphicsSelectSlideResolution] Tex =MainBar @@ -2582,14 +2693,22 @@ Texts = 1 Tex=OptionsBG [OptionsSoundText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text =SING_OPTIONS_SOUND_DESC +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS_SOUND_DESC +Align=0 + +[OptionsSoundStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black [OptionsSoundSelectMicBoost] Tex =MainBar @@ -2708,14 +2827,22 @@ Texts = 1 Tex=OptionsBG [OptionsLyricsText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text =SING_OPTIONS_LYRICS_DESC +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS_LYRICS_DESC +Align=0 + +[OptionsLyricsStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black [OptionsLyricsSelectLyricsFont] Tex =MainBar @@ -2794,14 +2921,22 @@ Texts = 1 Tex=OptionsBG [OptionsThemesText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text =SING_OPTIONS_THEMES_DESC +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS_THEMES_DESC +Align=0 + +[OptionsThemesStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black [OptionsThemesSelectTheme] Tex =MainBar @@ -2880,14 +3015,22 @@ Texts = 1 Tex=OptionsBG [OptionsRecordText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 +X =70 +Y =6 +Color=White +Font =0 +Size =20 Text=SING_OPTIONS_RECORD_DESC +Align=0 + +[OptionsRecordStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black [OptionsRecordSelectSlideCard] Tex = MainBar @@ -2983,6 +3126,30 @@ Color = ColorDark DColor = Gray Type = Font Black +[OptionsAdvanced] +Texts = 1 + +[OptionsAdvancedBackground] +Tex=OptionsBG + +[OptionsAdvancedText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS_ADVANCED_DESC +Align=0 + +[OptionsAdvancedStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black + [Top5] Texts=1 @@ -4625,64 +4792,104 @@ Texts=0 Statics=1 [SongMenuButton1] -X = 450 -Y = 280 -Z = 1 -W = 160 -H = 50 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X = 460 +Y = 170 +W = 180 +H = 30 +Tex =Button +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 0.99 +Texts=1 + +[SongMenuButton1Text1] +X =30 +Y =0 +Color=White +Font =0 +Size =10 +Text=SONG_MENU_PLAY +Align=0 +Z=1 [SongMenuButton2] -X = 450 -Y = 330 -Z = 1 -W = 160 -H = 50 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X = 460 +Y = 210 +W = 180 +H = 30 +Tex =Button +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 0.99 +Texts=1 + +[SongMenuButton2Text1] +X =30 +Y =0 +Color=White +Font =0 +Size =10 +Text=SONG_MENU_EDIT +Align=0 +Z=1 [SongMenuButton3] -X = 450 -Y = 380 -Z = 1 -W = 160 -H = 50 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X = 460 +Y = 250 +W = 180 +H = 30 +Tex =Button +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 0.99 +Texts=1 + +[SongMenuButton3Text1] +X =30 +Y =0 +Color=White +Font =0 +Size =10 +Text=SONG_MENU_MODI +Align=0 +Z=1 [SongMenuButton4] -X = 450 -Y = 430 -Z = 1 -W = 160 -H = 50 -Tex = MainBar -Color = ColorDark -Int = 1 -DColor = White -DInt = 0.5 -Type = Font Black +X = 460 +Y = 290 +W = 180 +H = 30 +Tex =Button +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 0.99 +Texts=1 + +[SongMenuButton4Text1] +X =30 +Y =0 +Color=White +Font =0 +Size =10 +Text=SONG_MENU_CANCEL +Align=0 +Z=1 [SongMenuSelectSlide3] -Tex = MainBar -TexSBG = MainBar +Tex = button +TexSBG = button Text = -X = 450 -Y = 380 -Z = 1 +X = 460 +Y = 250 +Z = 0.99 W = 0 H = 50 SkipX = 0 @@ -4699,28 +4906,35 @@ STColor = White STDColor = GrayDark [SongMenuTextMenu] -X =450 -Y =240 +X =489 +Y =125 Color=White -Font =1 -Size =15 -Text=Menu +Font =0 +Size =14 +Text=MENU Align=0 +Z=1 + +[SongMenuStatic2] +X =463 +Y =135 +W =21 +H =21 +Color =White +Tex =IconSongMenu +Type=Font Black +Z=1 [SongMenuStatic1] -Tex =ScoreBG +Tex =SongMenuBG X =450 -Y =235 +Y =120 W =200 -H =250 -Z =1 -Int=0.6 -Color =LightBlue -Type=Transparent -TexX1=0.02 -TexY1=0.05 -TexX2=0.98 -TexY2=0.98 +H =210 +Z =0.95 +Int=1 +Color =DarkBlue +Type=Font Black [SongJumpto] Texts=0 -- cgit v1.2.3 From 939b36edbd126e5ce4d53d4c3d2fe157ae64149d Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 5 Apr 2007 16:03:11 +0000 Subject: Theme/Skin: Added playlist button on bottom bar (song select screen), minor refining done at song menu git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@64 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/W&C.ini | 5 +++- Skins/Deluxe/button_alt.jpg | Bin 1001 -> 3752 bytes Skins/Deluxe/button_az.jpg | Bin 1003 -> 3784 bytes Skins/Deluxe/button_j.jpg | Bin 892 -> 2851 bytes Skins/Deluxe/button_m.jpg | Bin 919 -> 3062 bytes Skins/Deluxe/button_p.jpg | Bin 0 -> 2900 bytes Skins/Deluxe/rectangle.jpg | Bin 0 -> 340 bytes Themes/Deluxe.ini | 62 +++++++++++++++++++++++++++++--------------- 8 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 Skins/Deluxe/button_p.jpg create mode 100644 Skins/Deluxe/rectangle.jpg diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index f92f0432..d03fe49e 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -64,9 +64,12 @@ LineBonusBack=Line Bonus PopUp.jpg HDL_Pointer=Pointer.BMP +ButtonP=button_p.jpg ButtonM=button_m.jpg ButtonJ=button_j.jpg ButtonAlt=button_alt.jpg ButtonAZ=button_az.jpg JumpToBG=Jump_to_background.jpg -SongMenuBG=SongMenuBG.jpg \ No newline at end of file +SongMenuBG=SongMenuBG.jpg + +Rectangle=Rectangle.jpg \ No newline at end of file diff --git a/Skins/Deluxe/button_alt.jpg b/Skins/Deluxe/button_alt.jpg index d92be06c..193b8415 100644 Binary files a/Skins/Deluxe/button_alt.jpg and b/Skins/Deluxe/button_alt.jpg differ diff --git a/Skins/Deluxe/button_az.jpg b/Skins/Deluxe/button_az.jpg index c748418a..d2c80a87 100644 Binary files a/Skins/Deluxe/button_az.jpg and b/Skins/Deluxe/button_az.jpg differ diff --git a/Skins/Deluxe/button_j.jpg b/Skins/Deluxe/button_j.jpg index 55647a48..7a1d5122 100644 Binary files a/Skins/Deluxe/button_j.jpg and b/Skins/Deluxe/button_j.jpg differ diff --git a/Skins/Deluxe/button_m.jpg b/Skins/Deluxe/button_m.jpg index 04bc5b0b..186ec4e8 100644 Binary files a/Skins/Deluxe/button_m.jpg and b/Skins/Deluxe/button_m.jpg differ diff --git a/Skins/Deluxe/button_p.jpg b/Skins/Deluxe/button_p.jpg new file mode 100644 index 00000000..c5da3d9e Binary files /dev/null and b/Skins/Deluxe/button_p.jpg differ diff --git a/Skins/Deluxe/rectangle.jpg b/Skins/Deluxe/rectangle.jpg new file mode 100644 index 00000000..d021061a Binary files /dev/null and b/Skins/Deluxe/rectangle.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 69a0e9b4..2f46c2e8 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -102,7 +102,7 @@ Reflection=1 [MainStatic3] X =600 Y =553 -W =21 +W =22 H =22 Tex=ButtonM Color =White @@ -298,9 +298,10 @@ Type=Plain Reflection=1 [SongStatic8] -X =295 +#X =295 +X =260 Y =553 -W =25 +W =26 H =22 Tex=ButtonAlt Color =White @@ -308,7 +309,7 @@ Type=Plain Reflection=1 [SongText5] -X =323 +X =288 Y =556 Color=Black Font =1 @@ -317,9 +318,9 @@ Align=0 Text=+ [SongStatic9] -X =335 +X =300 Y =553 -W =25 +W =26 H =22 Tex=ButtonAZ Color =White @@ -327,7 +328,7 @@ Type=Plain Reflection=1 [SongText6] -X =370 +X =330 Y =552 Color=Black Font =0 @@ -336,9 +337,9 @@ Align=0 Text=Jump to .. [SongStatic6] -X =500 +X =425 Y =553 -W =21 +W =22 H =22 Tex=ButtonM Color =White @@ -346,7 +347,7 @@ Type=Plain Reflection=1 [SongText3] -X =525 +X =450 Y =552 Color=Black Font =0 @@ -355,9 +356,9 @@ Align=0 Text=SONG_MENU_NAME_MAIN [SongStatic7] -X =600 +X =515 Y =553 -W =21 +W =22 H =22 Tex=ButtonJ Color =White @@ -365,7 +366,7 @@ Type=Plain Reflection=1 [SongText4] -X =625 +X =540 Y =552 Color=Black Font =0 @@ -373,6 +374,25 @@ Size =7 Align=0 Text=SONG_JUMPTO_DESC +[SongStatic10] +X =679 +Y =553 +W =22 +H =22 +Tex=ButtonP +Color =White +Type=Plain +Reflection=1 + +[SongText7] +X =705 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=Playlist + [SongStatic5] X =200 Y =120 @@ -4796,7 +4816,7 @@ X = 460 Y = 170 W = 180 H = 30 -Tex =Button +Tex =Rectangle Color =LightBlue DColor = DarkBlue Type=Font Black @@ -4809,7 +4829,7 @@ X =30 Y =0 Color=White Font =0 -Size =10 +Size =8 Text=SONG_MENU_PLAY Align=0 Z=1 @@ -4819,7 +4839,7 @@ X = 460 Y = 210 W = 180 H = 30 -Tex =Button +Tex =Rectangle Color =LightBlue DColor = DarkBlue Type=Font Black @@ -4832,7 +4852,7 @@ X =30 Y =0 Color=White Font =0 -Size =10 +Size =8 Text=SONG_MENU_EDIT Align=0 Z=1 @@ -4842,7 +4862,7 @@ X = 460 Y = 250 W = 180 H = 30 -Tex =Button +Tex =Rectangle Color =LightBlue DColor = DarkBlue Type=Font Black @@ -4855,7 +4875,7 @@ X =30 Y =0 Color=White Font =0 -Size =10 +Size =8 Text=SONG_MENU_MODI Align=0 Z=1 @@ -4865,7 +4885,7 @@ X = 460 Y = 290 W = 180 H = 30 -Tex =Button +Tex = Button Color =LightBlue DColor = DarkBlue Type=Font Black @@ -4878,7 +4898,7 @@ X =30 Y =0 Color=White Font =0 -Size =10 +Size =8 Text=SONG_MENU_CANCEL Align=0 Z=1 -- cgit v1.2.3 From 9d01c8801db29d6ff3d64ef81b84321549d84688 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 5 Apr 2007 21:09:52 +0000 Subject: Added Advanced Screen and Options in TIni Options working now only for Effect Perfect and Effect Golden. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@65 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 26 +- Game/Code/Classes/UGraphic.pas | 42 ++- Game/Code/Classes/UIni.pas | 160 +++++----- Game/Code/Classes/UThemes.pas | 442 ++++++++++++++------------- Game/Code/Screens/UScreenEditSub.pas | 4 +- Game/Code/Screens/UScreenOptions.pas | 11 +- Game/Code/Screens/UScreenOptionsAdvanced.pas | 95 ++++++ Game/Code/Screens/UScreenOptionsGraphics.pas | 1 - Game/Code/Screens/UScreenSing.pas | 14 +- Game/Code/Screens/UScreenSongMenu.pas | 4 +- Game/Code/UltraStar.dpr | 29 +- 11 files changed, 499 insertions(+), 329 deletions(-) create mode 100644 Game/Code/Screens/UScreenOptionsAdvanced.pas diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 2e742172..e0e8e941 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -215,11 +215,17 @@ begin with Nuta[Pet] do begin if not FreeStyle then begin - // Golden Note Patch - case Wartosc of - 1: glColor4f(1, 1, 1, 0.85); - 2: glColor4f(1, 1, 1, 0.85); // no stars, paint yellow -> glColor4f(1, 1, 0.3, 0.85); - end; // case + + if Ini.EffectGolden = 0 then + // If Golden note Effect of then Change not Color + begin + case Wartosc of + 1: glColor4f(1, 1, 1, 0.85); + 2: glColor4f(1, 1, 0.3, 0.85); // no stars, paint yellow -> glColor4f(1, 1, 0.3, 0.85); + end; // case + end //Else all Notes same Color + else + glColor4f(1, 1, 1, 0.85); // lewa czesc - left part Rec.Left := (Start-Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote) * TempR + Left + 0.5 + 10*ScreenX; @@ -264,10 +270,10 @@ begin glEnd; // Golden Star Patch - if Wartosc = 2 then - begin - GoldenRec.SaveGoldenStarsRec(GoldenStarPos, Rec.Top, Rec.Right, Rec.Bottom); - end; + if (Wartosc = 2) AND (Ini.EffectGolden=1) then + begin + GoldenRec.SaveGoldenStarsRec(GoldenStarPos, Rec.Top, Rec.Right, Rec.Bottom); + end; end; // if not FreeStyle end; // with @@ -373,7 +379,7 @@ var //Rec.Right := X + (Start+Dlugosc-Czesci[0].Czesc[Czesci[0].Akt].StartNote) * TempR - NotesW - 0.5 + 10*ScreenX; //if (Start+Dlugosc-1 = Czas.AktBeatD) then - if Perfect AND (Ini.GMAFix <> 1) then begin + if Perfect and (Ini.EffectPerfect=1) then begin // A := sqrt((1+sin(Music.Position * 3))/2); A := 1 - 2*(Czas.Teraz - GetTimeFromBeat(Start+Dlugosc)); if not (Start+Dlugosc-1 = Czas.AktBeatD) then diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index d9831143..73bb1706 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -4,7 +4,7 @@ interface uses SDL, OpenGL12, UTexture, TextGL, ULog, SysUtils, ULyrics, UScreenLoading, UScreenWelcome, UScreenMain, UScreenName, UScreenLevel, UScreenOptions, UScreenOptionsGame, - UScreenOptionsGraphics, UScreenOptionsSound, UScreenOptionsLyrics, UScreenOptionsThemes, UScreenOptionsRecord, + UScreenOptionsGraphics, UScreenOptionsSound, UScreenOptionsLyrics, UScreenOptionsThemes, UScreenOptionsRecord, UScreenOptionsAdvanced, UScreenSong, UScreenSing, UScreenScore, UScreenTop5, UScreenEditSub, UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, UScreenSongJumpto, {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer; @@ -44,6 +44,7 @@ var ScreenOptionsLyrics: TScreenOptionsLyrics; ScreenOptionsThemes: TScreenOptionsThemes; ScreenOptionsRecord: TScreenOptionsRecord; + ScreenOptionsAdvanced: TScreenOptionsAdvanced; ScreenEditSub: TScreenEditSub; ScreenEdit: TScreenEdit; ScreenEditConvert: TScreenEditConvert; @@ -162,7 +163,7 @@ procedure LoadScreens; implementation -uses UMain, UIni, UDisplay; +uses UMain, UIni, UDisplay, Graphics, Classes, Windows; procedure LoadTextures; var @@ -215,13 +216,36 @@ begin end; procedure Initialize3D (Title: string); +var + Icon: TIcon; + Res: TResourceStream; + ISurface: PSDL_Surface; begin Log.LogStatus('LoadOpenGL', 'Initialize3D'); Log.BenchmarkStart(2); LoadOpenGL; -// SDL_WM_SetIcon(SDL_LoadBMP('..\Graphics\us.ico'),0); + {//Load Icon + Res := TResourceStream.CreateFromID(HInstance, 3, RT_ICON); + Icon := TIcon.Create; + Icon.LoadFromStream(Res); + Res.Free; + + //Create icon Surface + SDL_CreateRGBSurface ( + SDL_SWSURFACE, + Icon.Width, + Icon.Height, + 32, + 128 or 64, + 32 or 16, + 8 or 4, + 2 or 1); + SDL_BlitSurface( //} + + + SDL_WM_SetIcon(SDL_LoadBMP('us.ico'), 0); //} Log.LogStatus('SDL_Init', 'Initialize3D'); if ( SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO)= -1 ) then begin @@ -370,16 +394,18 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options', 3); Log.BenchmarkStart(3); ScreenOptionsGame := TScreenOptionsGame.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Game', 3); Log.BenchmarkStart(3); - ScreenOptionsGraphics := TScreenOptionsGraphics.Create(''); + ScreenOptionsGraphics := TScreenOptionsGraphics.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Graphics', 3); Log.BenchmarkStart(3); - ScreenOptionsSound := TScreenOptionsSound.Create(''); + ScreenOptionsSound := TScreenOptionsSound.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Sound', 3); Log.BenchmarkStart(3); - ScreenOptionsLyrics := TScreenOptionsLyrics.Create(''); + ScreenOptionsLyrics := TScreenOptionsLyrics.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Lyrics', 3); Log.BenchmarkStart(3); - ScreenOptionsThemes := TScreenOptionsThemes.Create(''); + ScreenOptionsThemes := TScreenOptionsThemes.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Themes', 3); Log.BenchmarkStart(3); - ScreenOptionsRecord := TScreenOptionsRecord.Create; + ScreenOptionsRecord := TScreenOptionsRecord.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Record', 3); Log.BenchmarkStart(3); + ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Advanced', 3); Log.BenchmarkStart(3); ScreenEditSub := TScreenEditSub.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit Sub', 3); Log.BenchmarkStart(3); ScreenEdit := TScreenEdit.Create(''); diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index a17ba52d..7ab8de99 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -27,11 +27,6 @@ type Spectrum: integer; Spectrograph: integer; MovieSize: integer; - //LineBonus Mod - LineBonus: integer; - //GMA Fix - GMAFix: integer; - // Sound MicBoost: integer; @@ -61,6 +56,14 @@ type ChannelR: integer; end; + // Advanced + LoadAnimation: integer; + EffectPerfect: integer; + EffectGolden: integer; + AskbeforeDel: integer; + OnSongClick: integer; + LineBonus: integer; + // Controller Joypad: integer; @@ -113,11 +116,6 @@ const IOscilloscope: array[0..2] of string = ('Off', 'Osci', 'Bar'); //IOscilloscope: array[0..1] of string = ('Off', 'On'); - //Line Bonus MOd - ILineBonus: array[0..2] of string = ('Off', 'At Score', 'At Notes'); - //GMA Fix - IGMAFix: array[0..1] of string = ('Off', 'On'); - ISpectrum: array[0..1] of string = ('Off', 'On'); ISpectrograph: array[0..1] of string = ('Off', 'On'); IMovieSize: array[0..1] of string = ('Half', 'Full'); @@ -135,6 +133,14 @@ const IColor: array[0..8] of string = ('Blue', 'Green', 'Pink', 'Red', 'Violet', 'Orange', 'Yellow', 'Brown', 'Black'); + // Advanced + ILoadAnimation: array[0..1] of string = ('Off', 'On'); + IEffectPerfect: array[0..1] of string = ('Off', 'On'); + IEffectGolden: 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'); + IJoypad: array[0..1] of string = ('Off', 'On'); ILPT: array[0..2] of string = ('Off', 'LCD', 'Lights'); @@ -257,16 +263,6 @@ begin for Pet := 0 to High(IOscilloscope) do if Tekst = IOscilloscope[Pet] then Ini.Oscilloscope := Pet; - // Line Bonus - Tekst := IniFile.ReadString('Graphics', 'LineBonus', 'At Score'); - for Pet := 0 to High(ILineBonus) do - if Tekst = ILineBonus[Pet] then Ini.LineBonus := Pet; - - //GMA Fix - Tekst := IniFile.ReadString('Graphics', 'GMAFix', 'Off'); - for Pet := 0 to High(IGMAFix) do - if Tekst = IGMAFix[Pet] then Ini.GMAFix := Pet; - // Spectrum Tekst := IniFile.ReadString('Graphics', 'Spectrum', 'Off'); for Pet := 0 to High(ISpectrum) do @@ -307,22 +303,6 @@ begin for Pet := 0 to High(IThreshold) do if Tekst = IThreshold[Pet] then Ini.Threshold := Pet; - {// Two Player Mode - for I := 0 to 7 do begin - Ini.SoundCard[I, 1] := 2*I + 1; - Ini.SoundCard[I, 2] := 2*I + 2; - end; - - Tekst := IniFile.ReadString('Sound', 'TwoPlayerMode', ITwoPlayerMode[0]); - for Pet := 0 to High(ITwoPlayerMode) do - if Tekst = ITwoPlayerMode[Pet] then Ini.TwoPlayerMode := Pet; - - if Ini.TwoPlayerMode = 1 then begin - Ini.SoundCard[0, 1] := 1; - Ini.SoundCard[0, 2] := 3; - Ini.SoundCard[1, 1] := 2; - end;} - // Lyrics Font Tekst := IniFile.ReadString('Lyrics', 'LyricsFont', ILyricsFont[1]); for Pet := 0 to High(ILyricsFont) do @@ -339,15 +319,6 @@ begin if Tekst = ISolmization[Pet] then Ini.Solmization := Pet; // Theme - {SetLength(ITheme, 0); - if FileExists('Themes\Singstar.ini') then begin - SetLength(ITheme, Length(ITheme)+1); - ITheme[High(ITheme)] := 'Singstar'; - end; { - if FileExists('Themes\Karin.ini') then begin - SetLength(ITheme, Length(ITheme)+1); - ITheme[High(ITheme)] := 'Karin'; - end;} //Theme List Patch SetLength(ITheme, 0); @@ -372,8 +343,7 @@ begin //No Theme Found if (Length(ITheme)=0) then begin - Log.LogError('Could not find any valid Themes.'); - Halt; + Log.CriticalError('Could not find any valid Themes.'); end; @@ -425,8 +395,6 @@ begin Inc(I); end; - Log.LogError(InttoStr(Length(CardList)) + ' Cards Loaded'); - // Record - append detected soundcards for I := 0 to High(Recording.SoundCard) do begin @@ -455,40 +423,45 @@ begin end; end; - {for I := 0 to High(Recording.SoundCard) do begin + //Advanced Settings - B := false; - I2 := 0; - while ((B = false) and (I2 <= High(CardList))) do - if CardList[I2].Name = Recording.SoundCard[I].Description then B := true - else Inc(I2); + // LoadAnimation + Tekst := IniFile.ReadString('Advanced', 'LoadAnimation', 'On'); + for Pet := 0 to High(ILoadAnimation) do + if Tekst = ILoadAnimation[Pet] then Ini.LoadAnimation := Pet; + + // EffectPerfect + Tekst := IniFile.ReadString('Advanced', 'EffectPerfect', 'On'); + for Pet := 0 to High(IEffectPerfect) do + if Tekst = IEffectPerfect[Pet] then Ini.EffectPerfect := Pet; + + // EffectGolden + Tekst := IniFile.ReadString('Advanced', 'EffectGolden', 'On'); + for Pet := 0 to High(IEffectGolden) do + if Tekst = IEffectGolden[Pet] then Ini.EffectGolden := Pet; + + // AskbeforeDel + Tekst := IniFile.ReadString('Advanced', 'AskbeforeDel', 'On'); + for Pet := 0 to High(IAskbeforeDel) do + if Tekst = IAskbeforeDel[Pet] then Ini.AskbeforeDel := Pet; + + // OnSongClick + Tekst := IniFile.ReadString('Advanced', 'OnSongClick', 'Sing'); + for Pet := 0 to High(IOnSongClick) do + if Tekst = IOnSongClick[Pet] then Ini.OnSongClick := Pet; + + // Linebonus + Tekst := IniFile.ReadString('Advanced', 'LineBonus', 'At Score'); + for Pet := 0 to High(ILineBonus) do + if Tekst = ILineBonus[Pet] then Ini.LineBonus := Pet; - // if the card wasn't detected in ini file, append it to the ini list - if B = false then begin - I3 := Length(CardList); - SetLength(CardList, I3+1); - CardList[I3].Name := Recording.SoundCard[I].Description; - CardList[I3].Input := 0; - CardList[I3].ChannelL := 0; - CardList[I3].ChannelR := 0; - if Length(CardList) = 1 then CardList[I].ChannelL := 1; // default for new users - //CardList[I].Input := 2; - end; - end; } - Log.LogError(InttoStr(Length(CardList)) + ' Cards Detected'); // Joypad Tekst := IniFile.ReadString('Controller', 'Joypad', IJoypad[0]); for Pet := 0 to High(IJoypad) do if Tekst = IJoypad[Pet] then Ini.Joypad := Pet; - {// SoundCard - for I := 0 to 7 do begin - Ini.SoundCard[I, 1] := IniFile.ReadInteger('SoundCards', 'SoundCard'+IntToStr(I+1)+'L', Ini.SoundCard[I, 1]); - Ini.SoundCard[I, 2] := IniFile.ReadInteger('SoundCards', 'SoundCard'+IntToStr(I+1)+'R', Ini.SoundCard[I, 2]); - end; } - // LCD Tekst := IniFile.ReadString('Devices', 'LPT', ILPT[0]); for Pet := 0 to High(ILPT) do @@ -564,14 +537,6 @@ begin Tekst := IOscilloscope[Ini.Oscilloscope]; IniFile.WriteString('Graphics', 'Oscilloscope', Tekst); - //Line Bonus - Tekst := ILineBonus[Ini.LineBonus]; - IniFile.WriteString('Graphics', 'LineBonus', Tekst); - - //GMA Fix - Tekst := IGMAFix[Ini.GMAFix]; - IniFile.WriteString('Graphics', 'GMAFix', Tekst); - // Spectrum Tekst := ISpectrum[Ini.Spectrum]; IniFile.WriteString('Graphics', 'Spectrum', Tekst); @@ -604,10 +569,6 @@ begin Tekst := ISavePlayback[Ini.SavePlayback]; IniFile.WriteString('Sound', 'SavePlayback', Tekst); - {// Two Player Mode - Tekst := ITwoPlayerMode[Ini.TwoPlayerMode]; - IniFile.WriteString('Sound', 'TwoPlayerMode', Tekst); } - // Lyrics Font Tekst := ILyricsFont[Ini.LyricsFont]; IniFile.WriteString('Lyrics', 'LyricsFont', Tekst); @@ -651,6 +612,33 @@ begin Log.LogError(InttoStr(Length(CardList)) + ' Cards Saved'); + //Advanced Settings + + //LoadAnimation + Tekst := ILoadAnimation[Ini.LoadAnimation]; + IniFile.WriteString('Advanced', 'LoadAnimation', Tekst); + + //EffectPerfect + Tekst := IEffectPerfect[Ini.EffectPerfect]; + IniFile.WriteString('Advanced', 'EffectPerfect', Tekst); + + //EffectGolden + Tekst := IEffectGolden[Ini.EffectGolden]; + IniFile.WriteString('Advanced', 'EffectGolden', Tekst); + + //AskbeforeDel + Tekst := IAskbeforeDel[Ini.AskbeforeDel]; + IniFile.WriteString('Advanced', 'AskbeforeDel', Tekst); + + //OnSongClick + Tekst := IOnSongClick[Ini.OnSongClick]; + IniFile.WriteString('Advanced', 'OnSongClick', Tekst); + + //Line Bonus + Tekst := ILineBonus[Ini.LineBonus]; + IniFile.WriteString('Advanced', 'LineBonus', Tekst); + + // Joypad Tekst := IJoypad[Ini.Joypad]; IniFile.WriteString('Controller', 'Joypad', Tekst); diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index d2fb5b11..17983a60 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -333,10 +333,11 @@ type ButtonLyrics: TThemeButton; ButtonThemes: TThemeButton; ButtonRecord: TThemeButton; + ButtonAdvanced: TThemeButton; ButtonExit: TThemeButton; TextDescription: TThemeText; - Description: array[0..6] of string; + Description: array[0..7] of string; end; TThemeOptionsGame = class(TThemeBasic) @@ -390,6 +391,16 @@ type ButtonExit: TThemeButton; end; + TThemeOptionsAdvanced = class(TThemeBasic) + SelectLoadAnimation: TThemeSelect; + SelectEffectPerfect: TThemeSelect; + SelectEffectGolden: TThemeSelect; + SelectLineBonus: TThemeSelect; + SelectAskbeforeDel: TThemeSelect; + SelectOnSongClick: TThemeSelectSlide; + ButtonExit: TThemeButton; + end; + //ScreenSong Menue TThemeSongMenu = class(TThemeBasic) Button1: TThemeButton; @@ -549,7 +560,8 @@ type OptionsLyrics: TThemeOptionsLyrics; OptionsThemes: TThemeOptionsThemes; OptionsRecord: TThemeOptionsRecord; - //Menu + OptionsAdvanced: TThemeOptionsAdvanced; + //ScreenSong extensions SongMenu: TThemeSongMenu; SongJumpto: TThemeSongJumpTo; //Party Screens: @@ -633,6 +645,7 @@ begin OptionsLyrics := TThemeOptionsLyrics.Create; OptionsThemes := TThemeOptionsThemes.Create; OptionsRecord := TThemeOptionsRecord.Create; + OptionsAdvanced := TThemeOptionsAdvanced.Create; SongMenu := TThemeSongMenu.Create; SongJumpto := TThemeSongJumpto.Create; @@ -939,72 +952,74 @@ begin ThemeLoadTexts(Top5.TextName, 'Top5TextName'); ThemeLoadTexts(Top5.TextScore, 'Top5TextScore'); - // Options - ThemeLoadBasic(Options, 'Options'); - - ThemeLoadButton(Options.ButtonGame, 'OptionsButtonGame'); - ThemeLoadButton(Options.ButtonGraphics, 'OptionsButtonGraphics'); - ThemeLoadButton(Options.ButtonSound, 'OptionsButtonSound'); - ThemeLoadButton(Options.ButtonLyrics, 'OptionsButtonLyrics'); - ThemeLoadButton(Options.ButtonThemes, 'OptionsButtonThemes'); - ThemeLoadButton(Options.ButtonRecord, 'OptionsButtonRecord'); - ThemeLoadButton(Options.ButtonExit, 'OptionsButtonExit'); - - {{$IFDEF TRANSLATE} - Options.Description[0] := Language.Translate('SING_OPTIONS_GAME'); - Options.Description[1] := Language.Translate('SING_OPTIONS_GRAPHICS'); - Options.Description[2] := Language.Translate('SING_OPTIONS_SOUND'); - Options.Description[3] := Language.Translate('SING_OPTIONS_LYRICS'); - Options.Description[4] := Language.Translate('SING_OPTIONS_THEMES'); - Options.Description[5] := Language.Translate('SING_OPTIONS_RECORD'); - Options.Description[6] := Language.Translate('SING_OPTIONS_EXIT'); - {{$ENDIF} - - ThemeLoadText(Options.TextDescription, 'OptionsTextDescription'); - Options.TextDescription.Text := Options.Description[0]; - - // Options Game - ThemeLoadBasic(OptionsGame, 'OptionsGame'); - - ThemeLoadSelect(OptionsGame.SelectPlayers, 'OptionsGameSelectPlayers'); - ThemeLoadSelect(OptionsGame.SelectDifficulty, 'OptionsGameSelectDifficulty'); - ThemeLoadSelectSlide(OptionsGame.SelectLanguage, 'OptionsGameSelectSlideLanguage'); - ThemeLoadSelect(OptionsGame.SelectTabs, 'OptionsGameSelectTabs'); - ThemeLoadSelectSlide(OptionsGame.SelectSorting, 'OptionsGameSelectSlideSorting'); - ThemeLoadSelect(OptionsGame.SelectDebug, 'OptionsGameSelectDebug'); - ThemeLoadButton(OptionsGame.ButtonExit, 'OptionsGameButtonExit'); - - // Options Graphics - ThemeLoadBasic(OptionsGraphics, 'OptionsGraphics'); - - ThemeLoadSelect(OptionsGraphics.SelectFullscreen, 'OptionsGraphicsSelectFullscreen'); - ThemeLoadSelectSlide(OptionsGraphics.SelectSlideResolution, 'OptionsGraphicsSelectSlideResolution'); - ThemeLoadSelect(OptionsGraphics.SelectDepth, 'OptionsGraphicsSelectDepth'); - ThemeLoadSelect(OptionsGraphics.SelectOscilloscope, 'OptionsGraphicsSelectOscilloscope'); - ThemeLoadSelect(OptionsGraphics.SelectLineBonus, 'OptionsGraphicsSelectLineBonus'); - ThemeLoadSelect(OptionsGraphics.SelectMovieSize, 'OptionsGraphicsSelectMovieSize'); - ThemeLoadButton(OptionsGraphics.ButtonExit, 'OptionsGraphicsButtonExit'); - - // Options Sound - ThemeLoadBasic(OptionsSound, 'OptionsSound'); - - ThemeLoadSelect(OptionsSound.SelectMicBoost, 'OptionsSoundSelectMicBoost'); - ThemeLoadSelect(OptionsSound.SelectClickAssist, 'OptionsSoundSelectClickAssist'); - ThemeLoadSelect(OptionsSound.SelectBeatClick, 'OptionsSoundSelectBeatClick'); - ThemeLoadSelect(OptionsSound.SelectThreshold, 'OptionsSoundSelectThreshold'); - //ThemeLoadSelect(OptionsSound.SelectTwoPlayerMode, 'OptionsSoundSelectTwoPlayerMode'); - ThemeLoadButton(OptionsSound.ButtonExit, 'OptionsSoundButtonExit'); - - // Options Lyrics - ThemeLoadBasic(OptionsLyrics, 'OptionsLyrics'); - - ThemeLoadSelect(OptionsLyrics.SelectLyricsFont, 'OptionsLyricsSelectLyricsFont'); - ThemeLoadSelect(OptionsLyrics.SelectLyricsEffect, 'OptionsLyricsSelectLyricsEffect'); - ThemeLoadSelect(OptionsLyrics.SelectSolmization, 'OptionsLyricsSelectSolmization'); - ThemeLoadButton(OptionsLyrics.ButtonExit, 'OptionsLyricsButtonExit'); - - // Options Themes - ThemeLoadBasic(OptionsThemes, 'OptionsThemes'); + // Options + ThemeLoadBasic(Options, 'Options'); + + ThemeLoadButton(Options.ButtonGame, 'OptionsButtonGame'); + ThemeLoadButton(Options.ButtonGraphics, 'OptionsButtonGraphics'); + ThemeLoadButton(Options.ButtonSound, 'OptionsButtonSound'); + ThemeLoadButton(Options.ButtonLyrics, 'OptionsButtonLyrics'); + ThemeLoadButton(Options.ButtonThemes, 'OptionsButtonThemes'); + ThemeLoadButton(Options.ButtonRecord, 'OptionsButtonRecord'); + ThemeLoadButton(Options.ButtonAdvanced, 'OptionsButtonAdvanced'); + ThemeLoadButton(Options.ButtonExit, 'OptionsButtonExit'); + + {{$IFDEF TRANSLATE} + Options.Description[0] := Language.Translate('SING_OPTIONS_GAME'); + Options.Description[1] := Language.Translate('SING_OPTIONS_GRAPHICS'); + Options.Description[2] := Language.Translate('SING_OPTIONS_SOUND'); + Options.Description[3] := Language.Translate('SING_OPTIONS_LYRICS'); + Options.Description[4] := Language.Translate('SING_OPTIONS_THEMES'); + Options.Description[5] := Language.Translate('SING_OPTIONS_RECORD'); + Options.Description[6] := Language.Translate('SING_OPTIONS_ADVANCED'); + Options.Description[7] := Language.Translate('SING_OPTIONS_EXIT'); + {{$ENDIF} + + ThemeLoadText(Options.TextDescription, 'OptionsTextDescription'); + Options.TextDescription.Text := Options.Description[0]; + + // Options Game + ThemeLoadBasic(OptionsGame, 'OptionsGame'); + + ThemeLoadSelect(OptionsGame.SelectPlayers, 'OptionsGameSelectPlayers'); + ThemeLoadSelect(OptionsGame.SelectDifficulty, 'OptionsGameSelectDifficulty'); + ThemeLoadSelectSlide(OptionsGame.SelectLanguage, 'OptionsGameSelectSlideLanguage'); + ThemeLoadSelect(OptionsGame.SelectTabs, 'OptionsGameSelectTabs'); + ThemeLoadSelectSlide(OptionsGame.SelectSorting, 'OptionsGameSelectSlideSorting'); + ThemeLoadSelect(OptionsGame.SelectDebug, 'OptionsGameSelectDebug'); + ThemeLoadButton(OptionsGame.ButtonExit, 'OptionsGameButtonExit'); + + // Options Graphics + ThemeLoadBasic(OptionsGraphics, 'OptionsGraphics'); + + ThemeLoadSelect(OptionsGraphics.SelectFullscreen, 'OptionsGraphicsSelectFullscreen'); + ThemeLoadSelectSlide(OptionsGraphics.SelectSlideResolution, 'OptionsGraphicsSelectSlideResolution'); + ThemeLoadSelect(OptionsGraphics.SelectDepth, 'OptionsGraphicsSelectDepth'); + ThemeLoadSelect(OptionsGraphics.SelectOscilloscope, 'OptionsGraphicsSelectOscilloscope'); + ThemeLoadSelect(OptionsGraphics.SelectLineBonus, 'OptionsGraphicsSelectLineBonus'); + ThemeLoadSelect(OptionsGraphics.SelectMovieSize, 'OptionsGraphicsSelectMovieSize'); + ThemeLoadButton(OptionsGraphics.ButtonExit, 'OptionsGraphicsButtonExit'); + + // Options Sound + ThemeLoadBasic(OptionsSound, 'OptionsSound'); + + ThemeLoadSelect(OptionsSound.SelectMicBoost, 'OptionsSoundSelectMicBoost'); + ThemeLoadSelect(OptionsSound.SelectClickAssist, 'OptionsSoundSelectClickAssist'); + ThemeLoadSelect(OptionsSound.SelectBeatClick, 'OptionsSoundSelectBeatClick'); + ThemeLoadSelect(OptionsSound.SelectThreshold, 'OptionsSoundSelectThreshold'); + //ThemeLoadSelect(OptionsSound.SelectTwoPlayerMode, 'OptionsSoundSelectTwoPlayerMode'); + ThemeLoadButton(OptionsSound.ButtonExit, 'OptionsSoundButtonExit'); + + // Options Lyrics + ThemeLoadBasic(OptionsLyrics, 'OptionsLyrics'); + + ThemeLoadSelect(OptionsLyrics.SelectLyricsFont, 'OptionsLyricsSelectLyricsFont'); + ThemeLoadSelect(OptionsLyrics.SelectLyricsEffect, 'OptionsLyricsSelectLyricsEffect'); + ThemeLoadSelect(OptionsLyrics.SelectSolmization, 'OptionsLyricsSelectSolmization'); + ThemeLoadButton(OptionsLyrics.ButtonExit, 'OptionsLyricsButtonExit'); + + // Options Themes + ThemeLoadBasic(OptionsThemes, 'OptionsThemes'); ThemeLoadSelectSlide(OptionsThemes.SelectTheme, 'OptionsThemesSelectTheme'); ThemeLoadSelectSlide(OptionsThemes.SelectSkin, 'OptionsThemesSelectSkin'); @@ -1020,147 +1035,158 @@ begin ThemeLoadSelectSlide(OptionsRecord.SelectSlideChannelR, 'OptionsRecordSelectSlideChannelR'); ThemeLoadButton(OptionsRecord.ButtonExit, 'OptionsRecordButtonExit'); - //Song Menu - ThemeLoadBasic (SongMenu, 'SongMenu'); - ThemeLoadButton(SongMenu.Button1, 'SongMenuButton1'); - ThemeLoadButton(SongMenu.Button2, 'SongMenuButton2'); - ThemeLoadButton(SongMenu.Button3, 'SongMenuButton3'); - ThemeLoadButton(SongMenu.Button4, 'SongMenuButton4'); - ThemeLoadSelectSlide(SongMenu.SelectSlide3, 'SongMenuSelectSlide3'); - - ThemeLoadText(SongMenu.TextMenu, 'SongMenuTextMenu'); - - //Song Jumpto - ThemeLoadBasic (SongJumpto, 'SongJumpto'); - ThemeLoadButton(SongJumpto.ButtonSearchText, 'SongJumptoButtonSearchText'); - ThemeLoadSelectSlide(SongJumpto.SelectSlideType, 'SongJumptoSelectSlideType'); - ThemeLoadText(SongJumpto.TextFound, 'SongJumptoTextFound'); - //Translations - SongJumpto.IType[0] := Language.Translate('SONG_JUMPTO_TYPE1'); - SongJumpto.IType[1] := Language.Translate('SONG_JUMPTO_TYPE2'); - SongJumpto.IType[2] := Language.Translate('SONG_JUMPTO_TYPE3'); - SongJumpto.SongsFound := Language.Translate('SONG_JUMPTO_SONGSFOUND'); - SongJumpto.NoSongsFound := Language.Translate('SONG_JUMPTO_NOSONGSFOUND'); - SongJumpto.CatText := Language.Translate('SONG_JUMPTO_CATTEXT'); + //Options Advanced + ThemeLoadBasic(OptionsAdvanced, 'OptionsAdvanced'); + + ThemeLoadSelect (OptionsAdvanced.SelectLoadAnimation, 'OptionsAdvancedSelectLoadAnimation'); + ThemeLoadSelect (OptionsAdvanced.SelectEffectPerfect, 'OptionsAdvancedSelectEffectPerfect'); + ThemeLoadSelect (OptionsAdvanced.SelectEffectGolden, 'OptionsAdvancedSelectEffectGolden'); + ThemeLoadSelect (OptionsAdvanced.SelectLineBonus, 'OptionsAdvancedSelectLineBonus'); + ThemeLoadSelectSlide (OptionsAdvanced.SelectOnSongClick, 'OptionsAdvancedSelectSlideOnSongClick'); + ThemeLoadSelect (OptionsAdvanced.SelectAskbeforeDel, 'OptionsAdvancedSelectAskbeforeDel'); + ThemeLoadButton (OptionsAdvanced.ButtonExit, 'OptionsAdvancedButtonExit'); + + //Song Menu + ThemeLoadBasic (SongMenu, 'SongMenu'); + ThemeLoadButton(SongMenu.Button1, 'SongMenuButton1'); + ThemeLoadButton(SongMenu.Button2, 'SongMenuButton2'); + ThemeLoadButton(SongMenu.Button3, 'SongMenuButton3'); + ThemeLoadButton(SongMenu.Button4, 'SongMenuButton4'); + ThemeLoadSelectSlide(SongMenu.SelectSlide3, 'SongMenuSelectSlide3'); + + ThemeLoadText(SongMenu.TextMenu, 'SongMenuTextMenu'); + + //Song Jumpto + ThemeLoadBasic (SongJumpto, 'SongJumpto'); + ThemeLoadButton(SongJumpto.ButtonSearchText, 'SongJumptoButtonSearchText'); + ThemeLoadSelectSlide(SongJumpto.SelectSlideType, 'SongJumptoSelectSlideType'); + ThemeLoadText(SongJumpto.TextFound, 'SongJumptoTextFound'); + //Translations + SongJumpto.IType[0] := Language.Translate('SONG_JUMPTO_TYPE1'); + SongJumpto.IType[1] := Language.Translate('SONG_JUMPTO_TYPE2'); + SongJumpto.IType[2] := Language.Translate('SONG_JUMPTO_TYPE3'); + SongJumpto.SongsFound := Language.Translate('SONG_JUMPTO_SONGSFOUND'); + SongJumpto.NoSongsFound := Language.Translate('SONG_JUMPTO_NOSONGSFOUND'); + SongJumpto.CatText := Language.Translate('SONG_JUMPTO_CATTEXT'); + + //Party Screens: + //Party NewRound + ThemeLoadBasic(PartyNewRound, 'PartyNewRound'); + + ThemeLoadText (PartyNewRound.TextRound1, 'PartyNewRoundTextRound1'); + ThemeLoadText (PartyNewRound.TextRound2, 'PartyNewRoundTextRound2'); + ThemeLoadText (PartyNewRound.TextRound3, 'PartyNewRoundTextRound3'); + ThemeLoadText (PartyNewRound.TextRound4, 'PartyNewRoundTextRound4'); + ThemeLoadText (PartyNewRound.TextRound5, 'PartyNewRoundTextRound5'); + ThemeLoadText (PartyNewRound.TextRound6, 'PartyNewRoundTextRound6'); + ThemeLoadText (PartyNewRound.TextRound7, 'PartyNewRoundTextRound7'); + ThemeLoadText (PartyNewRound.TextWinner1, 'PartyNewRoundTextWinner1'); + ThemeLoadText (PartyNewRound.TextWinner2, 'PartyNewRoundTextWinner2'); + ThemeLoadText (PartyNewRound.TextWinner3, 'PartyNewRoundTextWinner3'); + ThemeLoadText (PartyNewRound.TextWinner4, 'PartyNewRoundTextWinner4'); + ThemeLoadText (PartyNewRound.TextWinner5, 'PartyNewRoundTextWinner5'); + ThemeLoadText (PartyNewRound.TextWinner6, 'PartyNewRoundTextWinner6'); + ThemeLoadText (PartyNewRound.TextWinner7, 'PartyNewRoundTextWinner7'); + ThemeLoadText (PartyNewRound.TextNextRound, 'PartyNewRoundTextNextRound'); + ThemeLoadText (PartyNewRound.TextNextRoundNo, 'PartyNewRoundTextNextRoundNo'); + ThemeLoadText (PartyNewRound.TextNextPlayer1, 'PartyNewRoundTextNextPlayer1'); + ThemeLoadText (PartyNewRound.TextNextPlayer2, 'PartyNewRoundTextNextPlayer2'); + ThemeLoadText (PartyNewRound.TextNextPlayer3, 'PartyNewRoundTextNextPlayer3'); + + ThemeLoadStatic (PartyNewRound.StaticRound1, 'PartyNewRoundStaticRound1'); + ThemeLoadStatic (PartyNewRound.StaticRound2, 'PartyNewRoundStaticRound2'); + ThemeLoadStatic (PartyNewRound.StaticRound3, 'PartyNewRoundStaticRound3'); + ThemeLoadStatic (PartyNewRound.StaticRound4, 'PartyNewRoundStaticRound4'); + ThemeLoadStatic (PartyNewRound.StaticRound5, 'PartyNewRoundStaticRound5'); + ThemeLoadStatic (PartyNewRound.StaticRound6, 'PartyNewRoundStaticRound6'); + ThemeLoadStatic (PartyNewRound.StaticRound7, 'PartyNewRoundStaticRound7'); + + ThemeLoadText (PartyNewRound.TextScoreTeam1, 'PartyNewRoundTextScoreTeam1'); + ThemeLoadText (PartyNewRound.TextScoreTeam2, 'PartyNewRoundTextScoreTeam2'); + ThemeLoadText (PartyNewRound.TextScoreTeam3, 'PartyNewRoundTextScoreTeam3'); + ThemeLoadText (PartyNewRound.TextNameTeam1, 'PartyNewRoundTextNameTeam1'); + ThemeLoadText (PartyNewRound.TextNameTeam2, 'PartyNewRoundTextNameTeam2'); + ThemeLoadText (PartyNewRound.TextNameTeam3, 'PartyNewRoundTextNameTeam3'); + + ThemeLoadStatic (PartyNewRound.StaticTeam1, 'PartyNewRoundStaticTeam1'); + ThemeLoadStatic (PartyNewRound.StaticTeam2, 'PartyNewRoundStaticTeam2'); + ThemeLoadStatic (PartyNewRound.StaticTeam3, 'PartyNewRoundStaticTeam3'); + + ThemeLoadButton (PartyNewRound.ButtonNext, 'PartyNewRoundButtonNext'); + + //Party Score + ThemeLoadBasic(PartyScore, 'PartyScore'); + + ThemeLoadText (PartyScore.TextScoreTeam1, 'PartyScoreTextScoreTeam1'); + ThemeLoadText (PartyScore.TextScoreTeam2, 'PartyScoreTextScoreTeam2'); + ThemeLoadText (PartyScore.TextScoreTeam3, 'PartyScoreTextScoreTeam3'); + ThemeLoadText (PartyScore.TextNameTeam1, 'PartyScoreTextNameTeam1'); + ThemeLoadText (PartyScore.TextNameTeam2, 'PartyScoreTextNameTeam2'); + ThemeLoadText (PartyScore.TextNameTeam3, 'PartyScoreTextNameTeam3'); + + ThemeLoadStatic (PartyScore.StaticTeam1, 'PartyScoreStaticTeam1'); + ThemeLoadStatic (PartyScore.StaticTeam2, 'PartyScoreStaticTeam2'); + ThemeLoadStatic (PartyScore.StaticTeam3, 'PartyScoreStaticTeam3'); + + ThemeLoadText (PartyScore.TextWinner, 'PartyScoreTextWinner'); + + //Party Win + ThemeLoadBasic(PartyWin, 'PartyWin'); + + ThemeLoadText (PartyWin.TextScoreTeam1, 'PartyWinTextScoreTeam1'); + ThemeLoadText (PartyWin.TextScoreTeam2, 'PartyWinTextScoreTeam2'); + ThemeLoadText (PartyWin.TextScoreTeam3, 'PartyWinTextScoreTeam3'); + ThemeLoadText (PartyWin.TextNameTeam1, 'PartyWinTextNameTeam1'); + ThemeLoadText (PartyWin.TextNameTeam2, 'PartyWinTextNameTeam2'); + ThemeLoadText (PartyWin.TextNameTeam3, 'PartyWinTextNameTeam3'); + + ThemeLoadStatic (PartyWin.StaticTeam1, 'PartyWinStaticTeam1'); + ThemeLoadStatic (PartyWin.StaticTeam2, 'PartyWinStaticTeam2'); + ThemeLoadStatic (PartyWin.StaticTeam3, 'PartyWinStaticTeam3'); + + ThemeLoadText (PartyWin.TextWinner, 'PartyWinTextWinner'); + + //Party Options + ThemeLoadBasic(PartyOptions, 'PartyOptions'); + ThemeLoadSelectSlide(PartyOptions.SelectLevel, 'PartyOptionsSelectLevel'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayList, 'PartyOptionsSelectPlayList'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayList2, 'PartyOptionsSelectPlayList2'); + ThemeLoadSelectSlide(PartyOptions.SelectRounds, 'PartyOptionsSelectRounds'); + ThemeLoadSelectSlide(PartyOptions.SelectTeams, 'PartyOptionsSelectTeams'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayers1, 'PartyOptionsSelectPlayers1'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayers2, 'PartyOptionsSelectPlayers2'); + ThemeLoadSelectSlide(PartyOptions.SelectPlayers3, 'PartyOptionsSelectPlayers3'); + + {ThemeLoadButton (ButtonNext, 'ButtonNext'); + ThemeLoadButton (ButtonPrev, 'ButtonPrev');} + + //Party Player + ThemeLoadBasic(PartyPlayer, 'PartyPlayer'); + ThemeLoadButton(PartyPlayer.Team1Name, 'PartyPlayerTeam1Name'); + ThemeLoadButton(PartyPlayer.Player1Name, 'PartyPlayerPlayer1Name'); + ThemeLoadButton(PartyPlayer.Player2Name, 'PartyPlayerPlayer2Name'); + ThemeLoadButton(PartyPlayer.Player3Name, 'PartyPlayerPlayer3Name'); + ThemeLoadButton(PartyPlayer.Player4Name, 'PartyPlayerPlayer4Name'); + + ThemeLoadButton(PartyPlayer.Team2Name, 'PartyPlayerTeam2Name'); + ThemeLoadButton(PartyPlayer.Player5Name, 'PartyPlayerPlayer5Name'); + ThemeLoadButton(PartyPlayer.Player6Name, 'PartyPlayerPlayer6Name'); + ThemeLoadButton(PartyPlayer.Player7Name, 'PartyPlayerPlayer7Name'); + ThemeLoadButton(PartyPlayer.Player8Name, 'PartyPlayerPlayer8Name'); + + ThemeLoadButton(PartyPlayer.Team3Name, 'PartyPlayerTeam3Name'); + ThemeLoadButton(PartyPlayer.Player9Name, 'PartyPlayerPlayer9Name'); + ThemeLoadButton(PartyPlayer.Player10Name, 'PartyPlayerPlayer10Name'); + ThemeLoadButton(PartyPlayer.Player11Name, 'PartyPlayerPlayer11Name'); + ThemeLoadButton(PartyPlayer.Player12Name, 'PartyPlayerPlayer12Name'); + + {ThemeLoadButton(ButtonNext, 'PartyPlayerButtonNext'); + ThemeLoadButton(ButtonPrev, 'PartyPlayerButtonPrev');} + + //Playlist Translations + Playlist.CatText := Language.Translate('PLAYLIST_CATTEXT') + end; - //Party Screens: - //Party NewRound - ThemeLoadBasic(PartyNewRound, 'PartyNewRound'); - - ThemeLoadText (PartyNewRound.TextRound1, 'PartyNewRoundTextRound1'); - ThemeLoadText (PartyNewRound.TextRound2, 'PartyNewRoundTextRound2'); - ThemeLoadText (PartyNewRound.TextRound3, 'PartyNewRoundTextRound3'); - ThemeLoadText (PartyNewRound.TextRound4, 'PartyNewRoundTextRound4'); - ThemeLoadText (PartyNewRound.TextRound5, 'PartyNewRoundTextRound5'); - ThemeLoadText (PartyNewRound.TextRound6, 'PartyNewRoundTextRound6'); - ThemeLoadText (PartyNewRound.TextRound7, 'PartyNewRoundTextRound7'); - ThemeLoadText (PartyNewRound.TextWinner1, 'PartyNewRoundTextWinner1'); - ThemeLoadText (PartyNewRound.TextWinner2, 'PartyNewRoundTextWinner2'); - ThemeLoadText (PartyNewRound.TextWinner3, 'PartyNewRoundTextWinner3'); - ThemeLoadText (PartyNewRound.TextWinner4, 'PartyNewRoundTextWinner4'); - ThemeLoadText (PartyNewRound.TextWinner5, 'PartyNewRoundTextWinner5'); - ThemeLoadText (PartyNewRound.TextWinner6, 'PartyNewRoundTextWinner6'); - ThemeLoadText (PartyNewRound.TextWinner7, 'PartyNewRoundTextWinner7'); - ThemeLoadText (PartyNewRound.TextNextRound, 'PartyNewRoundTextNextRound'); - ThemeLoadText (PartyNewRound.TextNextRoundNo, 'PartyNewRoundTextNextRoundNo'); - ThemeLoadText (PartyNewRound.TextNextPlayer1, 'PartyNewRoundTextNextPlayer1'); - ThemeLoadText (PartyNewRound.TextNextPlayer2, 'PartyNewRoundTextNextPlayer2'); - ThemeLoadText (PartyNewRound.TextNextPlayer3, 'PartyNewRoundTextNextPlayer3'); - - ThemeLoadStatic (PartyNewRound.StaticRound1, 'PartyNewRoundStaticRound1'); - ThemeLoadStatic (PartyNewRound.StaticRound2, 'PartyNewRoundStaticRound2'); - ThemeLoadStatic (PartyNewRound.StaticRound3, 'PartyNewRoundStaticRound3'); - ThemeLoadStatic (PartyNewRound.StaticRound4, 'PartyNewRoundStaticRound4'); - ThemeLoadStatic (PartyNewRound.StaticRound5, 'PartyNewRoundStaticRound5'); - ThemeLoadStatic (PartyNewRound.StaticRound6, 'PartyNewRoundStaticRound6'); - ThemeLoadStatic (PartyNewRound.StaticRound7, 'PartyNewRoundStaticRound7'); - - ThemeLoadText (PartyNewRound.TextScoreTeam1, 'PartyNewRoundTextScoreTeam1'); - ThemeLoadText (PartyNewRound.TextScoreTeam2, 'PartyNewRoundTextScoreTeam2'); - ThemeLoadText (PartyNewRound.TextScoreTeam3, 'PartyNewRoundTextScoreTeam3'); - ThemeLoadText (PartyNewRound.TextNameTeam1, 'PartyNewRoundTextNameTeam1'); - ThemeLoadText (PartyNewRound.TextNameTeam2, 'PartyNewRoundTextNameTeam2'); - ThemeLoadText (PartyNewRound.TextNameTeam3, 'PartyNewRoundTextNameTeam3'); - - ThemeLoadStatic (PartyNewRound.StaticTeam1, 'PartyNewRoundStaticTeam1'); - ThemeLoadStatic (PartyNewRound.StaticTeam2, 'PartyNewRoundStaticTeam2'); - ThemeLoadStatic (PartyNewRound.StaticTeam3, 'PartyNewRoundStaticTeam3'); - - ThemeLoadButton (PartyNewRound.ButtonNext, 'PartyNewRoundButtonNext'); - - //Party Score - ThemeLoadBasic(PartyScore, 'PartyScore'); - - ThemeLoadText (PartyScore.TextScoreTeam1, 'PartyScoreTextScoreTeam1'); - ThemeLoadText (PartyScore.TextScoreTeam2, 'PartyScoreTextScoreTeam2'); - ThemeLoadText (PartyScore.TextScoreTeam3, 'PartyScoreTextScoreTeam3'); - ThemeLoadText (PartyScore.TextNameTeam1, 'PartyScoreTextNameTeam1'); - ThemeLoadText (PartyScore.TextNameTeam2, 'PartyScoreTextNameTeam2'); - ThemeLoadText (PartyScore.TextNameTeam3, 'PartyScoreTextNameTeam3'); - - ThemeLoadStatic (PartyScore.StaticTeam1, 'PartyScoreStaticTeam1'); - ThemeLoadStatic (PartyScore.StaticTeam2, 'PartyScoreStaticTeam2'); - ThemeLoadStatic (PartyScore.StaticTeam3, 'PartyScoreStaticTeam3'); - - ThemeLoadText (PartyScore.TextWinner, 'PartyScoreTextWinner'); - - //Party Win - ThemeLoadBasic(PartyWin, 'PartyWin'); - - ThemeLoadText (PartyWin.TextScoreTeam1, 'PartyWinTextScoreTeam1'); - ThemeLoadText (PartyWin.TextScoreTeam2, 'PartyWinTextScoreTeam2'); - ThemeLoadText (PartyWin.TextScoreTeam3, 'PartyWinTextScoreTeam3'); - ThemeLoadText (PartyWin.TextNameTeam1, 'PartyWinTextNameTeam1'); - ThemeLoadText (PartyWin.TextNameTeam2, 'PartyWinTextNameTeam2'); - ThemeLoadText (PartyWin.TextNameTeam3, 'PartyWinTextNameTeam3'); - - ThemeLoadStatic (PartyWin.StaticTeam1, 'PartyWinStaticTeam1'); - ThemeLoadStatic (PartyWin.StaticTeam2, 'PartyWinStaticTeam2'); - ThemeLoadStatic (PartyWin.StaticTeam3, 'PartyWinStaticTeam3'); - - ThemeLoadText (PartyWin.TextWinner, 'PartyWinTextWinner'); - - //Party Options - ThemeLoadBasic(PartyOptions, 'PartyOptions'); - ThemeLoadSelectSlide(PartyOptions.SelectLevel, 'PartyOptionsSelectLevel'); - ThemeLoadSelectSlide(PartyOptions.SelectPlayList, 'PartyOptionsSelectPlayList'); - ThemeLoadSelectSlide(PartyOptions.SelectPlayList2, 'PartyOptionsSelectPlayList2'); - ThemeLoadSelectSlide(PartyOptions.SelectRounds, 'PartyOptionsSelectRounds'); - ThemeLoadSelectSlide(PartyOptions.SelectTeams, 'PartyOptionsSelectTeams'); - ThemeLoadSelectSlide(PartyOptions.SelectPlayers1, 'PartyOptionsSelectPlayers1'); - ThemeLoadSelectSlide(PartyOptions.SelectPlayers2, 'PartyOptionsSelectPlayers2'); - ThemeLoadSelectSlide(PartyOptions.SelectPlayers3, 'PartyOptionsSelectPlayers3'); - - {ThemeLoadButton (ButtonNext, 'ButtonNext'); - ThemeLoadButton (ButtonPrev, 'ButtonPrev');} - - //Party Player - ThemeLoadBasic(PartyPlayer, 'PartyPlayer'); - ThemeLoadButton(PartyPlayer.Team1Name, 'PartyPlayerTeam1Name'); - ThemeLoadButton(PartyPlayer.Player1Name, 'PartyPlayerPlayer1Name'); - ThemeLoadButton(PartyPlayer.Player2Name, 'PartyPlayerPlayer2Name'); - ThemeLoadButton(PartyPlayer.Player3Name, 'PartyPlayerPlayer3Name'); - ThemeLoadButton(PartyPlayer.Player4Name, 'PartyPlayerPlayer4Name'); - - ThemeLoadButton(PartyPlayer.Team2Name, 'PartyPlayerTeam2Name'); - ThemeLoadButton(PartyPlayer.Player5Name, 'PartyPlayerPlayer5Name'); - ThemeLoadButton(PartyPlayer.Player6Name, 'PartyPlayerPlayer6Name'); - ThemeLoadButton(PartyPlayer.Player7Name, 'PartyPlayerPlayer7Name'); - ThemeLoadButton(PartyPlayer.Player8Name, 'PartyPlayerPlayer8Name'); - - ThemeLoadButton(PartyPlayer.Team3Name, 'PartyPlayerTeam3Name'); - ThemeLoadButton(PartyPlayer.Player9Name, 'PartyPlayerPlayer9Name'); - ThemeLoadButton(PartyPlayer.Player10Name, 'PartyPlayerPlayer10Name'); - ThemeLoadButton(PartyPlayer.Player11Name, 'PartyPlayerPlayer11Name'); - ThemeLoadButton(PartyPlayer.Player12Name, 'PartyPlayerPlayer12Name'); - - {ThemeLoadButton(ButtonNext, 'PartyPlayerButtonNext'); - ThemeLoadButton(ButtonPrev, 'PartyPlayerButtonPrev');} - - //Playlist Translations - Playlist.CatText := Language.Translate('PLAYLIST_CATTEXT') - end; - ThemeIni.Free; end; end; diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 52cd0b26..6094edd1 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -1096,6 +1096,8 @@ begin MidiOut.ProductName := 'Microsoft GS Wavetable SW Synth'; // for my kxproject without midi table MidiOut.Open; + //MidiOut.SetVolume(65535, 65535); + CzyscNuty; @@ -1113,7 +1115,7 @@ begin Music.Open(Path + AktSong.Mp3); //Set Down Music Volume for Better hearability of Midi Sounds - Music.SetVolume(40); + //Music.SetVolume(40); Lyric.Clear; Lyric.X := 400; diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index f24b29c1..2a8d0d9a 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -70,6 +70,11 @@ begin end; if SelInteraction = 6 then begin + Music.PlayStart; + FadeTo(@ScreenOptionsAdvanced); + end; + + if SelInteraction = 7 then begin Ini.Save; Music.PlayBack; FadeTo(@ScreenMain); @@ -182,10 +187,14 @@ begin if (Length(Button[5].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[5]); - AddButton(Theme.Options.ButtonExit); + AddButton(Theme.Options.ButtonAdvanced); if (Length(Button[6].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[6]); + AddButton(Theme.Options.ButtonExit); + if (Length(Button[7].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[7]); + for I := 0 to High(Theme.Options.Static) do AddStatic(Theme.Options.Static[I]); diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas new file mode 100644 index 00000000..bfbd54a7 --- /dev/null +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -0,0 +1,95 @@ +unit UScreenOptionsAdvanced; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + +type + TScreenOptionsAdvanced = class(TMenu) + public + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + end; + +implementation + +uses UGraphic; + +function TScreenOptionsAdvanced.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + SDLK_RETURN: + begin + if SelInteraction = 6 then begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenOptions); + end; + end; + SDLK_DOWN: + InteractNext; + SDLK_UP : + InteractPrev; + SDLK_RIGHT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + Music.PlayOption; + InteractInc; + end; + end; + SDLK_LEFT: + begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + Music.PlayOption; + InteractDec; + end; + end; + end; + end; +end; + +constructor TScreenOptionsAdvanced.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.OptionsAdvanced.Background.Tex); + + for I := 0 to High(Theme.OptionsAdvanced.Static) do + AddStatic(Theme.OptionsAdvanced.Static[I]); + + for I := 0 to High(Theme.OptionsAdvanced.Text) do + AddText(Theme.OptionsAdvanced.Text[I]); + + AddSelect(Theme.OptionsAdvanced.SelectLoadAnimation, Ini.LoadAnimation, ILoadAnimation); + AddSelect(Theme.OptionsAdvanced.SelectEffectPerfect, Ini.EffectPerfect, IEffectPerfect); + AddSelect(Theme.OptionsAdvanced.SelectEffectGolden, Ini.EffectGolden, IEffectGolden); + AddSelect(Theme.OptionsAdvanced.SelectLineBonus, Ini.LineBonus, ILineBonus); + AddSelectSlide(Theme.OptionsAdvanced.SelectOnSongClick, Ini.OnSongClick, IOnSongClick); + AddSelect(Theme.OptionsAdvanced.SelectAskbeforeDel, Ini.AskbeforeDel, IAskbeforeDel); + + AddButton(Theme.OptionsAdvanced.ButtonExit); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[6]); + + Interaction := 0; +end; + +procedure TScreenOptionsAdvanced.onShow; +begin + Interaction := 0; +end; + +end. diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index 62648e0c..d39a10c8 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -84,7 +84,6 @@ begin AddSelect(Theme.OptionsGraphics.SelectFullscreen, Ini.Fullscreen, IFullscreen); AddSelect(Theme.OptionsGraphics.SelectDepth, Ini.Depth, IDepth); AddSelect(Theme.OptionsGraphics.SelectOscilloscope, Ini.Oscilloscope, IOscilloscope); - AddSelect(Theme.OptionsGraphics.SelectLineBonus, Ini.LineBonus, ILineBonus); AddSelect(Theme.OptionsGraphics.SelectMovieSize, Ini.MovieSize, IMovieSize); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index ee4bedc8..d684dc3c 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1089,18 +1089,12 @@ begin //Generate Steps 0 to 8 A := Floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 8); + + //Generate Text if A >= 8 then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_PERFECT') - else if (A = 6) or (A = 7) then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BETTER') - else if A = 5 then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_GOOD') - else if (A = 3) or (A = 4) then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_NORMAL') - else if A = 2 then - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_BAD') + Player[I].LineBonus_Text := Theme.Sing.LineBonusText[8] else - Player[I].LineBonus_Text := Language.Translate('LINEBONUS_WORST'); + Player[I].LineBonus_Text := Theme.Sing.LineBonusText[Floor(A)]; //PhrasenBonus give Points Player[I].ScoreLine := Player[I].ScoreLine + (1000 / (Length(Czesci[0].Czesc) - NumEmptySentences) * A / 8); diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 0b4a9d91..3ccba228 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -250,7 +250,7 @@ begin Button[3].Visible := False; SelectsS[0].Visible := False; Button[2].Visible := True; - Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); end; end; @@ -311,7 +311,7 @@ begin Button[3].Visible := False; SelectsS[0].Visible := False; Button[2].Visible := True; - Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); + Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_NOEXISTING'); Interaction := 2; end; end; diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 66638832..f36f9a26 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -6,6 +6,9 @@ program UltraStar; {$R 'UltraStar.res' 'UltraStar.rc'} uses + //------------------------------ + //Includes - Menu System + //------------------------------ UDisplay in 'Menu\UDisplay.pas', UMenu in 'Menu\UMenu.pas', UMenuStatic in 'Menu\UMenuStatic.pas', @@ -15,6 +18,10 @@ uses UMenuSelect in 'Menu\UMenuSelect.pas', UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', UDrawTexture in 'Menu\UDrawTexture.pas', + + //------------------------------ + //Includes - Classes + //------------------------------ UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', @@ -42,6 +49,11 @@ uses UGraphicClasses in 'Classes\UGraphicClasses.pas', UDLLManager in 'Classes\UDLLManager.pas', UParty in 'Classes\UParty.pas', + UPlaylist in 'Classes\UPlaylist.pas', + + //------------------------------ + //Includes - Screens + //------------------------------ UScreenLoading in 'Screens\UScreenLoading.pas', UScreenWelcome in 'Screens\UScreenWelcome.pas', UScreenMain in 'Screens\UScreenMain.pas', @@ -57,6 +69,7 @@ uses UScreenOptionsLyrics in 'Screens\UScreenOptionsLyrics.pas', UScreenOptionsThemes in 'Screens\UScreenOptionsThemes.pas', UScreenOptionsRecord in 'Screens\UScreenOptionsRecord.pas', + UScreenOptionsAdvanced in 'Screens\UScreenOptionsAdvanced.pas', UScreenEditSub in 'Screens\UScreenEditSub.pas', UScreenEdit in 'Screens\UScreenEdit.pas', UScreenEditConvert in 'Screens\UScreenEditConvert.pas', @@ -65,17 +78,29 @@ uses UScreenTop5 in 'Screens\UScreenTop5.pas', UScreenSongMenu in 'Screens\UScreenSongMenu.pas', UScreenSongJumpto in 'Screens\UScreenSongJumpto.pas', + + //------------------------------ + //Includes - Screens PartyMode + //------------------------------ UScreenSingModi in 'Screens\UScreenSingModi.pas', UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', UScreenPartyScore in 'Screens\UScreenPartyScore.pas', UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', UScreenPartyWin in 'Screens\UScreenPartyWin.pas', + + //------------------------------ + //Includes - Modi SDK + //------------------------------ ModiSDK in '..\..\Modis\SDK\ModiSDK.pas', + + //------------------------------ + //Includes - Delphi + //------------------------------ Windows, SDL, - SysUtils, - UPlaylist in 'Classes\UPlaylist.pas'; + SysUtils; + const Version = 'UltraStar Deluxe V 0.90 Beta'; -- cgit v1.2.3 From 91411ffa459eaae3d39b8c3cf8127bcdbe308f0c Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 5 Apr 2007 21:58:45 +0000 Subject: Theme/Skin: Clean up, started to add structure to textures, song menu fully skinned now (almost satisfied with result :P) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@66 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/SongMenuBG.jpg | Bin 1336 -> 5287 bytes Skins/Deluxe/W&C.ini | 10 +++++----- Skins/Deluxe/[icon]cd.jpg | Bin 0 -> 1175 bytes Skins/Deluxe/[icon]main.jpg | Bin 0 -> 1153 bytes Skins/Deluxe/[icon]search.jpg | Bin 0 -> 759 bytes Skins/Deluxe/[icon]songmenu.jpg | Bin 0 -> 1659 bytes Skins/Deluxe/cd.jpg | Bin 1175 -> 0 bytes Skins/Deluxe/mainicon.jpg | Bin 1153 -> 0 bytes Skins/Deluxe/mainsearch.jpg | Bin 759 -> 0 bytes Skins/Deluxe/rectangle.jpg | Bin 340 -> 604 bytes Themes/Deluxe.ini | 34 +++++++++++++++++----------------- 11 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 Skins/Deluxe/[icon]cd.jpg create mode 100644 Skins/Deluxe/[icon]main.jpg create mode 100644 Skins/Deluxe/[icon]search.jpg create mode 100644 Skins/Deluxe/[icon]songmenu.jpg delete mode 100644 Skins/Deluxe/cd.jpg delete mode 100644 Skins/Deluxe/mainicon.jpg delete mode 100644 Skins/Deluxe/mainsearch.jpg diff --git a/Skins/Deluxe/SongMenuBG.jpg b/Skins/Deluxe/SongMenuBG.jpg index 77a5d6f6..ef530ef5 100644 Binary files a/Skins/Deluxe/SongMenuBG.jpg and b/Skins/Deluxe/SongMenuBG.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index d03fe49e..d70d09cd 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -30,11 +30,11 @@ Top5BG=W&C.jpg OptionsBG=W&C.jpg PartyBG=W&C.jpg -SongCD=cd.jpg -MainIcon=mainicon.jpg -MainSearch=mainsearch.jpg -IconOption=[icon]options.jpg -IconSongMenu=[icon]options.jpg +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg Leiste1=Leiste1.jpg Leiste2=Leiste2.jpg diff --git a/Skins/Deluxe/[icon]cd.jpg b/Skins/Deluxe/[icon]cd.jpg new file mode 100644 index 00000000..d48dc4ff Binary files /dev/null and b/Skins/Deluxe/[icon]cd.jpg differ diff --git a/Skins/Deluxe/[icon]main.jpg b/Skins/Deluxe/[icon]main.jpg new file mode 100644 index 00000000..5941256a Binary files /dev/null and b/Skins/Deluxe/[icon]main.jpg differ diff --git a/Skins/Deluxe/[icon]search.jpg b/Skins/Deluxe/[icon]search.jpg new file mode 100644 index 00000000..b5870592 Binary files /dev/null and b/Skins/Deluxe/[icon]search.jpg differ diff --git a/Skins/Deluxe/[icon]songmenu.jpg b/Skins/Deluxe/[icon]songmenu.jpg new file mode 100644 index 00000000..35f4b440 Binary files /dev/null and b/Skins/Deluxe/[icon]songmenu.jpg differ diff --git a/Skins/Deluxe/cd.jpg b/Skins/Deluxe/cd.jpg deleted file mode 100644 index d48dc4ff..00000000 Binary files a/Skins/Deluxe/cd.jpg and /dev/null differ diff --git a/Skins/Deluxe/mainicon.jpg b/Skins/Deluxe/mainicon.jpg deleted file mode 100644 index 5941256a..00000000 Binary files a/Skins/Deluxe/mainicon.jpg and /dev/null differ diff --git a/Skins/Deluxe/mainsearch.jpg b/Skins/Deluxe/mainsearch.jpg deleted file mode 100644 index b5870592..00000000 Binary files a/Skins/Deluxe/mainsearch.jpg and /dev/null differ diff --git a/Skins/Deluxe/rectangle.jpg b/Skins/Deluxe/rectangle.jpg index d021061a..e03f98fc 100644 Binary files a/Skins/Deluxe/rectangle.jpg and b/Skins/Deluxe/rectangle.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 2f46c2e8..e9568cf9 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -2364,6 +2364,7 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Align=0 +Texts=1 [OptionsButtonAdvancedText1] X =75 @@ -4813,9 +4814,9 @@ Statics=1 [SongMenuButton1] X = 460 -Y = 170 -W = 180 -H = 30 +Y = 165 +W = 270 +H = 25 Tex =Rectangle Color =LightBlue DColor = DarkBlue @@ -4836,9 +4837,9 @@ Z=1 [SongMenuButton2] X = 460 -Y = 210 -W = 180 -H = 30 +Y = 195 +W = 270 +H = 25 Tex =Rectangle Color =LightBlue DColor = DarkBlue @@ -4859,9 +4860,9 @@ Z=1 [SongMenuButton3] X = 460 -Y = 250 -W = 180 -H = 30 +Y = 225 +W = 270 +H = 25 Tex =Rectangle Color =LightBlue DColor = DarkBlue @@ -4882,16 +4883,15 @@ Z=1 [SongMenuButton4] X = 460 -Y = 290 -W = 180 -H = 30 -Tex = Button +Y = 255 +W = 270 +H = 25 +Tex = Rectangle Color =LightBlue DColor = DarkBlue Type=Font Black Texts=1 Z = 0.99 -Texts=1 [SongMenuButton4Text1] X =30 @@ -4947,10 +4947,10 @@ Z=1 [SongMenuStatic1] Tex =SongMenuBG -X =450 +X =448 Y =120 -W =200 -H =210 +W =300 +H =200 Z =0.95 Int=1 Color =DarkBlue -- cgit v1.2.3 From 4f7bf28056fefdcd000499c583a47738ce7d9b07 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 6 Apr 2007 10:32:24 +0000 Subject: Fixed a Bug in Optionsscreen after adding OptionsAdvanced Screen Added Jump to Title HotKey (Alt + A..Z) Added Playlist Support to Party Mode, Category Only Mode is still buggy. Fixed: Team3 Players are now Hidden when only 2 Teams are Selected git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@67 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UPlaylist.pas | 6 +- Game/Code/Screens/UScreenOptionsAdvanced.pas | 2 +- Game/Code/Screens/UScreenOptionsGame.pas | 2 +- Game/Code/Screens/UScreenOptionsGraphics.pas | 2 +- Game/Code/Screens/UScreenOptionsLyrics.pas | 2 +- Game/Code/Screens/UScreenOptionsRecord.pas | 2 +- Game/Code/Screens/UScreenOptionsSound.pas | 2 +- Game/Code/Screens/UScreenOptionsThemes.pas | 2 +- Game/Code/Screens/UScreenPartyOptions.pas | 137 +++++++++++++++++++++++++-- Game/Code/Screens/UScreenSong.pas | 89 +++++++++++------ 10 files changed, 201 insertions(+), 45 deletions(-) diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas index 585f9271..a6207c4f 100644 --- a/Game/Code/Classes/UPlaylist.pas +++ b/Game/Code/Classes/UPlaylist.pas @@ -50,8 +50,8 @@ type {Modes: 0: Standard Mode - 1: PlayList Mode - 2: Category Mode} + 1: Category Mode + 2: PlayList Mode} var PlayListMan: TPlaylistManager; @@ -244,7 +244,7 @@ begin //Set CatSongsMode + Playlist Mode CatSongs.CatNumShow := -3; - Mode := 1; + Mode := 2; //Show Cat in Topleft: ScreenSong.ShowCatTLCustom(Format(Theme.Playlist.CatText,[Playlists[Index].Name])); diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index bfbd54a7..7904a284 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -82,7 +82,7 @@ begin AddButton(Theme.OptionsAdvanced.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index cc6e850b..63bbec36 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -89,7 +89,7 @@ begin AddButton(Theme.OptionsGame.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); end; diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index d39a10c8..4befb092 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -89,7 +89,7 @@ begin AddButton(Theme.OptionsGraphics.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); end; diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index 0ce5c970..35cb2415 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -80,7 +80,7 @@ begin AddButton(Theme.OptionsLyrics.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); end; diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index b4075ba8..e6989d43 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -105,7 +105,7 @@ begin AddButton(Theme.OptionsRecord.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index ad6db766..aea6cdbc 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -81,7 +81,7 @@ begin AddButton(Theme.OptionsSound.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index eb5ed33e..151913be 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -106,7 +106,7 @@ begin AddButton(Theme.OptionsThemes.ButtonExit); if (Length(Button[0].Text)=0) then - AddButtonText(14, 20, Theme.Options.Description[6]); + AddButtonText(14, 20, Theme.Options.Description[7]); end; procedure TScreenOptionsThemes.onShow; diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index 148289e8..042e944f 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -27,10 +27,13 @@ type function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; procedure SetAnimationProgress(Progress: real); override; + procedure SetPlaylist2; end; var ILevel: array[0..2] of String; + IPlaylist: array[0..2] of String; + IPlaylist2: array of String; const ITeams: array[0..1] of String =('2', '3'); IPlayers: array[0..3] of String =('1', '2', '3', '4'); @@ -38,10 +41,42 @@ const implementation -uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UDLLManager; +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UDLLManager, UPlaylist, USongs; function TScreenPartyOptions.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; -var I: Integer; + var + I, J: Integer; + + function IsVisible: Boolean; + begin + Result := True; + if (Interactions[Interaction].Typ = 0) then + begin + Result := Button[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 1) then + begin + //Result := Selects[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 3) then + begin + Result := SelectsS[Interactions[Interaction].Num].Visible; + end; + end; + + Procedure SelectNext; + begin + repeat + InteractNext; + until IsVisible; + end; + + Procedure SelectPrev; + begin + repeat + InteractPrev; + until IsVisible; + end; begin Result := true; If (PressedDown) Then @@ -71,6 +106,26 @@ begin PartySession.Teams.Teaminfo[0].NumPlayers := NumPlayer1+1; PartySession.Teams.Teaminfo[1].NumPlayers := NumPlayer2+1; PartySession.Teams.Teaminfo[2].NumPlayers := NumPlayer3+1; + //Save Playlist + PlaylistMan.Mode := Playlist; + //If Category Selected Search Category ID + if Playlist = 1 then + begin + J := -1; + For I := 0 to high(CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + Inc(J); + + if J = Playlist2 then + begin + PlaylistMan.CurPlayList := I; + Break; + end; + end; + end + else + PlaylistMan.CurPlayList := Playlist2; //Save Rounds + Random SetLength (PartySession.Rounds, Rounds + 2); For I := 0 to high (PartySession.Rounds) do @@ -86,17 +141,43 @@ begin // Up and Down could be done at the same time, // but I don't want to declare variables inside // functions like this one, called so many times - SDLK_DOWN: InteractNext; - SDLK_UP: InteractPrev; + SDLK_DOWN: SelectNext; + SDLK_UP: SelectPrev; SDLK_RIGHT: begin Music.PlayOption; InteractInc; + + //Change Playlist2 if Playlist is Changed + If (Interaction = 1) then + begin + SetPlaylist2; + end //Change Team3 Players visibility + Else If (Interaction = 4) then + begin + Case NumTeams of + 0: SelectsS[7].Visible := False; + 1: SelectsS[7].Visible := True; + end; + end; end; SDLK_LEFT: begin Music.PlayOption; InteractDec; + + //Change Playlist2 if Playlist is Changed + If (Interaction = 1) then + begin + SetPlaylist2; + end //Change Team3 Players visibility + Else If (Interaction = 4) then + begin + Case NumTeams of + 0: SelectsS[7].Visible := False; + 1: SelectsS[7].Visible := True; + end; + end; end; end; end @@ -119,6 +200,15 @@ begin ILevel[1] := Language.Translate('SING_MEDIUM'); ILevel[2] := Language.Translate('SING_HARD'); + //Fill IPlaylist + IPlaylist[0] := Language.Translate('PARTY_PLAYLIST_ALL'); + IPlaylist[1] := Language.Translate('PARTY_PLAYLIST_CATEGORY'); + IPlaylist[2] := Language.Translate('PARTY_PLAYLIST_PLAYLIST'); + + //Fill IPlaylist2 + SetLength(IPlaylist2, 1); + IPlaylist2[0] := '---'; + NumTeams := 0; NumPlayer1 := 0; NumPlayer2 := 0; @@ -130,8 +220,8 @@ begin AddBackground(Theme.PartyOptions.Background.Tex); SelectLevel := AddSelectSlide (Theme.PartyOptions.SelectLevel, Ini.Difficulty, ILevel); - SelectPlayList := AddSelectSlide (Theme.PartyOptions.SelectPlayList, PlayList, ITeams); - SelectPlayList2 := AddSelectSlide (Theme.PartyOptions.SelectPlayList2, PlayList2, ITeams); + SelectPlayList := AddSelectSlide (Theme.PartyOptions.SelectPlayList, PlayList, IPlaylist); + SelectPlayList2 := AddSelectSlide (Theme.PartyOptions.SelectPlayList2, PlayList2, IPlaylist2); SelectRounds := AddSelectSlide (Theme.PartyOptions.SelectRounds, Rounds, IRounds); SelectTeams := AddSelectSlide (Theme.PartyOptions.SelectTeams, NumTeams, ITeams); SelectPlayers1 := AddSelectSlide (Theme.PartyOptions.SelectPlayers1, NumPlayer1, IPlayers); @@ -145,6 +235,41 @@ begin AddText(Theme.PartyOptions.Text[I]); Interaction := 0; + + //Hide Team3 Players + SelectsS[7].Visible := False; +end; + +procedure TScreenPartyOptions.SetPlaylist2; +var I: Integer; +begin + Case Playlist of + 0: + begin + SetLength(IPlaylist2, 1); + IPlaylist2[0] := '---'; + end; + 1: + begin + SetLength(IPlaylist2, 0); + For I := 0 to high(CatSongs.Song) do + begin + If (CatSongs.Song[I].Main) then + begin + SetLength(IPlaylist2, Length(IPlaylist2) + 1); + IPlaylist2[high(IPlaylist2)] := CatSongs.Song[I].Artist; + end; + end; + end; + 2: + begin + SetLength(IPlaylist2, Length(PlaylistMan.Playlists)); + PlaylistMan.GetNames(IPlaylist2); + end; + end; + + Playlist2 := 0; + UpdateSelectSlideOptions(Theme.PartyOptions.SelectPlayList2, 2, IPlaylist2, Playlist2); end; procedure TScreenPartyOptions.onShow; diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 6a1df197..2af37dd5 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -89,7 +89,7 @@ type end; implementation -uses UGraphic, UMain, UCovers, math, OpenGL12, Windows, USkins, UDLLManager, UParty, UScreenSongMenu; +uses UGraphic, UMain, UCovers, math, OpenGL12, Windows, USkins, UDLLManager, UParty, UPlaylist, UScreenSongMenu; // ***** Public methods ****** // @@ -198,8 +198,8 @@ begin SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); - {//Jump To - if (SDL_ModState = KMOD_LALT) AND (PressedKey > SDLK_A) AND (PressedKey < SDLK_Z) then + //Jump To + if (SDL_ModState = KMOD_LALT) AND (Mode = 0) AND (PressedKey > SDLK_A) AND (PressedKey < SDLK_Z) then begin Letter := UpCase(Chr(ScanCode)); Log.LogError(Letter); @@ -208,7 +208,7 @@ begin begin if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND (UpCase(CatSongs.Song[(I + Interaction) mod I2].Title[1]) = Letter) then begin - SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); + SkipTo(2 + CatSongs.VisibleIndex((I + Interaction) mod I2)); Music.PlayChange; @@ -220,7 +220,7 @@ begin end; end; Exit; - end; } + end; case PressedKey of SDLK_ESCAPE : @@ -312,7 +312,7 @@ begin SDLK_M: //Show SongMenu begin - if Length(Songs.Song) > 0 then begin + if (Length(Songs.Song) > 0) AND (Mode = 0) then begin if not CatSongs.Song[Interaction].Main then begin // clicked on Song if CatSongs.CatNumShow = -3 then ScreenSongMenu.MenuShow(SM_Playlist) @@ -328,14 +328,14 @@ begin SDLK_P: //Show Playlist Menu begin - if Length(Songs.Song) > 0 then begin + if (Length(Songs.Song) > 0) AND (Mode = 0) then begin ScreenSongMenu.MenuShow(SM_Playlist_Load); end; end; SDLK_J: //Show Jumpto Menu begin - if Length(Songs.Song) > 0 then + if (Length(Songs.Song) > 0) AND (Mode = 0) then begin ScreenSongJumpto.Visible := True; end; @@ -1462,34 +1462,65 @@ Procedure TScreenSong.SelectRandomSong; var I, I2: Integer; begin - repeat - I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; - until CatSongs.Song[I2].Main = false; + Case PlaylistMan.Mode of + 0: //All Songs Just Select Random Song + begin + repeat + I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; + until CatSongs.Song[I2].Main = false; - //Search Cat - for I := I2 downto low(CatSongs.Song) do - begin - if CatSongs.Song[I].Main then - break; - end; - //In I ist jetzt die Kategorie in I2 der Song + //Search Cat + for I := I2 downto low(CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + break; + end; + //In I ist jetzt die Kategorie in I2 der Song - //Choose Cat - CatSongs.ShowCategoryList; + //Choose Cat + CatSongs.ShowCategoryList; - //Show Cat in Top Left Mod - ShowCatTL (I); + //Show Cat in Top Left Mod + ShowCatTL (I); + + CatSongs.ClickCategoryButton(I); + SelectNext; + + //Fix: Not Existing Song selected: + if (I+1=I2) then Inc(I2); + + //Choose Song + SkipTo(I2-I); + end; + 1: //One Category Select Category and Select Random Song + begin + CatSongs.HideCategory(-1); + CatSongs.ShowCategory(PlaylistMan.CurPlayList); + ShowCatTL(PlaylistMan.CurPlayList); - CatSongs.ClickCategoryButton(I); - SelectNext; + SelectNext; + FixSelected; - //Fix: Not Existing Song selected: - if (I+1=I2) then Inc(I2); + SkipTo(2+Random(CatSongs.VisibleSongs-1)); + Music.PlayChange; + ChangeMusic; + SetScroll4; + UpdateLCD; + end; + 2: //Playlist: Select Playlist and Select Random Song + begin + PlaylistMan.SetPlayList(PlaylistMan.CurPlayList); - //Choose Song - SkipTo(I2-I); + SkipTo(2+Random(CatSongs.VisibleSongs-1)); + Music.PlayChange; + ChangeMusic; + SetScroll4; + UpdateLCD; + FixSelected; + end; + end; - ChangeMusic; + ChangeMusic; end; procedure TScreenSong.SetJoker; -- cgit v1.2.3 From ce1d554d8084e549beb20f01c8315b44adff5f3a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 6 Apr 2007 10:50:31 +0000 Subject: Changed Osci/Bar Standard Value to Bar So the Rating bar is Visible at first Startup git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@68 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UIni.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index 7ab8de99..d5589ea3 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -259,7 +259,7 @@ begin if Tekst = ISingWindow[Pet] then Ini.SingWindow := Pet; // Oscilloscope - Tekst := IniFile.ReadString('Graphics', 'Oscilloscope', 'Off'); + Tekst := IniFile.ReadString('Graphics', 'Oscilloscope', 'Bar'); for Pet := 0 to High(IOscilloscope) do if Tekst = IOscilloscope[Pet] then Ini.Oscilloscope := Pet; -- cgit v1.2.3 From 455c6240e52f751dd7eab10620cecb9fc1711429 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 6 Apr 2007 12:33:21 +0000 Subject: Added Coolie Hat Support to UJoystick Added Axis Support to UJoystick Remapped Buttons git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@69 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UJoystick.pas | 169 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 159 insertions(+), 10 deletions(-) diff --git a/Game/Code/Classes/UJoystick.pas b/Game/Code/Classes/UJoystick.pas index a2a06307..b0c7b8cc 100644 --- a/Game/Code/Classes/UJoystick.pas +++ b/Game/Code/Classes/UJoystick.pas @@ -12,8 +12,17 @@ type Sym: cardinal; end; + TJoyHatState = record + State: Boolean; + LastTick: Cardinal; + Enabled: boolean; + Type_: byte; + Sym: cardinal; + end; + TJoyUnit = record Button: array[0..15] of TJoyButton; + HatState: Array[0..3] of TJoyHatState; end; TJoy = class @@ -29,7 +38,7 @@ var implementation -uses SysUtils; +uses SysUtils, Windows, ULog; constructor TJoy.Create; var @@ -77,13 +86,21 @@ begin //New Sarutas method SDL_JoystickEventState(SDL_IGNORE); SDL_InitSubSystem(SDL_INIT_JOYSTICK); - if SDL_NumJoysticks < 1 then beep; + if SDL_NumJoysticks < 1 then + begin + Log.LogError('No Joystick found'); + exit; + end; - SDL_Joy := SDL_JoystickOpen(0); - if SDL_Joy = nil then beep; + SDL_Joy := SDL_JoystickOpen(0); + if SDL_Joy = nil then + begin + Log.LogError('Could not Init Joystick'); + exit; + end; N := SDL_JoystickNumButtons(SDL_Joy); - if N < 6 then beep; + //if N < 6 then beep; for B := 0 to 5 do begin JoyUnit.Button[B].Enabled := true; @@ -91,21 +108,37 @@ begin JoyUnit.Button[B].Type_ := SDL_KEYDOWN; end; - JoyUnit.Button[0].Sym := SDLK_UP; - JoyUnit.Button[1].Sym := SDLK_RIGHT; - JoyUnit.Button[2].Sym := SDLK_DOWN; - JoyUnit.Button[3].Sym := SDLK_LEFT; + JoyUnit.Button[0].Sym := SDLK_Return; + JoyUnit.Button[1].Sym := SDLK_Escape; + JoyUnit.Button[2].Sym := SDLK_M; + JoyUnit.Button[3].Sym := SDLK_R; JoyUnit.Button[4].Sym := SDLK_RETURN; JoyUnit.Button[5].Sym := SDLK_ESCAPE; + + //Set HatState + for B := 0 to 3 do begin + JoyUnit.HatState[B].Enabled := true; + JoyUnit.HatState[B].State := False; + JoyUnit.HatState[B].Type_ := SDL_KEYDOWN; + end; + + JoyUnit.HatState[0].Sym := SDLK_UP; + JoyUnit.HatState[1].Sym := SDLK_RIGHT; + JoyUnit.HatState[2].Sym := SDLK_DOWN; + JoyUnit.HatState[3].Sym := SDLK_LEFT; end; procedure TJoy.Update; var - B: integer; + B: integer; + State: UInt8; + Tick: Cardinal; + Axes: Smallint; begin SDL_JoystickUpdate; + //Manage Buttons for B := 0 to 15 do begin if (JoyUnit.Button[B].Enabled) and (JoyUnit.Button[B].State <> SDL_JoystickGetButton(SDL_Joy, B)) and (JoyUnit.Button[B].State = 0) then begin JoyEvent.type_ := JoyUnit.Button[B].Type_; @@ -119,6 +152,122 @@ begin JoyUnit.Button[B].State := SDL_JoystickGetButton(SDL_Joy, B); end; + //Get Tick + Tick := Gettickcount; + + //Get CoolieHat + if (SDL_JoystickNumHats(SDL_Joy)>=1) then + State := SDL_JoystickGetHat(SDL_Joy, 0) + else + State := 0; + + //Get Axis + if (SDL_JoystickNumAxes(SDL_Joy)>=2) then + begin + //Down - Up (X- Axis) + Axes := SDL_JoystickGetAxis(SDL_Joy, 1); + If Axes >= 15000 then + State := State or SDL_HAT_Down + Else If Axes <= -15000 then + State := State or SDL_HAT_UP; + + //Left - Right (Y- Axis) + Axes := SDL_JoystickGetAxis(SDL_Joy, 0); + If Axes >= 15000 then + State := State or SDL_HAT_Right + Else If Axes <= -15000 then + State := State or SDL_HAT_Left; + end; + + //Manage Hat and joystick Events + if (SDL_JoystickNumHats(SDL_Joy)>=1) OR (SDL_JoystickNumAxes(SDL_Joy)>=2) then + begin + + //Up Button + If (JoyUnit.HatState[0].Enabled) and ((SDL_HAT_UP AND State) = SDL_HAT_UP) then + begin //IF Button is newly Pressed or if he is Pressed longer than 500 msecs + if (JoyUnit.HatState[0].State = False) OR (JoyUnit.HatState[0].Lasttick < Tick) then + begin + //Set Tick and State + if JoyUnit.HatState[0].State then + JoyUnit.HatState[0].Lasttick := Tick + 200 + else + JoyUnit.HatState[0].Lasttick := Tick + 500; + + JoyUnit.HatState[0].State := True; + + JoyEvent.type_ := JoyUnit.HatState[0].Type_; + JoyEvent.key.keysym.sym := JoyUnit.HatState[0].Sym; + SDL_PushEvent(@JoyEvent); + end; + end + else + JoyUnit.HatState[0].State := False; + + //Right Button + If (JoyUnit.HatState[1].Enabled) and ((SDL_HAT_RIGHT AND State) = SDL_HAT_RIGHT) then + begin //IF Button is newly Pressed or if he is Pressed longer than 500 msecs + if (JoyUnit.HatState[1].State = False) OR (JoyUnit.HatState[1].Lasttick < Tick) then + begin + //Set Tick and State + if JoyUnit.HatState[1].State then + JoyUnit.HatState[1].Lasttick := Tick + 200 + else + JoyUnit.HatState[1].Lasttick := Tick + 500; + + JoyUnit.HatState[1].State := True; + + JoyEvent.type_ := JoyUnit.HatState[1].Type_; + JoyEvent.key.keysym.sym := JoyUnit.HatState[1].Sym; + SDL_PushEvent(@JoyEvent); + end; + end + else + JoyUnit.HatState[1].State := False; + + //Down button + If (JoyUnit.HatState[2].Enabled) and ((SDL_HAT_DOWN AND State) = SDL_HAT_DOWN) then + begin //IF Button is newly Pressed or if he is Pressed longer than 230 msecs + if (JoyUnit.HatState[2].State = False) OR (JoyUnit.HatState[2].Lasttick < Tick) then + begin + //Set Tick and State + if JoyUnit.HatState[2].State then + JoyUnit.HatState[2].Lasttick := Tick + 200 + else + JoyUnit.HatState[2].Lasttick := Tick + 500; + + JoyUnit.HatState[2].State := True; + + JoyEvent.type_ := JoyUnit.HatState[2].Type_; + JoyEvent.key.keysym.sym := JoyUnit.HatState[2].Sym; + SDL_PushEvent(@JoyEvent); + end; + end + else + JoyUnit.HatState[2].State := False; + + //Left Button + If (JoyUnit.HatState[3].Enabled) and ((SDL_HAT_LEFT AND State) = SDL_HAT_LEFT) then + begin //IF Button is newly Pressed or if he is Pressed longer than 230 msecs + if (JoyUnit.HatState[3].State = False) OR (JoyUnit.HatState[3].Lasttick < Tick) then + begin + //Set Tick and State + if JoyUnit.HatState[3].State then + JoyUnit.HatState[3].Lasttick := Tick + 200 + else + JoyUnit.HatState[3].Lasttick := Tick + 500; + + JoyUnit.HatState[3].State := True; + + JoyEvent.type_ := JoyUnit.HatState[3].Type_; + JoyEvent.key.keysym.sym := JoyUnit.HatState[3].Sym; + SDL_PushEvent(@JoyEvent); + end; + end + else + JoyUnit.HatState[3].State := False; + end; + end; end. -- cgit v1.2.3 From dd97441dc46eb52b124edf4e0a2ba6a650867e8e Mon Sep 17 00:00:00 2001 From: mogguh Date: Fri, 6 Apr 2007 17:41:55 +0000 Subject: Feature: Golden notes twinkle now when hit (Bug: if singing is stopped while note was hit (i.e. singer not singing loud enough), then twinkle will not be killed) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@70 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 5 +++++ Game/Code/Classes/UGraphic.pas | 2 +- Game/Code/Classes/UGraphicClasses.pas | 41 ++++++++++++++++++++++++++++++++--- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index e0e8e941..7447b6bf 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -425,6 +425,11 @@ var end; // with end; // for +// eigentlich brauchen wir hier einen vergleich, um festzustellen, ob wir mit +// singen schon weiter wären, als bei Rec.Right, _auch, wenn nicht gesungen wird_ + with Player[NrGracza].Nuta[N] do + if not (Start+Dlugosc-1 = Czas.AktBeatD) then + GoldenRec.GoldenNoteTwinkle(Rec.Top,Rec.Bottom,Rec.Right); end; // if end; diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 73bb1706..9f3e6667 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -191,7 +191,7 @@ begin end; Tex_Note_Perfect_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NotePerfectStar')), 'JPG', 'Font Black', 0); - Tex_Note_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteStar')), 'JPG', 'Font Black', 0); + Tex_Note_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteStar')) , 'JPG', 'Alpha Black Colored', $FFFFFF); Tex_Ball := Texture.LoadTexture(pchar(Skin.GetTextureFileName('Ball')), 'BMP', 'Transparent', $FF00FF); diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index d5eb44ab..66264334 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -30,6 +30,7 @@ type LastTime : Cardinal; RecArray : Array of RectanglePositions; PerfNoteArray : Array of PerfectNotePositions; + DelayAfterKillall : Integer; constructor Create; procedure Draw; @@ -39,6 +40,7 @@ type procedure KillAll(); procedure SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); procedure SavePerfectNotePos(Xtop, Ytop: Real); + procedure GoldenNoteTwinkle(Top,Bottom,Right: Real); end; var GoldenRec : TEffectManager; @@ -64,27 +66,36 @@ var W, H: real; Alpha : real; begin - Alpha := (-cos((Frame+1)*2*pi/16)+1); //Fade Eyecandy + //Fade Eyecandy Case StarType of 1: begin + Alpha := (-cos((Frame+1)*2*pi/16)+1); W := 20; H := 20; glColor4f(0.99, 1, 0.6, Alpha); end; 2: begin + Alpha := (-cos((Frame+1)*2*pi/16)+1); W := 30; H := 30; glColor4f(1, 1, 0.95, Alpha); end; + 3: + begin + Alpha := (Live/3); + W := 15; + H := 15; + glColor4f(1, 1, 0.9, Alpha); + end; end; + glBindTexture(GL_TEXTURE_2D, Tex); glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBindTexture(GL_TEXTURE_2D, Tex); + glEnable(GL_BLEND); begin glBegin(GL_QUADS); @@ -211,6 +222,30 @@ begin SetLength(PerfNoteArray,0); end; +procedure TeffectManager.GoldenNoteTwinkle(Top,Bottom,Right: Real); +//Twinkle stars while golden note hit +var + C, P, XKatze, YKatze: Integer; +begin + DelayAfterKillall:=10; // To be used later, for the screen change issue + For P := 0 to high(RecArray) do // Are we inside a GoldenNoteRectangle? + begin + if ((RecArray[P].xBottom >= Right) and + (RecArray[P].xTop <= Right) and + (RecArray[P].yTop <= (Top+Bottom)/2) and + (RecArray[P].yBottom >= (Top+Bottom)/2)) then + begin + for C := 1 to 8 do + begin + Ykatze := RandomRange(ceil(Top) , ceil(Bottom)); + XKatze := RandomRange(-7,3); + Spawn(Ceil(Right)+XKatze, YKatze, Tex_Note_Star.TexNum, 3, 0, -1, 3); + end; + exit; // found a GoldenRec, did spawning stuff... done + end; + end; +end; + procedure TEffectManager.SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); var P : Integer; // P like used in Positions -- cgit v1.2.3 From 4ce8b89fdaf829546449c0d1acab14df80c49d95 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 7 Apr 2007 12:58:11 +0000 Subject: Fixed some Bugs in Effect Engine: Perfect Note Stars was drawn 2 Times Golden Note Extra twinkling stops and is redrawn until next Sentece or Note at the End of the Golden Note. Redrawing of Golden Note Twinkles at the next Sentence git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@71 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 11 ++-- Game/Code/Classes/UGraphicClasses.pas | 99 ++++++++++++++++++++++++----------- Game/Code/Screens/UScreenSing.pas | 8 ++- 3 files changed, 77 insertions(+), 41 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 7447b6bf..952bad07 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -425,11 +425,12 @@ var end; // with end; // for -// eigentlich brauchen wir hier einen vergleich, um festzustellen, ob wir mit -// singen schon weiter wären, als bei Rec.Right, _auch, wenn nicht gesungen wird_ - with Player[NrGracza].Nuta[N] do - if not (Start+Dlugosc-1 = Czas.AktBeatD) then - GoldenRec.GoldenNoteTwinkle(Rec.Top,Rec.Bottom,Rec.Right); + // eigentlich brauchen wir hier einen vergleich, um festzustellen, ob wir mit + // singen schon weiter wären, als bei Rec.Right, _auch, wenn nicht gesungen wird_ + + // passing on NrGracza... hope this is really something like the player-number, not only + // some kind of weird index into a colour-table + GoldenRec.GoldenNoteTwinkle(Rec.Top,Rec.Bottom,Rec.Right, NrGracza); end; // if end; diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index 66264334..34a964b2 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -29,8 +29,9 @@ type Particle : array of TParticle; LastTime : Cardinal; RecArray : Array of RectanglePositions; + TwinkleArray : Array[0..5] of PerfectNotePositions; // store position of last twinkle for every player PerfNoteArray : Array of PerfectNotePositions; - DelayAfterKillall : Integer; + KillallTime : Cardinal; // Timestamp set when Killall is called constructor Create; procedure Draw; @@ -40,7 +41,7 @@ type procedure KillAll(); procedure SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); procedure SavePerfectNotePos(Xtop, Ytop: Real); - procedure GoldenNoteTwinkle(Top,Bottom,Right: Real); + procedure GoldenNoteTwinkle(Top,Bottom,Right: Real; Player: Integer); end; var GoldenRec : TEffectManager; @@ -48,6 +49,10 @@ var GoldenRec : TEffectManager; implementation uses sysutils, Windows,OpenGl12, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; +const + KillallDelay: Integer = 100; + + //TParticle Constructor TParticle.Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : Integer); begin @@ -111,8 +116,15 @@ end; constructor TEffectManager.Create; +var c: Cardinal; begin LastTime := GetTickCount; + KillallTime := LastTime; + for c:=0 to 5 do + begin + TwinkleArray[c].xPos := 0; + TwinkleArray[c].yPos := 0; + end; end; @@ -214,27 +226,41 @@ if not(LastParticleIndex = -1) then end; procedure TEffectManager.KillAll(); +var c: Cardinal; begin //It's the kill all kennies rotuine while Length(Particle) > 0 do Kill(0); SetLength(RecArray,0); SetLength(PerfNoteArray,0); + for c:=0 to 5 do + begin + TwinkleArray[c].xPos:=0; + TwinkleArray[c].yPos:=0; + end; end; -procedure TeffectManager.GoldenNoteTwinkle(Top,Bottom,Right: Real); +procedure TeffectManager.GoldenNoteTwinkle(Top,Bottom,Right: Real; Player: Integer); //Twinkle stars while golden note hit +// this is called from UDraw.pas, SingDrawPlayerCzesc var C, P, XKatze, YKatze: Integer; + CurrentTime: Cardinal; begin - DelayAfterKillall:=10; // To be used later, for the screen change issue - For P := 0 to high(RecArray) do // Are we inside a GoldenNoteRectangle? - begin - if ((RecArray[P].xBottom >= Right) and - (RecArray[P].xTop <= Right) and - (RecArray[P].yTop <= (Top+Bottom)/2) and - (RecArray[P].yBottom >= (Top+Bottom)/2)) then + CurrentTime := GetTickCount; + //delay after Killall + if (CurrentTime > (KillallTime + KillallDelay)) then + // make sure we spawn only one time at one position + if (TwinkleArray[Player].xPos < Right) then + For P := 0 to high(RecArray) do // Are we inside a GoldenNoteRectangle? + begin + if ((RecArray[P].xBottom >= Right) and + (RecArray[P].xTop <= Right) and + (RecArray[P].yTop <= (Top+Bottom)/2) and + (RecArray[P].yBottom >= (Top+Bottom)/2)) then begin + TwinkleArray[Player].xPos:=Right; + for C := 1 to 8 do begin Ykatze := RandomRange(ceil(Top) , ceil(Bottom)); @@ -243,21 +269,26 @@ begin end; exit; // found a GoldenRec, did spawning stuff... done end; - end; + end; end; procedure TEffectManager.SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); var P : Integer; // P like used in Positions NewIndex : Integer; + CurrentTime: Cardinal; begin - For P := 0 to high(RecArray) do // Do we already have that "new" position? - begin - if ((ceil(RecArray[P].xTop) = ceil(Xtop)) and (ceil(RecArray[P].yTop) = ceil(Ytop))) then - exit; // it's already in the array, so we don't have to create a new one - end; + CurrentTime := GetTickCount; + //delay after Killall + if (CurrentTime > (KillallTime + KillallDelay)) then + begin + For P := 0 to high(RecArray) do // Do we already have that "new" position? + begin + if ((ceil(RecArray[P].xTop) = ceil(Xtop)) and (ceil(RecArray[P].yTop) = ceil(Ytop))) then + exit; // it's already in the array, so we don't have to create a new one + end; -// we got a new position, add the new positions to our array + // we got a new position, add the new positions to our array NewIndex := Length(RecArray); SetLength(RecArray, NewIndex + 1); RecArray[NewIndex].xTop := Xtop; @@ -266,6 +297,7 @@ begin RecArray[NewIndex].yBottom := Ybottom; RecArray[NewIndex].TotalStarCount := ceil(Xbottom - Xtop) div 12 + 3; RecArray[NewIndex].CurrentStarCount := 0; + end; end; procedure TEffectManager.SavePerfectNotePos(Xtop, Ytop: Real); @@ -275,27 +307,32 @@ var RandomFrame : Integer; Xkatze, Ykatze : Integer; + CurrentTime: Cardinal; begin - For P := 0 to high(PerfNoteArray) do // Do we already have that "new" position? - begin - if ((ceil(PerfNoteArray[P].xPos) = ceil(Xtop)) and (ceil(PerfNoteArray[P].yPos) = ceil(Ytop))) then - exit; // it's already in the array, so we don't have to create a new one - end; + CurrentTime := GetTickCount; + //delay after Killall + if (CurrentTime > (KillallTime + KillallDelay)) then + begin + For P := 0 to high(PerfNoteArray) do // Do we already have that "new" position? + begin + if ((ceil(PerfNoteArray[P].xPos) = ceil(Xtop)) and (ceil(PerfNoteArray[P].yPos) = ceil(Ytop))) then + exit; // it's already in the array, so we don't have to create a new one + end; -// we got a new position, add the new positions to our array + // we got a new position, add the new positions to our array NewIndex := Length(PerfNoteArray); SetLength(PerfNoteArray, NewIndex + 1); PerfNoteArray[NewIndex].xPos := Xtop; PerfNoteArray[NewIndex].yPos := Ytop; - for P:= 0 to 2 do - begin - Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); - Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); - RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Perfect_Star.TexNum, 16 - RandomFrame, RandomFrame, -1, 2); - end; - + for P:= 0 to 2 do + begin + Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); + Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); + RandomFrame := RandomRange(0,14); + Spawn(Xkatze, Ykatze, Tex_Note_Perfect_Star.TexNum, 16 - RandomFrame, RandomFrame, -1, 2); + end; + end; end; end. diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index d684dc3c..ae5b239c 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1121,16 +1121,14 @@ begin end; //PhrasenBonus - Line Bonus Mod End// } - -//GoldenStarsTwinkle Mod - GoldenRec.KillAll; -//GoldenStarsTwinkle Mod End end; //Called on Sentence Change S= New Current Sentence procedure TScreenSing.onSentenceChange(S: Cardinal); begin - //Dummy + //GoldenStarsTwinkle Mod + GoldenRec.KillAll; + //GoldenStarsTwinkle Mod End end; end. -- cgit v1.2.3 From 0238701e1db66b960b0d77c30dc53110d4042744 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Apr 2007 15:39:24 +0000 Subject: Updated Language Files to fit Advanced Screen Options Names still need some fine tuning because they don't fit the Button Texture. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@72 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 9 +++++++++ Languages/German.ini | 11 ++++++----- Languages/readme.txt | 10 ++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index 2d2b6bd4..3b7f7404 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -12,6 +12,7 @@ SING_OPTIONS_SOUND=sound SING_OPTIONS_LYRICS=lyrics SING_OPTIONS_THEMES=themes SING_OPTIONS_RECORD=record +SING_OPTIONS_ADVANCED=advanced SING_OPTIONS_EXIT=exit SING_OPTIONS_GAME_DESC=game options @@ -53,6 +54,14 @@ SING_OPTIONS_RECORD_INPUT=Input SING_OPTIONS_RECORD_CHANNELL=Left channel SING_OPTIONS_RECORD_CHANNELR=Right channel +SING_OPTIONS_ADVANCED_DESC=advanced options +SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Golden Notes effect +SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfect Notes effect +SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions +SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus +SING_OPTIONS_ADVANCED_ONSONGCLICK=after SongSelection + SING_CHOOSE_MODE=choose mode SING_GAME_OPTIONS=game options SING_GAME_OPTIONS_DESC=change game settings diff --git a/Languages/German.ini b/Languages/German.ini index a44ecc65..663eccfc 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -63,12 +63,13 @@ SING_OPTIONS_RECORD_CHANNELL=Linker Kanal SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen -SING_OPTIONS_ADVANCED_GNOTE_TWINKLE=Goldene Noten glitzern -SING_OPTIONS_ADVANCED_PERFNOTE_TWINKLE=Perfekte Noten glitzern -SING_OPTIONS_ADVANCED_ANIMATED_LOADSCREEN=Ladebildschirm animiert -SING_OPTIONS_ADVANCED_SECURITY_QUESTIONS=Sicherheitsabfragen +SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Goldene Noten Effekt +SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfekte Noten Effekt +SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfragen +SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen -SING_OPTIONS_ADVANCED_EVENT_ON_ENTER=Enter bei SongAuswahl +SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Songauswahl SING_LEGEND_SELECT=AUSWÄHLEN SING_LEGEND_NAVIGATE=NAVIGIEREN diff --git a/Languages/readme.txt b/Languages/readme.txt index fb605a49..a9be1885 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -4,6 +4,16 @@ To port a LanguageFile from Ultrastar 0.5.2 or Higher add the following Texts to SING_MENU=Main Menu +#Advanced Options Screen +SING_OPTIONS_ADVANCED=advanced +SING_OPTIONS_ADVANCED_DESC=advanced options +SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Golden Notes effect +SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfect Notes effect +SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions +SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus +SING_OPTIONS_ADVANCED_ONSONGCLICK=after SongSelection + #Ratings at the Score Screen SING_SCORE_TONE_DEAF=Tone Deaf SING_SCORE_AMATEUR=Amateur -- cgit v1.2.3 From d838060882ea5a60e2dfad83156251367db0437f Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Apr 2007 15:40:49 +0000 Subject: Completed Advanced Screen Theme Fixed some misspositioned Selects in Options Graphic git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@73 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 2 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index e9568cf9..57dbf328 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -2682,7 +2682,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE X = 40 -Y = 450 +Y = 380 W = 230 H = 70 SkipX = 50 @@ -2699,7 +2699,7 @@ STDColor = GrayDark [OptionsGraphicsButtonExit] X = 40 -Y = 520 +Y = 450 W = 230 H = 70 Tex =MainBar @@ -3171,6 +3171,138 @@ Color =White Tex =IconOption Type=Font Black + +[OptionsAdvancedSelectLoadAnimation] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_ADVANCED_LOADANIMATION +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectEffectPerfect] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_ADVANCED_EFFECTPERFECT +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + + +[OptionsAdvancedSelectEffectGolden] +Tex = MainBar +TexSBG = MainBar +Text =SING_OPTIONS_ADVANCED_EFFECTGOLDEN +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectLineBonus] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_LINEBONUS +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectSlideOnSongClick] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_ONSONGCLICK +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectAskbeforeDel] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL +X = 40 +Y = 450 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedButtonExit] +X = 40 +Y = 520 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + [Top5] Texts=1 -- cgit v1.2.3 From e9a8dafe97dfc4570e08bd8a1054e7f6e91ff8a1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Apr 2007 21:50:36 +0000 Subject: Fixed a Bug Fading in to Options Screen Fixed Exit in Grafic Screen don't work git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@74 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenOptions.pas | 2 ++ Game/Code/Screens/UScreenOptionsGraphics.pas | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index 2a8d0d9a..0fffedac 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -232,6 +232,8 @@ begin Button[3].Texture.ScaleW := Progress; Button[4].Texture.ScaleW := Progress; Button[5].Texture.ScaleW := Progress; + Button[6].Texture.ScaleW := Progress; + Button[7].Texture.ScaleW := Progress; end; end. diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index 4befb092..6152c9c0 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -38,7 +38,7 @@ begin { if SelInteraction <= 1 then begin Restart := true; end;} - if SelInteraction = 6 then begin + if SelInteraction = 5 then begin Ini.Save; Music.PlayBack; FadeTo(@ScreenOptions); @@ -50,14 +50,14 @@ begin InteractPrev; SDLK_RIGHT: begin - if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + if (SelInteraction >= 0) and (SelInteraction <= 4) then begin Music.PlayOption; InteractInc; end; end; SDLK_LEFT: begin - if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + if (SelInteraction >= 0) and (SelInteraction <= 4) then begin Music.PlayOption; InteractDec; end; -- cgit v1.2.3 From d28350b7fe6e1c827e9994d28f7f95cae4ac2db6 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 10 Apr 2007 10:15:14 +0000 Subject: Corrected Coverpositions in Style 4 git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@75 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 2af37dd5..e873d287 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -945,11 +945,12 @@ begin Wsp := 2 * pi * (CatSongs.VisibleIndex(B) - SongCurrent) / VS {CatSongs.VisibleSongs};// 0.5.0 (II): takes another 16ms - Z := (1 + cos(Wsp)) / 2 - 0.2; + Z := (1 + cos(Wsp)) / 2; Z2 := (1 + 2*Z) / 3; - Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W + 0.185 * Theme.Song.Cover.H * VS * sin(Wsp) - Theme.Song.Cover.X) * Z2; // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs - Button[B].Z := Z; + + Button[B].X := Theme.Song.Cover.X + (0.185 * Theme.Song.Cover.H * VS * sin(Wsp)) * Z2 - ((Button[B].H - Theme.Song.Cover.H)/2); // 0.5.0 (I): 2 times faster by not calling CatSongs.VisibleSongs + Button[B].Z := Z / 2 + 0.3; Button[B].W := Theme.Song.Cover.H * Z2; @@ -1050,16 +1051,6 @@ var VS: integer; diff: real; X: Real; - {function margin (const X, Y, VS: real):real; //Margin of to Buttons - begin - Result := Frac(x / y) * y; - if (X - VS) >= -3 then - Result := X - VS - Y - else if (X + 3) >= VS then - Result := X - VS + Y - else - Result := X - Y; - end; } begin VS := CatSongs.VisibleSongs; // cache Visible Songs {Vars @@ -1096,9 +1087,12 @@ begin Button[B].W := Button[B].H; - Diff := (Button[B].H - Theme.Song.Cover.H)/2;; + Diff := (Button[B].H - Theme.Song.Cover.H)/2; + + + X := Sin(Angle); - Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle) - Diff; + Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * X - Diff; end else -- cgit v1.2.3 From da9dc16fd9983e4af6790900c7c007cfe603709b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 10 Apr 2007 15:10:26 +0000 Subject: Beautified Credits Screen Edited Texts to Fit Screen Width git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@76 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenMain.pas | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index dcd7db26..ccd81ee9 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -45,11 +45,11 @@ const Credits_Text: Array[0..46] of PChar = ( 'DennistheMenace:', 'Beta Testing and great Support in "the Board"', ':SPACE:', - 'Moq/Moguhguh:', + 'Mog:', 'Programming', ':SPACE:', 'Mota:', - 'Programming, Idea of creating this Mod, Team Leading', + 'Programming, Idea of creating this Mod', ':SPACE:', 'Sawyer:', 'Web Master, Programming', @@ -72,9 +72,9 @@ const Credits_Text: Array[0..46] of PChar = ( ':SPACE:', ':SPACE:', 'Visit us at:', - 'http://www.UltraStar-Deluxe.de.vu', - 'http://www.USD.de.vu', - 'http://www.Ultra-Star.dl.am ("The Board" by Blind Guard)', + 'http://www.ultrastardx.dl.am', + 'http://sourceforge.net/projects/ultrastardx/', + 'http://www.Ultra-Star.dl.am', 'Please write Bug Reports and Feature Requests', 'to help making this a better Game'); @@ -329,7 +329,7 @@ begin SetFontStyle (2); SetFontItalic(False); SetFontSize(9); - SetFontPos (460, 570); + SetFontPos (10, 5); glColor4f(1, 0, 0, 0.2 + Abs((Credits_Alpha mod 150)/100 - 0.75)); glPrint ('Credits! Press any Key to Continue'); @@ -339,7 +339,12 @@ begin if (Credits_Y>-35) then begin Ver := PChar(Language.Translate('US_VERSION')); - glColor4f(1, 0.6, 0.08, 0.8); + //Set Color + if Credits_Y > 500 then + glColor4f(1, 0.6, 0.08, (600 - Credits_Y)/100 - 0.2) + else + glColor4f(1, 0.6, 0.08, 0.8); + SetFontPos (400 - glTextWidth(Ver)/2, Credits_Y); glprint(Ver); end; @@ -367,6 +372,12 @@ begin Y := Y + 55 else begin + //Set Color + if Y > 500 then + glColor4f(0.8, 0.8, 1, (600 - Y)/100 - 0.2) + else + glColor4f(0.8, 0.8, 1, 0.8); + SetFontPos (400 - glTextWidth(Credits_Text[T])/2, Y); glprint(Credits_Text[T]); Y := Y + 30; @@ -376,7 +387,7 @@ begin break; end; - //If lower Position is outside the Screen-> Show MainMenu + //If lowest Position is outside the Screen-> Show MainMenu if (Y <= 0) then Credits_Visible := False; end; -- cgit v1.2.3 From 44956e119562be2defd82eba8b10e7069ead5b76 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 10 Apr 2007 15:12:07 +0000 Subject: Edited Mogs Text: Now hes a Graphics Guy ^^ git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@77 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenLoading.pas | 8 +++++++- Game/Code/Screens/UScreenMain.pas | 2 +- Game/Code/Screens/UScreenSing.pas | 3 +++ Game/Code/Screens/UScreenWelcome.pas | 16 ++++++++-------- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/Game/Code/Screens/UScreenLoading.pas b/Game/Code/Screens/UScreenLoading.pas index 05b308ac..5cc938bb 100644 --- a/Game/Code/Screens/UScreenLoading.pas +++ b/Game/Code/Screens/UScreenLoading.pas @@ -3,7 +3,7 @@ unit UScreenLoading; interface uses - UMenu, SDL, SysUtils, UThemes; + UMenu, SDL, SysUtils, UThemes, OpenGL12; type TScreenLoading = class(TMenu) @@ -11,6 +11,7 @@ type Fadeout: boolean; constructor Create(Back: String); override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function GetBGTexNum: GLUInt; procedure onShow; override; end; @@ -45,4 +46,9 @@ begin // nothing end; +function TScreenLoading.GetBGTexNum: GLUInt; +begin + Result := Self.BackImg.TexNum; +end; + end. diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index ccd81ee9..43034912 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -46,7 +46,7 @@ const Credits_Text: Array[0..46] of PChar = ( 'Beta Testing and great Support in "the Board"', ':SPACE:', 'Mog:', - 'Programming', + 'Programming, Graphics', ':SPACE:', 'Mota:', 'Programming, Idea of creating this Mod', diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index ae5b239c..c6191cec 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1119,6 +1119,8 @@ begin //Refresh LastScore Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; + + end; //PhrasenBonus - Line Bonus Mod End// } end; @@ -1129,6 +1131,7 @@ begin //GoldenStarsTwinkle Mod GoldenRec.KillAll; //GoldenStarsTwinkle Mod End + end; end. diff --git a/Game/Code/Screens/UScreenWelcome.pas b/Game/Code/Screens/UScreenWelcome.pas index de3b50f4..79fcc2c4 100644 --- a/Game/Code/Screens/UScreenWelcome.pas +++ b/Game/Code/Screens/UScreenWelcome.pas @@ -18,7 +18,7 @@ type implementation -uses UGraphic, UTime; +uses UGraphic, UTime, USkins; function TScreenWelcome.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin @@ -41,14 +41,14 @@ end; constructor TScreenWelcome.Create; begin inherited Create; -{ AddStatic(-10, -10, 0, 0, 1, 1, 1, Skin.Star, 'BMP', 'Transparent'); - AddStatic(-500, 440, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); - AddStatic(-500, 472, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); - AddStatic(-500, 504, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); - AddStatic(-500, 536, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); - AddStatic(-500, 568, 200, 5, 0, 0, 0, Skin.Line, 'JPG', 'Font Black'); + AddStatic(-10, -10, 0, 0, 1, 1, 1, Skin.GetTextureFileName('ButtonAlt') , 'JPG', 'Transparent'); + AddStatic(-500, 440, 200, 5, 0, 0, 0, Skin.GetTextureFileName('Rectangle'), 'JPG', 'Font Black'); + AddStatic(-500, 472, 200, 5, 0, 0, 0, Skin.GetTextureFileName('Rectangle'), 'JPG', 'Font Black'); + AddStatic(-500, 504, 200, 5, 0, 0, 0, Skin.GetTextureFileName('Rectangle'), 'JPG', 'Font Black'); + AddStatic(-500, 536, 200, 5, 0, 0, 0, Skin.GetTextureFileName('Rectangle'), 'JPG', 'Font Black'); + AddStatic(-500, 568, 200, 5, 0, 0, 0, Skin.GetTextureFileName('Rectangle'), 'JPG', 'Font Black'); Animation := 0; - Fadeout := false;} + Fadeout := false; end; procedure TScreenWelcome.onShow; -- cgit v1.2.3 From 80e691699f2b236e4af80f8c1178cde07b458da3 Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 11 Apr 2007 14:10:41 +0000 Subject: Feature: ScoreScreen now has the ability to show extra texts (UThemes.pas, UScreenScore.pas) Feature: Hit golden note effect, is now even more astonishing (UGraphicClasses.pas) Feature: It's now possible to turn of GoldenNoteTwinkle (UDraw.pas) BugFix: OptionsAdvanced is now opened correctly, instead of producing a bug (UGraphic.pas) BugFix: Modified some language entries to fit option screen (optionen instead of einstellungen) (German.ini) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@78 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 2 + Game/Code/Classes/UGraphic.pas | 2 +- Game/Code/Classes/UGraphicClasses.pas | 362 +++++++++++++++++++++------------- Game/Code/Classes/UThemes.pas | 5 + Game/Code/Screens/UScreenScore.pas | 19 +- Languages/German.ini | 4 +- 6 files changed, 253 insertions(+), 141 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 952bad07..e2c01b4b 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -430,6 +430,8 @@ var // passing on NrGracza... hope this is really something like the player-number, not only // some kind of weird index into a colour-table + + if (Ini.EffectGolden=1) then GoldenRec.GoldenNoteTwinkle(Rec.Top,Rec.Bottom,Rec.Right, NrGracza); end; // if end; diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 9f3e6667..c3ce0f00 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -404,7 +404,7 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Themes', 3); Log.BenchmarkStart(3); ScreenOptionsRecord := TScreenOptionsRecord.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Record', 3); Log.BenchmarkStart(3); - ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create; + ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Advanced', 3); Log.BenchmarkStart(3); ScreenEditSub := TScreenEditSub.Create(''); Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit Sub', 3); Log.BenchmarkStart(3); diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index 34a964b2..5fa22575 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -1,18 +1,30 @@ unit UGraphicClasses; interface - +const DelayBetweenFrames : Cardinal = 100; type + + TParticleType=(GoldenNote, PerfectNote, NoteHitTwinkle, PerfectLineTwinkle); + + TColour3f = Record + r, g, b: Real; + end; + TParticle = Class X, Y : Real; //Position + W, H : Cardinal; //dimensions of particle + Col : TColour3f; // Colour of particle Frame : Byte; //act. Frame Tex : Cardinal; //Tex num from Textur Manager Live : Byte; //How many Cycles before Kill - RecIndex : Integer; //To which rectangle this particle belongs - StarType : Integer; // 1: GoldenNote | 2: PerfectNote + RecIndex : Integer; //To which rectangle this particle belongs (only GoldenNote) + StarType : TParticleType; // GoldenNote | PerfectNote | NoteHitTwinkle | PerfectLineTwinkle + Alpha : Real; // used for fading... + mX, mY : Real; // movement-vector for PerfectLineTwinkle - Constructor Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : Integer); + Constructor Create(cX,cY: Real; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); procedure Draw; + procedure LiveOn; end; RectanglePositions = Record @@ -29,13 +41,19 @@ type Particle : array of TParticle; LastTime : Cardinal; RecArray : Array of RectanglePositions; - TwinkleArray : Array[0..5] of PerfectNotePositions; // store position of last twinkle for every player + TwinkleArray : Array[0..5] of Real; // store x-position of last twinkle for every player PerfNoteArray : Array of PerfectNotePositions; - KillallTime : Cardinal; // Timestamp set when Killall is called constructor Create; + destructor Destroy; override; procedure Draw; - function Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : Integer): Cardinal; + function Spawn(X, Y: Real; + Live: Byte; + StartFrame: Integer; + RecArrayIndex: Integer; // this is only used with GoldenNotes + StarType: TParticleType; + Player: Cardinal // for PerfectLineTwinkle + ): Cardinal; procedure SpawnRec(); procedure Kill(index: Cardinal); procedure KillAll(); @@ -49,53 +67,109 @@ var GoldenRec : TEffectManager; implementation uses sysutils, Windows,OpenGl12, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; -const - KillallDelay: Integer = 100; - - //TParticle -Constructor TParticle.Create(cX,cY: Real; cTex: Cardinal; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : Integer); +Constructor TParticle.Create(cX,cY: Real; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); begin + inherited Create; X := cX; Y := cY; - Tex := cTex; Live := cLive; Frame:= cFrame; RecIndex := cRecArrayIndex; StarType := cStarType; -end; - - -procedure TParticle.Draw; -var - W, H: real; - Alpha : real; -begin - //Fade Eyecandy - - Case StarType of - 1: + Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + case cStarType of + GoldenNote: begin - Alpha := (-cos((Frame+1)*2*pi/16)+1); + Tex := Tex_Note_Star.TexNum; W := 20; H := 20; - glColor4f(0.99, 1, 0.6, Alpha); + Col.r := 0.99; + Col.g := 1; + Col.b := 0.6; end; - 2: + PerfectNote: begin - Alpha := (-cos((Frame+1)*2*pi/16)+1); + Tex := Tex_Note_Perfect_Star.TexNum; W := 30; H := 30; - glColor4f(1, 1, 0.95, Alpha); + Col.r := 1; + Col.g := 1; + Col.b := 0.95; end; - 3: + NoteHitTwinkle: begin - Alpha := (Live/3); + Tex := Tex_Note_Star.TexNum; + Alpha := (Live/10); // linear fade-out W := 15; H := 15; - glColor4f(1, 1, 0.9, Alpha); + Col.r := 1; + Col.g := 1; + Col.b := RandomRange(10*Live,100)/80; //0.9; + end; + PerfectLineTwinkle: + begin + Tex := Tex_Note_Star.TexNum; + W := RandomRange(10,30); + H := W; + // hier muss entsprechend des players farbe gesetzt werden (sollten wir dann auch übergeben bekommen) + // case Player of + // ... + Col.r := 1; + Col.g := 0.5; + Col.b := 0.5; + mX := RandomRange(-5,5); + mY := RandomRange(-5,5); + end; + else // just some random default values + begin + Tex := Tex_Note_Star.TexNum; + Alpha := 1; + W := 20; + H := 20; + Col.r := 1; + Col.g := 1; + Col.b := 1; end; end; +end; + +procedure TParticle.LiveOn; +begin + //Live = 0 => Live forever ?? die werden doch aber im Manager bei Draw getötet, wenns 0 is + if (Live > 0) then + Dec(Live); + + // animate frames + Frame := ( Frame + 1 ) mod 16; + + // make our particles do funny stuff (besides being animated) + case StarType of + GoldenNote: + begin + Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + end; + PerfectNote: + begin + Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + end; + NoteHitTwinkle: + begin + Alpha := (Live/10); // linear fade-out + end; + PerfectLineTwinkle: + begin + Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + // move around + X := X + mX; + Y := Y + mY; + end; + end; +end; + +procedure TParticle.Draw; +begin + glColor4f(Col.r, Col.g, Col.b, Alpha); glBindTexture(GL_TEXTURE_2D, Tex); glEnable(GL_TEXTURE_2D); @@ -112,44 +186,43 @@ begin end; glcolor4f(1,1,1,1); end; +// end of TParticle - +// TEffectManager constructor TEffectManager.Create; var c: Cardinal; begin + inherited; LastTime := GetTickCount; - KillallTime := LastTime; for c:=0 to 5 do begin - TwinkleArray[c].xPos := 0; - TwinkleArray[c].yPos := 0; + TwinkleArray[c] := 0; end; end; +destructor TEffectManager.Destroy; +begin + Killall; + inherited; +end; + procedure TEffectManager.Draw; var I: Integer; CurrentTime: Cardinal; -const - DelayBetweenFrames : Integer = 100; +//const +// DelayBetweenFrames : Cardinal = 100; begin CurrentTime := GetTickCount; //Manage particle life - if (CurrentTime > (LastTime + DelayBetweenFrames)) then + if (CurrentTime - LastTime) > DelayBetweenFrames then begin LastTime := CurrentTime; - for I := 0 to high(Particle) do - begin - Particle[I].Frame := (Particle[I].Frame + 1 ) mod 16; - //Live = 0 => Live forever - if (Particle[I].Live > 0) then - begin - Dec(Particle[I].Live); - end; - end; + for I := 0 to high(Particle) do + Particle[I].LiveOn; end; I := 0; @@ -173,15 +246,15 @@ begin end; end; - -function TEffectManager.Spawn(X, Y: Real; Tex: Cardinal; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : Integer): Cardinal; +// this method creates just one particle +function TEffectManager.Spawn(X, Y: Real; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : TParticleType; Player: Cardinal): Cardinal; begin Result := Length(Particle); SetLength(Particle, (Result + 1)); - Particle[Result] := TParticle.Create(X, Y, Tex, Live, StartFrame, RecArrayIndex, StarType); + Particle[Result] := TParticle.Create(X, Y, Live, StartFrame, RecArrayIndex, StarType, Player); end; - +// manage Sparkling of GoldenNote Bars procedure TEffectManager.SpawnRec(); Var Xkatze, Ykatze : Real; @@ -197,46 +270,46 @@ for P:= 0 to high(RecArray) do Xkatze := RandomRange(Ceil(RecArray[P].xTop), Ceil(RecArray[P].xBottom)); Ykatze := RandomRange(Ceil(RecArray[P].yTop), Ceil(RecArray[P].yBottom)); RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Star.TexNum, 16 - RandomFrame, RandomFrame, P, 1); + // Spawn a GoldenNote Particle + Spawn(Xkatze, Ykatze, 16 - RandomFrame, RandomFrame, P, GoldenNote, 0); inc(RecArray[P].CurrentStarCount); end; end; draw; end; - +// kill one particle (with given index in our particle array) procedure TEffectManager.Kill(Index: Cardinal); var - LastParticleIndex : Cardinal; + LastParticleIndex : Integer; begin -// We put the last element of the array on the place where our element_to_delete resides and then we shorten the array - cool, hu? :P - -LastParticleIndex := high(Particle); -if not(LastParticleIndex = -1) then +// delete particle indexed by Index, +// overwrite it's place in our particle-array with the particle stored at the last array index, +// shorten array + LastParticleIndex := high(Particle); + if not(LastParticleIndex = -1) then // is there still a particle to delete? begin - Try - Finally - if not(Particle[Index].RecIndex = -1) then - dec(RecArray[Particle[Index].RecIndex].CurrentStarCount); - Particle[Index].Destroy; - Particle[Index] := Particle[LastParticleIndex]; - SetLength(Particle, LastParticleIndex); - end; - end; + if not(Particle[Index].RecIndex = -1) then // if it is a GoldenNote particle... + dec(RecArray[Particle[Index].RecIndex].CurrentStarCount); // take care of its associated GoldenRec + // now get rid of that particle + Particle[Index].Destroy; + Particle[Index] := Particle[LastParticleIndex]; + SetLength(Particle, LastParticleIndex); + end; end; +// clean up all particles and management structures procedure TEffectManager.KillAll(); var c: Cardinal; begin //It's the kill all kennies rotuine - while Length(Particle) > 0 do + while Length(Particle) > 0 do // kill all existing particles Kill(0); - SetLength(RecArray,0); - SetLength(PerfNoteArray,0); + SetLength(RecArray,0); // remove GoldenRec positions + SetLength(PerfNoteArray,0); // remove PerfectNote positions for c:=0 to 5 do begin - TwinkleArray[c].xPos:=0; - TwinkleArray[c].yPos:=0; + TwinkleArray[c] := 0; // reset GoldenNoteHit memory end; end; @@ -244,95 +317,110 @@ procedure TeffectManager.GoldenNoteTwinkle(Top,Bottom,Right: Real; Player: Integ //Twinkle stars while golden note hit // this is called from UDraw.pas, SingDrawPlayerCzesc var - C, P, XKatze, YKatze: Integer; - CurrentTime: Cardinal; + C, P, XKatze, YKatze, LKatze: Integer; + H: Real; begin - CurrentTime := GetTickCount; - //delay after Killall - if (CurrentTime > (KillallTime + KillallDelay)) then - // make sure we spawn only one time at one position - if (TwinkleArray[Player].xPos < Right) then - For P := 0 to high(RecArray) do // Are we inside a GoldenNoteRectangle? + // make sure we spawn only one time at one position + if (TwinkleArray[Player] < Right) then + For P := 0 to high(RecArray) do // Are we inside a GoldenNoteRectangle? + begin + H := (Top+Bottom)/2; // helper... + with RecArray[P] do + if ((xBottom >= Right) and (xTop <= Right) and + (yTop <= H) and (yBottom >= H)) then begin - if ((RecArray[P].xBottom >= Right) and - (RecArray[P].xTop <= Right) and - (RecArray[P].yTop <= (Top+Bottom)/2) and - (RecArray[P].yBottom >= (Top+Bottom)/2)) then + TwinkleArray[Player] := Right; // remember twinkle position for this player + for C := 1 to 20 do begin - TwinkleArray[Player].xPos:=Right; - - for C := 1 to 8 do - begin - Ykatze := RandomRange(ceil(Top) , ceil(Bottom)); - XKatze := RandomRange(-7,3); - Spawn(Ceil(Right)+XKatze, YKatze, Tex_Note_Star.TexNum, 3, 0, -1, 3); - end; - exit; // found a GoldenRec, did spawning stuff... done + Ykatze := RandomRange(ceil(Top) , ceil(Bottom)); + XKatze := RandomRange(-7,3); + LKatze := RandomRange(4,10); + Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); end; + for C := 1 to 5 do + begin + Ykatze := RandomRange(ceil(Top)-6 , ceil(Top)); + XKatze := RandomRange(-5,1); + LKatze := RandomRange(2,3); + Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + end; + for C := 1 to 5 do + begin + Ykatze := RandomRange(ceil(Bottom), ceil(Bottom)+6); + XKatze := RandomRange(-5,1); + LKatze := RandomRange(2,3); + Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + end; + for C := 1 to 3 do + begin + Ykatze := RandomRange(ceil(Top)-10 , ceil(Top)-6); + XKatze := RandomRange(-5,1); + LKatze := RandomRange(1,2); + Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + end; + for C := 1 to 3 do + begin + Ykatze := RandomRange(ceil(Bottom)+6 , ceil(Bottom)+10); + XKatze := RandomRange(-5,1); + LKatze := RandomRange(1,2); + Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + end; + + exit; // found a matching GoldenRec, did spawning stuff... done end; + end; end; procedure TEffectManager.SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); var P : Integer; // P like used in Positions NewIndex : Integer; - CurrentTime: Cardinal; begin - CurrentTime := GetTickCount; - //delay after Killall - if (CurrentTime > (KillallTime + KillallDelay)) then - begin - For P := 0 to high(RecArray) do // Do we already have that "new" position? - begin - if ((ceil(RecArray[P].xTop) = ceil(Xtop)) and (ceil(RecArray[P].yTop) = ceil(Ytop))) then - exit; // it's already in the array, so we don't have to create a new one - end; + For P := 0 to high(RecArray) do // Do we already have that "new" position? + begin + if ((ceil(RecArray[P].xTop) = ceil(Xtop)) and (ceil(RecArray[P].yTop) = ceil(Ytop))) then + exit; // it's already in the array, so we don't have to create a new one + end; // we got a new position, add the new positions to our array - NewIndex := Length(RecArray); - SetLength(RecArray, NewIndex + 1); - RecArray[NewIndex].xTop := Xtop; - RecArray[NewIndex].yTop := Ytop; - RecArray[NewIndex].xBottom := Xbottom; - RecArray[NewIndex].yBottom := Ybottom; - RecArray[NewIndex].TotalStarCount := ceil(Xbottom - Xtop) div 12 + 3; - RecArray[NewIndex].CurrentStarCount := 0; - end; + NewIndex := Length(RecArray); + SetLength(RecArray, NewIndex + 1); + RecArray[NewIndex].xTop := Xtop; + RecArray[NewIndex].yTop := Ytop; + RecArray[NewIndex].xBottom := Xbottom; + RecArray[NewIndex].yBottom := Ybottom; + RecArray[NewIndex].TotalStarCount := ceil(Xbottom - Xtop) div 12 + 3; + RecArray[NewIndex].CurrentStarCount := 0; end; procedure TEffectManager.SavePerfectNotePos(Xtop, Ytop: Real); var P : Integer; // P like used in Positions NewIndex : Integer; - RandomFrame : Integer; Xkatze, Ykatze : Integer; - CurrentTime: Cardinal; begin - CurrentTime := GetTickCount; - //delay after Killall - if (CurrentTime > (KillallTime + KillallDelay)) then - begin - For P := 0 to high(PerfNoteArray) do // Do we already have that "new" position? - begin - if ((ceil(PerfNoteArray[P].xPos) = ceil(Xtop)) and (ceil(PerfNoteArray[P].yPos) = ceil(Ytop))) then - exit; // it's already in the array, so we don't have to create a new one - end; + For P := 0 to high(PerfNoteArray) do // Do we already have that "new" position? + begin + with PerfNoteArray[P] do + if ((ceil(xPos) = ceil(Xtop)) and (ceil(yPos) = ceil(Ytop))) then + exit; // it's already in the array, so we don't have to create a new one + end; //for // we got a new position, add the new positions to our array - NewIndex := Length(PerfNoteArray); - SetLength(PerfNoteArray, NewIndex + 1); - PerfNoteArray[NewIndex].xPos := Xtop; - PerfNoteArray[NewIndex].yPos := Ytop; + NewIndex := Length(PerfNoteArray); + SetLength(PerfNoteArray, NewIndex + 1); + PerfNoteArray[NewIndex].xPos := Xtop; + PerfNoteArray[NewIndex].yPos := Ytop; - for P:= 0 to 2 do - begin - Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); - Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); - RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, Tex_Note_Perfect_Star.TexNum, 16 - RandomFrame, RandomFrame, -1, 2); - end; - end; + for P:= 0 to 2 do + begin + Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); + Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); + RandomFrame := RandomRange(0,14); + Spawn(Xkatze, Ykatze, 16 - RandomFrame, RandomFrame, -1, PerfectNote, 0); + end; //for end; + end. diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 17983a60..d7adb61a 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -290,7 +290,10 @@ type TextArtist: TThemeText; TextTitle: TThemeText; + TextArtistTitle: TThemeText; + PlayerStatic: array[1..6] of AThemeStatic; + PlayerTexts: array[1..6] of AThemeText; TextName: array[1..6] of TThemeText; TextScore: array[1..6] of TThemeText; @@ -917,9 +920,11 @@ begin ThemeLoadText(Score.TextArtist, 'ScoreTextArtist'); ThemeLoadText(Score.TextTitle, 'ScoreTextTitle'); + ThemeLoadText(Score.TextArtistTitle, 'ScoreTextArtistTitle'); for I := 1 to 6 do begin ThemeLoadStatics(Score.PlayerStatic[I], 'ScorePlayer' + IntToStr(I) + 'Static'); + ThemeLoadTexts(Score.PlayerTexts[I], 'ScorePlayer' + IntToStr(I) + 'Text'); ThemeLoadText(Score.TextName[I], 'ScoreTextName' + IntToStr(I)); ThemeLoadText(Score.TextScore[I], 'ScoreTextScore' + IntToStr(I)); diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index eb92a3d2..9184b3f5 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -11,6 +11,8 @@ type TextArtist: integer; TextTitle: integer; + TextArtistTitle : integer; + TextName: array[1..6] of integer; TextScore: array[1..6] of integer; @@ -24,6 +26,8 @@ type TextTotalScore: array[1..6] of integer; PlayerStatic: array[1..6] of array of integer; + PlayerTexts : array[1..6] of array of integer; + StaticBoxLightest: array[1..6] of integer; StaticBoxLight: array[1..6] of integer; @@ -91,7 +95,7 @@ end; constructor TScreenScore.Create(Back: String); var P: integer; - I: integer; + I, C: integer; begin inherited Create(Back); @@ -146,6 +150,8 @@ begin TextArtist := AddText(Theme.Score.TextArtist); TextTitle := AddText(Theme.Score.TextTitle); + TextArtistTitle := AddText(Theme.Score.TextArtistTitle); + for P := 1 to 6 do begin TextName[P] := AddText(Theme.Score.TextName[P]); TextScore[P] := AddText(Theme.Score.TextScore[P]); @@ -160,9 +166,16 @@ begin TextTotalScore[P] := AddText(Theme.Score.TextTotalScore[P]); SetLength(PlayerStatic[P], Length(Theme.Score.PlayerStatic[P])); + for I := 0 to High(Theme.Score.PlayerStatic[P]) do PlayerStatic[P, I] := AddStatic(Theme.Score.PlayerStatic[P, I]); + + //added by mog + for C := 0 to High(Theme.Score.PlayerTexts[P]) do + PlayerTexts[P, C] := AddText(Theme.Score.PlayerTexts[P, C]); + // more skinable now + StaticBoxLightest[P] := AddStatic(Theme.Score.StaticBoxLightest[P]); StaticBoxLight[P] := AddStatic(Theme.Score.StaticBoxLight[P]); StaticBoxDark[P] := AddStatic(Theme.Score.StaticBoxDark[P]); @@ -225,6 +238,7 @@ begin Text[TextArtist].Text := AktSong.Artist; Text[TextTitle].Text := AktSong.Title; + Text[TextArtistTitle].Text := AktSong.Artist + ' - ' + AktSong.Title; // set visibility case PlayersPlay of @@ -270,6 +284,9 @@ begin for I := 0 to high(PlayerStatic[P]) do Static[PlayerStatic[P, I]].Visible := V[P]; + for I := 0 to high(PlayerTexts[P]) do + Static[PlayerTexts[P, I]].Visible := V[P]; + Static[StaticBoxLightest[P]].Visible := V[P]; Static[StaticBoxLight[P]].Visible := V[P]; Static[StaticBoxDark[P]].Visible := V[P]; diff --git a/Languages/German.ini b/Languages/German.ini index 663eccfc..f99047fe 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -56,13 +56,13 @@ SING_OPTIONS_THEMES_THEME=Theme SING_OPTIONS_THEMES_SKIN=Skin SING_OPTIONS_THEMES_COLOR=Farbe -SING_OPTIONS_RECORD_DESC=Aufnahme Einstellungen +SING_OPTIONS_RECORD_DESC=Aufnahme Optionen SING_OPTIONS_RECORD_CARD=Soundkarte SING_OPTIONS_RECORD_INPUT=Eingang SING_OPTIONS_RECORD_CHANNELL=Linker Kanal SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal -SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen +SING_OPTIONS_ADVANCED_DESC=Erweiterte Optionen SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Goldene Noten Effekt SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfekte Noten Effekt SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation -- cgit v1.2.3 From d74fd107869347fef713d187dcd925257bfdadfe Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 11 Apr 2007 17:57:18 +0000 Subject: Bugfix: Score screen is now able to handle texts depended on the player count (UScreenScore.pas) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@79 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenScore.pas | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index 9184b3f5..2c018b96 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -167,6 +167,8 @@ begin SetLength(PlayerStatic[P], Length(Theme.Score.PlayerStatic[P])); + SetLength(PlayerTexts[P], Length(Theme.Score.PlayerTexts[P])); + for I := 0 to High(Theme.Score.PlayerStatic[P]) do PlayerStatic[P, I] := AddStatic(Theme.Score.PlayerStatic[P, I]); @@ -285,7 +287,7 @@ begin Static[PlayerStatic[P, I]].Visible := V[P]; for I := 0 to high(PlayerTexts[P]) do - Static[PlayerTexts[P, I]].Visible := V[P]; + Text[PlayerTexts[P, I]].Visible := V[P]; Static[StaticBoxLightest[P]].Visible := V[P]; Static[StaticBoxLight[P]].Visible := V[P]; -- cgit v1.2.3 From 943d001a21095f936fdcfc58f11cdbd6d30578a5 Mon Sep 17 00:00:00 2001 From: b1indy Date: Wed, 11 Apr 2007 20:22:01 +0000 Subject: first implementation of perfect line twinkle effect - works correctly for up to 3 players, restructured parts of particle code git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@80 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphicClasses.pas | 196 ++++++++++++++++++++++++++++------ Game/Code/Classes/UMain.pas | 4 +- Game/Code/Screens/UScreenSing.pas | 13 ++- 3 files changed, 177 insertions(+), 36 deletions(-) diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index 5fa22575..6f2aa0e4 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -1,3 +1,4 @@ +// notes: unit UGraphicClasses; interface @@ -13,7 +14,8 @@ type TParticle = Class X, Y : Real; //Position W, H : Cardinal; //dimensions of particle - Col : TColour3f; // Colour of particle + Col : array of TColour3f; // Colour(s) of particle + Scale : array of Real; // Scaling factors of particle layers Frame : Byte; //act. Frame Tex : Cardinal; //Tex num from Textur Manager Live : Byte; //How many Cycles before Kill @@ -21,8 +23,10 @@ type StarType : TParticleType; // GoldenNote | PerfectNote | NoteHitTwinkle | PerfectLineTwinkle Alpha : Real; // used for fading... mX, mY : Real; // movement-vector for PerfectLineTwinkle + SurviveSentenceChange : Boolean; Constructor Create(cX,cY: Real; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); + Destructor Destroy(); procedure Draw; procedure LiveOn; end; @@ -57,20 +61,23 @@ type procedure SpawnRec(); procedure Kill(index: Cardinal); procedure KillAll(); + procedure SentenceChange(); procedure SaveGoldenStarsRec(Xtop, Ytop, Xbottom, Ybottom: Real); procedure SavePerfectNotePos(Xtop, Ytop: Real); procedure GoldenNoteTwinkle(Top,Bottom,Right: Real; Player: Integer); + procedure SpawnPerfectLineTwinkle(); end; var GoldenRec : TEffectManager; implementation -uses sysutils, Windows,OpenGl12, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; +uses sysutils, Windows,OpenGl12, UIni, UMain, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; //TParticle Constructor TParticle.Create(cX,cY: Real; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); begin inherited Create; + // in this constructor we set all initial values for our particle X := cX; Y := cY; Live := cLive; @@ -78,24 +85,45 @@ begin RecIndex := cRecArrayIndex; StarType := cStarType; Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + SetLength(Scale,1); + Scale[0]:=1; + SurviveSentenceChange:=False; case cStarType of GoldenNote: begin Tex := Tex_Note_Star.TexNum; W := 20; H := 20; - Col.r := 0.99; - Col.g := 1; - Col.b := 0.6; + SetLength(Scale,4); + Scale[1]:=0.8; + Scale[2]:=0.4; + Scale[3]:=0.3; + SetLength(Col,4); + Col[0].r := 1; + Col[0].g := 0.7; + Col[0].b := 0.1; + + Col[1].r := 1; + Col[1].g := 1; + Col[1].b := 0.4; + + Col[2].r := 1; + Col[2].g := 1; + Col[2].b := 1; + + Col[3].r := 1; + Col[3].g := 1; + Col[3].b := 1; end; PerfectNote: begin Tex := Tex_Note_Perfect_Star.TexNum; W := 30; H := 30; - Col.r := 1; - Col.g := 1; - Col.b := 0.95; + SetLength(Col,1); + Col[0].r := 1; + Col[0].g := 1; + Col[0].b := 0.95; end; NoteHitTwinkle: begin @@ -103,21 +131,33 @@ begin Alpha := (Live/10); // linear fade-out W := 15; H := 15; - Col.r := 1; - Col.g := 1; - Col.b := RandomRange(10*Live,100)/80; //0.9; + Setlength(Col,1); + Col[0].r := 1; + Col[0].g := 1; + Col[0].b := RandomRange(10*Live,100)/80; //0.9; end; PerfectLineTwinkle: begin Tex := Tex_Note_Star.TexNum; W := RandomRange(10,30); H := W; - // hier muss entsprechend des players farbe gesetzt werden (sollten wir dann auch übergeben bekommen) - // case Player of - // ... - Col.r := 1; - Col.g := 0.5; - Col.b := 0.5; + SurviveSentenceChange:=True; + // assign colours according to player given + SetLength(Scale,2); + Scale[1]:=0.3; + SetLength(Col,2); + case Player of + 0: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P1Light'); + 1: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P2Light'); + 2: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P3Light'); + 3: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P4Light'); + 4: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P5Light'); + 5: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P6Light'); + else LoadColor(Col[0].r,Col[0].g,Col[0].b,'P1Light'); + end; + Col[1].r:=Col[0].r+0.5; + Col[1].g:=Col[0].g+0.5; + Col[1].b:=Col[0].b+0.5; mX := RandomRange(-5,5); mY := RandomRange(-5,5); end; @@ -127,13 +167,21 @@ begin Alpha := 1; W := 20; H := 20; - Col.r := 1; - Col.g := 1; - Col.b := 1; + SetLength(Col,1); + Col[0].r := 1; + Col[0].g := 1; + Col[0].b := 1; end; end; end; +Destructor TParticle.Destroy(); +begin + SetLength(Scale,0); + SetLength(Col,0); + inherited; +end; + procedure TParticle.LiveOn; begin //Live = 0 => Live forever ?? die werden doch aber im Manager bei Draw getötet, wenns 0 is @@ -144,6 +192,7 @@ begin Frame := ( Frame + 1 ) mod 16; // make our particles do funny stuff (besides being animated) + // changes of any particle-values throughout its life are done here case StarType of GoldenNote: begin @@ -168,21 +217,26 @@ begin end; procedure TParticle.Draw; +var L: Cardinal; begin - glColor4f(Col.r, Col.g, Col.b, Alpha); + // this draws (multiple) texture(s) of our particle + for L:=0 to High(Col) do + begin + glColor4f(Col[L].r, Col[L].g, Col[L].b, Alpha); - glBindTexture(GL_TEXTURE_2D, Tex); - glEnable(GL_TEXTURE_2D); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); + glBindTexture(GL_TEXTURE_2D, Tex); + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); - begin - glBegin(GL_QUADS); - glTexCoord2f((1/16) * Frame, 0); glVertex2f(X-W, Y-H); - glTexCoord2f((1/16) * Frame + (1/16), 0); glVertex2f(X-W, Y+H); - glTexCoord2f((1/16) * Frame + (1/16), 1); glVertex2f(X+W, Y+H); - glTexCoord2f((1/16) * Frame, 1); glVertex2f(X+W, Y-H); - glEnd; + begin + glBegin(GL_QUADS); + glTexCoord2f((1/16) * Frame, 0); glVertex2f(X-W*Scale[L], Y-H*Scale[L]); + glTexCoord2f((1/16) * Frame + (1/16), 0); glVertex2f(X-W*Scale[L], Y+H*Scale[L]); + glTexCoord2f((1/16) * Frame + (1/16), 1); glVertex2f(X+W*Scale[L], Y+H*Scale[L]); + glTexCoord2f((1/16) * Frame, 1); glVertex2f(X+W*Scale[L], Y-H*Scale[L]); + glEnd; + end; end; glcolor4f(1,1,1,1); end; @@ -313,6 +367,25 @@ begin end; end; +procedure TEffectManager.SentenceChange(); +var c: Cardinal; +begin + c:=0; + while c <= High(Particle) do + begin + if Particle[c].SurviveSentenceChange then + inc(c) + else + Kill(c); + end; + SetLength(RecArray,0); // remove GoldenRec positions + SetLength(PerfNoteArray,0); // remove PerfectNote positions + for c:=0 to 5 do + begin + TwinkleArray[c] := 0; // reset GoldenNoteHit memory + end; +end; + procedure TeffectManager.GoldenNoteTwinkle(Top,Bottom,Right: Real; Player: Integer); //Twinkle stars while golden note hit // this is called from UDraw.pas, SingDrawPlayerCzesc @@ -420,6 +493,65 @@ begin RandomFrame := RandomRange(0,14); Spawn(Xkatze, Ykatze, 16 - RandomFrame, RandomFrame, -1, PerfectNote, 0); end; //for + +end; + +procedure TEffectManager.SpawnPerfectLineTwinkle(); +var + P,I,Life: Cardinal; + Left, Right, Top, Bottom: Cardinal; +begin +// calculation of coordinates done with hardcoded values like in UDraw.pas +// might need to be adjusted if drawing of SingScreen is modified +// coordinates may still be a bit weird and need adjustment + if Ini.SingWindow = 0 then begin + Left := 130; + end else begin + Left := 30; + end; + Right := 770; + // spawn effect for every player with a perfect line + for P:=0 to PlayersPlay-1 do + if Player[P].LastSentencePerfect then + begin + // calculate area where notes of this player are drawn + case PlayersPlay of + 1: begin + Bottom:=Skin_P2_NotesB-10; + Top:=Bottom-105; + end; + 2,4: case P of + 0,2: begin + Bottom:=Skin_P1_NotesB-10; + Top:=Bottom-105; + end; + else begin + Bottom:=Skin_P2_NotesB-10; + Top:=Bottom-105; + end; + end; + 3,6: case P of + 0,3: begin + Top:=130; + Bottom:=Top+85; + end; + 1,4: begin + Top:=255; + Bottom:=Top+85; + end; + 2,5: begin + Top:=380; + Bottom:=Top+85; + end; + end; + end; + // spawn Sparkling Stars inside calculated coordinates + for I:= 0 to 80 do + begin + Life:=RandomRange(8,16); + Spawn(RandomRange(Left,Right), RandomRange(Top,Bottom), Life, 16-Life, -1, PerfectLineTwinkle, P); + end; + end; end; end. diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index f92b9457..3b6be56e 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -40,7 +40,9 @@ type LineBonus_StartY: integer; //PhrasenBonus - Line Bonus Mod End - + //PerfectLineTwinkle Mod (effect) + LastSentencePerfect: Boolean; + //PerfectLineTwinkle Mod end // Meter: real; diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index c6191cec..e3b7c7ad 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -371,7 +371,7 @@ begin //Kill all Stars not Killed yet //GoldenStarsTwinkle Mod - GoldenRec.KillAll; + GoldenRec.SentenceChange; //GoldenStarsTwinkle Mod End {Static[StaticP2R].Visible := V2R; @@ -1119,17 +1119,24 @@ begin //Refresh LastScore Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; - + //PerfectLineTwinkle Mod (effect) Pt.1 + if A >= 8 then Player[I].LastSentencePerfect := True + else Player[I].LastSentencePerfect := False; + //PerfectLineTwinkle Mod end end; //PhrasenBonus - Line Bonus Mod End// } + + //PerfectLineTwinkle Mod (effect) Pt.2 + GoldenRec.SpawnPerfectLineTwinkle; + //PerfectLineTwinkle Mod end end; //Called on Sentence Change S= New Current Sentence procedure TScreenSing.onSentenceChange(S: Cardinal); begin //GoldenStarsTwinkle Mod - GoldenRec.KillAll; + GoldenRec.SentenceChange; //GoldenStarsTwinkle Mod End end; -- cgit v1.2.3 From c3e4fa819306ebe07686ce448283cd9a18c262a9 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 12 Apr 2007 11:00:12 +0000 Subject: fixed bug in particle system that caused effects to be drawn on both screens when playing in dual screen mode, fixed position and particle counts of some effects, changed look of particles git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@81 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphicClasses.pas | 180 ++++++++++++++++++++-------------- 1 file changed, 107 insertions(+), 73 deletions(-) diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index 6f2aa0e4..acc26e96 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -2,7 +2,7 @@ unit UGraphicClasses; interface -const DelayBetweenFrames : Cardinal = 100; +const DelayBetweenFrames : Cardinal = 60; type TParticleType=(GoldenNote, PerfectNote, NoteHitTwinkle, PerfectLineTwinkle); @@ -13,6 +13,7 @@ type TParticle = Class X, Y : Real; //Position + Screen : Integer; W, H : Cardinal; //dimensions of particle Col : array of TColour3f; // Colour(s) of particle Scale : array of Real; // Scaling factors of particle layers @@ -23,9 +24,10 @@ type StarType : TParticleType; // GoldenNote | PerfectNote | NoteHitTwinkle | PerfectLineTwinkle Alpha : Real; // used for fading... mX, mY : Real; // movement-vector for PerfectLineTwinkle + SizeMod : Real; // experimental size modifier SurviveSentenceChange : Boolean; - Constructor Create(cX,cY: Real; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); + Constructor Create(cX,cY: Real; cScreen: Integer; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); Destructor Destroy(); procedure Draw; procedure LiveOn; @@ -35,10 +37,12 @@ type xTop, yTop, xBottom, yBottom : Real; TotalStarCount : Integer; CurrentStarCount : Integer; + Screen : Integer; end; PerfectNotePositions = Record xPos, yPos : Real; + Screen : Integer; end; TEffectManager = Class @@ -52,6 +56,7 @@ type destructor Destroy; override; procedure Draw; function Spawn(X, Y: Real; + Screen: Integer; Live: Byte; StartFrame: Integer; RecArrayIndex: Integer; // this is only used with GoldenNotes @@ -74,20 +79,22 @@ implementation uses sysutils, Windows,OpenGl12, UIni, UMain, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; //TParticle -Constructor TParticle.Create(cX,cY: Real; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); +Constructor TParticle.Create(cX,cY: Real; cScreen: Integer; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); begin inherited Create; // in this constructor we set all initial values for our particle X := cX; Y := cY; + Screen := cScreen; Live := cLive; Frame:= cFrame; RecIndex := cRecArrayIndex; StarType := cStarType; Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out SetLength(Scale,1); - Scale[0]:=1; - SurviveSentenceChange:=False; + Scale[0] := 1; + SurviveSentenceChange := False; + SizeMod := 1; case cStarType of GoldenNote: begin @@ -128,24 +135,26 @@ begin NoteHitTwinkle: begin Tex := Tex_Note_Star.TexNum; - Alpha := (Live/10); // linear fade-out + Alpha := (Live/16); // linear fade-out W := 15; H := 15; Setlength(Col,1); Col[0].r := 1; Col[0].g := 1; - Col[0].b := RandomRange(10*Live,100)/80; //0.9; + Col[0].b := RandomRange(10*Live,100)/90; //0.9; end; PerfectLineTwinkle: begin Tex := Tex_Note_Star.TexNum; - W := RandomRange(10,30); + W := RandomRange(10,20); H := W; + SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1); SurviveSentenceChange:=True; // assign colours according to player given - SetLength(Scale,2); + SetLength(Scale,3); Scale[1]:=0.3; - SetLength(Col,2); + Scale[2]:=0.2; + SetLength(Col,3); case Player of 0: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P1Light'); 1: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P2Light'); @@ -155,9 +164,12 @@ begin 5: LoadColor(Col[0].r,Col[0].g,Col[0].b,'P6Light'); else LoadColor(Col[0].r,Col[0].g,Col[0].b,'P1Light'); end; - Col[1].r:=Col[0].r+0.5; - Col[1].g:=Col[0].g+0.5; - Col[1].b:=Col[0].b+0.5; + Col[1].r := 1; + Col[1].g := 1; + Col[1].b := 0.4; + Col[2].r:=Col[0].r+0.5; + Col[2].g:=Col[0].g+0.5; + Col[2].b:=Col[0].b+0.5; mX := RandomRange(-5,5); mY := RandomRange(-5,5); end; @@ -209,6 +221,7 @@ begin PerfectLineTwinkle: begin Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1); // move around X := X + mX; Y := Y + mY; @@ -219,25 +232,26 @@ end; procedure TParticle.Draw; var L: Cardinal; begin - // this draws (multiple) texture(s) of our particle - for L:=0 to High(Col) do - begin - glColor4f(Col[L].r, Col[L].g, Col[L].b, Alpha); + if ScreenAct = Screen then + // this draws (multiple) texture(s) of our particle + for L:=0 to High(Col) do + begin + glColor4f(Col[L].r, Col[L].g, Col[L].b, Alpha); - glBindTexture(GL_TEXTURE_2D, Tex); - glEnable(GL_TEXTURE_2D); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); + glBindTexture(GL_TEXTURE_2D, Tex); + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); - begin - glBegin(GL_QUADS); - glTexCoord2f((1/16) * Frame, 0); glVertex2f(X-W*Scale[L], Y-H*Scale[L]); - glTexCoord2f((1/16) * Frame + (1/16), 0); glVertex2f(X-W*Scale[L], Y+H*Scale[L]); - glTexCoord2f((1/16) * Frame + (1/16), 1); glVertex2f(X+W*Scale[L], Y+H*Scale[L]); - glTexCoord2f((1/16) * Frame, 1); glVertex2f(X+W*Scale[L], Y-H*Scale[L]); - glEnd; + begin + glBegin(GL_QUADS); + glTexCoord2f((1/16) * Frame, 0); glVertex2f(X-W*Scale[L]*SizeMod, Y-H*Scale[L]*SizeMod); + glTexCoord2f((1/16) * Frame + (1/16), 0); glVertex2f(X-W*Scale[L]*SizeMod, Y+H*Scale[L]*SizeMod); + glTexCoord2f((1/16) * Frame + (1/16), 1); glVertex2f(X+W*Scale[L]*SizeMod, Y+H*Scale[L]*SizeMod); + glTexCoord2f((1/16) * Frame, 1); glVertex2f(X+W*Scale[L]*SizeMod, Y-H*Scale[L]*SizeMod); + glEnd; + end; end; - end; glcolor4f(1,1,1,1); end; // end of TParticle @@ -301,11 +315,11 @@ begin end; // this method creates just one particle -function TEffectManager.Spawn(X, Y: Real; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : TParticleType; Player: Cardinal): Cardinal; +function TEffectManager.Spawn(X, Y: Real; Screen: Integer; Live: Byte; StartFrame : Integer; RecArrayIndex : Integer; StarType : TParticleType; Player: Cardinal): Cardinal; begin Result := Length(Particle); SetLength(Particle, (Result + 1)); - Particle[Result] := TParticle.Create(X, Y, Live, StartFrame, RecArrayIndex, StarType, Player); + Particle[Result] := TParticle.Create(X, Y, Screen, Live, StartFrame, RecArrayIndex, StarType, Player); end; // manage Sparkling of GoldenNote Bars @@ -325,7 +339,7 @@ for P:= 0 to high(RecArray) do Ykatze := RandomRange(Ceil(RecArray[P].yTop), Ceil(RecArray[P].yBottom)); RandomFrame := RandomRange(0,14); // Spawn a GoldenNote Particle - Spawn(Xkatze, Ykatze, 16 - RandomFrame, RandomFrame, P, GoldenNote, 0); + Spawn(Xkatze, Ykatze, RecArray[P].Screen, 16 - RandomFrame, RandomFrame, P, GoldenNote, 0); inc(RecArray[P].CurrentStarCount); end; end; @@ -400,43 +414,44 @@ begin H := (Top+Bottom)/2; // helper... with RecArray[P] do if ((xBottom >= Right) and (xTop <= Right) and - (yTop <= H) and (yBottom >= H)) then + (yTop <= H) and (yBottom >= H)) + and (Screen = ScreenAct) then begin TwinkleArray[Player] := Right; // remember twinkle position for this player - for C := 1 to 20 do + for C := 1 to 10 do begin Ykatze := RandomRange(ceil(Top) , ceil(Bottom)); XKatze := RandomRange(-7,3); - LKatze := RandomRange(4,10); - Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + LKatze := RandomRange(7,13); + Spawn(Ceil(Right)+XKatze, YKatze, ScreenAct, LKatze, 0, -1, NoteHitTwinkle, 0); end; - for C := 1 to 5 do + for C := 1 to 3 do begin Ykatze := RandomRange(ceil(Top)-6 , ceil(Top)); XKatze := RandomRange(-5,1); - LKatze := RandomRange(2,3); - Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + LKatze := RandomRange(4,7); + Spawn(Ceil(Right)+XKatze, YKatze, ScreenAct, LKatze, 0, -1, NoteHitTwinkle, 0); end; - for C := 1 to 5 do + for C := 1 to 3 do begin Ykatze := RandomRange(ceil(Bottom), ceil(Bottom)+6); XKatze := RandomRange(-5,1); - LKatze := RandomRange(2,3); - Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + LKatze := RandomRange(4,7); + Spawn(Ceil(Right)+XKatze, YKatze, ScreenAct, LKatze, 0, -1, NoteHitTwinkle, 0); end; for C := 1 to 3 do begin Ykatze := RandomRange(ceil(Top)-10 , ceil(Top)-6); XKatze := RandomRange(-5,1); - LKatze := RandomRange(1,2); - Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + LKatze := RandomRange(1,4); + Spawn(Ceil(Right)+XKatze, YKatze, ScreenAct, LKatze, 0, -1, NoteHitTwinkle, 0); end; for C := 1 to 3 do begin Ykatze := RandomRange(ceil(Bottom)+6 , ceil(Bottom)+10); XKatze := RandomRange(-5,1); - LKatze := RandomRange(1,2); - Spawn(Ceil(Right)+XKatze, YKatze, LKatze, 0, -1, NoteHitTwinkle, 0); + LKatze := RandomRange(1,4); + Spawn(Ceil(Right)+XKatze, YKatze, ScreenAct, LKatze, 0, -1, NoteHitTwinkle, 0); end; exit; // found a matching GoldenRec, did spawning stuff... done @@ -451,7 +466,9 @@ var begin For P := 0 to high(RecArray) do // Do we already have that "new" position? begin - if ((ceil(RecArray[P].xTop) = ceil(Xtop)) and (ceil(RecArray[P].yTop) = ceil(Ytop))) then + if (ceil(RecArray[P].xTop) = ceil(Xtop)) and + (ceil(RecArray[P].yTop) = ceil(Ytop)) and + (ScreenAct = RecArray[p].Screen) then exit; // it's already in the array, so we don't have to create a new one end; @@ -464,6 +481,7 @@ begin RecArray[NewIndex].yBottom := Ybottom; RecArray[NewIndex].TotalStarCount := ceil(Xbottom - Xtop) div 12 + 3; RecArray[NewIndex].CurrentStarCount := 0; + RecArray[NewIndex].Screen := ScreenAct; end; procedure TEffectManager.SavePerfectNotePos(Xtop, Ytop: Real); @@ -476,7 +494,8 @@ begin For P := 0 to high(PerfNoteArray) do // Do we already have that "new" position? begin with PerfNoteArray[P] do - if ((ceil(xPos) = ceil(Xtop)) and (ceil(yPos) = ceil(Ytop))) then + if (ceil(xPos) = ceil(Xtop)) and (ceil(yPos) = ceil(Ytop)) and + (Screen = ScreenAct) then exit; // it's already in the array, so we don't have to create a new one end; //for @@ -485,13 +504,14 @@ begin SetLength(PerfNoteArray, NewIndex + 1); PerfNoteArray[NewIndex].xPos := Xtop; PerfNoteArray[NewIndex].yPos := Ytop; + PerfNoteArray[NewIndex].Screen := ScreenAct; for P:= 0 to 2 do begin Xkatze := RandomRange(ceil(Xtop) - 5 , ceil(Xtop) + 10); Ykatze := RandomRange(ceil(Ytop) - 5 , ceil(Ytop) + 10); RandomFrame := RandomRange(0,14); - Spawn(Xkatze, Ykatze, 16 - RandomFrame, RandomFrame, -1, PerfectNote, 0); + Spawn(Xkatze, Ykatze, ScreenAct, 16 - RandomFrame, RandomFrame, -1, PerfectNote, 0); end; //for end; @@ -500,6 +520,7 @@ procedure TEffectManager.SpawnPerfectLineTwinkle(); var P,I,Life: Cardinal; Left, Right, Top, Bottom: Cardinal; + cScreen: Integer; begin // calculation of coordinates done with hardcoded values like in UDraw.pas // might need to be adjusted if drawing of SingScreen is modified @@ -517,39 +538,52 @@ begin // calculate area where notes of this player are drawn case PlayersPlay of 1: begin - Bottom:=Skin_P2_NotesB-10; + Bottom:=Skin_P2_NotesB; Top:=Bottom-105; + cScreen:=1; end; - 2,4: case P of - 0,2: begin - Bottom:=Skin_P1_NotesB-10; - Top:=Bottom-105; - end; - else begin - Bottom:=Skin_P2_NotesB-10; - Top:=Bottom-105; - end; + 2,4: begin + case P of + 0,2: begin + Bottom:=Skin_P1_NotesB; + Top:=Bottom-105; + end; + else begin + Bottom:=Skin_P2_NotesB; + Top:=Bottom-105; + end; + end; + case P of + 0,1: cScreen:=1; + else cScreen:=2; + end; end; - 3,6: case P of - 0,3: begin - Top:=130; - Bottom:=Top+85; - end; - 1,4: begin - Top:=255; - Bottom:=Top+85; - end; - 2,5: begin - Top:=380; - Bottom:=Top+85; - end; + 3,6: begin + case P of + 0,3: begin + Top:=130; + Bottom:=Top+85; + end; + 1,4: begin + Top:=255; + Bottom:=Top+85; + end; + 2,5: begin + Top:=380; + Bottom:=Top+85; + end; + end; + case P of + 0,1,2: cScreen:=1; + else cScreen:=2; + end; end; end; // spawn Sparkling Stars inside calculated coordinates for I:= 0 to 80 do begin Life:=RandomRange(8,16); - Spawn(RandomRange(Left,Right), RandomRange(Top,Bottom), Life, 16-Life, -1, PerfectLineTwinkle, P); + Spawn(RandomRange(Left,Right), RandomRange(Top,Bottom), cScreen, Life, 16-Life, -1, PerfectLineTwinkle, P); end; end; end; -- cgit v1.2.3 From 85f1d57678fc6bc3f170d10311ffab90fda1e30c Mon Sep 17 00:00:00 2001 From: crazy_joker Date: Thu, 12 Apr 2007 18:50:15 +0000 Subject: Better position for Status Line git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@82 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 222 +++++++++++------------------------------------------- 1 file changed, 46 insertions(+), 176 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 57dbf328..5ef17969 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -82,7 +82,7 @@ Text= [MainStatic1] X =0 Y =549 -W =252 +W =255 H =28 Tex=Leiste1 Color =White @@ -280,7 +280,7 @@ Type=Font Black [SongStatic3] X =0 Y =549 -W =252 +W =255 H =28 Tex=Leiste1 Color =White @@ -2195,7 +2195,7 @@ Type=Font Black [OptionsStatic2] X =0 Y =549 -W =252 +W =255 H =28 Tex=Leiste1 Color =White @@ -2682,7 +2682,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE X = 40 -Y = 380 +Y = 450 W = 230 H = 70 SkipX = 50 @@ -2699,7 +2699,7 @@ STDColor = GrayDark [OptionsGraphicsButtonExit] X = 40 -Y = 450 +Y = 520 W = 230 H = 70 Tex =MainBar @@ -3171,138 +3171,6 @@ Color =White Tex =IconOption Type=Font Black - -[OptionsAdvancedSelectLoadAnimation] -Tex = MainBar -TexSBG = MainBar -Text =SING_OPTIONS_ADVANCED_LOADANIMATION -X = 40 -Y = 100 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex = MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - -[OptionsAdvancedSelectEffectPerfect] -Tex = MainBar -TexSBG = MainBar -Text =SING_OPTIONS_ADVANCED_EFFECTPERFECT -X = 40 -Y = 170 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex = MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - - -[OptionsAdvancedSelectEffectGolden] -Tex = MainBar -TexSBG = MainBar -Text =SING_OPTIONS_ADVANCED_EFFECTGOLDEN -X = 40 -Y = 240 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex = MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - -[OptionsAdvancedSelectLineBonus] -Tex =MainBar -TexSBG =MainBar -Text =SING_OPTIONS_ADVANCED_LINEBONUS -X = 40 -Y = 310 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex =MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - -[OptionsAdvancedSelectSlideOnSongClick] -Tex =MainBar -TexSBG =MainBar -Text =SING_OPTIONS_ADVANCED_ONSONGCLICK -X = 40 -Y = 380 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex =MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - -[OptionsAdvancedSelectAskbeforeDel] -Tex =MainBar -TexSBG =MainBar -Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL -X = 40 -Y = 450 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex =MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - -[OptionsAdvancedButtonExit] -X = 40 -Y = 520 -W = 230 -H = 70 -Tex =MainBar -Color = ColorDark -DColor = Gray -Type = Font Black - [Top5] Texts=1 @@ -3579,7 +3447,7 @@ Text=SING_DIFFICULTY [LevelStatic1] X =0 Y =549 -W =252 +W =255 H =28 Tex=Leiste1 Color =White @@ -3695,7 +3563,7 @@ Tex=MainBG [NameStatic1] X =0 Y =549 -W =252 +W =255 H =28 Tex=Leiste1 Color =White @@ -4403,13 +4271,14 @@ Texts = 1 Tex=PartyBG [PartyOptionsText1] -X = 50 -Y = 10 +X = 30 +Y = 0 ColR = 0.7 ColG = 0.7 ColB = 0.7 Font = 1 -Size = 25 +Size = 20 +Color =White Text=PARTY_OPTIONS_DESC [PartyOptionsSelectLevel] @@ -4588,8 +4457,8 @@ Tex=PartyBG [PartyPlayerTeam1Name] Tex=Button -X=25 -Y=50 +X=10 +Y=100 W=250 H=70 Type=Font Black @@ -4611,8 +4480,8 @@ Color=White [PartyPlayerPlayer1Name] Tex=Button -X=25 -Y=120 +X=10 +Y=190 W=250 H=70 Type=Font Black @@ -4634,8 +4503,8 @@ Color=White [PartyPlayerPlayer2Name] Tex=Button -X=25 -Y=190 +X=10 +Y=270 W=250 H=70 Type=Font Black @@ -4657,8 +4526,8 @@ Color=White [PartyPlayerPlayer3Name] Tex=Button -X=25 -Y=260 +X=10 +Y=350 W=250 H=70 Type=Font Black @@ -4680,8 +4549,8 @@ Color=White [PartyPlayerPlayer4Name] Tex=Button -X=25 -Y=330 +X=10 +Y=430 W=250 H=70 Type=Font Black @@ -4703,8 +4572,8 @@ Color=White [PartyPlayerTeam2Name] Tex=Button -X=300 -Y=50 +X=280 +Y=100 W=250 H=70 Type=Font Black @@ -4726,8 +4595,8 @@ Color=White [PartyPlayerPlayer5Name] Tex=Button -X=300 -Y=120 +X=280 +Y=190 W=250 H=70 Type=Font Black @@ -4749,8 +4618,8 @@ Color=White [PartyPlayerPlayer6Name] Tex=Button -X=300 -Y=190 +X=280 +Y=270 W=250 H=70 Type=Font Black @@ -4772,8 +4641,8 @@ Color=White [PartyPlayerPlayer7Name] Tex=Button -X=300 -Y=260 +X=280 +Y=350 W=250 H=70 Type=Font Black @@ -4795,8 +4664,8 @@ Color=White [PartyPlayerPlayer8Name] Tex=Button -X=300 -Y=330 +X=280 +Y=430 W=250 H=70 Type=Font Black @@ -4818,8 +4687,8 @@ Color=White [PartyPlayerTeam3Name] Tex=Button -X=25 -Y=360 +X=550 +Y=100 W=250 H=70 Type=Font Black @@ -4841,8 +4710,8 @@ Color=White [PartyPlayerPlayer9Name] Tex=Button -X=25 -Y=400 +X=550 +Y=190 W=250 H=70 Type=Font Black @@ -4864,8 +4733,8 @@ Color=White [PartyPlayerPlayer10Name] Tex=Button -X=25 -Y=460 +X=550 +Y=270 W=250 H=70 Type=Font Black @@ -4887,8 +4756,8 @@ Color=White [PartyPlayerPlayer11Name] Tex=Button -X=25 -Y=500 +X=550 +Y=350 W=250 H=70 Type=Font Black @@ -4910,8 +4779,8 @@ Color=White [PartyPlayerPlayer12Name] Tex=Button -X=25 -Y=540 +X=550 +Y=430 W=250 H=70 Type=Font Black @@ -4932,13 +4801,14 @@ Text=Player 12 Color=White [PartyPlayerText1] -X=30 -Y=180 +X=10 +Y=5 Font=1 -Size=22 +Size=18 Align=0 Text=PARTY_SELECT_PLAYER -Color=GrayLight +Color=White + [SongMenu] Texts=0 -- cgit v1.2.3 From e6917faa19aebfa6d089b24c65e4c7fe4bd6b503 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 13 Apr 2007 11:25:13 +0000 Subject: Added Reflection to ThemeStatic Added Attribut ReflectionSpacing git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@83 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 15 +++++++++++++- Game/Code/Menu/UMenu.pas | 24 +++++++++++++-------- Game/Code/Menu/UMenuButton.pas | 9 ++++---- Game/Code/Menu/UMenuStatic.pas | 47 ++++++++++++++++++++++++++++++++++++++++++ Game/Code/UltraStar.dpr | 2 +- 5 files changed, 82 insertions(+), 15 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index d7adb61a..51b454ca 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -91,6 +91,9 @@ type TexY1: real; TexX2: real; TexY2: real; + //Reflection Mod + Reflection: boolean; + Reflectionspacing: Real; end; AThemeStatic = array of TThemeStatic; @@ -129,7 +132,8 @@ type Tex: string; Typ: string; //Reflection Mod - Reflection: Boolean; + Reflection: boolean; + Reflectionspacing: Real; end; TThemeSelect = record @@ -181,6 +185,8 @@ type end; TThemeLoading = class(TThemeBasic) + StaticAnimation: TThemeStatic; + TextLoading: TThemeText; end; TThemeMain = class(TThemeBasic) @@ -749,6 +755,8 @@ begin // Loading ThemeLoadBasic(Loading, 'Loading'); + ThemeLoadText(Loading.TextLoading, 'LoadingTextLoading'); + ThemeLoadStatic(Loading.StaticAnimation, 'LoadingStaticAnimation'); // Main ThemeLoadBasic(Main, 'Main'); @@ -1284,6 +1292,10 @@ begin ThemeStatic.TexX2 := ThemeIni.ReadFloat(Name, 'TexX2', 1); ThemeStatic.TexY2 := ThemeIni.ReadFloat(Name, 'TexY2', 1); + //Reflection Mod + ThemeStatic.Reflection := (ThemeIni.ReadInteger(Name, 'Reflection', 0) = 1); + ThemeStatic.ReflectionSpacing := ThemeIni.ReadFloat(Name, 'ReflectionSpacing', 15); + DecimalSeparator := ','; end; @@ -1317,6 +1329,7 @@ begin //Reflection Mod ThemeButton.Reflection := (ThemeIni.ReadInteger(Name, 'Reflection', 0) = 1); + ThemeButton.ReflectionSpacing := ThemeIni.ReadFloat(Name, 'ReflectionSpacing', 15); ThemeButton.ColR := ThemeIni.ReadFloat(Name, 'ColR', 1); ThemeButton.ColG := ThemeIni.ReadFloat(Name, 'ColG', 1); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index 45a25cb7..7908d980 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -13,7 +13,6 @@ type protected Interactions: array of TInteract; SelInteraction: integer; - Static: array of TStatic; Button: array of TButton; Selects: array of TSelect; SelectsS: array of TSelectSlide; @@ -22,6 +21,7 @@ type BackH: integer; public Text: array of TText; + Static: array of TStatic; mX: integer; // mouse X mY: integer; // mouse Y @@ -50,7 +50,7 @@ type function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string): integer; overload; function AddStatic(X, Y, W, H: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; overload; function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; overload; - function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Name, Format, Typ: string; Color: integer): integer; overload; + function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Name, Format, Typ: string; Color: integer; Reflection: Boolean; ReflectionSpacing: Real): integer; overload; // text function AddText(ThemeText: TThemeText): integer; overload; @@ -62,7 +62,7 @@ type 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; - function AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean): integer; overload; + function AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean; ReflectionSpacing: Real): integer; overload; procedure ClearButtons; procedure AddButtonText(AddX, AddY: real; AddText: string); overload; procedure AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; AddText: string); overload; @@ -232,7 +232,7 @@ begin ThemeStatic.ColR, ThemeStatic.ColG, ThemeStatic.ColB, ThemeStatic.TexX1, ThemeStatic.TexY1, ThemeStatic.TexX2, ThemeStatic.TexY2, {<0.5.1: Skin.SkinPath + ThemeStatic.Tex, 0.5.1:} Skin.GetTextureFileName(ThemeStatic.Tex), - 'JPG', ThemeStatic.Typ, $FFFFFF); + 'JPG', ThemeStatic.Typ, $FFFFFF, ThemeStatic.Reflection, ThemeStatic.Reflectionspacing); //'Font Black'); end; @@ -284,11 +284,11 @@ end; function TMenu.AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; Name, Format, Typ: string; Color: integer): integer; begin - Result := AddStatic(X, Y, W, H, Z, ColR, ColG, ColB, 0, 0, 1, 1, Name, Format, Typ, Color); + Result := AddStatic(X, Y, W, H, Z, ColR, ColG, ColB, 0, 0, 1, 1, Name, Format, Typ, Color, False, 0); // end; -function TMenu.AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Name, Format, Typ: string; Color: integer): integer; +function TMenu.AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Name, Format, Typ: string; Color: integer; Reflection: Boolean; ReflectionSpacing: Real): integer; var StatNum: integer; begin @@ -315,6 +315,11 @@ Static[StatNum] := TStatic.Create(Texture.LoadTexture(PChar(Name), PChar(Format) Static[StatNum].Texture.TexY2 := TexY2; Static[StatNum].Texture.Alpha := 1; Static[StatNum].Visible := true; + + //ReflectionMod + Static[StatNum].Reflection := Reflection; + Static[StatNum].ReflectionSpacing := ReflectionSpacing; + Result := StatNum; end; @@ -367,7 +372,7 @@ begin Result := AddButton(ThemeButton.X, ThemeButton.Y, ThemeButton.W, ThemeButton.H, ThemeButton.ColR, ThemeButton.ColG, ThemeButton.ColB, ThemeButton.Int, ThemeButton.DColR, ThemeButton.DColG, ThemeButton.DColB, ThemeButton.DInt, - Skin.GetTextureFileName(ThemeButton.Tex), 'JPG', ThemeButton.Typ, ThemeButton.Reflection); + Skin.GetTextureFileName(ThemeButton.Tex), 'JPG', ThemeButton.Typ, ThemeButton.Reflection, ThemeButton.Reflectionspacing); Button[Result].Z := ThemeButton.Z; @@ -388,10 +393,10 @@ end; function TMenu.AddButton(X, Y, W, H: real; Name, Format, Typ: String; Reflection: Boolean): integer; begin - Result := AddButton(X, Y, W, H, 1, 1, 1, 1, 1, 1, 1, 0.5, Name, 'JPG', 'Plain', Reflection); + Result := AddButton(X, Y, W, H, 1, 1, 1, 1, 1, 1, 1, 0.5, Name, 'JPG', 'Plain', Reflection, 15); end; -function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean): integer; +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); @@ -425,6 +430,7 @@ begin Button[Result].SetSelect(false); Button[Result].Reflection := Reflection; + Button[Result].Reflectionspacing := ReflectionSpacing; // adds interaction AddInteraction(iButton, Result); diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index e42a5488..f4f8e1a8 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -19,6 +19,7 @@ type Visible: boolean; //Reflection Mod Reflection: boolean; + Reflectionspacing: Real; Selectable: boolean; @@ -190,23 +191,23 @@ begin glBegin(GL_QUADS);//Top Left glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); glTexCoord2f(TexX1*TexW, TexY2*TexH); - glVertex3f(x, y+h*scaleH+ 15, z); + glVertex3f(x, y+h*scaleH+ Reflectionspacing, z); //Bottom Left glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); glTexCoord2f(TexX1*TexW, {TexY1*TexH*}0.5); - glVertex3f(x, y+h*scaleH + h*scaleH/2 + 15, z); + glVertex3f(x, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); //Bottom Right glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); glTexCoord2f(TexX2*TexW, {TexY1*TexH*}0.5); - glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + 15, z); + glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); //Top Right glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); glTexCoord2f(TexX2*TexW, TexY2*TexH); - glVertex3f(x+w*scaleW, y+h*scaleH + 15, z); + glVertex3f(x+w*scaleW, y+h*scaleH + Reflectionspacing, z); glEnd; end; end; diff --git a/Game/Code/Menu/UMenuStatic.pas b/Game/Code/Menu/UMenuStatic.pas index 4b10e54c..c19e6abc 100644 --- a/Game/Code/Menu/UMenuStatic.pas +++ b/Game/Code/Menu/UMenuStatic.pas @@ -8,6 +8,11 @@ type public Texture: TTexture; // Button Screen position and size Visible: boolean; + + //Reflection Mod + Reflection: boolean; + Reflectionspacing: Real; + procedure Draw; constructor Create(Textura: TTexture); overload; end; @@ -21,6 +26,48 @@ var begin if Visible then DrawTexture(Texture); + + //Reflection Mod + if (Reflection) then // Draw Reflections + begin + with Texture do + begin + //Bind Tex and GL Attributes + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glDepthRange(0, 10); + glDepthFunc(GL_LEQUAL); + //glDepthFunc(GL_GEQUAL); + glEnable(GL_DEPTH_TEST); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + //glBlendFunc(GL_SRC_COLOR, GL_ZERO); + glBindTexture(GL_TEXTURE_2D, TexNum); + + //Draw + glBegin(GL_QUADS);//Top Left + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); + glTexCoord2f(TexX1*TexW, TexY2*TexH); + glVertex3f(x, y+h*scaleH+ Reflectionspacing, z); + + //Bottom Left + glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); + glTexCoord2f(TexX1*TexW, {TexY1*TexH*}0.5); + glVertex3f(x, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); + + + //Bottom Right + glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); + glTexCoord2f(TexX2*TexW, {TexY1*TexH*}0.5); + glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); + + //Top Right + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); + glTexCoord2f(TexX2*TexW, TexY2*TexH); + glVertex3f(x+w*scaleW, y+h*scaleH + Reflectionspacing, z); + glEnd; + end; + end; + end; constructor TStatic.Create(Textura: TTexture); diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index f36f9a26..fc1fa8a2 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -103,7 +103,7 @@ uses const - Version = 'UltraStar Deluxe V 0.90 Beta'; + Version = 'UltraStar Deluxe V 0.95 Beta'; var WndTitle: string; -- cgit v1.2.3 From b8722c611ffaabde301f3134c1c8d76e64e3b02f Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 13 Apr 2007 12:10:49 +0000 Subject: Fixed Bug in Reflection Code that Causes wrong Depth Test when drawing Text git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@84 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuButton.pas | 8 ++++++-- Game/Code/Menu/UMenuStatic.pas | 15 ++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index f4f8e1a8..3a871c5f 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -179,12 +179,12 @@ begin //Bind Tex and GL Attributes glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); + glDepthRange(0, 10); glDepthFunc(GL_LEQUAL); - //glDepthFunc(GL_GEQUAL); glEnable(GL_DEPTH_TEST); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //glBlendFunc(GL_SRC_COLOR, GL_ZERO); glBindTexture(GL_TEXTURE_2D, TexNum); //Draw @@ -209,6 +209,10 @@ begin glTexCoord2f(TexX2*TexW, TexY2*TexH); glVertex3f(x+w*scaleW, y+h*scaleH + Reflectionspacing, z); glEnd; + + glDisable(GL_TEXTURE_2D); + glDisable(GL_DEPTH_TEST); + glDisable(GL_BLEND); end; end; diff --git a/Game/Code/Menu/UMenuStatic.pas b/Game/Code/Menu/UMenuStatic.pas index c19e6abc..2a5e1e93 100644 --- a/Game/Code/Menu/UMenuStatic.pas +++ b/Game/Code/Menu/UMenuStatic.pas @@ -25,6 +25,7 @@ var Pet: integer; begin if Visible then + begin DrawTexture(Texture); //Reflection Mod @@ -35,12 +36,12 @@ begin //Bind Tex and GL Attributes glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); + glDepthRange(0, 10); glDepthFunc(GL_LEQUAL); - //glDepthFunc(GL_GEQUAL); glEnable(GL_DEPTH_TEST); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //glBlendFunc(GL_SRC_COLOR, GL_ZERO); glBindTexture(GL_TEXTURE_2D, TexNum); //Draw @@ -51,13 +52,13 @@ begin //Bottom Left glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); - glTexCoord2f(TexX1*TexW, {TexY1*TexH*}0.5); + glTexCoord2f(TexX1*TexW, 0.5); glVertex3f(x, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); //Bottom Right glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); - glTexCoord2f(TexX2*TexW, {TexY1*TexH*}0.5); + glTexCoord2f(TexX2*TexW, 0.5); glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); //Top Right @@ -65,9 +66,13 @@ begin glTexCoord2f(TexX2*TexW, TexY2*TexH); glVertex3f(x+w*scaleW, y+h*scaleH + Reflectionspacing, z); glEnd; + + glDisable(GL_TEXTURE_2D); + glDisable(GL_DEPTH_TEST); + glDisable(GL_BLEND); end; end; - + end; end; constructor TStatic.Create(Textura: TTexture); -- cgit v1.2.3 From 0d4f50f6a2ba32a0176d768646208dbec3136084 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 13 Apr 2007 16:28:45 +0000 Subject: Fixed some Bugs in Skipto and Random Methods Now the last Song of a Category could be the Result of Randomize when there is an odd number of Songs. Also a little bit better Random Results git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@85 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index e873d287..7ea5d268 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -66,7 +66,7 @@ type procedure SelectNext; procedure SelectPrev; procedure UpdateLCD; - procedure SkipTo(Target: integer); + procedure SkipTo(Target: Cardinal); procedure FixSelected; //Show Wrong Song when Tabs on Fix procedure FixSelected2; //Show Wrong Song when Tabs on Fix procedure ShowCatTL(Cat: Integer);// Show Cat in Top left @@ -208,7 +208,7 @@ begin begin if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND (UpCase(CatSongs.Song[(I + Interaction) mod I2].Title[1]) = Letter) then begin - SkipTo(2 + CatSongs.VisibleIndex((I + Interaction) mod I2)); + SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); Music.PlayChange; @@ -521,7 +521,7 @@ begin SelectNext; //Fix: Not Existing Song selected: - if (I+1=I2) then Inc(I2); + //if (I+1=I2) then Inc(I2); //Choose Song SkipTo(I2-I); @@ -529,7 +529,7 @@ begin end else //Random in one Category begin - SkipTo(2+Random(CatSongs.VisibleSongs-1)); + SkipTo(Random(CatSongs.VisibleSongs)); end; Music.PlayChange; @@ -1324,7 +1324,7 @@ begin Music.Stop; end; -procedure TScreenSong.SkipTo(Target: integer); // 0.5.0 +procedure TScreenSong.SkipTo(Target: Cardinal); // 0.5.0 var Skip: integer; I: integer; @@ -1339,7 +1339,7 @@ begin Interaction := 0; SongTarget := 0; - for I := 2 to Target do + for I := 1 to Target+1 do SelectNext; FixSelected2; @@ -1481,7 +1481,7 @@ begin SelectNext; //Fix: Not Existing Song selected: - if (I+1=I2) then Inc(I2); + //if (I+1=I2) then Inc(I2); //Choose Song SkipTo(I2-I); @@ -1495,7 +1495,7 @@ begin SelectNext; FixSelected; - SkipTo(2+Random(CatSongs.VisibleSongs-1)); + SkipTo(Random(CatSongs.VisibleSongs)); Music.PlayChange; ChangeMusic; SetScroll4; @@ -1505,7 +1505,7 @@ begin begin PlaylistMan.SetPlayList(PlaylistMan.CurPlayList); - SkipTo(2+Random(CatSongs.VisibleSongs-1)); + SkipTo(Random(CatSongs.VisibleSongs)); Music.PlayChange; ChangeMusic; SetScroll4; -- cgit v1.2.3 From b1e40ba133782a3d36ec78d4cf9c0245b88448d1 Mon Sep 17 00:00:00 2001 From: b1indy Date: Fri, 13 Apr 2007 22:17:48 +0000 Subject: implemented fading between screens (needs to be tested), minor tweaking of perfect-line effect position, added myself to credits ;) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@86 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphicClasses.pas | 6 +- Game/Code/Menu/UDisplay.pas | 209 ++++++++++++++-------------------- Game/Code/Screens/UScreenMain.pas | 5 +- 3 files changed, 93 insertions(+), 127 deletions(-) diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index acc26e96..e1cd8aff 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -538,18 +538,18 @@ begin // calculate area where notes of this player are drawn case PlayersPlay of 1: begin - Bottom:=Skin_P2_NotesB; + Bottom:=Skin_P2_NotesB+10; Top:=Bottom-105; cScreen:=1; end; 2,4: begin case P of 0,2: begin - Bottom:=Skin_P1_NotesB; + Bottom:=Skin_P1_NotesB+10; Top:=Bottom-105; end; else begin - Bottom:=Skin_P2_NotesB; + Bottom:=Skin_P2_NotesB+10; Top:=Bottom-105; end; end; diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 6d0443cc..d7439dc9 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -2,7 +2,7 @@ unit UDisplay; interface -uses Windows, SDL, UMenu, OpenGL12, SysUtils; +uses Windows, SDL, UMenu, OpenGL12, SysUtils, dialogs; type TDisplay = class @@ -12,13 +12,19 @@ type h_DC: HDC; h_RC: HGLRC; -// FadeType: integer; - FadeTex: glUInt; - LastFade: real; - Fade: real; + Fade: Real; + // fade-mod + myfade: integer; + pTexData : Pointer; + pTex : glUInt; + // end + function Draw: Boolean; procedure PrintScreen; constructor Create; + // fade mod + destructor Destroy; + // end procedure ScreenShot; end; @@ -34,23 +40,42 @@ uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture; constructor TDisplay.Create; begin inherited Create; -// FadeType := 0; - Fade := 0; + // fade mod + myfade:=0; + // generate texture for fading between screens + GetMem(pTexData, 1024*1024*4); + glGenTextures(1, pTex); + glBindTexture(GL_TEXTURE_2D, pTex); + + glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + FreeMem(pTexData); + // end +end; + +// fade mod +destructor TDisplay.Destroy; +begin + glDeleteTextures(1,@pTex); + inherited Destroy; end; +// end function TDisplay.Draw: Boolean; var S: integer; - Col: real; - Surface: PSDL_Surface; + // fade mod + myfade2:integer; + // end begin Result := True; - Col := 1; +{ Col := 1; if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then - Col := 0; + Col := 0;} - glClearColor(Col, Col, Col , 1); + glClearColor(0, 0, 0 , 0); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); for S := 1 to Screens do begin @@ -62,125 +87,63 @@ begin ScreenX := 0; - if S = 2 then TimeSkip := 0; // it's easier than rewriting code + if S = 2 then TimeSkip := 0 else; // it's easier than rewriting code glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); - ActualScreen.SetAnimationProgress(1); - if not assigned (NextScreen) then Result := ActualScreen.Draw +// ActualScreen.SetAnimationProgress(1); + if not assigned (NextScreen) then begin + Result := ActualScreen.Draw; + // fade mod + myfade:=0; + // end + end else begin - LastFade := Fade; - Fade := Fade + TimeSkip * 6; // * 4 - - {//Create Fading texture - if Fade = 0 then - begin - Surface := SDL_GetVideoSurface; - glGenTextures(1, FadeTex); - - glBindTexture(GL_TEXTURE_2D, FadeTex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glPixelStorei(GL_UNPACK_ROW_LENGTH, Surface.pitch div Surface.format.BytesPerPixel); - glTexImage2D(GL_TEXTURE_2D, 0, 3, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, Surface.pixels); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - end;} - - ActualScreen.ShowFinish := false; - - //Fade = 2 (Belnding) Mod - if (FadeTex > 0) then + // fade mod + //Create Fading texture if we're just starting + if myfade = 0 then begin - ActualScreen.SetAnimationProgress(Fade-1); ActualScreen.Draw; - glBindTexture(GL_TEXTURE_2D, FadeTex); - glColor4f(Col, Col, Col, 1-Fade); // 0 - glEnable(GL_BLEND); - glBegin(GL_QUADS); - glVertex2f(0, 0); - glVertex2f(0, 600); - glVertex2f(800, 600); - glVertex2f(800, 0); - glEnd; - glDisable(GL_BLEND); - end - else - begin - case ActualScreen.Fade of - 0: begin - if Fade < 1 then begin - ActualScreen.SetAnimationProgress(1-Fade); - ActualScreen.Draw; - glColor4f(Col, Col, Col, Fade); // 0 - end else begin - ActualScreen.SetAnimationProgress(Fade-1); - ActualScreen.Draw; - glColor4f(Col, Col, Col, 1-Fade); // 0 - end; - glEnable(GL_BLEND); - glBegin(GL_QUADS); - glVertex2f(0, 0); - glVertex2f(0, 600); - glVertex2f(800, 600); - glVertex2f(800, 0); - glEnd; - glDisable(GL_BLEND); - end; - 2: begin - if Fade < 1 then begin - ActualScreen.SetAnimationProgress(1-Fade); - ActualScreen.Draw; - //glColor4f(Col, Col, Col, Fade); // 0 - glColor4f(1, 1, 1, 1); // 0 - //Fade := 1 - end; - glEnable(GL_BLEND); - glBegin(GL_QUADS); - glVertex2f(0, 0); - glVertex2f(0, 600); - glVertex2f(800, 600); - glVertex2f(800, 0); - glEnd; - glDisable(GL_BLEND); - end; - end; // case + glBindTexture(GL_TEXTURE_2D, pTex); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1024, 1024, 0); + NextScreen.onShow; end; - if (LastFade < 1 ) and (Fade >= 1) then begin - if (ActualScreen.Fade = 2) then - begin - ScreenShot; - //Create Fading Texture - Surface := SDL_GetVideoSurface; - glGenTextures(1, FadeTex); - - glBindTexture(GL_TEXTURE_2D, FadeTex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glPixelStorei(GL_UNPACK_ROW_LENGTH, Surface.pitch div Surface.format.BytesPerPixel); - glTexImage2D(GL_TEXTURE_2D, 0, 3, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, Surface.pixels); - glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - end; - - // pokazuje 2 ekran, ale nie kasuje informacji o NextScreen - ActualScreen.onHide; - ActualScreen := NextScreen; - ActualScreen.onShow; - end; - - if Fade >= 2 then begin - if (FadeTex > 0) then //Delete Fade Tex - begin - glDeleteTextures(1, @FadeTex); - FadeTex := 0; - end; - - // koniec fade'a - ActualScreen := NextScreen; +// LastFade := Fade; // whatever +// Fade := Fade -0.999; // start fading out + myfade:=myfade+1; + +// ActualScreen.ShowFinish := false; // no purpose? + +// ActualScreen.SetAnimationProgress(Fade-1); // nop? + + NextScreen.Draw; // draw next screen + + // and draw old screen over it... slowly fading out + myfade2:=myfade*myfade; + glBindTexture(GL_TEXTURE_2D, pTex); + glColor4f(1, 1, 1, (1000-myfade2)/1000); // strange calculation - alpha gets negative... but looks good this way + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glTexCoord2f(0,0);glVertex2f(0-myfade2, 600+myfade2); + glTexCoord2f(0,ScreenH/1024);glVertex2f(0-myfade2, 0-myfade2); + glTexCoord2f(ScreenW/1024,ScreenH/1024);glVertex2f(800+myfade2, 0-myfade2); + glTexCoord2f(ScreenW/1024,0);glVertex2f(800+myfade2, 600+myfade2); + glEnd; + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + end; + + if myfade > 50 then begin // fade out complete... + myfade:=0; + ActualScreen.onHide; // nop... whatever + ActualScreen.ShowFinish:=False; + ActualScreen:=NextScreen; NextScreen := nil; - ActualScreen.onShowFinish; - ActualScreen.ShowFinish := true; - end; + ActualScreen.onShowFinish; // one more nop... + ActualScreen.ShowFinish := true; // who wrote this crap? + // end of fade mod end; // if end; // for // SwapBuffers(h_DC); diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 43034912..70916437 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -29,7 +29,7 @@ type function Draw: boolean; override; end; -const Credits_Text: Array[0..46] of PChar = ( +const Credits_Text: Array[0..49] of PChar = ( ':SPACE:', 'Main Idea: Corvus 5', 'Thank you very much for this great Game', @@ -48,6 +48,9 @@ const Credits_Text: Array[0..46] of PChar = ( 'Mog:', 'Programming, Graphics', ':SPACE:', + 'blindy:', + 'VFX Programming', + ':SPACE:', 'Mota:', 'Programming, Idea of creating this Mod', ':SPACE:', -- cgit v1.2.3 From 12eb3f055c7c75dbfeb168d5c38f87a901a6ab89 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 14 Apr 2007 10:03:18 +0000 Subject: Fixed a bug that causes Perfect Line twinkles to spawn at each Line when LineBonus is deactivated. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@87 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSing.pas | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index e3b7c7ad..e4fd7add 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1084,12 +1084,12 @@ begin //PhrasenBonus - Line Bonus Mod + //Generate Steps 0 to 8 + A := Floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 8); + If (Ini.LineBonus > 0) then begin - //Generate Steps 0 to 8 - A := Floor(A / (B * Czesci[0].Czesc[S].TotalNotes / Czesci[0].Wartosc) * 8); - //Generate Text if A >= 8 then Player[I].LineBonus_Text := Theme.Sing.LineBonusText[8] @@ -1111,21 +1111,21 @@ begin Player[I].LineBonus_PosY := Player[I].LineBonus_StartY; Player[I].LineBonus_Alpha := 0.92; Player[I].LineBonus_Visible := True; + end; + //PhrasenBonus - Line Bonus Mod End// } - - + //PerfectLineTwinkle Mod (effect) Pt.1 + If (Ini.EffectPerfect>=1) then + begin + if A >= 8 then Player[I].LastSentencePerfect := True + else Player[I].LastSentencePerfect := False; end; + //PerfectLineTwinkle Mod end //Refresh LastScore Player[I].ScoreLast := Player[I].Score + Player[I].ScoreGolden; - //PerfectLineTwinkle Mod (effect) Pt.1 - if A >= 8 then Player[I].LastSentencePerfect := True - else Player[I].LastSentencePerfect := False; - //PerfectLineTwinkle Mod end - end; -//PhrasenBonus - Line Bonus Mod End// } //PerfectLineTwinkle Mod (effect) Pt.2 GoldenRec.SpawnPerfectLineTwinkle; @@ -1138,7 +1138,6 @@ begin //GoldenStarsTwinkle Mod GoldenRec.SentenceChange; //GoldenStarsTwinkle Mod End - end; end. -- cgit v1.2.3 From b627232ec93e4cb32790ddf30e3d27e7a2775cbb Mon Sep 17 00:00:00 2001 From: b1indy Date: Sat, 14 Apr 2007 14:30:37 +0000 Subject: added some error checking to screen-fade-effect, restored proper order of credits git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@88 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 114 ++++++++++++++++++++++++-------------- Game/Code/Screens/UScreenMain.pas | 6 +- 2 files changed, 76 insertions(+), 44 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index d7439dc9..876fb6b6 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -14,7 +14,9 @@ type Fade: Real; // fade-mod - myfade: integer; + doFade: Boolean; + myFade: integer; + lastTime: Cardinal; pTexData : Pointer; pTex : glUInt; // end @@ -42,22 +44,36 @@ begin inherited Create; // fade mod myfade:=0; + doFade:=True; // generate texture for fading between screens GetMem(pTexData, 1024*1024*4); - glGenTextures(1, pTex); - glBindTexture(GL_TEXTURE_2D, pTex); - - glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - FreeMem(pTexData); + if pTexData <> NIL then + begin + glGenTextures(1, pTex); + if glGetError <> GL_NO_ERROR then doFade := False; + glBindTexture(GL_TEXTURE_2D, pTex); + if glGetError <> GL_NO_ERROR then doFade := False; + glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData); + if glGetError <> GL_NO_ERROR then doFade := False; + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + if glGetError <> GL_NO_ERROR then doFade := False; + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + if glGetError <> GL_NO_ERROR then doFade := False; + FreeMem(pTexData); + end + else + begin + doFade:=False; + end; + if not doFade then showmessage('Fehler beim Initialisieren der Fading-Textur... Fading deaktiviert'); // end end; // fade mod destructor TDisplay.Destroy; begin - glDeleteTextures(1,@pTex); + if doFade then + glDeleteTextures(1,@pTex); inherited Destroy; end; // end @@ -66,7 +82,8 @@ function TDisplay.Draw: Boolean; var S: integer; // fade mod - myfade2:integer; + myFade2:integer; + currentTime: Cardinal; // end begin Result := True; @@ -97,53 +114,68 @@ begin myfade:=0; // end end - else begin - // fade mod - //Create Fading texture if we're just starting - if myfade = 0 then + else + begin + if doFade then begin - ActualScreen.Draw; - glBindTexture(GL_TEXTURE_2D, pTex); - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1024, 1024, 0); - NextScreen.onShow; - end; - + // fade mod + //Create Fading texture if we're just starting + if myfade = 0 then + begin + ActualScreen.Draw; + glBindTexture(GL_TEXTURE_2D, pTex); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1024, 1024, 0); + if glGetError <> GL_NO_ERROR then + begin + doFade := False; + showmessage('Fehler beim Kopieren der Fade-Textur... Fading deaktiviert'); + end; + NextScreen.onShow; + lastTime:=GetTickCount; + myfade:=myfade+1; + end; + currentTime:=GetTickCount; + if currentTime > lastTime+30 then + begin + myfade:=myfade+4; + lastTime:=currentTime; + end; // LastFade := Fade; // whatever // Fade := Fade -0.999; // start fading out - myfade:=myfade+1; + // ActualScreen.ShowFinish := false; // no purpose? // ActualScreen.SetAnimationProgress(Fade-1); // nop? - NextScreen.Draw; // draw next screen + NextScreen.Draw; // draw next screen // and draw old screen over it... slowly fading out - myfade2:=myfade*myfade; - glBindTexture(GL_TEXTURE_2D, pTex); - glColor4f(1, 1, 1, (1000-myfade2)/1000); // strange calculation - alpha gets negative... but looks good this way - glEnable(GL_TEXTURE_2D); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glBegin(GL_QUADS); - glTexCoord2f(0,0);glVertex2f(0-myfade2, 600+myfade2); - glTexCoord2f(0,ScreenH/1024);glVertex2f(0-myfade2, 0-myfade2); - glTexCoord2f(ScreenW/1024,ScreenH/1024);glVertex2f(800+myfade2, 0-myfade2); - glTexCoord2f(ScreenW/1024,0);glVertex2f(800+myfade2, 600+myfade2); - glEnd; - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_2D); - end; - - if myfade > 50 then begin // fade out complete... - myfade:=0; + myfade2:=myfade*myfade; + glBindTexture(GL_TEXTURE_2D, pTex); + glColor4f(1, 1, 1, (1000-myfade2)/1000); // strange calculation - alpha gets negative... but looks good this way + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glTexCoord2f(0,0);glVertex2f(0-myfade2, 600+myfade2); + glTexCoord2f(0,ScreenH/1024);glVertex2f(0-myfade2, 0-myfade2); + glTexCoord2f(ScreenW/1024,ScreenH/1024);glVertex2f(800+myfade2, 0-myfade2); + glTexCoord2f(ScreenW/1024,0);glVertex2f(800+myfade2, 600+myfade2); + glEnd; + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + end; + if (myfade > 40) or (not doFade) then begin // fade out complete... + myFade:=0; ActualScreen.onHide; // nop... whatever ActualScreen.ShowFinish:=False; ActualScreen:=NextScreen; NextScreen := nil; ActualScreen.onShowFinish; // one more nop... ActualScreen.ShowFinish := true; // who wrote this crap? - // end of fade mod + // end of fade mod + end; end; // if end; // for // SwapBuffers(h_DC); diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 70916437..5849341c 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -36,6 +36,9 @@ const Credits_Text: Array[0..49] of PChar = ( ':SPACE:', 'The Ultrastar Deluxe Team:', ':SPACE:', + 'blindy:', + 'VFX Programming', + ':SPACE:', 'commandi00:', 'Beta Testing', ':SPACE:', @@ -48,9 +51,6 @@ const Credits_Text: Array[0..49] of PChar = ( 'Mog:', 'Programming, Graphics', ':SPACE:', - 'blindy:', - 'VFX Programming', - ':SPACE:', 'Mota:', 'Programming, Idea of creating this Mod', ':SPACE:', -- cgit v1.2.3 From 1fcd567446dce6e5e02d802e26cf38a538092cf3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 14 Apr 2007 16:54:30 +0000 Subject: Did Some Code Cleanup Fixed some Bugs in Party Mode Added a Better Round Plugin Selection git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@89 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UParty.pas | 120 ++++++++++++++++++++++++++---- Game/Code/Screens/UScreenMain.pas | 61 +-------------- Game/Code/Screens/UScreenPartyOptions.pas | 23 ++---- Game/Code/Screens/UScreenPartyPlayer.pas | 4 - 4 files changed, 114 insertions(+), 94 deletions(-) diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas index da89ca8a..f5834dd8 100644 --- a/Game/Code/Classes/UParty.pas +++ b/Game/Code/Classes/UParty.pas @@ -22,7 +22,7 @@ type constructor Create; - procedure StartNewParty; + procedure StartNewParty(NumRounds: Byte); procedure StartRound; procedure EndRound; function GetWinner: Byte; @@ -47,14 +47,98 @@ end; //---------- //StartNewParty - Clears the Class and Prepares for new Party //---------- -procedure TParty_Session.StartNewParty; +procedure TParty_Session.StartNewParty(NumRounds: Byte); +var + Plugins: Array of record + ID: Byte; + TimesPlayed: Byte; + end; + TeamMode: Boolean; + Len: Integer; + I: Integer; + + function GetRandomPlugin: Byte; + var + LowestTP: Byte; + NumPwithLTP: Word; + I: Integer; + R: Word; + begin + LowestTP := high(Byte); + NumPwithLTP := 0; + + //Search for Plugins not often played yet + For I := 0 to high(Plugins) do + begin + if (Plugins[I].TimesPlayed < lowestTP) then + begin + lowestTP := Plugins[I].TimesPlayed; + NumPwithLTP := 1; + end + else if (Plugins[I].TimesPlayed = lowestTP) then + begin + Inc(NumPwithLTP); + end; + end; + + //Create Random No + R := Random(NumPwithLTP); + + //Search for Random Plugin + For I := 0 to high(Plugins) do + begin + if Plugins[I].TimesPlayed = lowestTP then + begin + //Plugin Found + if (R = 0) then + begin + Result := Plugins[I].ID; + Inc(Plugins[I].TimesPlayed); + Break; + end; + + Dec(R); + end; + end; + end; begin -//Set cur Round to Round 1 -CurRound := 255; + //Set cur Round to Round 1 + CurRound := 255; + + PlayersPlay := Teams.NumTeams; -PlayersPlay := Teams.NumTeams; -if isWinner(0,9) then - Log.LogError('Test'); + TeamMode := True; + For I := 0 to Teams.NumTeams-1 do + if Teams.Teaminfo[I].NumPlayers < 2 then + begin + TeamMode := False; + Break; + end; + + //Fill Plugin Array + SetLength(Plugins, 0); + For I := 0 to high(DLLMan.Plugins) do + begin + if TeamMode or (Not DLLMan.Plugins[I].TeamModeOnly) then + begin //Add only Plugins Playable with cur. PlayerConfiguration + Len := Length(Plugins); + SetLength(Plugins, Len + 1); + Plugins[Len].ID := I; + Plugins[Len].TimesPlayed := 0; + end; + end; + + //Set Rounds + If (Length(Plugins) >= 1) then + begin + SetLength (Rounds, NumRounds); + For I := 0 to NumRounds-1 do + begin + PartySession.Rounds[I].Plugin := GetRandomPlugin; + PartySession.Rounds[I].Winner := 255; + end; + end + else SetLength (Rounds, 0); end; //---------- @@ -65,10 +149,10 @@ var I, J: Integer; lowestTP: Byte; begin - //Get lowest TP + //Get lowest TimesPlayed lowestTP := high(Byte); J := -1; - for I := 0 to Teams.Teaminfo[Team].NumPlayers do + for I := 0 to Teams.Teaminfo[Team].NumPlayers-1 do begin if (Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed < lowestTP) then begin @@ -86,7 +170,7 @@ begin repeat Result := Random(Teams.Teaminfo[Team].NumPlayers); until (Teams.Teaminfo[Team].Playerinfo[Result].TimesPlayed = lowestTP) - else //Else Select the one wth lowest TP + else //Else Select the one with lowest TP Result:= J; end; @@ -106,7 +190,7 @@ begin DllMan.LoadPlugin(Rounds[CurRound].Plugin); //Select Players - for I := 0 to Teams.NumTeams do + for I := 0 to Teams.NumTeams-1 do Teams.Teaminfo[I].CurPlayer := GetRandomPlayer(I); //Set ScreenSingModie Variables @@ -142,7 +226,7 @@ procedure TParty_Session.GenScores; var I: Byte; begin - for I := 0 to Teams.NumTeams do + for I := 0 to Teams.NumTeams-1 do begin if isWinner(I, Rounds[CurRound].Winner) then Inc(Teams.Teaminfo[I].Score); @@ -159,12 +243,18 @@ var begin if (Rounds[Round].Winner = 0) then begin - Result := 'Nobody'; + Result := Language.Translate('PARTY_NOBODY'); + exit; + end; + + if (Rounds[Round].Winner = 255) then + begin + Result := Language.Translate('PARTY_NOTPLAYEDYET'); exit; end; SetLength(Winners, 0); - for I := 0 to Teams.NumTeams do + for I := 0 to Teams.NumTeams-1 do begin if isWinner(I, Rounds[Round].Winner) then begin @@ -188,7 +278,7 @@ begin GenScores; //Increase TimesPlayed 4 all Players - For I := 0 to Teams.NumTeams do + For I := 0 to Teams.NumTeams-1 do Inc(Teams.Teaminfo[I].Playerinfo[Teams.Teaminfo[0].CurPlayer].TimesPlayed); end; diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 5849341c..976c0e07 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -128,65 +128,8 @@ begin end; SDLK_M: begin - if (SDL_ModState = KMOD_LALT) then - begin - //Create Teams: - PartySession.Teams.NumTeams := 3; - //Team 1 - PartySession.Teams.Teaminfo[0].Name := 'Team 1'; - PartySession.Teams.Teaminfo[0].Score:= 0; - PartySession.Teams.Teaminfo[0].Joker := 3; - PartySession.Teams.Teaminfo[0].CurPlayer := 0; - PartySession.Teams.Teaminfo[0].NumPlayers := 2; - PartySession.Teams.Teaminfo[0].Playerinfo[0].Name := 'Player 1'; - PartySession.Teams.Teaminfo[0].Playerinfo[0].TimesPlayed := 0; - PartySession.Teams.Teaminfo[0].Playerinfo[1].Name := 'Player 2'; - PartySession.Teams.Teaminfo[0].Playerinfo[1].TimesPlayed := 0; - - //Team 2 - PartySession.Teams.Teaminfo[1].Name := 'Team 2'; - PartySession.Teams.Teaminfo[1].Score:= 0; - PartySession.Teams.Teaminfo[1].Joker := 3; - PartySession.Teams.Teaminfo[1].CurPlayer := 0; - PartySession.Teams.Teaminfo[1].NumPlayers := 2; - PartySession.Teams.Teaminfo[1].Playerinfo[0].Name := 'Player 3'; - PartySession.Teams.Teaminfo[1].Playerinfo[0].TimesPlayed := 0; - PartySession.Teams.Teaminfo[1].Playerinfo[1].Name := 'Player 4'; - PartySession.Teams.Teaminfo[1].Playerinfo[1].TimesPlayed := 0; - - //Team 3 - PartySession.Teams.Teaminfo[2].Name := 'Team 3'; - PartySession.Teams.Teaminfo[2].Score:= 0; - PartySession.Teams.Teaminfo[2].Joker := 3; - PartySession.Teams.Teaminfo[2].CurPlayer := 0; - PartySession.Teams.Teaminfo[2].NumPlayers := 2; - PartySession.Teams.Teaminfo[2].Playerinfo[0].Name := 'Player 5'; - PartySession.Teams.Teaminfo[2].Playerinfo[0].TimesPlayed := 0; - PartySession.Teams.Teaminfo[2].Playerinfo[1].Name := 'Player 6'; - PartySession.Teams.Teaminfo[2].Playerinfo[1].TimesPlayed := 0; - - //Rounds: - SetLength (PartySession.Rounds, 3); - PartySession.Rounds[0].Plugin := 1; - PartySession.Rounds[0].Winner := 0; - PartySession.Rounds[1].Plugin := 0; - PartySession.Rounds[1].Winner := 0; - PartySession.Rounds[2].Plugin := 0; - PartySession.Rounds[2].Winner := 0; - - //Start Party - PartySession.StartNewParty; - //Change Screen - Music.PlayStart; - FadeTo(@ScreenPartyNewRound); - - end - else - begin - Music.PlayStart; - FadeTo(@ScreenPartyOptions); - end; - + Music.PlayStart; + FadeTo(@ScreenPartyOptions); end; SDLK_RETURN: diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index 042e944f..1fd4da8f 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -95,7 +95,6 @@ begin SDLK_RETURN: begin - //Save Difficulty Ini.Difficulty := SelectsS[SelectLevel].SelectedOption; Ini.SaveLevel; @@ -106,6 +105,7 @@ begin PartySession.Teams.Teaminfo[0].NumPlayers := NumPlayer1+1; PartySession.Teams.Teaminfo[1].NumPlayers := NumPlayer2+1; PartySession.Teams.Teaminfo[2].NumPlayers := NumPlayer3+1; + //Save Playlist PlaylistMan.Mode := Playlist; //If Category Selected Search Category ID @@ -126,13 +126,10 @@ begin end else PlaylistMan.CurPlayList := Playlist2; - //Save Rounds + Random - SetLength (PartySession.Rounds, Rounds + 2); - For I := 0 to high (PartySession.Rounds) do - begin - PartySession.Rounds[I].Plugin := Random (Length(DLLMan.Plugins)); - PartySession.Rounds[I].Winner := 0; - end; + + //Start Party + PartySession.StartNewParty(Rounds + 2); + Music.PlayStart; //Go to Player Screen FadeTo(@ScreenPartyPlayer); @@ -155,10 +152,7 @@ begin end //Change Team3 Players visibility Else If (Interaction = 4) then begin - Case NumTeams of - 0: SelectsS[7].Visible := False; - 1: SelectsS[7].Visible := True; - end; + SelectsS[7].Visible := (NumTeams = 1); end; end; SDLK_LEFT: @@ -173,10 +167,7 @@ begin end //Change Team3 Players visibility Else If (Interaction = 4) then begin - Case NumTeams of - 0: SelectsS[7].Visible := False; - 1: SelectsS[7].Visible := True; - end; + SelectsS[7].Visible := (NumTeams = 1); end; end; end; diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index 4fc43013..498514fb 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -87,10 +87,6 @@ begin PartySession.Teams.Teaminfo[I].Joker := Round (Length(PartySession.Rounds) * 0.85); end; - - //Start Party - PartySession.StartNewParty; - Music.PlayStart; FadeTo(@ScreenPartyNewRound); end; -- cgit v1.2.3 From d306e0e69b740b3f9da01c676ed89f009d725ff5 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sat, 14 Apr 2007 20:18:30 +0000 Subject: Theme/Skin: Huge cleanup (still not finished), score screen almost done (1P done), used new reflection possibility for menu bar git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@90 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/MainBG_W&C.jpg | Bin 169028 -> 0 bytes Skins/Deluxe/Note Star.jpg | Bin 22332 -> 0 bytes Skins/Deluxe/NotePerfectStar.jpg | Bin 27633 -> 0 bytes Skins/Deluxe/Score Level Round.jpg | Bin 616 -> 19455 bytes Skins/Deluxe/Score Level.jpg | Bin 1245 -> 1264 bytes Skins/Deluxe/Song Selection1.jpg | Bin 26572 -> 0 bytes Skins/Deluxe/Song Selection2.jpg | Bin 1031 -> 0 bytes Skins/Deluxe/SongMenuBG.jpg | Bin 5287 -> 0 bytes Skins/Deluxe/W&C.ini | 67 +-- Skins/Deluxe/W&C.jpg | Bin 169028 -> 0 bytes Skins/Deluxe/[bg-load]summer.jpg | Bin 0 -> 90358 bytes Skins/Deluxe/[bg-main]summer.jpg | Bin 0 -> 65991 bytes Skins/Deluxe/[effect]goldenNoteStar.jpg | Bin 0 -> 22332 bytes Skins/Deluxe/[effect]perfectNoteStar.jpg | Bin 0 -> 27633 bytes Skins/Deluxe/[icon]score.jpg | Bin 0 -> 1150 bytes Skins/Deluxe/[main]playerNumberBox.jpg | Bin 0 -> 1071 bytes Skins/Deluxe/[main]scoreLine.jpg | Bin 0 -> 19965 bytes Skins/Deluxe/[main]songSelection1.jpg | Bin 0 -> 1818 bytes Skins/Deluxe/[main]songSelection2.jpg | Bin 0 -> 1031 bytes Skins/Deluxe/[menu]jumpToBg.jpg | Bin 0 -> 1870 bytes Skins/Deluxe/[menu]songMenuBg.jpg | Bin 0 -> 5287 bytes Skins/Deluxe/[score]endcap.jpg | Bin 0 -> 984 bytes Skins/Deluxe/[special]bar1.jpg | Bin 0 -> 1128 bytes Skins/Deluxe/[special]bar2.jpg | Bin 0 -> 950 bytes Skins/Deluxe/jump_to_background.jpg | Bin 1870 -> 0 bytes Skins/Deluxe/leiste1.jpg | Bin 1128 -> 0 bytes Skins/Deluxe/leiste2.jpg | Bin 950 -> 0 bytes Themes/Deluxe.ini | 681 ++++++++++++++++++++----------- 28 files changed, 479 insertions(+), 269 deletions(-) delete mode 100644 Skins/Deluxe/MainBG_W&C.jpg delete mode 100644 Skins/Deluxe/Note Star.jpg delete mode 100644 Skins/Deluxe/NotePerfectStar.jpg delete mode 100644 Skins/Deluxe/Song Selection1.jpg delete mode 100644 Skins/Deluxe/Song Selection2.jpg delete mode 100644 Skins/Deluxe/SongMenuBG.jpg delete mode 100644 Skins/Deluxe/W&C.jpg create mode 100644 Skins/Deluxe/[bg-load]summer.jpg create mode 100644 Skins/Deluxe/[bg-main]summer.jpg create mode 100644 Skins/Deluxe/[effect]goldenNoteStar.jpg create mode 100644 Skins/Deluxe/[effect]perfectNoteStar.jpg create mode 100644 Skins/Deluxe/[icon]score.jpg create mode 100644 Skins/Deluxe/[main]playerNumberBox.jpg create mode 100644 Skins/Deluxe/[main]scoreLine.jpg create mode 100644 Skins/Deluxe/[main]songSelection1.jpg create mode 100644 Skins/Deluxe/[main]songSelection2.jpg create mode 100644 Skins/Deluxe/[menu]jumpToBg.jpg create mode 100644 Skins/Deluxe/[menu]songMenuBg.jpg create mode 100644 Skins/Deluxe/[score]endcap.jpg create mode 100644 Skins/Deluxe/[special]bar1.jpg create mode 100644 Skins/Deluxe/[special]bar2.jpg delete mode 100644 Skins/Deluxe/jump_to_background.jpg delete mode 100644 Skins/Deluxe/leiste1.jpg delete mode 100644 Skins/Deluxe/leiste2.jpg diff --git a/Skins/Deluxe/MainBG_W&C.jpg b/Skins/Deluxe/MainBG_W&C.jpg deleted file mode 100644 index 79f72163..00000000 Binary files a/Skins/Deluxe/MainBG_W&C.jpg and /dev/null differ diff --git a/Skins/Deluxe/Note Star.jpg b/Skins/Deluxe/Note Star.jpg deleted file mode 100644 index 1ef6243d..00000000 Binary files a/Skins/Deluxe/Note Star.jpg and /dev/null differ diff --git a/Skins/Deluxe/NotePerfectStar.jpg b/Skins/Deluxe/NotePerfectStar.jpg deleted file mode 100644 index 189a22a3..00000000 Binary files a/Skins/Deluxe/NotePerfectStar.jpg and /dev/null differ diff --git a/Skins/Deluxe/Score Level Round.jpg b/Skins/Deluxe/Score Level Round.jpg index dbc5b5af..4edcdd69 100644 Binary files a/Skins/Deluxe/Score Level Round.jpg and b/Skins/Deluxe/Score Level Round.jpg differ diff --git a/Skins/Deluxe/Score Level.jpg b/Skins/Deluxe/Score Level.jpg index e47280cb..9e9c4086 100644 Binary files a/Skins/Deluxe/Score Level.jpg and b/Skins/Deluxe/Score Level.jpg differ diff --git a/Skins/Deluxe/Song Selection1.jpg b/Skins/Deluxe/Song Selection1.jpg deleted file mode 100644 index c26b3fcb..00000000 Binary files a/Skins/Deluxe/Song Selection1.jpg and /dev/null differ diff --git a/Skins/Deluxe/Song Selection2.jpg b/Skins/Deluxe/Song Selection2.jpg deleted file mode 100644 index cb3a3396..00000000 Binary files a/Skins/Deluxe/Song Selection2.jpg and /dev/null differ diff --git a/Skins/Deluxe/SongMenuBG.jpg b/Skins/Deluxe/SongMenuBG.jpg deleted file mode 100644 index ef530ef5..00000000 Binary files a/Skins/Deluxe/SongMenuBG.jpg and /dev/null differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index d70d09cd..12e298f0 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -15,39 +15,54 @@ GrayRight=Right Gray.bmp NoteBGLeft=Note BG Left.bmp NoteBGMid=Note BG Mid.bmp NoteBGRight=Note BG Right.bmp -NoteStar=Note Star.jpg -NotePerfectStar=NotePerfectStar.jpg + Ball=Ball.bmp SongCover=Song Cover.jpg Button=Button.jpg -LoadingBG=LoadingBackground.jpg -MainBG=MainBG_W&C.jpg -SongBG=W&C.jpg -ScoreScreenBG=W&C.jpg -Top5BG=W&C.jpg -OptionsBG=W&C.jpg -PartyBG=W&C.jpg +LoadingBG = [bg-load]summer.jpg +MainBG = [bg-main]summer.jpg +SongBG = [bg-main]summer.jpg +ScoreScreenBG = [bg-main]summer.jpg +Top5BG = [bg-main]summer.jpg +OptionsBG = [bg-main]summer.jpg +PartyBG = [bg-main]summer.jpg + +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg + +PlayerNumberBox = [main]playerNumberBox.jpg + +ScoreLine = [main]scoreLine.jpg +ScoreEndCap = [score]endcap.jpg -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -Leiste1=Leiste1.jpg -Leiste2=Leiste2.jpg + +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + MainBar=Main Bar.jpg Logo=Main Bar2.jpg -SongSelection1=Song Selection1.jpg -SongSelection2=Song Selection2.jpg + + + Bar=Bar.jpg ButtonF=Buttonf.jpg P=P.jpg -ScoreLine=Score Line.jpg + ScoreBox=Score Box.jpg ScoreLevel=Score Level.jpg ScoreLevelRound=Score Level Round.jpg @@ -64,12 +79,12 @@ LineBonusBack=Line Bonus PopUp.jpg HDL_Pointer=Pointer.BMP -ButtonP=button_p.jpg -ButtonM=button_m.jpg -ButtonJ=button_j.jpg -ButtonAlt=button_alt.jpg -ButtonAZ=button_az.jpg -JumpToBG=Jump_to_background.jpg -SongMenuBG=SongMenuBG.jpg +ButtonP = button_p.jpg +ButtonM = button_m.jpg +ButtonJ = button_j.jpg +ButtonAlt = button_alt.jpg +ButtonAZ = button_az.jpg +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg Rectangle=Rectangle.jpg \ No newline at end of file diff --git a/Skins/Deluxe/W&C.jpg b/Skins/Deluxe/W&C.jpg deleted file mode 100644 index 79f72163..00000000 Binary files a/Skins/Deluxe/W&C.jpg and /dev/null differ diff --git a/Skins/Deluxe/[bg-load]summer.jpg b/Skins/Deluxe/[bg-load]summer.jpg new file mode 100644 index 00000000..2786171a Binary files /dev/null and b/Skins/Deluxe/[bg-load]summer.jpg differ diff --git a/Skins/Deluxe/[bg-main]summer.jpg b/Skins/Deluxe/[bg-main]summer.jpg new file mode 100644 index 00000000..d2d8326e Binary files /dev/null and b/Skins/Deluxe/[bg-main]summer.jpg differ diff --git a/Skins/Deluxe/[effect]goldenNoteStar.jpg b/Skins/Deluxe/[effect]goldenNoteStar.jpg new file mode 100644 index 00000000..1ef6243d Binary files /dev/null and b/Skins/Deluxe/[effect]goldenNoteStar.jpg differ diff --git a/Skins/Deluxe/[effect]perfectNoteStar.jpg b/Skins/Deluxe/[effect]perfectNoteStar.jpg new file mode 100644 index 00000000..189a22a3 Binary files /dev/null and b/Skins/Deluxe/[effect]perfectNoteStar.jpg differ diff --git a/Skins/Deluxe/[icon]score.jpg b/Skins/Deluxe/[icon]score.jpg new file mode 100644 index 00000000..6402fa9a Binary files /dev/null and b/Skins/Deluxe/[icon]score.jpg differ diff --git a/Skins/Deluxe/[main]playerNumberBox.jpg b/Skins/Deluxe/[main]playerNumberBox.jpg new file mode 100644 index 00000000..53e7964c Binary files /dev/null and b/Skins/Deluxe/[main]playerNumberBox.jpg differ diff --git a/Skins/Deluxe/[main]scoreLine.jpg b/Skins/Deluxe/[main]scoreLine.jpg new file mode 100644 index 00000000..546a87c7 Binary files /dev/null and b/Skins/Deluxe/[main]scoreLine.jpg differ diff --git a/Skins/Deluxe/[main]songSelection1.jpg b/Skins/Deluxe/[main]songSelection1.jpg new file mode 100644 index 00000000..e12296be Binary files /dev/null and b/Skins/Deluxe/[main]songSelection1.jpg differ diff --git a/Skins/Deluxe/[main]songSelection2.jpg b/Skins/Deluxe/[main]songSelection2.jpg new file mode 100644 index 00000000..cb3a3396 Binary files /dev/null and b/Skins/Deluxe/[main]songSelection2.jpg differ diff --git a/Skins/Deluxe/[menu]jumpToBg.jpg b/Skins/Deluxe/[menu]jumpToBg.jpg new file mode 100644 index 00000000..a8b93e10 Binary files /dev/null and b/Skins/Deluxe/[menu]jumpToBg.jpg differ diff --git a/Skins/Deluxe/[menu]songMenuBg.jpg b/Skins/Deluxe/[menu]songMenuBg.jpg new file mode 100644 index 00000000..ef530ef5 Binary files /dev/null and b/Skins/Deluxe/[menu]songMenuBg.jpg differ diff --git a/Skins/Deluxe/[score]endcap.jpg b/Skins/Deluxe/[score]endcap.jpg new file mode 100644 index 00000000..0cad98a5 Binary files /dev/null and b/Skins/Deluxe/[score]endcap.jpg differ diff --git a/Skins/Deluxe/[special]bar1.jpg b/Skins/Deluxe/[special]bar1.jpg new file mode 100644 index 00000000..e73fdb54 Binary files /dev/null and b/Skins/Deluxe/[special]bar1.jpg differ diff --git a/Skins/Deluxe/[special]bar2.jpg b/Skins/Deluxe/[special]bar2.jpg new file mode 100644 index 00000000..9268a3d1 Binary files /dev/null and b/Skins/Deluxe/[special]bar2.jpg differ diff --git a/Skins/Deluxe/jump_to_background.jpg b/Skins/Deluxe/jump_to_background.jpg deleted file mode 100644 index a8b93e10..00000000 Binary files a/Skins/Deluxe/jump_to_background.jpg and /dev/null differ diff --git a/Skins/Deluxe/leiste1.jpg b/Skins/Deluxe/leiste1.jpg deleted file mode 100644 index e73fdb54..00000000 Binary files a/Skins/Deluxe/leiste1.jpg and /dev/null differ diff --git a/Skins/Deluxe/leiste2.jpg b/Skins/Deluxe/leiste2.jpg deleted file mode 100644 index 9268a3d1..00000000 Binary files a/Skins/Deluxe/leiste2.jpg and /dev/null differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 5ef17969..06f31713 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -27,7 +27,6 @@ GrayLight = 191 191 191 Gray = 127 127 127 GrayDark = 63 63 63 Black = 0 0 0 -AquaLightGreen = 0 180 140 [Loading] Texts =2 @@ -39,8 +38,8 @@ Tex=LoadingBG [LoadingText1] X =30 Y =550 -Color =White -Font =1 +Color =Black +Font =0 Align =0 Size =10 Text =SING_LOADING @@ -48,7 +47,7 @@ Text =SING_LOADING [LoadingText2] X =590 Y =556 -Color=White +Color=Black Font =0 Size =6 Align=0 @@ -82,12 +81,13 @@ Text= [MainStatic1] X =0 Y =549 -W =255 +W =252 H =28 Tex=Leiste1 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [MainStatic2] X =254 @@ -98,6 +98,7 @@ Tex=Leiste2 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [MainStatic3] X =600 @@ -107,8 +108,7 @@ H =22 Tex=ButtonM Color =White Type=Plain -Reflection=1 - +Style=5 [MainText2] X =625 @@ -280,12 +280,13 @@ Type=Font Black [SongStatic3] X =0 Y =549 -W =255 +W =252 H =28 Tex=Leiste1 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [SongStatic4] X =254 @@ -296,9 +297,9 @@ Tex=Leiste2 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [SongStatic8] -#X =295 X =260 Y =553 W =26 @@ -306,7 +307,6 @@ H =22 Tex=ButtonAlt Color =White Type=Plain -Reflection=1 [SongText5] X =288 @@ -325,7 +325,6 @@ H =22 Tex=ButtonAZ Color =White Type=Plain -Reflection=1 [SongText6] X =330 @@ -344,7 +343,6 @@ H =22 Tex=ButtonM Color =White Type=Plain -Reflection=1 [SongText3] X =450 @@ -363,7 +361,6 @@ H =22 Tex=ButtonJ Color =White Type=Plain -Reflection=1 [SongText4] X =540 @@ -382,7 +379,6 @@ H =22 Tex=ButtonP Color =White Type=Plain -Reflection=1 [SongText7] X =705 @@ -861,40 +857,31 @@ Texts =1 Tex=ScoreScreenBG [ScoreText1] -X =90 -Y =500 -Color =GrayDark -Font =1 -Size =17 -Text =song score -Align=0 - -[ScoreTextArtist] -X =450 -Y =500 -Color=GrayDark +X =70 +Y =6 +Color=White Font =0 -Size =9 -Text =Artist +Size =20 +Text=song score Align=0 -[ScoreTextTitle] -X =450 -Y =525 +[ScoreTextArtistTitle] +X =70 +Y =53 +Color=White Font =0 -Size =9 -Text =Title -Align=0 -Color=Gray +Size =10 +Align =0 +Text=ArtistTitle -[ScoreTextName1] -X =200 -Y =160 -Font =1 -Size =12 -Text =P1 -Color =P1Dark -Align=0 +[ScoreStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =ScoreIcon +Type=Font Black [ScoreTextName2] X =50 @@ -914,14 +901,7 @@ Text =P2 Color =P2Dark Align=0 -[ScoreTextScore1] -X =250 -Y =110 -Color=GrayDark -Font =1 -Size =9 -Text =Tone Deaf -Align=0 + [ScoreTextScore2] X =100 @@ -941,14 +921,7 @@ Size =9 Text =Tone Deaf Align=0 -[ScoreTextNotes1] -X =235 -Y =220 -Color=GrayDark -Font =0 -Size =9 -Text=SING_NOTES -Align=0 + [ScoreTextNotes2] X =85 @@ -968,14 +941,7 @@ Size =9 Text =SING_NOTES Align=0 -[ScoreTextNotesScore1] -X =440 -Y =220 -Color=GrayDark -Font =1 -Size =10 -Align =2 -Text =0000 + [ScoreTextNotesScore2] X =290 @@ -995,14 +961,7 @@ Size =10 Align =2 Text =0000 -[ScoreTextLineBonus1] -X =235 -Y =260 -Color=GrayDark -Font =0 -Size =9 -Text =SING_PHRASE_BONUS -Align=0 + [ScoreTextLineBonus2] X =85 @@ -1022,14 +981,7 @@ Size =9 Text =SING_PHRASE_BONUS Align=0 -[ScoreTextLineBonusScore1] -X =440 -Y =260 -Color=GrayDark -Font =1 -Size =10 -Align =2 -Text =0000 + [ScoreTextLineBonusScore2] X =290 @@ -1049,14 +1001,6 @@ Size =10 Align =2 Text =0000 -[ScoreTextGoldenNotes1] -X =235 -Y =300 -Color=GrayDark -Font =0 -Size =9 -Text =SING_GOLDEN_NOTES -Align=0 [ScoreTextGoldenNotes2] X =85 @@ -1076,14 +1020,6 @@ Size =9 Text =SING_GOLDEN_NOTES Align=0 -[ScoreTextGoldenNotesScore1] -X =440 -Y =300 -Color=GrayDark -Font =1 -Size =10 -Align =2 -Text =0000 [ScoreTextGoldenNotesScore2] X =290 @@ -1103,15 +1039,6 @@ Size =10 Align =2 Text =0000 -[ScoreTextTotal1] -X =200 -Y =370 -Color=GrayDark -Font =0 -Size =9 -Text=SING_TOTAL -Align=0 - [ScoreTextTotal2] X =50 Y =370 @@ -1125,20 +1052,11 @@ Align=0 X =510 Y =370 Color=GrayDark -Font =0 +Font =1 Size =9 Text =SING_TOTAL Align=0 -[ScoreTextTotalSCore1] -X =440 -Y =360 -Color=GrayDark -Font =1 -Size =15 -Align =2 -Text =00000 - [ScoreTextTotalSCore2] X =290 Y =360 @@ -1157,22 +1075,22 @@ Size =15 Align =2 Text =00000 -[ScorePlayer1Static1] +[ScorePlayer2Static1] Tex =ScoreLine -X =200 +X =50 Y =205 W =240 H =6 -Color =GrayDark Type =Font Black +Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer1Static2] +[ScorePlayer2Static2] Tex =ScoreLine -X =200 +X =50 Y =345 W =240 H =6 @@ -1183,9 +1101,9 @@ TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer1Static3] +[ScorePlayer2Static3] Tex =ScoreLine -X =200 +X =50 Y =410 W =240 H =6 @@ -1196,35 +1114,37 @@ TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLightest1] +[ScoreStaticBoxLightest2] Tex =ScoreBox -X =200 +X =50 Y =220 W =30 H =30 -Color =P1Lightest +Color = DarkPurple +#P1Lightest Type= TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLight1] +[ScoreStaticBoxLight2] Tex =ScoreBox -X =200 +X =50 Y =260 W =30 H =30 -Color =P1Light +Color =DarkGreen +#P1Light Type= TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxDark1] +[ScoreStaticBoxDark2] Tex =ScoreBox -X =200 +X =50 Y =300 W =30 H =30 @@ -1235,9 +1155,9 @@ TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer2Static1] +[ScorePlayer3Static1] Tex =ScoreLine -X =50 +X =510 Y =205 W =240 H =6 @@ -1248,9 +1168,9 @@ TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer2Static2] +[ScorePlayer3Static2] Tex =ScoreLine -X =50 +X =510 Y =345 W =240 H =6 @@ -1261,9 +1181,9 @@ TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer2Static3] +[ScorePlayer3Static3] Tex =ScoreLine -X =50 +X =510 Y =410 W =240 H =6 @@ -1274,128 +1194,235 @@ TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLightest2] +[ScoreStaticBoxLightest3] Tex =ScoreBox -X =50 +X =510 Y =220 W =30 H =30 -Color =P1Lightest +Color =P2Lightest Type= TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLight2] +[ScoreStaticBoxLight3] Tex =ScoreBox -X =50 +X =510 Y =260 W =30 H =30 -Color =P1Light +Color =P2Light Type= TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxDark2] +[ScoreStaticBoxDark3] Tex =ScoreBox -X =50 +X =510 Y =300 W =30 H =30 -Color =P1Dark +Color =P2Dark Type= TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer3Static1] +# # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # +[ScoreTextName1] +X =150 +Y =260 +Font =0 +Size =14 +Text =P1 +Color =White +Align=0 + +[ScoreTextScore1] +X =150 +Y =430 +Color=White +Font =1 +Size =9 +Text =Tone Deaf +Align=0 + +[ScoreTextNotes1] +X =150 +Y =340 +Color=White +Font =0 +Size =9 +Text=SING_NOTES +Align=0 + +[ScoreTextNotesScore1] +X =440 +Y =340 +Color=White +Font =0 +Size =10 +Align =2 +Text =0 + +[ScoreTextLineBonus1] +X =150 +Y =370 +Color=White +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=0 + +[ScoreTextLineBonusScore1] +X =440 +Y =370 +Color=White +Font =0 +Size =10 +Align =2 +Text =0 + +[ScoreTextGoldenNotes1] +X =150 +Y =400 +Color=White +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=0 + +[ScoreTextGoldenNotesScore1] +X =440 +Y =400 +Color=White +Font =0 +Size =10 +Align =2 +Text =0 + +[ScoreTextTotal1] +X =180 +Y =460 +Color=White +Font =0 +Size =14 +Text=SING_TOTAL +Align=0 + +[ScoreTextTotalSCore1] +X =440 +Y =460 +Color=White +Font =0 +Size =14 +Align =2 +Text =0 + +[ScorePlayer1Static1] Tex =ScoreLine -X =510 -Y =205 -W =240 -H =6 +X =148 +Y =338 +W =295 +H =2 +Color =White Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer3Static2] +[ScorePlayer1Static2] Tex =ScoreLine -X =510 -Y =345 -W =240 -H =6 +X =148 +Y =368 +W =295 +H =2 +Color =White Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer3Static3] +[ScorePlayer1Static3] Tex =ScoreLine -X =510 -Y =410 -W =240 -H =6 +X =148 +Y =398 +W =295 +H =2 +Color =White Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLightest3] -Tex =ScoreBox -X =510 -Y =220 -W =30 -H =30 -Color =P2Lightest -Type= +[ScorePlayer1Static4] +Tex =ScoreLine +X =148 +Y =428 +W =295 +H =2 +Color =White +Type =Font Black TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLight3] -Tex =ScoreBox -X =510 -Y =260 -W =30 -H =30 -Color =P2Light -Type= +[ScorePlayer1Static5] +Tex =ScoreLine +X =148 +Y =458 +W =295 +H =4 +Type =Font Black +Color =White TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxDark3] -Tex =ScoreBox -X =510 -Y =300 -W =30 -H =30 -Color =P2Dark -Type= +[ScorePlayer1Static6] +Tex =PlayerNumberBox +X =150 +Y =467 +W =25 +H =25 +Type =Font Black +Color =P1Dark TexX1=0 TexY1=0 TexX2=1 TexY2=1 +Z=0.9 +Reflection=1 +ReflectionSpacing=1 + +[ScorePlayer1Text1] +X =154 +Y =472 +W =30 +H =30 +Z=1 +Color=White +Font =1 +Size =5 +Align=0 +Text=P1 +# S C O R E B A R S [ScoreStaticBackLevel1] Tex =ScoreLevel -X =460 -Y =140 -W =120 +X =450 +Y =160 +W =150 H =300 Color =P1Lightest Type =Font Black @@ -1406,9 +1433,9 @@ TexY2=0.9 [ScoreStaticBackLevelRound1] Tex =ScoreLevelRound -X =460 -Y =110 -W =120 +X =450 +Y =130 +W =150 H =30 Color =P1Lightest Type =Font Black @@ -1419,9 +1446,9 @@ TexY2=0.5 [ScoreStaticLevel1] Tex =ScoreLevel -X =460 +X =450 Y =410 -W =120 +W =150 H =30 Color =P1Light Type =Font Black @@ -1430,11 +1457,11 @@ TexY1=0.1 TexX2=1 TexY2=0.9 -[ScoreStaticLevelRound1] +[ScoreStaticLevelRound1] Tex =ScoreLevelRound -X =460 +X =450 Y =380 -W =120 +W =150 H =30 Color =P1Light Type =Font Black @@ -1443,6 +1470,37 @@ TexY1=0 TexX2=1 TexY2=0.5 +[ScorePlayer1Static7] +Tex =ScoreEndCap +X =469 +Y =460 +W =112 +H =30 +Color =P1Dark +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 +Reflection=1 +ReflectionSpacing=1 + +[ScorePlayer1Static8] +Tex =ScoreLine +X =468 +Y =460 +W =114 +H =2 +Color =White +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 +Z=1 + +# # # # # # # # # # # # # # # # # # Two Player Score? # # # # # # # # # # # # + [ScoreStaticBackLevel2] Tex =ScoreLevel X =290 @@ -1495,6 +1553,7 @@ TexY1=0 TexX2=1 TexY2=0.5 +# # # # # # # # # # # # # # # # # # Three Player Score? # # # # # # # # # # # # [ScoreStaticBackLevel3] Tex =ScoreLevel X =390 @@ -2195,12 +2254,13 @@ Type=Font Black [OptionsStatic2] X =0 Y =549 -W =255 +W =252 H =28 Tex=Leiste1 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [OptionsStatic3] X =254 @@ -2211,6 +2271,7 @@ Tex=Leiste2 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [OptionsText2] X =120 @@ -3149,6 +3210,7 @@ Type = Font Black [OptionsAdvanced] Texts = 1 +Statics=1 [OptionsAdvancedBackground] Tex=OptionsBG @@ -3170,6 +3232,137 @@ H =27 Color =White Tex =IconOption Type=Font Black +Texts = 1 + +[OptionsAdvancedSelectLoadAnimation] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_ADVANCED_LOADANIMATION +X = 40 +Y = 100 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectEffectPerfect] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_EFFECTPERFECT +X = 40 +Y = 170 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectEffectGolden] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_EFFECTGOLDEN +X = 40 +Y = 240 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectLineBonus] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_LINEBONUS +X = 40 +Y = 310 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectSlideOnSongClick] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_ADVANCED_ONSONGCLICK +X = 40 +Y = 380 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectAskbeforeDel] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL +X = 40 +Y = 450 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedButtonExit] +X = 40 +Y = 520 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black [Top5] Texts=1 @@ -3447,12 +3640,13 @@ Text=SING_DIFFICULTY [LevelStatic1] X =0 Y =549 -W =255 +W =252 H =28 Tex=Leiste1 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [LevelStatic2] X =254 @@ -3463,6 +3657,7 @@ Tex=Leiste2 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [LevelStatic3] X =40 @@ -3563,12 +3758,13 @@ Tex=MainBG [NameStatic1] X =0 Y =549 -W =255 +W =252 H =28 Tex=Leiste1 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [NameStatic2] X =254 @@ -3579,6 +3775,7 @@ Tex=Leiste2 Color =White Type=Plain Reflection=1 +ReflectionSpacing=1 [NameText2] X =120 @@ -4271,14 +4468,13 @@ Texts = 1 Tex=PartyBG [PartyOptionsText1] -X = 30 -Y = 0 +X = 50 +Y = 10 ColR = 0.7 ColG = 0.7 ColB = 0.7 Font = 1 -Size = 20 -Color =White +Size = 25 Text=PARTY_OPTIONS_DESC [PartyOptionsSelectLevel] @@ -4457,8 +4653,8 @@ Tex=PartyBG [PartyPlayerTeam1Name] Tex=Button -X=10 -Y=100 +X=25 +Y=50 W=250 H=70 Type=Font Black @@ -4480,8 +4676,8 @@ Color=White [PartyPlayerPlayer1Name] Tex=Button -X=10 -Y=190 +X=25 +Y=120 W=250 H=70 Type=Font Black @@ -4503,8 +4699,8 @@ Color=White [PartyPlayerPlayer2Name] Tex=Button -X=10 -Y=270 +X=25 +Y=190 W=250 H=70 Type=Font Black @@ -4526,8 +4722,8 @@ Color=White [PartyPlayerPlayer3Name] Tex=Button -X=10 -Y=350 +X=25 +Y=260 W=250 H=70 Type=Font Black @@ -4549,8 +4745,8 @@ Color=White [PartyPlayerPlayer4Name] Tex=Button -X=10 -Y=430 +X=25 +Y=330 W=250 H=70 Type=Font Black @@ -4572,8 +4768,8 @@ Color=White [PartyPlayerTeam2Name] Tex=Button -X=280 -Y=100 +X=300 +Y=50 W=250 H=70 Type=Font Black @@ -4595,8 +4791,8 @@ Color=White [PartyPlayerPlayer5Name] Tex=Button -X=280 -Y=190 +X=300 +Y=120 W=250 H=70 Type=Font Black @@ -4618,8 +4814,8 @@ Color=White [PartyPlayerPlayer6Name] Tex=Button -X=280 -Y=270 +X=300 +Y=190 W=250 H=70 Type=Font Black @@ -4641,8 +4837,8 @@ Color=White [PartyPlayerPlayer7Name] Tex=Button -X=280 -Y=350 +X=300 +Y=260 W=250 H=70 Type=Font Black @@ -4664,8 +4860,8 @@ Color=White [PartyPlayerPlayer8Name] Tex=Button -X=280 -Y=430 +X=300 +Y=330 W=250 H=70 Type=Font Black @@ -4687,8 +4883,8 @@ Color=White [PartyPlayerTeam3Name] Tex=Button -X=550 -Y=100 +X=25 +Y=360 W=250 H=70 Type=Font Black @@ -4710,8 +4906,8 @@ Color=White [PartyPlayerPlayer9Name] Tex=Button -X=550 -Y=190 +X=25 +Y=400 W=250 H=70 Type=Font Black @@ -4733,8 +4929,8 @@ Color=White [PartyPlayerPlayer10Name] Tex=Button -X=550 -Y=270 +X=25 +Y=460 W=250 H=70 Type=Font Black @@ -4756,8 +4952,8 @@ Color=White [PartyPlayerPlayer11Name] Tex=Button -X=550 -Y=350 +X=25 +Y=500 W=250 H=70 Type=Font Black @@ -4779,8 +4975,8 @@ Color=White [PartyPlayerPlayer12Name] Tex=Button -X=550 -Y=430 +X=25 +Y=540 W=250 H=70 Type=Font Black @@ -4801,14 +4997,13 @@ Text=Player 12 Color=White [PartyPlayerText1] -X=10 -Y=5 +X=30 +Y=180 Font=1 -Size=18 +Size=22 Align=0 Text=PARTY_SELECT_PLAYER -Color=White - +Color=GrayLight [SongMenu] Texts=0 -- cgit v1.2.3 From 63a5a46ca5d1f8ae3a9d8d4c9b76736c17bb1a7f Mon Sep 17 00:00:00 2001 From: mogguh Date: Sat, 14 Apr 2007 22:38:03 +0000 Subject: Theme/Skin: New cover for songs w/ no cover xD git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@91 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Song Cover.jpg | Bin 11840 -> 0 bytes Skins/Deluxe/W&C.ini | 9 ++------- Skins/Deluxe/[main]songCover.jpg | Bin 0 -> 29137 bytes 3 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 Skins/Deluxe/Song Cover.jpg create mode 100644 Skins/Deluxe/[main]songCover.jpg diff --git a/Skins/Deluxe/Song Cover.jpg b/Skins/Deluxe/Song Cover.jpg deleted file mode 100644 index ba84359c..00000000 Binary files a/Skins/Deluxe/Song Cover.jpg and /dev/null differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 12e298f0..70e88030 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -17,7 +17,7 @@ NoteBGMid=Note BG Mid.bmp NoteBGRight=Note BG Right.bmp Ball=Ball.bmp -SongCover=Song Cover.jpg +SongCover = [main]songCover.jpg Button=Button.jpg @@ -45,20 +45,15 @@ SongSelection2 = [main]songSelection2.jpg PlayerNumberBox = [main]playerNumberBox.jpg ScoreLine = [main]scoreLine.jpg -ScoreEndCap = [score]endcap.jpg - +ScoreEndCap = [score]endcap.jpg NoteStar = [effect]goldenNoteStar.jpg NotePerfectStar = [effect]perfectNoteStar.jpg - MainBar=Main Bar.jpg Logo=Main Bar2.jpg - - - Bar=Bar.jpg ButtonF=Buttonf.jpg P=P.jpg diff --git a/Skins/Deluxe/[main]songCover.jpg b/Skins/Deluxe/[main]songCover.jpg new file mode 100644 index 00000000..aa68f851 Binary files /dev/null and b/Skins/Deluxe/[main]songCover.jpg differ -- cgit v1.2.3 From b271750f0ba7b1174d26f8164bc8f9f46766c5e3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 15 Apr 2007 10:05:09 +0000 Subject: Added Prevention of starting PartyMode without Plugins Loaded or with less then 2 Players git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@92 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenMain.pas | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 976c0e07..90a6310d 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -84,7 +84,7 @@ const Credits_Text: Array[0..49] of PChar = ( implementation -uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty; +uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager; function TScreenMain.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; @@ -128,8 +128,11 @@ begin end; SDLK_M: begin - Music.PlayStart; - FadeTo(@ScreenPartyOptions); + if (Ini.Players >= 2) AND (Length(DLLMan.Plugins)>=1) then + begin + Music.PlayStart; + FadeTo(@ScreenPartyOptions); + end; end; SDLK_RETURN: @@ -147,8 +150,6 @@ begin if Interaction = 2 then begin Music.PlayStart; FadeTo(@ScreenOptions); -// SDL_SetVideoMode(800, 600, 32, SDL_OPENGL);// or SDL_FULLSCREEN); -// LoadTextures; end; if Interaction = 3 then begin Result := false; -- cgit v1.2.3 From fae5839e8025f020638b4cd0583a9a992c5a7a1e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 15 Apr 2007 11:05:10 +0000 Subject: Fixed some Bugs in Party Mode Fixed Support CategoryOnly Playlist Support git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@93 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UParty.pas | 13 ++++++++++--- Game/Code/Screens/UScreenMain.pas | 2 +- Game/Code/Screens/UScreenPartyNewRound.pas | 4 ---- Game/Code/Screens/UScreenPartyPlayer.pas | 2 +- Game/Code/Screens/UScreenPartyScore.pas | 8 ++++---- Game/Code/Screens/UScreenSong.pas | 4 ++-- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas index f5834dd8..e5252f82 100644 --- a/Game/Code/Classes/UParty.pas +++ b/Game/Code/Classes/UParty.pas @@ -107,13 +107,16 @@ begin PlayersPlay := Teams.NumTeams; + //Get Teammode and Set Joker TeamMode := True; For I := 0 to Teams.NumTeams-1 do + begin if Teams.Teaminfo[I].NumPlayers < 2 then begin TeamMode := False; - Break; end; + Teams.Teaminfo[I].Joker := Round(NumRounds*0.7); + end; //Fill Plugin Array SetLength(Plugins, 0); @@ -186,7 +189,7 @@ begin //Increase Current Round Inc (CurRound); - Rounds[CurRound].Winner := 0; + Rounds[CurRound].Winner := 255; DllMan.LoadPlugin(Rounds[CurRound].Plugin); //Select Players @@ -241,9 +244,13 @@ var Winners: Array of String; I: Integer; begin + Result := Language.Translate('PARTY_NOBODY'); + + if (Round > High(Rounds)) then + exit; + if (Rounds[Round].Winner = 0) then begin - Result := Language.Translate('PARTY_NOBODY'); exit; end; diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 90a6310d..dd7f21c5 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -128,7 +128,7 @@ begin end; SDLK_M: begin - if (Ini.Players >= 2) AND (Length(DLLMan.Plugins)>=1) then + if (Ini.Players >= 1) AND (Length(DLLMan.Plugins)>=1) then begin Music.PlayStart; FadeTo(@ScreenPartyOptions); diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index 1e9be1f5..c8c0febc 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -176,10 +176,6 @@ procedure TScreenPartyNewRound.onShow; var I: Integer; begin - //If not First Round, End Last Round - if (PartySession.CurRound <> 255) then - PartySession.EndRound; - PartySession.StartRound; Log.LogError(InttoStr(Length(DllMan.Plugins))); diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index 498514fb..02f87710 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -76,6 +76,7 @@ begin SDLK_RETURN: begin + //Save PlayerNames for I := 0 to PartySession.Teams.NumTeams-1 do begin PartySession.Teams.Teaminfo[I].Name := PChar(Button[I*5].Text[0].Text); @@ -84,7 +85,6 @@ begin PartySession.Teams.Teaminfo[I].Playerinfo[J].Name := PChar(Button[I*5 + J+1].Text[0].Text); PartySession.Teams.Teaminfo[I].Playerinfo[J].TimesPlayed := 0; end; - PartySession.Teams.Teaminfo[I].Joker := Round (Length(PartySession.Rounds) * 0.85); end; Music.PlayStart; diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index 9cbeb5d5..142ec947 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -57,13 +57,10 @@ begin SDLK_RETURN: begin Music.PlayStart; - if (PartySession.CurRound <= High(PartySession.Rounds)) then + if (PartySession.CurRound < High(PartySession.Rounds)) then FadeTo(@ScreenPartyNewRound) else - begin - PartySession.EndRound; FadeTo(@ScreenPartyWin); - end; end; end; end; @@ -114,6 +111,9 @@ begin Static[StaticTeam2].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[1].Percentage / 100; Static[StaticTeam3].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[2].Percentage / 100; + //End Last Round + PartySession.EndRound; + //Set Winnertext Text[TextWinner].Text := Format(Language.Translate('PARTY_SCORE_WINS'), [PartySession.GetWinnerString(PartySession.CurRound)]); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 7ea5d268..7c8447ee 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1488,8 +1488,8 @@ begin end; 1: //One Category Select Category and Select Random Song begin - CatSongs.HideCategory(-1); - CatSongs.ShowCategory(PlaylistMan.CurPlayList); + CatSongs.ShowCategoryList; + CatSongs.ClickCategoryButton(PlaylistMan.CurPlayList); ShowCatTL(PlaylistMan.CurPlayList); SelectNext; -- cgit v1.2.3 From da2207c84ce0381968dce817f060407743ea534d Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 15 Apr 2007 13:16:58 +0000 Subject: Theme/Skin: New default cover for category w/out a cover, should be moved to "Covers" directory on release (./Game/Graphics/NoCover.jpg) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@94 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Graphics/NoCover.jpg | Bin 0 -> 29137 bytes Skins/Deluxe/[main]songCover.jpg | Bin 29137 -> 24531 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Game/Graphics/NoCover.jpg diff --git a/Game/Graphics/NoCover.jpg b/Game/Graphics/NoCover.jpg new file mode 100644 index 00000000..aa68f851 Binary files /dev/null and b/Game/Graphics/NoCover.jpg differ diff --git a/Skins/Deluxe/[main]songCover.jpg b/Skins/Deluxe/[main]songCover.jpg index aa68f851..3cc111e2 100644 Binary files a/Skins/Deluxe/[main]songCover.jpg and b/Skins/Deluxe/[main]songCover.jpg differ -- cgit v1.2.3 From 23c69ff32e06a2570641e352ad17f2816ae748f2 Mon Sep 17 00:00:00 2001 From: b1indy Date: Sun, 15 Apr 2007 13:45:17 +0000 Subject: re-inserted some code to set clear-color to white per default or to black via commandline switch (affects whole classic theme and singscreen in deluxe theme) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@95 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 876fb6b6..b6489c70 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -46,14 +46,14 @@ begin myfade:=0; doFade:=True; // generate texture for fading between screens - GetMem(pTexData, 1024*1024*4); + GetMem(pTexData, 1024*1024*3); if pTexData <> NIL then begin glGenTextures(1, pTex); if glGetError <> GL_NO_ERROR then doFade := False; glBindTexture(GL_TEXTURE_2D, pTex); if glGetError <> GL_NO_ERROR then doFade := False; - glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGBA, GL_UNSIGNED_BYTE, pTexData); + glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData); if glGetError <> GL_NO_ERROR then doFade := False; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); if glGetError <> GL_NO_ERROR then doFade := False; @@ -81,6 +81,7 @@ end; function TDisplay.Draw: Boolean; var S: integer; + Col: Real; // fade mod myFade2:integer; currentTime: Cardinal; @@ -88,11 +89,11 @@ var begin Result := True; -{ Col := 1; + Col := 1; if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then - Col := 0;} + Col := 0; - glClearColor(0, 0, 0 , 0); + glClearColor(Col, Col, Col , 0); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); for S := 1 to Screens do begin @@ -124,7 +125,7 @@ begin begin ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex); - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1024, 1024, 0); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1024, 1024, 0); if glGetError <> GL_NO_ERROR then begin doFade := False; -- cgit v1.2.3 From bea18399ead28b025999a5be0f3cd733ea2bff86 Mon Sep 17 00:00:00 2001 From: crazy_joker Date: Sun, 15 Apr 2007 17:12:26 +0000 Subject: Add : Joker & a part of the Party Modi Skin git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@96 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Joker.jpg | Bin 0 -> 3501 bytes Skins/Deluxe/RoundPartyBG.JPG | Bin 0 -> 6485 bytes Skins/Deluxe/W&C.ini | 5 +- Themes/Deluxe.ini | 541 +++++++++++++++++++++++------------------- 4 files changed, 303 insertions(+), 243 deletions(-) create mode 100644 Skins/Deluxe/Joker.jpg create mode 100644 Skins/Deluxe/RoundPartyBG.JPG diff --git a/Skins/Deluxe/Joker.jpg b/Skins/Deluxe/Joker.jpg new file mode 100644 index 00000000..b1f469df Binary files /dev/null and b/Skins/Deluxe/Joker.jpg differ diff --git a/Skins/Deluxe/RoundPartyBG.JPG b/Skins/Deluxe/RoundPartyBG.JPG new file mode 100644 index 00000000..7186b3ac Binary files /dev/null and b/Skins/Deluxe/RoundPartyBG.JPG differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 70e88030..c6aad72b 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -82,4 +82,7 @@ ButtonAZ = button_az.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg -Rectangle=Rectangle.jpg \ No newline at end of file +Rectangle=Rectangle.jpg + +Joker=Joker.jpg +RoundPartyBG=RoundPartyBG.JPG \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 06f31713..023bb18f 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -81,7 +81,7 @@ Text= [MainStatic1] X =0 Y =549 -W =252 +W =254 H =28 Tex=Leiste1 Color =White @@ -280,7 +280,7 @@ Type=Font Black [SongStatic3] X =0 Y =549 -W =252 +W =254 H =28 Tex=Leiste1 Color =White @@ -401,6 +401,7 @@ Type=Font Black [SongTextArtist] X =350 Y =320 +W = 190 Color=White Font =1 Size =9 @@ -409,7 +410,7 @@ Text= [SongTextTitle] X =350 -Y =345 +Y =380 W = 190 Color=White Font =0 @@ -419,7 +420,7 @@ Text= [SongTextNumber] X =350 -Y =380 +Y =430 Color=White Font =0 Size =8 @@ -427,11 +428,11 @@ Align =1 Text= [SongStaticTeam1Joker1] -Tex =P -X =10 -Y =10 -W =50 -H =50 +Tex =Joker +X =480 +Y =400 +W =40 +H =40 Color=P1Dark Type=Font Black TexX1=0 @@ -440,11 +441,11 @@ TexX2=1 TexY2=1 [SongStaticTeam1Joker2] -Tex =P -X =70 -Y =10 -W =50 -H =50 +Tex =Joker +X =530 +Y =400 +W =40 +H =40 Color=P1Dark Type=Font Black TexX1=0 @@ -453,11 +454,11 @@ TexX2=1 TexY2=1 [SongStaticTeam1Joker3] -Tex =P -X =130 -Y =10 -W =50 -H =50 +Tex =Joker +X =580 +Y =400 +W =40 +H =40 Color=P1Dark Type=Font Black TexX1=0 @@ -466,11 +467,11 @@ TexX2=1 TexY2=1 [SongStaticTeam1Joker4] -Tex =P -X =190 -Y =10 -W =50 -H =50 +Tex =Joker +X =630 +Y =400 +W =40 +H =40 Color=P1Dark Type=Font Black TexX1=0 @@ -479,11 +480,11 @@ TexX2=1 TexY2=1 [SongStaticTeam1Joker5] -Tex =P -X =250 -Y =10 -W =50 -H =50 +Tex =Joker +X =680 +Y =400 +W =40 +H =40 Color=P1Dark Type=Font Black TexX1=0 @@ -492,11 +493,11 @@ TexX2=1 TexY2=1 [SongStaticTeam2Joker1] -Tex =P -X =10 -Y =70 -W =50 -H =50 +Tex =Joker +X =480 +Y =450 +W =40 +H =40 Color=P2Dark Type=Font Black TexX1=0 @@ -505,11 +506,11 @@ TexX2=1 TexY2=1 [SongStaticTeam2Joker2] -Tex =P -X =70 -Y =70 -W =50 -H =50 +Tex =Joker +X =530 +Y =450 +W =40 +H =40 Color=P2Dark Type=Font Black TexX1=0 @@ -518,11 +519,11 @@ TexX2=1 TexY2=1 [SongStaticTeam2Joker3] -Tex =P -X =130 -Y =70 -W =50 -H =50 +Tex =Joker +X =580 +Y =450 +W =40 +H =40 Color=P2Dark Type=Font Black TexX1=0 @@ -531,11 +532,11 @@ TexX2=1 TexY2=1 [SongStaticTeam2Joker4] -Tex =P -X =190 -Y =70 -W =50 -H =50 +Tex =Joker +X =630 +Y =450 +W =40 +H =40 Color=P2Dark Type=Font Black TexX1=0 @@ -544,11 +545,11 @@ TexX2=1 TexY2=1 [SongStaticTeam2Joker5] -Tex =P -X =250 -Y =70 -W =50 -H =50 +Tex =Joker +X =680 +Y =450 +W =40 +H =40 Color=P2Dark Type=Font Black TexX1=0 @@ -557,11 +558,11 @@ TexX2=1 TexY2=1 [SongStaticTeam3Joker1] -Tex =P -X =10 -Y =130 -W =50 -H =50 +Tex =Joker +X =480 +Y =500 +W =40 +H =40 Color=P3Dark Type=Font Black TexX1=0 @@ -570,11 +571,11 @@ TexX2=1 TexY2=1 [SongStaticTeam3Joker2] -Tex =P -X =70 -Y =130 -W =50 -H =50 +Tex =Joker +X =530 +Y =500 +W =40 +H =40 Color=P3Dark Type=Font Black TexX1=0 @@ -583,11 +584,11 @@ TexX2=1 TexY2=1 [SongStaticTeam3Joker3] -Tex =P -X =130 -Y =130 -W =50 -H =50 +Tex =Joker +X =580 +Y =500 +W =40 +H =40 Color=P3Dark Type=Font Black TexX1=0 @@ -596,11 +597,11 @@ TexX2=1 TexY2=1 [SongStaticTeam3Joker4] -Tex =P -X =190 -Y =130 -W =50 -H =50 +Tex =Joker +X =630 +Y =500 +W =40 +H =40 Color=P3Dark Type=Font Black TexX1=0 @@ -609,18 +610,17 @@ TexX2=1 TexY2=1 [SongStaticTeam3Joker5] -Tex =P -X =250 -Y =130 -W =50 -H =50 +Tex =Joker +X =680 +Y =500 +W =40 +H =40 Color=P3Dark Type=Font Black TexX1=0 TexY1=0 TexX2=1 TexY2=1 - [Sing] Texts =1 @@ -2254,7 +2254,7 @@ Type=Font Black [OptionsStatic2] X =0 Y =549 -W =252 +W =254 H =28 Tex=Leiste1 Color =White @@ -3640,7 +3640,7 @@ Text=SING_DIFFICULTY [LevelStatic1] X =0 Y =549 -W =252 +W =254 H =28 Tex=Leiste1 Color =White @@ -3758,7 +3758,7 @@ Tex=MainBG [NameStatic1] X =0 Y =549 -W =252 +W =254 H =28 Tex=Leiste1 Color =White @@ -3946,136 +3946,211 @@ Texts =0 [PartyNewRoundBackground] Tex=MainBG -[PartyNewRoundTextRound1] +[PartyNewRoundText1] +X =40 +Y =10 +Color =White +Font =1 +Size =22 +Text =Party Modus +Align=0 + +[PartyNewRoundText2] +X =70 +Y =255 +Color =White +Font =1 +Size =12 +Text =PARTY_ROUND +Align=0 + +[PartyNewRoundText3] +X =365 +Y =255 +Color =White +Font =1 +Size =12 +Text =PARTY_ROUND_WINNER +Align=0 + +[PartyNewRoundStatic1] +Tex =RoundPartyBG X =50 -Y =60 -Color =GrayDark +Y =250 +W =700 +H =350 +Int=1 +Color =DarkBlue +Type=Font Black +Reflection=1 +ReflectionSpacing=2 + +[PartyNewRoundStatic2] +Tex =Button +X =70 +Y =175 +W =200 +H =50 +Int=1 +Color =P1Dark +Type=Font Black +Reflection=1 +ReflectionSpacing=5 + +[PartyNewRoundStatic3] +Tex =Button +X =300 +Y =175 +W =200 +H =50 +Int=1 +Color =P2Dark +Type=Font Black +Reflection=1 +ReflectionSpacing=5 + +[PartyNewRoundStatic4] +Tex = +X =530 +Y =175 +W =200 +H =50 +Int=1 +Color =P3Dark +Type=Font Black +Reflection=1 +ReflectionSpacing=5 + +[PartyNewRoundTextRound1] +X =70 +Y =285 +Color =White Font =1 Size =17 Text =Round 1 Align=0 [PartyNewRoundTextRound2] -X =50 -Y =100 -Color =GrayDark +X =70 +Y =325 +Color =White Font =1 Size =17 Text =Round 2 Align=0 [PartyNewRoundTextRound3] -X =50 -Y =140 -Color =GrayDark +X =70 +Y =365 +Color =White Font =1 Size =17 Text =Round 3 Align=0 [PartyNewRoundTextRound4] -X =50 -Y =180 -Color =GrayDark +X =70 +Y =405 +Color =White Font =1 Size =17 Text =Round 4 Align=0 [PartyNewRoundTextRound5] -X =50 -Y =220 -Color =GrayDark +X =70 +Y =445 +Color =White Font =1 Size =17 Text =Round 5 Align=0 [PartyNewRoundTextRound6] -X =50 -Y =260 -Color =GrayDark +X =70 +Y =485 +Color =White Font =1 Size =17 Text =Round 6 Align=0 [PartyNewRoundTextRound7] -X =50 -Y =300 -Color =GrayDark +X =70 +Y =525 +Color =White Font =1 Size =17 Text =Round 7 Align=0 [PartyNewRoundTextWinner1] -X =260 -Y =60 -Color =GrayDark +X =365 +Y =285 +Color =White Font =1 Size =17 Text =Winner 1 Align=0 [PartyNewRoundTextWinner2] -X =260 -Y =100 -Color =GrayDark +X =365 +Y =325 +Color =White Font =1 Size =17 Text =Winner 2 Align=0 [PartyNewRoundTextWinner3] -X =260 -Y =140 -Color =GrayDark +X =365 +Y =365 +Color =White Font =1 Size =17 Text =Winner 3 Align=0 [PartyNewRoundTextWinner4] -X =260 -Y =180 -Color =GrayDark +X =365 +Y =405 +Color =White Font =1 Size =17 Text =Winner 4 Align=0 [PartyNewRoundTextWinner5] -X =260 -Y =220 -Color =GrayDark +X =365 +Y =445 +Color =White Font =1 Size =17 Text =Winner 5 Align=0 [PartyNewRoundTextWinner6] -X =260 -Y =260 -Color =GrayDark +X =365 +Y =485 +Color =White Font =1 Size =17 Text =Winner 6 Align=0 [PartyNewRoundTextWinner7] -X =260 -Y =300 -Color =GrayDark +X =365 +Y =530 +Color =White Font =1 Size =17 Text =Winner 7 Align=0 [PartyNewRoundStaticRound1] -Tex =button +Tex = X =40 -Y =55 +Y =300 W =240 H =35 Color =GrayDark @@ -4086,9 +4161,9 @@ TexX2=1 TexY2=1 [PartyNewRoundStaticRound2] -Tex =button +Tex = X =40 -Y =95 +Y =350 W =240 H =35 Color =GrayDark @@ -4099,9 +4174,9 @@ TexX2=1 TexY2=1 [PartyNewRoundStaticRound3] -Tex =button +Tex = X =40 -Y =135 +Y =400 W =240 H =35 Color =GrayDark @@ -4112,9 +4187,9 @@ TexX2=1 TexY2=1 [PartyNewRoundStaticRound4] -Tex =button +Tex = X =40 -Y =175 +Y =450 W =240 H =35 Color =GrayDark @@ -4125,9 +4200,9 @@ TexX2=1 TexY2=1 [PartyNewRoundStaticRound5] -Tex =button +Tex = X =40 -Y =215 +Y =500 W =240 H =35 Color =GrayDark @@ -4138,9 +4213,9 @@ TexX2=1 TexY2=1 [PartyNewRoundStaticRound6] -Tex =button +Tex = X =40 -Y =255 +Y =550 W =240 H =35 Color =GrayDark @@ -4151,9 +4226,9 @@ TexX2=1 TexY2=1 [PartyNewRoundStaticRound7] -Tex =button +Tex = X =40 -Y =295 +Y =590 W =240 H =35 Color =GrayDark @@ -4164,95 +4239,105 @@ TexX2=1 TexY2=1 [PartyNewRoundTextNextRound] -X =500 -Y =300 +X =80 +Y =70 Color =White Font =1 -Size =17 +Size =15 Text =Next Round Align=0 [PartyNewRoundTextNextRoundNo] -X =450 -Y =300 +X =40 +Y =70 Color =White Font =1 -Size =17 +Size =15 Text =99 Align=0 [PartyNewRoundTextScoreTeam1] -X =100 -Y =70 +X =225 +Y =175 Color =White Font =1 -Size =13 +Size =15 Text =3000 Align=0 [PartyNewRoundTextScoreTeam2] -X =300 -Y =70 +X =455 +Y =175 Color =White Font =1 -Size =13 +Size =15 Text =2000 Align=0 [PartyNewRoundTextScoreTeam3] -X =500 -Y =70 +X =685 +Y =175 Color =White Font =1 -Size =13 +Size =15 Text =1000 Align=0 [PartyNewRoundTextNameTeam1] -X =100 -Y =20 +X =75 +Y =175 Color =White Font =1 -Size =13 +Size =15 Text =Team 1 Align=0 [PartyNewRoundTextNameTeam2] -X =300 -Y =20 +X =305 +Y =175 Color =White Font =1 -Size =13 +Size =15 Text =Team 2 Align=0 [PartyNewRoundTextNameTeam3] -X =500 -Y =20 +X =535 +Y =175 Color =White Font =1 -Size =13 +Size =15 Text =Team 3 Align=0 [PartyNewRoundTextNextPlayer1] -X =450 -Y =400 +X =100 +Y =120 Color =White Font =1 -Size =13 +Size =15 Text =Player 1 Align=0 [PartyNewRoundTextNextPlayer2] -X =550 -Y =400 +X =250 +Y =120 Color =White Font =1 -Size =13 +Size =15 Text =Player 2 Align=0 +[PartyNewRoundTextNextPlayer3] +X =400 +Y =120 +Color =White +Font =1 +Size =15 +Text =Player 3 +Align=0 + + [PartyNewRoundTextNextPlayer3] X =650 Y =400 @@ -4468,15 +4553,17 @@ Texts = 1 Tex=PartyBG [PartyOptionsText1] -X = 50 -Y = 10 +X = 30 +Y = 0 ColR = 0.7 ColG = 0.7 ColB = 0.7 Font = 1 -Size = 25 +Size = 20 +Color =White Text=PARTY_OPTIONS_DESC + [PartyOptionsSelectLevel] Tex = MainBar TexSBG = MainBar @@ -4653,16 +4740,14 @@ Tex=PartyBG [PartyPlayerTeam1Name] Tex=Button -X=25 -Y=50 +X=10 +Y=100 W=250 H=70 Type=Font Black Texts=1 -Color =DarkRed -Int = 0.8 -DColor = LightRed -DInt = 0.7 +Color =P2Dark +DColor =P2Light Reflection=0 [PartyPlayerTeam1NameText1] @@ -4676,16 +4761,14 @@ Color=White [PartyPlayerPlayer1Name] Tex=Button -X=25 -Y=120 +X=10 +Y=190 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer1NameText1] @@ -4699,16 +4782,14 @@ Color=White [PartyPlayerPlayer2Name] Tex=Button -X=25 -Y=190 +X=10 +Y=270 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer2NameText1] @@ -4722,16 +4803,14 @@ Color=White [PartyPlayerPlayer3Name] Tex=Button -X=25 -Y=260 +X=10 +Y=350 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer3NameText1] @@ -4745,16 +4824,14 @@ Color=White [PartyPlayerPlayer4Name] Tex=Button -X=25 -Y=330 +X=10 +Y=430 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer4NameText1] @@ -4768,16 +4845,14 @@ Color=White [PartyPlayerTeam2Name] Tex=Button -X=300 -Y=50 +X=275 +Y=100 W=250 H=70 Type=Font Black Texts=1 -Color =DarkRed -Int = 0.8 -DColor = LightRed -DInt = 0.7 +Color =P2Dark +DColor =P2Light Reflection=0 [PartyPlayerTeam2NameText1] @@ -4791,16 +4866,14 @@ Color=White [PartyPlayerPlayer5Name] Tex=Button -X=300 -Y=120 +X=275 +Y=190 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer5NameText1] @@ -4814,16 +4887,14 @@ Color=White [PartyPlayerPlayer6Name] Tex=Button -X=300 -Y=190 +X=275 +Y=270 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer6NameText1] @@ -4837,16 +4908,14 @@ Color=White [PartyPlayerPlayer7Name] Tex=Button -X=300 -Y=260 +X=275 +Y=350 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer7NameText1] @@ -4860,16 +4929,14 @@ Color=White [PartyPlayerPlayer8Name] Tex=Button -X=300 -Y=330 +X=275 +Y=430 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer8NameText1] @@ -4883,16 +4950,14 @@ Color=White [PartyPlayerTeam3Name] Tex=Button -X=25 -Y=360 +X=545 +Y=100 W=250 H=70 Type=Font Black Texts=1 -Color =DarkRed -Int = 0.8 -DColor = LightRed -DInt = 0.7 +Color =P2Dark +DColor =P2Light Reflection=0 [PartyPlayerTeam3NameText1] @@ -4906,16 +4971,14 @@ Color=White [PartyPlayerPlayer9Name] Tex=Button -X=25 -Y=400 +X=545 +Y=190 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer9NameText1] @@ -4929,16 +4992,14 @@ Color=White [PartyPlayerPlayer10Name] Tex=Button -X=25 -Y=460 +X=545 +Y=270 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer10NameText1] @@ -4952,16 +5013,14 @@ Color=White [PartyPlayerPlayer11Name] Tex=Button -X=25 -Y=500 +X=545 +Y=350 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer11NameText1] @@ -4975,16 +5034,14 @@ Color=White [PartyPlayerPlayer12Name] Tex=Button -X=25 -Y=540 +X=545 +Y=430 W=250 H=70 Type=Font Black Texts=1 Color =DarkBlue -Int = 0.8 DColor = LightBlue -DInt = 0.7 Reflection=0 [PartyPlayerPlayer12NameText1] @@ -4997,13 +5054,13 @@ Text=Player 12 Color=White [PartyPlayerText1] -X=30 -Y=180 +X=10 +Y=5 Font=1 -Size=22 +Size=18 Align=0 Text=PARTY_SELECT_PLAYER -Color=GrayLight +Color=White [SongMenu] Texts=0 -- cgit v1.2.3 From 2c28959b736fcdb381117046cde8ef48a3459da1 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 15 Apr 2007 20:18:54 +0000 Subject: Theme/Skin: Minor changes on the default covers git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@97 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Graphics/NoCover.jpg | Bin 29137 -> 33592 bytes Skins/Deluxe/[main]songCover.jpg | Bin 24531 -> 30254 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Game/Graphics/NoCover.jpg b/Game/Graphics/NoCover.jpg index aa68f851..0a424708 100644 Binary files a/Game/Graphics/NoCover.jpg and b/Game/Graphics/NoCover.jpg differ diff --git a/Skins/Deluxe/[main]songCover.jpg b/Skins/Deluxe/[main]songCover.jpg index 3cc111e2..426bf22d 100644 Binary files a/Skins/Deluxe/[main]songCover.jpg and b/Skins/Deluxe/[main]songCover.jpg differ -- cgit v1.2.3 From d1b8d0cc811c6abbb060093c2800ce952dc4c6f1 Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 16 Apr 2007 15:08:21 +0000 Subject: Theme/Skin: Score screen for 2player done, added bar for navigation (enter button to continue) Language: Added "SING_LEGEND_CONTINUE", maybe others will follow git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@98 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 3 + Skins/Deluxe/W&C.ini | 5 +- Skins/Deluxe/button_enter.jpg | Bin 0 -> 3281 bytes Themes/Deluxe.ini | 905 +++++++++++++++++++++++------------------- 4 files changed, 506 insertions(+), 407 deletions(-) create mode 100644 Skins/Deluxe/button_enter.jpg diff --git a/Languages/German.ini b/Languages/German.ini index f99047fe..601128b1 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -73,6 +73,9 @@ SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Songauswahl SING_LEGEND_SELECT=AUSWÄHLEN SING_LEGEND_NAVIGATE=NAVIGIEREN + +SING_LEGEND_CONTINUE=weiter + SING_OPTIONS=Optionen SING_DIFFICULTY=Schwierigkeitsgrad auswählen diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index c6aad72b..5d39833c 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -24,7 +24,8 @@ Button=Button.jpg LoadingBG = [bg-load]summer.jpg MainBG = [bg-main]summer.jpg SongBG = [bg-main]summer.jpg -ScoreScreenBG = [bg-main]summer.jpg +ScoreScreenBG = blue.jpg +#[bg-main]summer.jpg Top5BG = [bg-main]summer.jpg OptionsBG = [bg-main]summer.jpg PartyBG = [bg-main]summer.jpg @@ -79,6 +80,8 @@ ButtonM = button_m.jpg ButtonJ = button_j.jpg ButtonAlt = button_alt.jpg ButtonAZ = button_az.jpg +ButtonEnter= button_enter.jpg + JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg diff --git a/Skins/Deluxe/button_enter.jpg b/Skins/Deluxe/button_enter.jpg new file mode 100644 index 00000000..5de8decd Binary files /dev/null and b/Skins/Deluxe/button_enter.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 023bb18f..e3444b4e 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -81,7 +81,7 @@ Text= [MainStatic1] X =0 Y =549 -W =254 +W =252 H =28 Tex=Leiste1 Color =White @@ -280,7 +280,7 @@ Type=Font Black [SongStatic3] X =0 Y =549 -W =254 +W =252 H =28 Tex=Leiste1 Color =White @@ -621,6 +621,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [Sing] Texts =1 @@ -883,359 +884,329 @@ Color =White Tex =ScoreIcon Type=Font Black -[ScoreTextName2] -X =50 -Y =160 -Font =1 -Size =12 -Text =P1 -Color =P1Dark +[ScoreStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[ScoreStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[ScoreText2] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=song score -[ScoreTextName3] -X =510 -Y =160 -Font =1 -Size =12 -Text =P2 -Color =P2Dark +[ScoreStatic4] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[ScoreText3] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=SING_LEGEND_CONTINUE +#end of main stuff -[ScoreTextScore2] -X =100 -Y =110 -Color=GrayDark -Font =1 -Size =9 -Text =Tone Deaf +# # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # +[ScoreTextName1] +X =150 +Y =260 +Font =0 +Size =14 +Text =P1 +Color =White Align=0 -[ScoreTextScore3] -X =560 -Y =110 -Color=GrayDark +[ScoreTextScore1] +X =150 +Y =430 +Color=White Font =1 Size =9 Text =Tone Deaf Align=0 - - -[ScoreTextNotes2] -X =85 -Y =220 -Color=GrayDark +[ScoreTextNotes1] +X =150 +Y =340 +Color=White Font =0 Size =9 Text=SING_NOTES Align=0 -[ScoreTextNotes3] -X =545 -Y =220 -Color=GrayDark +[ScoreTextNotesScore1] +X =440 +Y =340 +Color=White Font =0 -Size =9 -Text =SING_NOTES -Align=0 - - - -[ScoreTextNotesScore2] -X =290 -Y =220 -Color=GrayDark -Font =1 -Size =10 -Align =2 -Text =0000 - -[ScoreTextNotesScore3] -X =750 -Y =220 -Color=GrayDark -Font =1 Size =10 Align =2 -Text =0000 - - +Text =0 -[ScoreTextLineBonus2] -X =85 -Y =260 -Color=GrayDark +[ScoreTextLineBonus1] +X =150 +Y =370 +Color=White Font =0 Size =9 Text =SING_PHRASE_BONUS Align=0 -[ScoreTextLineBonus3] -X =545 -Y =260 -Color=GrayDark +[ScoreTextLineBonusScore1] +X =440 +Y =370 +Color=White Font =0 -Size =9 -Text =SING_PHRASE_BONUS -Align=0 - - - -[ScoreTextLineBonusScore2] -X =290 -Y =260 -Color=GrayDark -Font =1 -Size =10 -Align =2 -Text =0000 - -[ScoreTextLineBonusScore3] -X =750 -Y =260 -Color=GrayDark -Font =1 Size =10 Align =2 -Text =0000 - +Text =0 -[ScoreTextGoldenNotes2] -X =85 -Y =300 -Color=GrayDark +[ScoreTextGoldenNotes1] +X =150 +Y =400 +Color=White Font =0 Size =9 Text =SING_GOLDEN_NOTES Align=0 -[ScoreTextGoldenNotes3] -X =545 -Y =300 -Color=GrayDark +[ScoreTextGoldenNotesScore1] +X =440 +Y =400 +Color=White Font =0 -Size =9 -Text =SING_GOLDEN_NOTES -Align=0 - - -[ScoreTextGoldenNotesScore2] -X =290 -Y =300 -Color=GrayDark -Font =1 -Size =10 -Align =2 -Text =0000 - -[ScoreTextGoldenNotesScore3] -X =750 -Y =300 -Color=GrayDark -Font =1 Size =10 Align =2 -Text =0000 +Text =0 -[ScoreTextTotal2] -X =50 -Y =370 -Color=GrayDark +[ScoreTextTotal1] +X =180 +Y =460 +Color=White Font =0 -Size =9 -Text =SING_TOTAL -Align=0 - -[ScoreTextTotal3] -X =510 -Y =370 -Color=GrayDark -Font =1 -Size =9 -Text =SING_TOTAL +Size =14 +Text=SING_TOTAL Align=0 -[ScoreTextTotalSCore2] -X =290 -Y =360 -Color=GrayDark -Font =1 -Size =15 -Align =2 -Text =00000 - -[ScoreTextTotalScore3] -X =750 -Y =360 -Color=GrayDark -Font =1 -Size =15 +[ScoreTextTotalSCore1] +X =440 +Y =460 +Color=White +Font =0 +Size =14 Align =2 -Text =00000 +Text =0 -[ScorePlayer2Static1] +[ScorePlayer1Static1] Tex =ScoreLine -X =50 -Y =205 -W =240 -H =6 +X =148 +Y =338 +W =295 +H =2 +Color =White Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer2Static2] +[ScorePlayer1Static2] Tex =ScoreLine -X =50 -Y =345 -W =240 -H =6 +X =148 +Y =368 +W =295 +H =2 +Color =White Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer2Static3] +[ScorePlayer1Static3] Tex =ScoreLine -X =50 -Y =410 -W =240 -H =6 +X =148 +Y =398 +W =295 +H =2 +Color =White Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLightest2] -Tex =ScoreBox -X =50 -Y =220 -W =30 -H =30 -Color = DarkPurple -#P1Lightest -Type= -TexX1=0 +[ScorePlayer1Static4] +Tex =ScoreLine +X =148 +Y =428 +W =295 +H =2 +Color =White +Type =Font Black +TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLight2] -Tex =ScoreBox -X =50 -Y =260 -W =30 -H =30 -Color =DarkGreen -#P1Light -Type= +[ScorePlayer1Static5] +Tex =ScoreLine +X =148 +Y =458 +W =295 +H =4 +Type =Font Black +Color =White TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxDark2] -Tex =ScoreBox -X =50 -Y =300 -W =30 -H =30 +[ScorePlayer1Static6] +Tex =PlayerNumberBox +X =150 +Y =467 +W =25 +H =25 +Type =Font Black Color =P1Dark -Type= TexX1=0 TexY1=0 TexX2=1 TexY2=1 +Z=0.9 +Reflection=1 +ReflectionSpacing=1 -[ScorePlayer3Static1] -Tex =ScoreLine -X =510 -Y =205 -W =240 -H =6 +[ScorePlayer1Text1] +X =154 +Y =472 +W =30 +H =30 +Z=1 +Color=White +Font =1 +Size =5 +Align=0 +Text=P1 + +# S C O R E B A R S +[ScoreStaticBackLevel1] +Tex =ScoreLevel +X =450 +Y =160 +W =150 +H =300 +Color =P1Lightest Type =Font Black -Color =GrayDark TexX1=0 -TexY1=0 +TexY1=0.1 TexX2=1 -TexY2=1 +TexY2=0.9 -[ScorePlayer3Static2] -Tex =ScoreLine -X =510 -Y =345 -W =240 -H =6 +[ScoreStaticBackLevelRound1] +Tex =ScoreLevelRound +X =450 +Y =130 +W =150 +H =30 +Color =P1Lightest Type =Font Black -Color =GrayDark TexX1=0 TexY1=0 TexX2=1 -TexY2=1 +TexY2=0.5 -[ScorePlayer3Static3] -Tex =ScoreLine -X =510 +[ScoreStaticLevel1] +Tex =ScoreLevel +X =450 Y =410 -W =240 -H =6 +W =150 +H =30 +Color =P1Light Type =Font Black -Color =GrayDark TexX1=0 -TexY1=0 +TexY1=0.1 TexX2=1 -TexY2=1 +TexY2=0.9 -[ScoreStaticBoxLightest3] -Tex =ScoreBox -X =510 -Y =220 -W =30 +[ScoreStaticLevelRound1] +Tex =ScoreLevelRound +X =450 +Y =380 +W =150 H =30 -Color =P2Lightest -Type= +Color =P1Light +Type =Font Black TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[ScoreStaticBoxLight3] -Tex =ScoreBox -X =510 -Y =260 -W =30 +[ScorePlayer1Static7] +Tex =ScoreEndCap +X =469 +Y =460 +W =112 H =30 -Color =P2Light -Type= +Color =P1Dark +Type =Font Black TexX1=0 TexY1=0 TexX2=1 TexY2=1 +Reflection=1 +ReflectionSpacing=1 -[ScoreStaticBoxDark3] -Tex =ScoreBox -X =510 -Y =300 -W =30 -H =30 -Color =P2Dark -Type= +[ScorePlayer1Static8] +Tex =ScoreLine +X =468 +Y =460 +W =114 +H =2 +Color =White +Type =Font Black TexX1=0 -TexY1=0 +TexY1=0.1 TexX2=1 -TexY2=1 +TexY2=0.9 +Z=1 -# # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # -[ScoreTextName1] -X =150 + +# # # # # # # # # # # # # # # # # # Two Player Score # # # # # # # # # # # # +# P L A Y E R O N E +[ScoreTextName2] +X =20 Y =260 Font =0 Size =14 @@ -1243,8 +1214,8 @@ Text =P1 Color =White Align=0 -[ScoreTextScore1] -X =150 +[ScoreTextScore2] +X =20 Y =430 Color=White Font =1 @@ -1252,8 +1223,8 @@ Size =9 Text =Tone Deaf Align=0 -[ScoreTextNotes1] -X =150 +[ScoreTextNotes2] +X =20 Y =340 Color=White Font =0 @@ -1261,17 +1232,17 @@ Size =9 Text=SING_NOTES Align=0 -[ScoreTextNotesScore1] -X =440 +[ScoreTextNotesScore2] +X =300 Y =340 Color=White Font =0 Size =10 Align =2 -Text =0 +Text =0000 -[ScoreTextLineBonus1] -X =150 +[ScoreTextLineBonus2] +X =20 Y =370 Color=White Font =0 @@ -1279,17 +1250,17 @@ Size =9 Text =SING_PHRASE_BONUS Align=0 -[ScoreTextLineBonusScore1] -X =440 +[ScoreTextLineBonusScore2] +X =300 Y =370 Color=White Font =0 Size =10 Align =2 -Text =0 +Text =0000 -[ScoreTextGoldenNotes1] -X =150 +[ScoreTextGoldenNotes2] +X =20 Y =400 Color=White Font =0 @@ -1297,116 +1268,93 @@ Size =9 Text =SING_GOLDEN_NOTES Align=0 -[ScoreTextGoldenNotesScore1] -X =440 +[ScoreTextGoldenNotesScore2] +X =300 Y =400 Color=White Font =0 Size =10 Align =2 -Text =0 +Text =0000 -[ScoreTextTotal1] -X =180 +[ScoreTextTotal2] +X =50 Y =460 Color=White Font =0 Size =14 -Text=SING_TOTAL +Text =SING_TOTAL Align=0 -[ScoreTextTotalSCore1] -X =440 +[ScoreTextTotalSCore2] +X =300 Y =460 Color=White Font =0 Size =14 Align =2 -Text =0 +Text =00000 -[ScorePlayer1Static1] +# Lines +[ScorePlayer2Static1] Tex =ScoreLine -X =148 +X =20 Y =338 -W =295 +W =280 H =2 -Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color =White -[ScorePlayer1Static2] +[ScorePlayer2Static2] Tex =ScoreLine -X =148 +X =20 Y =368 -W =295 +W =280 H =2 -Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color =White -[ScorePlayer1Static3] +[ScorePlayer2Static3] Tex =ScoreLine -X =148 +X =20 Y =398 -W =295 +W =280 H =2 -Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color =White -[ScorePlayer1Static4] +[ScorePlayer2Static4] Tex =ScoreLine -X =148 +X =20 Y =428 -W =295 +W =280 H =2 -Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color =White -[ScorePlayer1Static5] +[ScorePlayer2Static5] Tex =ScoreLine -X =148 +X =20 Y =458 -W =295 +W =280 H =4 Type =Font Black Color =White -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScorePlayer1Static6] +[ScorePlayer2Static6] Tex =PlayerNumberBox -X =150 +X =20 Y =467 W =25 H =25 Type =Font Black Color =P1Dark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 Z=0.9 Reflection=1 -ReflectionSpacing=1 +ReflectionSpacing=4 -[ScorePlayer1Text1] -X =154 +[ScorePlayer2Text1] +X =24 Y =472 W =30 H =30 @@ -1417,79 +1365,79 @@ Size =5 Align=0 Text=P1 -# S C O R E B A R S -[ScoreStaticBackLevel1] +#ScoreBar +[ScoreStaticBackLevel2] Tex =ScoreLevel -X =450 +X =293 Y =160 -W =150 +W =120 H =300 Color =P1Lightest Type =Font Black TexX1=0 -TexY1=0.1 +TexY1=0 TexX2=1 -TexY2=0.9 +TexY2=1 -[ScoreStaticBackLevelRound1] +[ScoreStaticBackLevelRound2] Tex =ScoreLevelRound -X =450 +X =293 Y =130 -W =150 +W =120 H =30 Color =P1Lightest Type =Font Black -TexX1=0 +TexX1=1 TexY1=0 -TexX2=1 +TexX2=0 TexY2=0.5 -[ScoreStaticLevel1] +[ScoreStaticLevel2] Tex =ScoreLevel -X =450 +X =293 Y =410 -W =150 +W =120 H =30 -Color =P1Light +Color =P1Dark Type =Font Black TexX1=0 -TexY1=0.1 +TexY1=0 TexX2=1 -TexY2=0.9 +TexY2=1 -[ScoreStaticLevelRound1] +[ScoreStaticLevelRound2] Tex =ScoreLevelRound -X =450 +X =293 Y =380 -W =150 +W =120 H =30 -Color =P1Light +Color =P1Dark Type =Font Black -TexX1=0 +TexX1=1 TexY1=0 -TexX2=1 +TexX2=0 TexY2=0.5 -[ScorePlayer1Static7] +[ScorePlayer2Static7] Tex =ScoreEndCap -X =469 +X =308 Y =460 -W =112 +W =90 H =30 Color =P1Dark Type =Font Black -TexX1=0 -TexY1=0.1 -TexX2=1 -TexY2=0.9 +TexX1=1 +TexY1=0 +TexX2=0 +TexY2=1 Reflection=1 -ReflectionSpacing=1 +ReflectionSpacing=4 -[ScorePlayer1Static8] +[ScorePlayer2Static8] Tex =ScoreLine -X =468 +X =307 Y =460 -W =114 +W =92 H =2 Color =White Type =Font Black @@ -1499,65 +1447,180 @@ TexX2=1 TexY2=0.9 Z=1 -# # # # # # # # # # # # # # # # # # Two Player Score? # # # # # # # # # # # # +# P L A Y E R T W O +[ScoreTextName3] +X =780 +Y =260 +Font =0 +Size =14 +Text =P2 +Color =White +Align=2 -[ScoreStaticBackLevel2] -Tex =ScoreLevel -X =290 -Y =140 -W =120 -H =300 -Color =P1Lightest +[ScoreTextScore3] +X =780 +Y =430 +Color=White +Font =1 +Size =9 +Text =Tone Deaf +Align=2 + +[ScoreTextNotes3] +X =780 +Y =340 +Color=White +Font =0 +Size =9 +Text =SING_NOTES +Align=2 + +[ScoreTextNotesScore3] +X =500 +Y =340 +Color=White +Font =0 +Size =10 +Align =0 +Text =0000 + +[ScoreTextLineBonus3] +X =780 +Y =370 +Color=White +Font =0 +Size =9 +Text =SING_PHRASE_BONUS +Align=2 + +[ScoreTextLineBonusScore3] +X =500 +Y =370 +Color=White +Font =0 +Size =10 +Align =0 +Text =0000 + +[ScoreTextGoldenNotes3] +X =780 +Y =400 +Color=White +Font =0 +Size =9 +Text =SING_GOLDEN_NOTES +Align=2 + +[ScoreTextGoldenNotesScore3] +X =500 +Y =400 +Color=White +Font =0 +Size =10 +Align =0 +Text =0000 + +[ScoreTextTotal3] +X =750 +Y =460 +Color=White +Font =0 +Size =14 +Text =SING_TOTAL +Align=2 +Reflection=1 +ReflectionSpacing=4 + +[ScoreTextTotalScore3] +X =500 +Y =460 +Color=White +Font =0 +Size =14 +Align =0 +Text =00000 +Reflection=1 +ReflectionSpacing=4 + +#Lines +[ScorePlayer3Static1] +Tex =ScoreLine +X =500 +Y =338 +W =280 +H =2 Type =Font Black -TexX1=0 -TexY1=0.1 -TexX2=1 -TexY2=0.9 +Color =White -[ScoreStaticBackLevelRound2] -Tex =ScoreLevelRound -X =290 -Y =110 -W =120 -H =30 -Color =P1Lightest +[ScorePlayer3Static2] +Tex =ScoreLine +X =500 +Y =368 +W =280 +H =2 Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=0.5 +Color =White -[ScoreStaticLevel2] -Tex =ScoreLevel -X =290 -Y =410 -W =120 -H =30 -Color =P1Light +[ScorePlayer3Static3] +Tex =ScoreLine +X =500 +Y =398 +W =280 +H =2 Type =Font Black -TexX1=0 -TexY1=0.1 -TexX2=1 -TexY2=0.9 +Color =White -[ScoreStaticLevelRound2] -Tex =ScoreLevelRound -X =290 -Y =380 -W =120 -H =30 -Color =P1Light +[ScorePlayer3Static4] +Tex =ScoreLine +X =500 +Y =428 +W =280 +H =2 Type =Font Black -TexX1=0 +Color =White + +[ScorePlayer3Static5] +Tex =ScoreLine +X =500 +Y =458 +W =280 +H =4 +Type =Font Black +Color =White + +[ScorePlayer3Static6] +Tex =PlayerNumberBox +X =755 +Y =467 +W =25 +H =25 +Type =Font Black +Color =P2Dark +Z=0.9 +TexX1=1 TexY1=0 -TexX2=1 -TexY2=0.5 +TexX2=0 +TexY2=1 +Reflection=1 +ReflectionSpacing=4 -# # # # # # # # # # # # # # # # # # Three Player Score? # # # # # # # # # # # # +[ScorePlayer3Text1] +X =759 +Y =472 +W =30 +H =30 +Z=1 +Color=White +Font =1 +Size =5 +Align=0 +Text=P2 + +#ScoreBars [ScoreStaticBackLevel3] Tex =ScoreLevel -X =390 -Y =140 +X =387 +Y =160 W =120 H =300 Color =P2Lightest @@ -1569,8 +1632,8 @@ TexY2=0.9 [ScoreStaticBackLevelRound3] Tex =ScoreLevelRound -X =390 -Y =110 +X =387 +Y =130 W =120 H =30 Color =P2Lightest @@ -1582,11 +1645,11 @@ TexY2=0.5 [ScoreStaticLevel3] Tex =ScoreLevel -X =390 +X =387 Y =410 W =120 H =30 -Color =P2Light +Color =P2Dark Type =Font Black TexX1=0 TexY1=0.1 @@ -1595,17 +1658,47 @@ TexY2=0.9 [ScoreStaticLevelRound3] Tex =ScoreLevelRound -X =390 +X =387 Y =380 W =120 H =30 -Color =P2Light +Color =P2Dark Type =Font Black TexX1=0 TexY1=0 TexX2=1 TexY2=0.5 +[ScorePlayer3Static7] +Tex =ScoreEndCap +X =402 +Y =460 +W =90 +H =30 +Color =P2Dark +Type =Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 +Reflection=1 +ReflectionSpacing=4 + +[ScorePlayer3Static8] +Tex =ScoreLine +X =401 +Y =460 +W =92 +H =2 +Color =White +Type =Font Black +TexX1=0 +TexY1=0.1 +TexX2=1 +TexY2=0.9 +Z=1 + +# # # # # # # # # # # # # # # # # # Three Player Score? # # # # # # # # # # # # [ScorePlayer4Static1] X=20 Y=205 @@ -2254,7 +2347,7 @@ Type=Font Black [OptionsStatic2] X =0 Y =549 -W =254 +W =252 H =28 Tex=Leiste1 Color =White @@ -3640,7 +3733,7 @@ Text=SING_DIFFICULTY [LevelStatic1] X =0 Y =549 -W =254 +W =252 H =28 Tex=Leiste1 Color =White @@ -3758,7 +3851,7 @@ Tex=MainBG [NameStatic1] X =0 Y =549 -W =254 +W =252 H =28 Tex=Leiste1 Color =White -- cgit v1.2.3 From 1027a18f09b4e176687ec7508a4085490ec519fb Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 16 Apr 2007 20:55:10 +0000 Subject: Theme/Score: Score screen is now fully skinned, so is the Top5 screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@99 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 1050 ++++++++++++++++++++++++----------------------------- 1 file changed, 465 insertions(+), 585 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index e3444b4e..0c6d916c 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -932,8 +932,6 @@ Font =0 Size =7 Align=0 Text=SING_LEGEND_CONTINUE - - #end of main stuff # # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # @@ -1027,6 +1025,7 @@ Size =14 Align =2 Text =0 +#Lines [ScorePlayer1Static1] Tex =ScoreLine X =148 @@ -1035,10 +1034,6 @@ W =295 H =2 Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [ScorePlayer1Static2] Tex =ScoreLine @@ -1048,10 +1043,6 @@ W =295 H =2 Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [ScorePlayer1Static3] Tex =ScoreLine @@ -1061,10 +1052,6 @@ W =295 H =2 Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [ScorePlayer1Static4] Tex =ScoreLine @@ -1074,10 +1061,6 @@ W =295 H =2 Color =White Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [ScorePlayer1Static5] Tex =ScoreLine @@ -1087,10 +1070,6 @@ W =295 H =4 Type =Font Black Color =White -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [ScorePlayer1Static6] Tex =PlayerNumberBox @@ -1106,7 +1085,7 @@ TexX2=1 TexY2=1 Z=0.9 Reflection=1 -ReflectionSpacing=1 +ReflectionSpacing=4 [ScorePlayer1Text1] X =154 @@ -1120,7 +1099,7 @@ Size =5 Align=0 Text=P1 -# S C O R E B A R S +#ScoreBar [ScoreStaticBackLevel1] Tex =ScoreLevel X =450 @@ -1186,7 +1165,7 @@ TexY1=0 TexX2=1 TexY2=1 Reflection=1 -ReflectionSpacing=1 +ReflectionSpacing=4 [ScorePlayer1Static8] Tex =ScoreLine @@ -1616,7 +1595,7 @@ Size =5 Align=0 Text=P2 -#ScoreBars +#ScoreBar [ScoreStaticBackLevel3] Tex =ScoreLevel X =387 @@ -1698,618 +1677,488 @@ TexX2=1 TexY2=0.9 Z=1 -# # # # # # # # # # # # # # # # # # Three Player Score? # # # # # # # # # # # # -[ScorePlayer4Static1] -X=20 -Y=205 -W=240 -H=6 -Tex=ScoreLine -Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScorePlayer4Static2] -X=20 -Y=345 -W=240 -H=6 -Tex=ScoreLine -Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScorePlayer4Static3] -X=20 -Y=410 -W=240 -H=6 -Tex=ScoreLine -Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[ScoreStaticBoxLightest4] -X=20 -Y=220 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P1Lightest -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[ScoreStaticBoxLight4] -X=20 -Y=260 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P1Light -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[ScoreStaticBoxDark4] -X=20 -Y=300 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P1Dark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - +# # # # # # # # # # # # # # # # # # Three Player Score # # # # # # # # # # # # +# P L A Y E R O N E [ScoreTextName4] X=20 Y=160 -Font=1 -Size=12 +Font=0 +Size=14 Align=0 Text=P1 Color=P1Dark -[ScoreTextScore4] -X=70 -Y=110 -Font=1 -Size=9 -Align=0 -Text=Tone Deaf -Color=GrayDark + [ScoreTextNotes4] -X=55 +X=20 Y=220 Font=0 Size=9 Align=0 Text=SING_NOTES -Color=GrayDark +Color=White + [ScoreTextNotesScore4] X=260 Y=220 -Font=1 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark +Color=White + [ScoreTextLineBonus4] -X=55 -Y=260 +X=20 +Y=250 Font=0 Size=9 Align=0 Text=SING_PHRASE_BONUS -Color=GrayDark +Color=White + [ScoreTextLineBonusScore4] X=260 -Y=260 -Font=1 +Y=250 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark +Color=White + [ScoreTextGoldenNotes4] -X=55 -Y=300 +X=20 +Y=280 Font=0 Size=9 Align=0 Text=SING_GOLDEN_NOTES -Color=GrayDark +Color=White + [ScoreTextGoldenNotesScore4] X=260 -Y=300 -Font=1 +Y=280 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark -[ScoreTextTotal4] +Color=White + +[ScoreTextScore4] X=20 -Y=370 -Font=0 +Y=310 +Font=1 Size=9 Align=0 +Text=Tone Deaf +Color=White + +[ScoreTextTotal4] +X=47 +Y=373 +Font=0 +Size=10 +Align=0 Text=SING_TOTAL -Color=GrayDark +Color=White + [ScoreTextTotalScore4] X=260 -Y=360 -Font=1 -Size=15 +Y=364 +Font=0 +Size=14 Align=2 Text=00000 -Color=GrayDark -[ScoreStaticBackLevel4] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticBackLevelRound4] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticLevel4] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticLevelRound4] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color=White + +[ScorePlayer4Static6] +Tex =PlayerNumberBox +X =20 +Y =370 +W =25 +H =25 +Type =Font Black +Color =P1Dark +Z=0.9 +Reflection=1 +ReflectionSpacing=4 + +[ScorePlayer4Text1] +X =24 +Y =376 +W =30 +H =30 +Z=1 +Color=White +Font =1 +Size =5 +Align=0 +Text=P1 + +#lines +[ScorePlayer4Static1] +X=20 +Y=218 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer4Static2] +X=20 +Y=248 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer4Static3] +X=20 +Y=278 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer4Static4] +X=20 +Y=308 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer4Static5] +X=20 +Y=338 +W=240 +H=4 +Tex=ScoreLine +Type=Font Black +Color=White + +# P L A Y E R T W O [ScoreTextName5] X=280 Y=160 -Font=1 -Size=12 +Font=0 +Size=14 Align=0 Text=P2 Color=P2Dark -[ScoreTextScore5] -X=330 -Y=110 -Font=1 -Size=9 -Align=0 -Text=Tone Deaf -Color=GrayDark + [ScoreTextNotes5] -X=315 +X=280 Y=220 Font=0 Size=9 Align=0 Text=SING_NOTES -Color=GrayDark +Color=White + [ScoreTextNotesScore5] X=520 Y=220 -Font=1 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark +Color=White + [ScoreTextLineBonus5] -X=315 -Y=260 +X=280 +Y=250 Font=0 Size=9 Align=0 Text=SING_PHRASE_BONUS -Color=GrayDark +Color=White + [ScoreTextLineBonusScore5] X=520 -Y=260 -Font=1 +Y=250 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark +Color=White + [ScoreTextGoldenNotes5] -X=315 -Y=300 +X=280 +Y=280 Font=0 Size=9 Align=0 Text=SING_GOLDEN_NOTES -Color=GrayDark +Color=White + [ScoreTextGoldenNotesScore5] X=520 -Y=300 -Font=1 +Y=280 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark -[ScoreTextTotal5] +Color=White + +[ScoreTextScore5] X=280 -Y=370 -Font=0 +Y=310 +Font=1 Size=9 Align=0 +Text=Tone Deaf +Color=White + +[ScoreTextTotal5] +X=307 +Y=373 +Font=0 +Size=10 +Align=0 Text=SING_TOTAL -Color=GrayDark +Color=White + [ScoreTextTotalScore5] X=520 -Y=360 -Font=1 -Size=15 +Y=364 +Font=0 +Size=14 Align=2 Text=00000 -Color=GrayDark -[ScoreStaticBackLevel5] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticBackLevelRound5] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticLevel5] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticLevelRound5] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color=White + +[ScorePlayer5Static6] +Tex =PlayerNumberBox +X =280 +Y =370 +W =25 +H =25 +Type =Font Black +Color =P2Dark +Z=0.9 +Reflection=1 +ReflectionSpacing=4 + +[ScorePlayer5Text1] +X =284 +Y =376 +W =30 +H =30 +Z=1 +Color=White +Font =1 +Size =5 +Align=0 +Text=P2 + +[ScorePlayer5Static1] +X=280 +Y=218 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer5Static2] +X=280 +Y=248 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer5Static3] +X=280 +Y=278 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer5Static4] +X=280 +Y=308 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White + +[ScorePlayer5Static5] +X=280 +Y=338 +W=240 +H=4 +Tex=ScoreLine +Type=Font Black +Color=White + +# P L A Y E R T H R E E [ScoreTextName6] X=540 Y=160 -Font=1 -Size=12 +Font=0 +Size=14 Align=0 -Text=P2 +Text=P3 Color=P3Dark -[ScoreTextScore6] -X=590 -Y=110 -Font=1 -Size=9 -Align=0 -Text=Tone Deaf -Color=GrayDark + [ScoreTextNotes6] -X=575 +X=540 Y=220 Font=0 Size=9 Align=0 Text=SING_NOTES -Color=GrayDark +Color=White + [ScoreTextNotesScore6] X=780 Y=220 -Font=1 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark +Color=White + [ScoreTextLineBonus6] -X=575 -Y=260 +X=540 +Y=250 Font=0 Size=9 Align=0 Text=SING_PHRASE_BONUS -Color=GrayDark +Color=White + [ScoreTextLineBonusScore6] X=780 -Y=260 -Font=1 +Y=250 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark +Color=White + [ScoreTextGoldenNotes6] -X=575 -Y=300 +X=540 +Y=280 Font=0 Size=9 Align=0 Text=SING_GOLDEN_NOTES -Color=GrayDark +Color=White + [ScoreTextGoldenNotesScore6] X=780 -Y=300 -Font=1 +Y=280 +Font=0 Size=10 Align=2 Text=0000 -Color=GrayDark -[ScoreTextTotal6] +Color=White + +[ScoreTextScore6] X=540 -Y=370 -Font=0 +Y=310 +Font=1 Size=9 Align=0 +Text=Tone Deaf +Color=White + +[ScoreTextTotal6] +X=567 +Y=373 +Font=0 +Size=10 +Align=0 Text=SING_TOTAL -Color=GrayDark +Color=White + [ScoreTextTotalScore6] X=780 -Y=360 -Font=1 -Size=15 +Y=364 +Font=0 +Size=14 Align=2 -Text=00000 -Color=GrayDark -[ScoreStaticBackLevel6] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticBackLevelRound6] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticLevel6] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScoreStaticLevelRound6] -X=0 -Y=0 -W=0 -H=0 -Tex= -Type= -Color= -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScorePlayer5Static1] -X=280 -Y=205 -W=240 -H=6 -Tex=ScoreLine -Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScorePlayer5Static2] -X=280 -Y=345 -W=240 -H=6 -Tex=ScoreLine -Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 -[ScorePlayer5Static3] -X=280 -Y=410 -W=240 -H=6 -Tex=ScoreLine -Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[ScoreStaticBoxLightest5] -X=280 -Y=220 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P2Lightest -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Text=00000 +Color=White -[ScoreStaticBoxLight5] -X=280 -Y=260 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P2Light -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +[ScorePlayer6Static6] +Tex =PlayerNumberBox +X =540 +Y =370 +W =25 +H =25 +Type =Font Black +Color =P3Dark +Z=0.9 +Reflection=1 +ReflectionSpacing=4 -[ScoreStaticBoxDark5] -X=280 -Y=300 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P2Dark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +[ScorePlayer6Text1] +X =544 +Y =376 +W =30 +H =30 +Z=1 +Color=White +Font =1 +Size =5 +Align=0 +Text=P3 +#lines [ScorePlayer6Static1] X=540 -Y=205 +Y=218 W=240 -H=6 +H=2 Tex=ScoreLine Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color=White + [ScorePlayer6Static2] X=540 -Y=345 +Y=248 W=240 -H=6 +H=2 Tex=ScoreLine Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color=White + [ScorePlayer6Static3] X=540 -Y=410 +Y=278 W=240 -H=6 +H=2 Tex=ScoreLine Type=Font Black -Color=GrayDark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[ScoreStaticBoxLightest6] -X=540 -Y=220 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P3Lightest -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Color=White -[ScoreStaticBoxLight6] +[ScorePlayer6Static4] X=540 -Y=260 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P3Light -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Y=308 +W=240 +H=2 +Tex=ScoreLine +Type=Font Black +Color=White -[ScoreStaticBoxDark6] +[ScorePlayer6Static5] X=540 -Y=300 -W=30 -H=30 -Tex=ScoreBox -Type= -Color=P3Dark -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +Y=338 +W=240 +H=4 +Tex=ScoreLine +Type=Font Black +Color=White [Options] #Texts = 4 @@ -3463,151 +3312,202 @@ Texts=1 [Top5Background] Tex=Top5BG - [Top5Text1] -X =100 -Y =50 -Color =Gray -Font =1 +X =70 +Y =6 +Color=White +Font =0 Size =20 -Align =0 +Align=0 Text =SING_TOP_5_CHARTS -[Top5Static1] -Tex=Bar -X=560 -Y=55 -W=140 -H=50 -Color=ColorLight -Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +[Top5TextArtistTitle] +X =70 +Y =53 +Color =White +Font =0 +Size =10 +Align =0 +Text =artist - title + +[Top5Text4] +X =70 +Y =73 +Color=White +Font =0 +Size =10 +Align=0 +Text =SING_OPTIONS_GAME_DIFFICULTY [Top5TextLevel] -X =630 -Y =65 +X =250 +Y =73 Color =White -Font =1 +Font =0 Size =10 Align =1 Text =easy +[Top5Static1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =ScoreIcon +Type=Font Black + +[Top5Static2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 -[Top5TextArtistTitle] -X =100 -Y =120 -Color =Black +[Top5Static3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[Top5Text2] +X =120 +Y =552 +Color=Black Font =0 -Size =10 -Align =0 -Text =artist - title +Size =7 +Align=0 +Text=SING_TOP_5_CHARTS + +[Top5Static4] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[Top5Text3] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_CONTINUE [Top5TextName1] -X =170 -Y =200 -Color =GrayDark -Font =1 +X =150 +Y =190 +Color =White +Font =0 Size =14 Align =0 Text =1. Player1 [Top5TextName2] X =150 -Y =290 -Color =GrayDark +Y =240 +Color =White Font =0 -Size =11 +Size =14 Align =0 Text =2. Player2 [Top5TextName3] X =150 -Y =340 -Color =GrayDark +Y =290 +Color =White Font =0 -Size =11 +Size =14 Align =0 Text =3. Player3 [Top5TextName4] X =150 -Y =390 -Color =GrayDark +Y =340 +Color =White Font =0 -Size =11 +Size =14 Align =0 Text =4. Player4 [Top5TextName5] X =150 -Y =440 -Color =GrayDark +Y =390 +Color =White Font =0 -Size =11 +Size =14 Align =0 Text =5. Player5 - [Top5TextScore1] X =680 -Y =195 -Color =GrayDark -Font =1 -Size =17 +Y =190 +Color =White +Font =0 +Size =14 Align =2 Text =00000 [Top5TextScore2] X =680 -Y =290 -Color =GrayDark -Font =1 +Y =240 +Color =White +Font =0 Size =14 Align =2 Text =00000 [Top5TextScore3] X =680 -Y =340 -Color =GrayDark -Font =1 +Y =290 +Color =White +Font =0 Size =14 Align =2 Text =00000 [Top5TextScore4] X =680 -Y =390 -Color =GrayDark -Font =1 +Y =340 +Color =White +Font =0 Size =14 Align =2 Text =00000 [Top5TextScore5] X =680 -Y =440 -Color =GrayDark -Font =1 +Y =390 +Color =White +Font =0 Size =14 Align =2 Text =00000 [Top5TextNumber1] -X =130 -Y =202 +X =120 +Y =193 Color =White Font =1 -Size =11 +Size =9 Align =1 Text =1 [Top5TextNumber2] X =120 -Y =293 +Y =243 Color =White Font =1 Size =9 @@ -3616,7 +3516,7 @@ Text =2 [Top5TextNumber3] X =120 -Y =343 +Y =293 Color =White Font =1 Size =9 @@ -3625,7 +3525,7 @@ Text =3 [Top5TextNumber4] X =120 -Y =393 +Y =343 Color =White Font =1 Size =9 @@ -3634,7 +3534,7 @@ Text =4 [Top5TextNumber5] X =120 -Y =443 +Y =393 Color =White Font =1 Size =9 @@ -3642,69 +3542,49 @@ Align =1 Text =5 [Top5StaticNumber1] -Tex=Bar +Tex=PlayerNumberBox X=100 -Y=190 -W=60 -H=60 -Color=ColorLight +Y=186 +W=40 +H=40 +Color=P1Dark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [Top5StaticNumber2] -Tex=Bar +Tex=PlayerNumberBox X=100 -Y=286 +Y=236 W=40 H=40 -Color=ColorLight +Color=P1Dark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [Top5StaticNumber3] -Tex=Bar +Tex=PlayerNumberBox X=100 -Y=336 +Y=286 W=40 H=40 -Color=ColorLight +Color=P1Dark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [Top5StaticNumber4] -Tex=Bar +Tex=PlayerNumberBox X=100 -Y=386 +Y=336 W=40 H=40 -Color=ColorLight +Color=P1Dark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [Top5StaticNumber5] -Tex=Bar +Tex=PlayerNumberBox X=100 -Y=436 +Y=386 W=40 H=40 -Color=ColorLight +Color=P1Dark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [Level] Texts=4 -- cgit v1.2.3 From e8b20046dd4c181ea9b45fb3908daef41746cff2 Mon Sep 17 00:00:00 2001 From: b1indy Date: Mon, 16 Apr 2007 22:10:47 +0000 Subject: Fixed bug in TSkin.onThemeChange that caused a crash git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@100 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/USkins.pas | 1 + 1 file changed, 1 insertion(+) diff --git a/Game/Code/Classes/USkins.pas b/Game/Code/Classes/USkins.pas index 6cd4a1db..67b0ae93 100644 --- a/Game/Code/Classes/USkins.pas +++ b/Game/Code/Classes/USkins.pas @@ -145,6 +145,7 @@ var S: integer; Name: String; begin + Ini.SkinNo:=0; SetLength(ISkin, 0); Name := Uppercase(ITheme[Ini.Theme]); for S := 0 to High(Skin) do -- cgit v1.2.3 From e8f259a1a37ce5cf10a79dc53e184d6af4e7b7d6 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 17 Apr 2007 00:48:03 +0000 Subject: Changed aadvanced options to switch on/off sing-effects and screen-fading Changed Languages (english, german) and Theme (deluxe) to reflect these changes implemented checks for config values to make these things work as expected git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@101 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 11 ++++---- Game/Code/Classes/UIni.pas | 36 ++++++++++++------------- Game/Code/Classes/UThemes.pas | 8 +++--- Game/Code/Menu/UDisplay.pas | 40 +++++++++++++++++++--------- Game/Code/Screens/UScreenOptionsAdvanced.pas | 4 +-- Game/Code/Screens/UScreenSing.pas | 5 ++-- Languages/English.ini | 4 +-- Languages/German.ini | 4 +-- Languages/readme.txt | 4 +-- Themes/Deluxe.ini | 8 +++--- 10 files changed, 69 insertions(+), 55 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index e2c01b4b..7eaddac4 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -48,7 +48,7 @@ var StarfrG: integer; - + //SingBar Mod TickOld: cardinal; TickOld2:cardinal; @@ -216,7 +216,7 @@ begin if not FreeStyle then begin - if Ini.EffectGolden = 0 then + if Ini.EffectSing = 0 then // If Golden note Effect of then Change not Color begin case Wartosc of @@ -270,7 +270,7 @@ begin glEnd; // Golden Star Patch - if (Wartosc = 2) AND (Ini.EffectGolden=1) then + if (Wartosc = 2) AND (Ini.EffectSing=1) then begin GoldenRec.SaveGoldenStarsRec(GoldenStarPos, Rec.Top, Rec.Right, Rec.Bottom); end; @@ -379,7 +379,7 @@ var //Rec.Right := X + (Start+Dlugosc-Czesci[0].Czesc[Czesci[0].Akt].StartNote) * TempR - NotesW - 0.5 + 10*ScreenX; //if (Start+Dlugosc-1 = Czas.AktBeatD) then - if Perfect and (Ini.EffectPerfect=1) then begin + if Perfect and (Ini.EffectSing=1) then begin // A := sqrt((1+sin(Music.Position * 3))/2); A := 1 - 2*(Czas.Teraz - GetTimeFromBeat(Start+Dlugosc)); if not (Start+Dlugosc-1 = Czas.AktBeatD) then @@ -387,7 +387,6 @@ var //Star animation counter //inc(Starfr); //Starfr := Starfr mod 128; - GoldenRec.SavePerfectNotePos(Rec.Left, Rec.Top); { SingDrawStar(Rec.Left+2, Rec.Top+4, A);} end; @@ -431,7 +430,7 @@ var // passing on NrGracza... hope this is really something like the player-number, not only // some kind of weird index into a colour-table - if (Ini.EffectGolden=1) then + if (Ini.EffectSing=1) then GoldenRec.GoldenNoteTwinkle(Rec.Top,Rec.Bottom,Rec.Right, NrGracza); end; // if end; diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index d5589ea3..cafbc912 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -58,8 +58,8 @@ type // Advanced LoadAnimation: integer; - EffectPerfect: integer; - EffectGolden: integer; + EffectSing: integer; + ScreenFade: integer; AskbeforeDel: integer; OnSongClick: integer; LineBonus: integer; @@ -135,8 +135,8 @@ const // Advanced ILoadAnimation: array[0..1] of string = ('Off', 'On'); - IEffectPerfect: array[0..1] of string = ('Off', 'On'); - IEffectGolden: array[0..1] of string = ('Off', 'On'); + IEffectSing: 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'); @@ -430,15 +430,15 @@ begin for Pet := 0 to High(ILoadAnimation) do if Tekst = ILoadAnimation[Pet] then Ini.LoadAnimation := Pet; - // EffectPerfect - Tekst := IniFile.ReadString('Advanced', 'EffectPerfect', 'On'); - for Pet := 0 to High(IEffectPerfect) do - if Tekst = IEffectPerfect[Pet] then Ini.EffectPerfect := Pet; + // ScreenFade + Tekst := IniFile.ReadString('Advanced', 'ScreenFade', 'On'); + for Pet := 0 to High(IScreenFade) do + if Tekst = IScreenFade[Pet] then Ini.ScreenFade := Pet; - // EffectGolden - Tekst := IniFile.ReadString('Advanced', 'EffectGolden', 'On'); - for Pet := 0 to High(IEffectGolden) do - if Tekst = IEffectGolden[Pet] then Ini.EffectGolden := Pet; + // EffectSing + Tekst := IniFile.ReadString('Advanced', 'EffectSing', 'On'); + for Pet := 0 to High(IEffectSing) do + if Tekst = IEffectSing[Pet] then Ini.EffectSing := Pet; // AskbeforeDel Tekst := IniFile.ReadString('Advanced', 'AskbeforeDel', 'On'); @@ -618,13 +618,13 @@ begin Tekst := ILoadAnimation[Ini.LoadAnimation]; IniFile.WriteString('Advanced', 'LoadAnimation', Tekst); - //EffectPerfect - Tekst := IEffectPerfect[Ini.EffectPerfect]; - IniFile.WriteString('Advanced', 'EffectPerfect', Tekst); + //EffectSing + Tekst := IEffectSing[Ini.EffectSing]; + IniFile.WriteString('Advanced', 'EffectSing', Tekst); - //EffectGolden - Tekst := IEffectGolden[Ini.EffectGolden]; - IniFile.WriteString('Advanced', 'EffectGolden', Tekst); + //ScreenFade + Tekst := IScreenFade[Ini.ScreenFade]; + IniFile.WriteString('Advanced', 'ScreenFade', Tekst); //AskbeforeDel Tekst := IAskbeforeDel[Ini.AskbeforeDel]; diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 51b454ca..6837d17f 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -402,8 +402,8 @@ type TThemeOptionsAdvanced = class(TThemeBasic) SelectLoadAnimation: TThemeSelect; - SelectEffectPerfect: TThemeSelect; - SelectEffectGolden: TThemeSelect; + SelectEffectSing: TThemeSelect; + SelectScreenFade: TThemeSelect; SelectLineBonus: TThemeSelect; SelectAskbeforeDel: TThemeSelect; SelectOnSongClick: TThemeSelectSlide; @@ -1052,8 +1052,8 @@ begin ThemeLoadBasic(OptionsAdvanced, 'OptionsAdvanced'); ThemeLoadSelect (OptionsAdvanced.SelectLoadAnimation, 'OptionsAdvancedSelectLoadAnimation'); - ThemeLoadSelect (OptionsAdvanced.SelectEffectPerfect, 'OptionsAdvancedSelectEffectPerfect'); - ThemeLoadSelect (OptionsAdvanced.SelectEffectGolden, 'OptionsAdvancedSelectEffectGolden'); + ThemeLoadSelect (OptionsAdvanced.SelectScreenFade, 'OptionsAdvancedSelectScreenFade'); + ThemeLoadSelect (OptionsAdvanced.SelectEffectSing, 'OptionsAdvancedSelectEffectSing'); ThemeLoadSelect (OptionsAdvanced.SelectLineBonus, 'OptionsAdvancedSelectLineBonus'); ThemeLoadSelectSlide (OptionsAdvanced.SelectOnSongClick, 'OptionsAdvancedSelectSlideOnSongClick'); ThemeLoadSelect (OptionsAdvanced.SelectAskbeforeDel, 'OptionsAdvancedSelectAskbeforeDel'); diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index b6489c70..3f6e70da 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -15,6 +15,7 @@ type Fade: Real; // fade-mod doFade: Boolean; + canFade: Boolean; myFade: integer; lastTime: Cardinal; pTexData : Pointer; @@ -37,42 +38,51 @@ var implementation -uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture; +uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture, UIni; constructor TDisplay.Create; begin inherited Create; // fade mod myfade:=0; - doFade:=True; + + if Ini.ScreenFade=1 then + doFade:=True + else + doFade:=False; + + canFade:=True; // generate texture for fading between screens GetMem(pTexData, 1024*1024*3); if pTexData <> NIL then begin glGenTextures(1, pTex); - if glGetError <> GL_NO_ERROR then doFade := False; + if glGetError <> GL_NO_ERROR then canFade := False; glBindTexture(GL_TEXTURE_2D, pTex); - if glGetError <> GL_NO_ERROR then doFade := False; + if glGetError <> GL_NO_ERROR then canFade := False; glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData); - if glGetError <> GL_NO_ERROR then doFade := False; + if glGetError <> GL_NO_ERROR then canFade := False; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - if glGetError <> GL_NO_ERROR then doFade := False; + if glGetError <> GL_NO_ERROR then canFade := False; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - if glGetError <> GL_NO_ERROR then doFade := False; + if glGetError <> GL_NO_ERROR then canFade := False; FreeMem(pTexData); end else begin - doFade:=False; + canFade:=False; end; - if not doFade then showmessage('Fehler beim Initialisieren der Fading-Textur... Fading deaktiviert'); + if not canFade then begin + showmessage('Fehler beim Initialisieren der Fading-Textur... Fading deaktiviert'); + doFade:=False; + end // end end; // fade mod destructor TDisplay.Destroy; begin - if doFade then + if canFade then glDeleteTextures(1,@pTex); inherited Destroy; end; @@ -113,11 +123,15 @@ begin Result := ActualScreen.Draw; // fade mod myfade:=0; + if (Ini.ScreenFade=1) and canFade then + doFade:=True + else if Ini.ScreenFade=0 then + doFade:=False; // end end else begin - if doFade then + if doFade and canFade then begin // fade mod //Create Fading texture if we're just starting @@ -128,7 +142,7 @@ begin glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1024, 1024, 0); if glGetError <> GL_NO_ERROR then begin - doFade := False; + canFade := False; showmessage('Fehler beim Kopieren der Fade-Textur... Fading deaktiviert'); end; NextScreen.onShow; @@ -167,7 +181,7 @@ begin glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); end; - if (myfade > 40) or (not doFade) then begin // fade out complete... + if (myfade > 40) or (not doFade) or (not canFade) then begin // fade out complete... myFade:=0; ActualScreen.onHide; // nop... whatever ActualScreen.ShowFinish:=False; diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index 7904a284..ed3bc164 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -74,8 +74,8 @@ begin AddText(Theme.OptionsAdvanced.Text[I]); AddSelect(Theme.OptionsAdvanced.SelectLoadAnimation, Ini.LoadAnimation, ILoadAnimation); - AddSelect(Theme.OptionsAdvanced.SelectEffectPerfect, Ini.EffectPerfect, IEffectPerfect); - AddSelect(Theme.OptionsAdvanced.SelectEffectGolden, Ini.EffectGolden, IEffectGolden); + AddSelect(Theme.OptionsAdvanced.SelectScreenFade, Ini.ScreenFade, IScreenFade); + AddSelect(Theme.OptionsAdvanced.SelectEffectSing, Ini.EffectSing, IEffectSing); AddSelect(Theme.OptionsAdvanced.SelectLineBonus, Ini.LineBonus, ILineBonus); AddSelectSlide(Theme.OptionsAdvanced.SelectOnSongClick, Ini.OnSongClick, IOnSongClick); AddSelect(Theme.OptionsAdvanced.SelectAskbeforeDel, Ini.AskbeforeDel, IAskbeforeDel); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index e4fd7add..29ea5c8b 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1115,7 +1115,7 @@ begin //PhrasenBonus - Line Bonus Mod End// } //PerfectLineTwinkle Mod (effect) Pt.1 - If (Ini.EffectPerfect>=1) then + If (Ini.EffectSing=1) then begin if A >= 8 then Player[I].LastSentencePerfect := True else Player[I].LastSentencePerfect := False; @@ -1128,7 +1128,8 @@ begin end; //PerfectLineTwinkle Mod (effect) Pt.2 - GoldenRec.SpawnPerfectLineTwinkle; + if Ini.EffectSing=1 then + GoldenRec.SpawnPerfectLineTwinkle; //PerfectLineTwinkle Mod end end; diff --git a/Languages/English.ini b/Languages/English.ini index 3b7f7404..de30266a 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -55,8 +55,8 @@ SING_OPTIONS_RECORD_CHANNELL=Left channel SING_OPTIONS_RECORD_CHANNELR=Right channel SING_OPTIONS_ADVANCED_DESC=advanced options -SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Golden Notes effect -SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfect Notes effect +SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effects +SING_OPTIONS_ADVANCED_SCREENFADE=Screen Fading SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus diff --git a/Languages/German.ini b/Languages/German.ini index 601128b1..81d9c7ef 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -63,8 +63,8 @@ SING_OPTIONS_RECORD_CHANNELL=Linker Kanal SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal SING_OPTIONS_ADVANCED_DESC=Erweiterte Optionen -SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Goldene Noten Effekt -SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfekte Noten Effekt +SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effekte +SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm Fade SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfragen SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus diff --git a/Languages/readme.txt b/Languages/readme.txt index a9be1885..3a19fa29 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -7,8 +7,8 @@ SING_MENU=Main Menu #Advanced Options Screen SING_OPTIONS_ADVANCED=advanced SING_OPTIONS_ADVANCED_DESC=advanced options -SING_OPTIONS_ADVANCED_EFFECTGOLDEN=Golden Notes effect -SING_OPTIONS_ADVANCED_EFFECTPERFECT=Perfect Notes effect +SING_OPTIONS_ADVANCED_EFFECTSING=Singscreen effects +SING_OPTIONS_ADVANCED_SCREENFADE=Screen Fading SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 0c6d916c..66dd3b8e 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -3196,10 +3196,10 @@ SBGDColor = Gray STColor = White STDColor = GrayDark -[OptionsAdvancedSelectEffectPerfect] +[OptionsAdvancedSelectScreenFade] Tex =MainBar TexSBG =MainBar -Text =SING_OPTIONS_ADVANCED_EFFECTPERFECT +Text =SING_OPTIONS_ADVANCED_SCREENFADE X = 40 Y = 170 W = 230 @@ -3216,10 +3216,10 @@ SBGDColor = Gray STColor = White STDColor = GrayDark -[OptionsAdvancedSelectEffectGolden] +[OptionsAdvancedSelectEffectSing] Tex =MainBar TexSBG =MainBar -Text =SING_OPTIONS_ADVANCED_EFFECTGOLDEN +Text =SING_OPTIONS_ADVANCED_EFFECTSING X = 40 Y = 240 W = 230 -- cgit v1.2.3 From a2539871abfbd2c50ef763350cc56fa5ef45f2d4 Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 17 Apr 2007 13:33:35 +0000 Subject: Well, heres my first commit since R11. Some minor skin changes, new skin.ini-entry LyricHelpBar git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@102 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 27 ++++++++++++++++++++------- Game/Code/Classes/UGraphic.pas | 7 ++++--- Skins/Deluxe/Blue.ini | 1 + Skins/Deluxe/Score Level Round.jpg | Bin 19455 -> 614 bytes Skins/Deluxe/Text Bar.jpg | Bin 8123 -> 5462 bytes Skins/Deluxe/W&C.ini | 6 +++--- Skins/Deluxe/[effect]goldenNoteStar.jpg | Bin 22332 -> 24894 bytes Skins/Deluxe/[main]scoreLine.jpg | Bin 19965 -> 559 bytes Skins/Deluxe/[sing]lyricsHelpBar.bmp | Bin 0 -> 3126 bytes 9 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 Skins/Deluxe/[sing]lyricsHelpBar.bmp diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 7eaddac4..410fbb2e 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -663,24 +663,37 @@ begin Rec.Top := Skin_LyricsT + 3; Rec.Bottom := Rec.Top + 33;//SingScreen.LyricMain.Size * 3; - // zapalanie +{ // zapalanie BarAlpha := (BarWspol*10) * 0.5; if BarAlpha > 0.5 then BarAlpha := 0.5; // gaszenie - if BarWspol > 0.95 then BarAlpha := 0.5 * (1 - (BarWspol - 0.95) * 20); + if BarWspol > 0.95 then BarAlpha := 0.5 * (1 - (BarWspol - 0.95) * 20);} + //Change fuer Crazy Joker - glEnable(GL_BLEND); - glBegin(GL_QUADS); + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_Lyric_Help_Bar.TexNum); + glBegin(GL_QUADS); + glColor4f(1, 1, 1, 0); + glTexCoord2f(1/16, 1/16); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/16, 15/16); glVertex2f(Rec.Left, Rec.Bottom); + glColor4f(1, 1, 1, 0.5); + glTexCoord2f(15/16, 15/16); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(15/16, 1/16); glVertex2f(Rec.Right, Rec.Top); + glEnd; + glDisable(GL_BLEND); +{ glBegin(GL_QUADS); glColor4f(26/255, 165/255, 220/255, 0); glVertex2f(Rec.Left, Rec.Top); glVertex2f(Rec.Left, Rec.Bottom); glColor4f(26/255, 165/255, 220/255, BarAlpha); glVertex2f(Rec.Right, Rec.Bottom); glVertex2f(Rec.Right, Rec.Top); - glEnd; - glDisable(GL_BLEND); - end; + glEnd;} + end; // oscilloscope if Ini.Oscilloscope = 1 then begin diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index c3ce0f00..b909e49f 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -76,6 +76,7 @@ var Tex_Ball: TTexture; + Tex_Lyric_Help_Bar: TTexture; FullScreen: boolean; @@ -191,9 +192,9 @@ begin end; Tex_Note_Perfect_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NotePerfectStar')), 'JPG', 'Font Black', 0); - Tex_Note_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteStar')) , 'JPG', 'Alpha Black Colored', $FFFFFF); - Tex_Ball := Texture.LoadTexture(pchar(Skin.GetTextureFileName('Ball')), 'BMP', 'Transparent', $FF00FF); - + Tex_Note_Star := Texture.LoadTexture(pchar(Skin.GetTextureFileName('NoteStar')) , 'JPG', 'Alpha Black Colored', $FFFFFF); + Tex_Ball := Texture.LoadTexture(pchar(Skin.GetTextureFileName('Ball')), 'BMP', 'Transparent', $FF00FF); + Tex_Lyric_Help_Bar := Texture.LoadTexture(pchar(Skin.GetTextureFileName('LyricHelpBar')), 'BMP', 'Transparent', $FF00FF); //SingBar Mod diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index d79647ca..bd43846a 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -55,6 +55,7 @@ ScoreLevelRound=Score Level Round.jpg ScoreBG=Sing Score BG.jpg LyricBar=Text Bar.jpg +LyricHelpBar=[sing]lyricsHelpBar.bmp SingBarBack=Sing Bar Back.jpg SingBarBar=Sing Bar Bar.jpg diff --git a/Skins/Deluxe/Score Level Round.jpg b/Skins/Deluxe/Score Level Round.jpg index 4edcdd69..38cfddea 100644 Binary files a/Skins/Deluxe/Score Level Round.jpg and b/Skins/Deluxe/Score Level Round.jpg differ diff --git a/Skins/Deluxe/Text Bar.jpg b/Skins/Deluxe/Text Bar.jpg index bf55226d..83f20f4f 100644 Binary files a/Skins/Deluxe/Text Bar.jpg and b/Skins/Deluxe/Text Bar.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 5d39833c..18b3669f 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -24,8 +24,7 @@ Button=Button.jpg LoadingBG = [bg-load]summer.jpg MainBG = [bg-main]summer.jpg SongBG = [bg-main]summer.jpg -ScoreScreenBG = blue.jpg -#[bg-main]summer.jpg +ScoreScreenBG = [bg-main]summer.jpg Top5BG = [bg-main]summer.jpg OptionsBG = [bg-main]summer.jpg PartyBG = [bg-main]summer.jpg @@ -63,9 +62,10 @@ ScoreBox=Score Box.jpg ScoreLevel=Score Level.jpg ScoreLevelRound=Score Level Round.jpg -ScoreBG=Sing Score BG.jpg +ScoreBG=[bg-main]summer.jpg LyricBar=Text Bar.jpg +LyricHelpBar=[sing]lyricsHelpBar.bmp SingBarBack=Sing Bar Back.jpg SingBarBar=Sing Bar Bar.jpg diff --git a/Skins/Deluxe/[effect]goldenNoteStar.jpg b/Skins/Deluxe/[effect]goldenNoteStar.jpg index 1ef6243d..1b31d267 100644 Binary files a/Skins/Deluxe/[effect]goldenNoteStar.jpg and b/Skins/Deluxe/[effect]goldenNoteStar.jpg differ diff --git a/Skins/Deluxe/[main]scoreLine.jpg b/Skins/Deluxe/[main]scoreLine.jpg index 546a87c7..61cf33f5 100644 Binary files a/Skins/Deluxe/[main]scoreLine.jpg and b/Skins/Deluxe/[main]scoreLine.jpg differ diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bmp new file mode 100644 index 00000000..8ed922a5 Binary files /dev/null and b/Skins/Deluxe/[sing]lyricsHelpBar.bmp differ -- cgit v1.2.3 From 8387556043b3fa84b570df28c0ef857a99c08225 Mon Sep 17 00:00:00 2001 From: crazy_joker Date: Tue, 17 Apr 2007 14:19:49 +0000 Subject: Update: Language,Party Mod Skin & Lyric Help Bar git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@103 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 6 +- Skins/Deluxe/W&C.ini | 2 +- Skins/Deluxe/[BG]PartyRound.jpg | Bin 0 -> 27286 bytes Skins/Deluxe/[sing]lyricsHelpBar.bmp | Bin 3126 -> 3128 bytes Themes/Deluxe.ini | 260 +++++++++++++++++++---------------- 5 files changed, 151 insertions(+), 117 deletions(-) create mode 100644 Skins/Deluxe/[BG]PartyRound.jpg diff --git a/Languages/German.ini b/Languages/German.ini index 81d9c7ef..e9cd82ae 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -177,7 +177,7 @@ PARTY_SELECT_PLAYER=Gib die Spielernamen ein! PARTY_DISMISSED=Ausgeschieden -PLUGIN_HDL_NAME=BalkenHalten +PLUGIN_HDL_NAME=Balken halten PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich PLUGIN_UNTIL5000_NAME=Bis 5000 PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt @@ -185,3 +185,7 @@ PLUGIN_DUELL_NAME=Duell PLUGIN_DUELL_DESC=Normales Spiel PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl + +PARTY_ROUND=Runde +PARTY_ROUND_WINNER=Sieger + diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 18b3669f..56fc2683 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -88,4 +88,4 @@ SongMenuBG = [menu]songMenuBg.jpg Rectangle=Rectangle.jpg Joker=Joker.jpg -RoundPartyBG=RoundPartyBG.JPG \ No newline at end of file +[BG]PartyRound=[BG]PartyRound.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[BG]PartyRound.jpg b/Skins/Deluxe/[BG]PartyRound.jpg new file mode 100644 index 00000000..e85347df Binary files /dev/null and b/Skins/Deluxe/[BG]PartyRound.jpg differ diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bmp index 8ed922a5..d70b479d 100644 Binary files a/Skins/Deluxe/[sing]lyricsHelpBar.bmp and b/Skins/Deluxe/[sing]lyricsHelpBar.bmp differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 66dd3b8e..f3d8d6f2 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -3923,47 +3923,45 @@ Tex=MainBG X =40 Y =10 Color =White -Font =1 -Size =22 +Font =0 +Size =20 Text =Party Modus Align=0 [PartyNewRoundText2] -X =70 -Y =255 +X =460 +Y =75 Color =White -Font =1 -Size =12 +Font =0 +Size =15 Text =PARTY_ROUND Align=0 [PartyNewRoundText3] -X =365 -Y =255 +X =650 +Y =75 Color =White -Font =1 -Size =12 +Font =0 +Size =15 Text =PARTY_ROUND_WINNER Align=0 [PartyNewRoundStatic1] -Tex =RoundPartyBG -X =50 -Y =250 -W =700 -H =350 +Tex =[BG]PartyRound +X =450 +Y =70 +W = 350 +H = 450 Int=1 Color =DarkBlue Type=Font Black -Reflection=1 -ReflectionSpacing=2 [PartyNewRoundStatic2] -Tex =Button -X =70 -Y =175 -W =200 -H =50 +Tex =[BG]PartyRound +X = 20 +Y =80 +W =130 +H =80 Int=1 Color =P1Dark Type=Font Black @@ -3971,11 +3969,11 @@ Reflection=1 ReflectionSpacing=5 [PartyNewRoundStatic3] -Tex =Button -X =300 -Y =175 -W =200 -H =50 +Tex =[BG]PartyRound +X =165 +Y =80 +W =130 +H =80 Int=1 Color =P2Dark Type=Font Black @@ -3984,139 +3982,170 @@ ReflectionSpacing=5 [PartyNewRoundStatic4] Tex = -X =530 -Y =175 -W =200 -H =50 +X =310 +Y =80 +W =130 +H =80 Int=1 Color =P3Dark Type=Font Black Reflection=1 ReflectionSpacing=5 +[PartyNewRoundStatic5] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyNewRoundStatic6] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyNewRoundStatic7] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + [PartyNewRoundTextRound1] -X =70 -Y =285 +X =460 +Y =120 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 1 Align=0 [PartyNewRoundTextRound2] -X =70 -Y =325 +X =460 +Y =160 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 2 Align=0 [PartyNewRoundTextRound3] -X =70 -Y =365 +X =460 +Y =200 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 3 Align=0 [PartyNewRoundTextRound4] -X =70 -Y =405 +X =460 +Y =240 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 4 Align=0 [PartyNewRoundTextRound5] -X =70 -Y =445 +X =460 +Y =280 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 5 Align=0 [PartyNewRoundTextRound6] -X =70 -Y =485 +X =460 +Y =320 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 6 Align=0 [PartyNewRoundTextRound7] -X =70 -Y =525 +X =460 +Y =360 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Round 7 Align=0 [PartyNewRoundTextWinner1] -X =365 -Y =285 +X =640 +Y =120 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 1 Align=0 [PartyNewRoundTextWinner2] -X =365 -Y =325 +X =640 +Y =160 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 2 Align=0 [PartyNewRoundTextWinner3] -X =365 -Y =365 +X =640 +Y =200 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 3 Align=0 [PartyNewRoundTextWinner4] -X =365 -Y =405 +X =640 +Y =240 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 4 Align=0 [PartyNewRoundTextWinner5] -X =365 -Y =445 +X =640 +Y =280 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 5 Align=0 [PartyNewRoundTextWinner6] -X =365 -Y =485 +X =640 +Y =320 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 6 Align=0 [PartyNewRoundTextWinner7] -X =365 -Y =530 +X =640 +Y =360 Color =White -Font =1 -Size =17 +Font =0 +Size =11 Text =Winner 7 Align=0 @@ -4215,8 +4244,8 @@ TexY2=1 X =80 Y =70 Color =White -Font =1 -Size =15 +Font =0 +Size =1 Text =Next Round Align=0 @@ -4224,62 +4253,62 @@ Align=0 X =40 Y =70 Color =White -Font =1 -Size =15 +Font =0 +Size =1 Text =99 Align=0 [PartyNewRoundTextScoreTeam1] -X =225 -Y =175 +X =75 +Y = 120 Color =White -Font =1 +Font =0 Size =15 Text =3000 Align=0 [PartyNewRoundTextScoreTeam2] -X =455 -Y =175 +X =220 +Y =120 Color =White -Font =1 +Font =0 Size =15 Text =2000 Align=0 [PartyNewRoundTextScoreTeam3] -X =685 -Y =175 +X =365 +Y =120 Color =White -Font =1 +Font =0 Size =15 Text =1000 Align=0 [PartyNewRoundTextNameTeam1] -X =75 -Y =175 +X =25 +Y =80 Color =White -Font =1 -Size =15 +Font =0 +Size =12 Text =Team 1 Align=0 [PartyNewRoundTextNameTeam2] -X =305 -Y =175 +X =170 +Y =80 Color =White -Font =1 -Size =15 +Font =0 +Size =12 Text =Team 2 Align=0 [PartyNewRoundTextNameTeam3] -X =535 -Y =175 +X =315 +Y =80 Color =White -Font =1 -Size =15 +Font =0 +Size =12 Text =Team 3 Align=0 @@ -4288,7 +4317,7 @@ X =100 Y =120 Color =White Font =1 -Size =15 +Size =0 Text =Player 1 Align=0 @@ -4297,7 +4326,7 @@ X =250 Y =120 Color =White Font =1 -Size =15 +Size =0 Text =Player 2 Align=0 @@ -4306,7 +4335,7 @@ X =400 Y =120 Color =White Font =1 -Size =15 +Size =0 Text =Player 3 Align=0 @@ -4320,6 +4349,7 @@ Size =13 Text =Player 3 Align=0 + [PartyScore] Texts=0 -- cgit v1.2.3 From 033bd987a8d704aa7eb62e1cdd572694d3cd728d Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 17 Apr 2007 16:09:34 +0000 Subject: Bugfix: Fixed minor problem that caused artefacts to be drawn - 'transparent' now works with #ffffff and #fefefe (UTexture.pas) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@104 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UTexture.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas index b50ab6bf..4a8fa786 100644 --- a/Game/Code/Classes/UTexture.pas +++ b/Game/Code/Classes/UTexture.pas @@ -361,7 +361,7 @@ begin for Pet := 0 to TexOrygH-1 do begin for Pet2 := 0 to TexOrygW-1 do begin Pix := TextureB.Canvas.Pixels[Pet2, Pet]; - if Pix = Col then begin + if ((Pix = $fefefe) or (Pix = Col)) then begin //Small fix, that caused artefacts to be drawn (#fe == dec254) TextureD32[Pet*TexNewW + Pet2 + 1, 1] := 0; TextureD32[Pet*TexNewW + Pet2 + 1, 2] := 0; TextureD32[Pet*TexNewW + Pet2 + 1, 3] := 0; -- cgit v1.2.3 From 0e2fe3b78047030be96dfe89ed0a0c01aabb26a1 Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 17 Apr 2007 17:21:26 +0000 Subject: Theme/Skin: Started to skin the sing screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@105 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/P.jpg | Bin 1487 -> 1234 bytes Skins/Deluxe/W&C.ini | 2 +- Skins/Deluxe/[sing]scoreBg.jpg | Bin 0 -> 969 bytes Themes/Deluxe.ini | 102 ++++++++++++++++------------------------- 4 files changed, 40 insertions(+), 64 deletions(-) create mode 100644 Skins/Deluxe/[sing]scoreBg.jpg diff --git a/Skins/Deluxe/P.jpg b/Skins/Deluxe/P.jpg index 5217c6b1..6df17a72 100644 Binary files a/Skins/Deluxe/P.jpg and b/Skins/Deluxe/P.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 56fc2683..82af2ab5 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -61,8 +61,8 @@ P=P.jpg ScoreBox=Score Box.jpg ScoreLevel=Score Level.jpg ScoreLevelRound=Score Level Round.jpg +ScoreBG = [sing]scoreBg.jpg -ScoreBG=[bg-main]summer.jpg LyricBar=Text Bar.jpg LyricHelpBar=[sing]lyricsHelpBar.bmp diff --git a/Skins/Deluxe/[sing]scoreBg.jpg b/Skins/Deluxe/[sing]scoreBg.jpg new file mode 100644 index 00000000..91db7715 Binary files /dev/null and b/Skins/Deluxe/[sing]scoreBg.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index f3d8d6f2..80f19920 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -679,40 +679,32 @@ TexY2=1 Tex =P X =16 Y =55 -W =45 -H =50 -Color =P1Dark -Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[SingP1Static2] -Tex =ScoreBG -X =75 -Y =55 -W =100 -H =40 +W =50 +H =54 Color =P1Dark Type=Transparent -TexX1=0.02 -TexY1=0.05 -TexX2=0.98 -TexY2=0.98 [SingP1Text] Text =P1 X =27 -Y =65 +Y =62 Font =1 Size =8 Color =White Align=0 +[SingP1Static2] +Tex =ScoreBG +X =75 +Y =55 +W =100 +H =40 +Color =P1Dark +Type=Transparent + [SingP1TextScore] Text =00000 -X =90 +X =85 Y =60 Font =0 Size =10 @@ -767,40 +759,32 @@ Align=0 Tex =P X =311 Y =55 -W =45 -H =50 -Color =P2Dark -Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[SingP2MStatic2] -Tex =ScoreBG -X =370 -Y =55 -W =100 -H =40 +W =50 +H =54 Color =P2Dark Type=Transparent -TexX1=0.02 -TexY1=0.05 -TexX2=0.98 -TexY2=0.98 [SingP2MText] Text =P2 X =321 -Y =65 +Y =62 Font =1 Size =8 Color =White Align=0 +[SingP2MStatic2] +Tex =ScoreBG +X =370 +Y =55 +W =100 +H =40 +Color =P2Dark +Type=Transparent + [SingP2MTextScore] Text =00000 -X =385 +X =380 Y =60 Font =0 Size =10 @@ -811,40 +795,32 @@ Align=0 Tex =P X =611 Y =55 -W =45 -H =50 -Color =P3Dark -Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[SingP3RStatic2] -Tex =ScoreBG -X =670 -Y =55 -W =100 -H =40 +W =50 +H =54 Color =P3Dark Type=Transparent -TexX1=0.02 -TexY1=0.05 -TexX2=0.98 -TexY2=0.98 [SingP3RText] Text =P3 X =621 -Y =65 +Y =62 Font =1 Size =8 Color =White Align=0 +[SingP3RStatic2] +Tex =ScoreBG +X =670 +Y =55 +W =100 +H =40 +Color =P3Dark +Type=Transparent + [SingP3RTextScore] Text =00000 -X =685 +X =680 Y =60 Font =0 Size =10 -- cgit v1.2.3 From 6e811aa17524bff0b0099bbe9759d664bc687669 Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 17 Apr 2007 17:25:21 +0000 Subject: Theme/Skin: P2 now skinned too, at sing screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@106 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 80f19920..403cb7dd 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -715,40 +715,32 @@ Align=0 Tex =P X =739 Y =55 -W =45 -H =50 -Color =P2Dark -Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 - -[SingP2RStatic2] -Tex =ScoreBG -X =620 -Y =55 -W =100 -H =40 +W =50 +H =54 Color =P2Dark Type=Transparent -TexX1=0.02 -TexY1=0.05 -TexX2=0.98 -TexY2=0.98 [SingP2RText] Text =P2 X =750 -Y =65 +Y =62 Font =1 Size =8 Color =White Align=0 +[SingP2RStatic2] +Tex =ScoreBG +X =620 +Y =55 +W =100 +H =40 +Color =P2Dark +Type=Transparent + [SingP2RTextScore] Text =00000 -X =635 +X =630 Y =60 Font =0 Size =10 -- cgit v1.2.3 From 662b5574b22282511b3095c9888f0977b14eabdd Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 17 Apr 2007 17:34:39 +0000 Subject: Commited UTheme.pas to prevent Conflicts git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@107 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 6837d17f..a5fb1459 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -542,6 +542,27 @@ type ButtonPrev: TThemeButton;} end; + //Stats Screens + TThemeStatMain = class(TThemeBasic) + ButtonScores: TThemeButton; + ButtonSingers: TThemeButton; + ButtonSongs: TThemeButton; + ButtonBands: TThemeButton; + + TextOverview: TThemeText; + end; + + TThemeStatDetail = class(TThemeBasic) + ButtonNext: TThemeButton; + ButtonPrev: TThemeButton; + ButtonReverse: TThemeButton; + ButtonExit: TThemeButton; + + Description: array[0..3] of string; + TextDescription: TThemeText; + TextList: AThemeText; + end; + //Playlist Translations TThemePlaylist = record CatText: string; @@ -580,6 +601,10 @@ type PartyOptions: TThemePartyOptions; PartyPlayer: TThemePartyPlayer; + //Stats Screens: + StatMain: TThemeStatMain; + StatDetail: TThemeStatDetail; + Playlist: TThemePlaylist; constructor Create(FileName: string); overload; // Initialize theme system @@ -665,6 +690,10 @@ begin PartyOptions := TThemePartyOptions.Create; PartyPlayer := TThemePartyPlayer.Create; + //Stats Screens: + StatMain := TThemeStatMain.Create; + StatDetail := TThemeStatDetail.Create; + LoadTheme(FileName, Color); @@ -1196,6 +1225,31 @@ begin {ThemeLoadButton(ButtonNext, 'PartyPlayerButtonNext'); ThemeLoadButton(ButtonPrev, 'PartyPlayerButtonPrev');} + ThemeLoadBasic(StatMain, 'StatMain'); + + ThemeLoadButton(StatMain.ButtonScores, 'StatMainButtonScores'); + ThemeLoadButton(StatMain.ButtonSingers, 'StatMainButtonSingers'); + ThemeLoadButton(StatMain.ButtonSongs, 'StatMainButtonSongs'); + ThemeLoadButton(StatMain.ButtonBands, 'StatMainButtonBands'); + + ThemeLoadText (StatMain.TextOverview, 'StatMainTextOverview'); + + + ThemeLoadBasic(StatDetail, 'StatDetail'); + + ThemeLoadButton(StatDetail.ButtonNext, 'StatDetailButtonNext'); + ThemeLoadButton(StatDetail.ButtonPrev, 'StatDetailButtonPrev'); + ThemeLoadButton(StatDetail.ButtonReverse, 'StatDetailButtonReverse'); + ThemeLoadButton(StatDetail.ButtonExit, 'StatDetailButtonExit'); + + ThemeLoadText (StatDetail.TextDescription, 'StatDetailTextDescription'); + ThemeLoadTexts(StatDetail.TextList, 'StatDetailTextList'); + + StatDetail.Description[0] := Language.Translate('STAT_DESC_SCORES'); + StatDetail.Description[1] := Language.Translate('STAT_DESC_SINGERS'); + StatDetail.Description[2] := Language.Translate('STAT_DESC_SONGS'); + StatDetail.Description[3] := Language.Translate('STAT_DESC_BANDS'); + //Playlist Translations Playlist.CatText := Language.Translate('PLAYLIST_CATTEXT') end; -- cgit v1.2.3 From 6d072496a4347995bc168ab978b878c375508ecd Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 17 Apr 2007 17:39:51 +0000 Subject: Added Exit Button to Stats Screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@108 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index a5fb1459..5a271ef6 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -547,7 +547,8 @@ type ButtonScores: TThemeButton; ButtonSingers: TThemeButton; ButtonSongs: TThemeButton; - ButtonBands: TThemeButton; + ButtonBands: TThemeButton; + ButtonExit: TThemeButton; TextOverview: TThemeText; end; @@ -1231,6 +1232,7 @@ begin ThemeLoadButton(StatMain.ButtonSingers, 'StatMainButtonSingers'); ThemeLoadButton(StatMain.ButtonSongs, 'StatMainButtonSongs'); ThemeLoadButton(StatMain.ButtonBands, 'StatMainButtonBands'); + ThemeLoadButton(StatMain.ButtonExit, 'StatMainButtonExit'); ThemeLoadText (StatMain.TextOverview, 'StatMainTextOverview'); -- cgit v1.2.3 From 7cbb58f6fe6cd8d81e21d6e0b1ebdc2fd872b773 Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 17 Apr 2007 20:01:16 +0000 Subject: Feature: Added the possibility to skin the sing screen, it's now possible to set player 1 stuff related to player modi (1, 2 or 3 player mode) (affected UThemes.pas, UScreenSing.pas, UScreenSingModi.pas) Theme/Skin: Used the new sing screen possibility, looks way more ps3 now :P git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@109 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 118 +++++++---------- Game/Code/Screens/UScreenSing.pas | 238 ++++++++++++++++++++-------------- Game/Code/Screens/UScreenSingModi.pas | 95 +++++++------- Themes/Deluxe.ini | 125 ++++++++++++++---- 4 files changed, 336 insertions(+), 240 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 5a271ef6..5aca1401 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -272,6 +272,18 @@ type TextP1: TThemeText; TextP1Score: TThemeText; + //added for ps3 skin + //game in 2/4 player modi + StaticP1TwoP: TThemeStatic; + StaticP1TwoPScoreBG: TThemeStatic; //Static for ScoreBG + TextP1TwoP: TThemeText; + TextP1TwoPScore: TThemeText; + //game in 3/6 player modi + StaticP1ThreeP: TThemeStatic; + StaticP1ThreePScoreBG: TThemeStatic; //Static for ScoreBG + TextP1ThreeP: TThemeText; + TextP1ThreePScore: TThemeText; + //eoa StaticP2R: TThemeStatic; StaticP2RScoreBG: TThemeStatic; //Static for ScoreBG @@ -896,52 +908,37 @@ begin ThemeLoadBasic(Sing, 'Sing'); ThemeLoadStatic(Sing.StaticP1, 'SingP1Static'); - - - //ScoreBG Mod - ThemeLoadStatic(Sing.StaticP1ScoreBG, 'SingP1Static2');//ScoreBG - //end ScoreBG Mod - - ThemeLoadText(Sing.TextP1, 'SingP1Text'); + ThemeLoadStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); ThemeLoadText(Sing.TextP1Score, 'SingP1TextScore'); - + //Added for ps3 skin + //This one is shown in 2/4P mode + ThemeLoadStatic(Sing.StaticP1TwoP, 'SingP1TwoPStatic'); + ThemeLoadText(Sing.TextP1TwoP, 'SingP1TwoPText'); + ThemeLoadStatic(Sing.StaticP1TwoPScoreBG, 'SingP1TwoPStatic2'); + ThemeLoadText(Sing.TextP1TwoPScore, 'SingP1TwoPTextScore'); + + //This one is shown in 3/6P mode + ThemeLoadStatic(Sing.StaticP1ThreeP, 'SingP1ThreePStatic'); + ThemeLoadText(Sing.TextP1ThreeP, 'SingP1ThreePText'); + ThemeLoadStatic(Sing.StaticP1ThreePScoreBG, 'SingP1ThreePStatic2'); + ThemeLoadText(Sing.TextP1ThreePScore, 'SingP1ThreePTextScore'); + //eoa ThemeLoadStatic(Sing.StaticP2R, 'SingP2RStatic'); - - - - //ScoreBG Mod - ThemeLoadStatic(Sing.StaticP2RScoreBG, 'SingP2RStatic2'); - //end ScoreBG Mod - - - ThemeLoadText(Sing.TextP2R, 'SingP2RText'); + ThemeLoadStatic(Sing.StaticP2RScoreBG, 'SingP2RStatic2'); ThemeLoadText(Sing.TextP2RScore, 'SingP2RTextScore'); ThemeLoadStatic(Sing.StaticP2M, 'SingP2MStatic'); - - - //ScoreBG Mod - ThemeLoadStatic(Sing.StaticP2MScoreBG, 'SingP2MStatic2'); - //end ScoreBG Mod - - - ThemeLoadText(Sing.TextP2M, 'SingP2MText'); + ThemeLoadStatic(Sing.StaticP2MScoreBG, 'SingP2MStatic2'); ThemeLoadText(Sing.TextP2MScore, 'SingP2MTextScore'); ThemeLoadStatic(Sing.StaticP3R, 'SingP3RStatic'); - - - //ScoreBG Mod - ThemeLoadStatic(Sing.StaticP3RScoreBG, 'SingP3RStatic2'); - //end ScoreBG Mod - - - ThemeLoadText(Sing.TextP3R, 'SingP3RText'); + ThemeLoadStatic(Sing.StaticP3RScoreBG, 'SingP3RStatic2'); ThemeLoadText(Sing.TextP3RScore, 'SingP3RTextScore'); + //Line Bonus Texts Sing.LineBonusText[0] := Language.Translate('LINEBONUS_WORST'); Sing.LineBonusText[1] := Sing.LineBonusText[0]; @@ -1784,58 +1781,39 @@ begin ThemeSaveStatic(Song.StaticCat, 'SongStaticCat'); ThemeSaveBasic(Sing, 'Sing'); - ThemeSaveStatic(Sing.StaticP1, 'SingP1Static'); - - - - //ScoreBG Mod - ThemeSaveStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); - //end ScoreBG Mod - - + ThemeSaveStatic(Sing.StaticP1, 'SingP1Static'); ThemeSaveText(Sing.TextP1, 'SingP1Text'); + ThemeSaveStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); ThemeSaveText(Sing.TextP1Score, 'SingP1TextScore'); - ThemeSaveStatic(Sing.StaticP2R, 'SingP2RStatic'); - - - - //ScoreBG Mod - ThemeSaveStatic(Sing.StaticP2RScoreBG, 'SingP2RStatic2'); - //end ScoreBG Mod - + //Added for ps3 skin + //This one is shown in 2/4P mode + ThemeSaveStatic(Sing.StaticP1TwoP, 'SingP1TwoPStatic'); + ThemeSaveText(Sing.TextP1TwoP, 'SingP1TwoPText'); + ThemeSaveStatic(Sing.StaticP1TwoPScoreBG, 'SingP1TwoPStatic2'); + ThemeSaveText(Sing.TextP1TwoPScore, 'SingP1TwoPTextScore'); + //This one is shown in 3/6P mode + ThemeSaveStatic(Sing.StaticP1ThreeP, 'SingP1ThreePStatic'); + ThemeSaveText(Sing.TextP1ThreeP, 'SingP1ThreePText'); + ThemeSaveStatic(Sing.StaticP1ThreePScoreBG, 'SingP1ThreePStatic2'); + ThemeSaveText(Sing.TextP1ThreePScore, 'SingP1ThreePTextScore'); + //eoa + ThemeSaveStatic(Sing.StaticP2R, 'SingP2RStatic'); ThemeSaveText(Sing.TextP2R, 'SingP2RText'); + ThemeSaveStatic(Sing.StaticP2RScoreBG, 'SingP2RStatic2'); ThemeSaveText(Sing.TextP2RScore, 'SingP2RTextScore'); ThemeSaveStatic(Sing.StaticP2M, 'SingP2MStatic'); - - - - //ScoreBG Mod - ThemeSaveStatic(Sing.StaticP2MScoreBG, 'SingP2MStatic2'); - //end ScoreBG Mod - - - - ThemeSaveText(Sing.TextP2M, 'SingP2MText'); + ThemeSaveStatic(Sing.StaticP2MScoreBG, 'SingP2MStatic2'); ThemeSaveText(Sing.TextP2MScore, 'SingP2MTextScore'); ThemeSaveStatic(Sing.StaticP3R, 'SingP3RStatic'); - - - - //ScoreBG Mod - ThemeSaveStatic(Sing.StaticP3RScoreBG, 'SingP3RStatic2'); - //end ScoreBG Mod - - - - ThemeSaveText(Sing.TextP3R, 'SingP3RText'); + ThemeSaveStatic(Sing.StaticP3RScoreBG, 'SingP3RStatic2'); ThemeSaveText(Sing.TextP3RScore, 'SingP3RTextScore'); ThemeSaveBasic(Score, 'Score'); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 29ea5c8b..650cfdff 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -19,6 +19,19 @@ type TextP1: integer; TextP1Score: integer; + //Added for ps3 skin + //shown when game is in 2/4 player modus + StaticP1TwoP: integer; + StaticP1TwoPScoreBG: integer; + TextP1TwoP: integer; + TextP1TwoPScore: integer; + //shown when game is in 3/6 player modus + StaticP1ThreeP: integer; + StaticP1ThreePScoreBG: integer; + TextP1ThreeP: integer; + TextP1ThreePScore: integer; + //eoa + StaticP2R: integer; StaticP2RScoreBG: integer; TextP2R: integer; @@ -157,6 +170,20 @@ begin TextP1 := AddText(Theme.Sing.TextP1); TextP1Score := AddText(Theme.Sing.TextP1Score); + //Added for ps3 skin + //This one is shown in 2/4P mode + StaticP1TwoP := AddStatic(Theme.Sing.StaticP1TwoP); + StaticP1TwoPScoreBG := AddStatic(Theme.Sing.StaticP1TwoPScoreBG); + TextP1TwoP := AddText(Theme.Sing.TextP1TwoP); + TextP1TwoPScore := AddText(Theme.Sing.TextP1TwoPScore); + + //This one is shown in 3/6P mode + StaticP1ThreeP := AddStatic(Theme.Sing.StaticP1ThreeP); + StaticP1ThreePScoreBG := AddStatic(Theme.Sing.StaticP1ThreePScoreBG); + TextP1ThreeP := AddText(Theme.Sing.TextP1ThreeP); + TextP1ThreePScore := AddText(Theme.Sing.TextP1ThreePScore); + //eoa + StaticP2R := AddStatic(Theme.Sing.StaticP2R); StaticP2RScoreBG := AddStatic(Theme.Sing.StaticP2RScoreBG); TextP2R := AddText(Theme.Sing.TextP2R); @@ -178,11 +205,13 @@ end; procedure TScreenSing.onShow; var - P: integer; - V1: boolean; - V2R: boolean; - V2M: boolean; - V3R: boolean; + P: integer; + V1: boolean; + V1TwoP: boolean; //added for ps3 skin + V1ThreeP: boolean; //added for ps3 skin + V2R: boolean; + V2M: boolean; + V3R: boolean; NR: TRecR; //Line Bonus Mod begin Log.LogStatus('Begin', 'onShow'); @@ -195,39 +224,65 @@ begin case PlayersPlay of 1: begin - V1 := true; - V2R := false; - V2M := false; - V3R := false; + V1 := true; + V1TwoP := false; //added for ps3 skin + V1ThreeP := false; //added for ps3 skin + V2R := false; + V2M := false; + V3R := false; end; 2: begin - V1 := true; - V2R := true; - V2M := false; - V3R := false; + V1 := false; + V1TwoP := true; //added for ps3 skin + V1ThreeP := false; //added for ps3 skin + V2R := true; + V2M := false; + V3R := false; end; 3: begin - V1 := true; - V2R := false; - V2M := true; - V3R := true; + V1 := false; + V1TwoP := false; //added for ps3 skin + V1ThreeP := true; //added for ps3 skin + V2R := false; + V2M := true; + V3R := true; end; 4: begin // double screen - V1 := true; - V2R := true; - V2M := false; - V3R := false; + V1 := false; + V1TwoP := true; //added for ps3 skin + V1ThreeP := false; //added for ps3 skin + V2R := true; + V2M := false; + V3R := false; end; 6: begin // double screen - V1 := true; - V2R := false; - V2M := true; - V3R := true; + V1 := false; + V1TwoP := false; //added for ps3 skin + V1ThreeP := true; //added for ps3 skin + V2R := false; + V2M := true; + V3R := true; end; end; - + //Added for ps3 skin + //This one is shown in 1P mode + Static[StaticP1].Visible := V1; + Static[StaticP1ScoreBG].Visible := V1; + Text[TextP1].Visible := V1; + Text[TextP1Score].Visible := V1; + //This one is shown in 2/4P mode + Static[StaticP1TwoP].Visible := V1TwoP; + Static[StaticP1TwoPScoreBG].Visible := V1TwoP; + Text[TextP1TwoP].Visible := V1TwoP; + Text[TextP1TwoPScore].Visible := V1TwoP; + //This one is shown in 3/6P mode + Static[StaticP1ThreeP].Visible := V1ThreeP; + Static[StaticP1ThreePScoreBG].Visible := V1ThreeP; + Text[TextP1ThreeP].Visible := V1ThreeP; + Text[TextP1ThreePScore].Visible := V1ThreeP; + //eoa Static[StaticP2R].Visible := V2R; Static[StaticP2RScoreBG].Visible := V2R; @@ -402,10 +457,10 @@ begin 2: begin //P1 - Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; - Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.X; - Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1TwoPScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1TwoPScore.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1TwoPScoreBG.X; + Player[0].LineBonus_StartY := Theme.Sing.TextP1TwoPScore.Y + 65; //P2 Player[1].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.X; @@ -416,10 +471,10 @@ begin 3: begin //P1 - Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; - Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ThreePScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1ThreePScore.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ThreePScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1ThreePScore.Y + 65; //P2 Player[1].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; @@ -436,10 +491,10 @@ begin 4: begin //P1 - Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; - Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1TwoPScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1TwoPScore.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1TwoPScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1TwoPScore.Y + 65; //P2 Player[1].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.x; @@ -448,10 +503,10 @@ begin Player[1].LineBonus_StartY := Theme.Sing.TextP2RScore.Y + 65; //P3 - Player[2].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; - Player[2].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; - Player[2].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; - Player[2].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + Player[2].LineBonus_TargetX := Theme.Sing.StaticP1TwoPScoreBG.x; + Player[2].LineBonus_TargetY := Theme.Sing.TextP1TwoPScore.Y; + Player[2].LineBonus_StartX := Theme.Sing.StaticP1TwoPScoreBG.x; + Player[2].LineBonus_StartY := Theme.Sing.TextP1TwoPScore.Y + 65; //P4 Player[3].LineBonus_TargetX := Theme.Sing.StaticP2RScoreBG.x; @@ -462,10 +517,10 @@ begin 6: begin //P1 - Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; - Player[0].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; - Player[0].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + Player[0].LineBonus_TargetX := Theme.Sing.StaticP1ThreePScoreBG.x; + Player[0].LineBonus_TargetY := Theme.Sing.TextP1ThreePScore.Y; + Player[0].LineBonus_StartX := Theme.Sing.StaticP1ThreePScoreBG.x; + Player[0].LineBonus_StartY := Theme.Sing.TextP1ThreePScore.Y + 65; //P2 Player[1].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; @@ -480,10 +535,10 @@ begin Player[2].LineBonus_StartY := Theme.Sing.TextP3RScore.Y + 65; //P4 - Player[3].LineBonus_TargetX := Theme.Sing.StaticP1ScoreBG.x; - Player[3].LineBonus_TargetY := Theme.Sing.TextP1Score.Y; - Player[3].LineBonus_StartX := Theme.Sing.StaticP1ScoreBG.x; - Player[3].LineBonus_StartY := Theme.Sing.TextP1Score.Y + 65; + Player[3].LineBonus_TargetX := Theme.Sing.StaticP1ThreePScoreBG.x; + Player[3].LineBonus_TargetY := Theme.Sing.TextP1ThreePScore.Y; + Player[3].LineBonus_StartX := Theme.Sing.StaticP1ThreePScoreBG.x; + Player[3].LineBonus_StartY := Theme.Sing.TextP1ThreePScore.Y + 65; //P5 Player[4].LineBonus_TargetX := Theme.Sing.StaticP2MScoreBG.x; @@ -661,15 +716,15 @@ begin // set player colors if PlayersPlay = 4 then begin if ScreenAct = 1 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, + Static[StaticP1TwoP].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P2Dark'); - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, + Static[StaticP1TwoPScoreBG].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); @@ -677,15 +732,15 @@ begin end; if ScreenAct = 2 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, + Static[StaticP1TwoP].Texture.ColB, 'P3Dark'); LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P4Dark'); - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, + Static[StaticP1TwoPScoreBG].Texture.ColB, 'P3Dark'); LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P4Dark'); @@ -696,8 +751,8 @@ begin if PlayersPlay = 6 then begin if ScreenAct = 1 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, + Static[StaticP1ThreeP].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P2Dark'); LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, @@ -705,8 +760,8 @@ begin - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, + Static[StaticP1ThreePScoreBG].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, @@ -716,8 +771,8 @@ begin end; if ScreenAct = 2 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, + Static[StaticP1ThreeP].Texture.ColB, 'P4Dark'); LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P5Dark'); LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, @@ -726,8 +781,8 @@ begin - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, + Static[StaticP1ThreePScoreBG].Texture.ColB, 'P4Dark'); LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P5Dark'); LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, @@ -781,6 +836,8 @@ begin // set player names (for 2 screens and only Singstar skin) if ScreenAct = 1 then begin Text[TextP1].Text := 'P1'; + Text[TextP1TwoP].Text := 'P1'; //added for ps3 skin + Text[TextP1ThreeP].Text := 'P1'; //added for ps3 skin Text[TextP2R].Text := 'P2'; Text[TextP2M].Text := 'P2'; Text[TextP3R].Text := 'P3'; @@ -802,11 +859,11 @@ begin end;} 4: begin - Text[TextP1].Text := 'P3'; + Text[TextP1TwoP].Text := 'P3'; Text[TextP2R].Text := 'P4'; end; 6: begin - Text[TextP1].Text := 'P4'; + Text[TextP1ThreeP].Text := 'P4'; Text[TextP2M].Text := 'P5'; Text[TextP3R].Text := 'P6'; end; @@ -814,31 +871,21 @@ begin end; // if // stereo - Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; - - - +// weird stuff, maybe this is for "dual screen?", but where is player three then? + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX; - - - - Text[TextP1].X := Text[TextP1].X + 10*ScreenX; Text[TextP1Score].X := Text[TextP1Score].X + 10*ScreenX; - Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX; - - - - Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X + 10*ScreenX; - - + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX; + Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X + 10*ScreenX; Text[TextP2R].X := Text[TextP2R].X + 10*ScreenX; Text[TextP2RScore].X := Text[TextP2RScore].X + 10*ScreenX; +// end of weird stuff for S := 1 to 1 do Static[S].Texture.X := Static[S].Texture.X + 10*ScreenX; @@ -865,7 +912,7 @@ begin if PlayersPlay = 2 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1TwoPScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -875,7 +922,7 @@ begin if PlayersPlay = 3 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1ThreePScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -890,7 +937,7 @@ begin if ScreenAct = 1 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1TwoPScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -899,7 +946,7 @@ begin if ScreenAct = 2 then begin Tekst := IntToStr(Player[2].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1TwoPScore].Text := Tekst; Tekst := IntToStr(Player[3].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -911,7 +958,7 @@ begin if ScreenAct = 1 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1ThreePScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -924,7 +971,7 @@ begin if ScreenAct = 2 then begin Tekst := IntToStr(Player[3].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1ThreePScore].Text := Tekst; Tekst := IntToStr(Player[4].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -985,26 +1032,21 @@ begin //GoldenNoteStarsTwinkle Mod // back stereo - Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; - +// weird stuff, maybe this is for "dual screen?", but where is player three then? + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX; - - Text[TextP1].X := Text[TextP1].X - 10*ScreenX; Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX; - Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; - - + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX; - - Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX; Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX; +//weird end for S := 1 to 1 do Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX; diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index bf342e7a..86613152 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -619,20 +619,20 @@ begin PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; end; 2,4: begin - PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; - PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; - PlayerInfo.Playerinfo[2].PosX := Static[StaticP1ScoreBG].Texture.X; - PlayerInfo.Playerinfo[2].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1TwoPScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H; + PlayerInfo.Playerinfo[2].PosX := Static[StaticP1TwoPScoreBG].Texture.X; + PlayerInfo.Playerinfo[2].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H; PlayerInfo.Playerinfo[1].PosX := Static[StaticP2RScoreBG].Texture.X; PlayerInfo.Playerinfo[1].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; PlayerInfo.Playerinfo[3].PosX := Static[StaticP2RScoreBG].Texture.X; PlayerInfo.Playerinfo[3].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; end; 3,6: begin - PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; - PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; - PlayerInfo.Playerinfo[3].PosX := Static[StaticP1ScoreBG].Texture.X; - PlayerInfo.Playerinfo[3].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ThreePScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H; + PlayerInfo.Playerinfo[3].PosX := Static[StaticP1ThreePScoreBG].Texture.X; + PlayerInfo.Playerinfo[3].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H; PlayerInfo.Playerinfo[1].PosX := Static[StaticP2MScoreBG].Texture.X; PlayerInfo.Playerinfo[1].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; PlayerInfo.Playerinfo[4].PosX := Static[StaticP2MScoreBG].Texture.X; @@ -669,16 +669,16 @@ begin end; if (PlayersPlay = 2) OR (PlayersPlay = 4) then begin - Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; - Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; + Text[TextP1TwoPScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1TwoPScoreBG].Visible := DLLMan.Selected.ShowScore; Text[TextP2RScore].Visible := DLLMan.Selected.ShowScore; Static[StaticP2RScoreBG].Visible := DLLMan.Selected.ShowScore; end; if (PlayersPlay = 3) OR (PlayersPlay = 6) then begin - Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; - Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; + Text[TextP1ThreePScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1ThreePScoreBG].Visible := DLLMan.Selected.ShowScore; Text[TextP2MScore].Visible := DLLMan.Selected.ShowScore; Static[StaticP2MScoreBG].Visible := DLLMan.Selected.ShowScore; @@ -716,15 +716,15 @@ begin // set player colors if PlayersPlay = 4 then begin if ScreenAct = 1 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, + Static[StaticP1TwoP].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P2Dark'); - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, + Static[StaticP1TwoPScoreBG].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); @@ -732,15 +732,15 @@ begin end; if ScreenAct = 2 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, + Static[StaticP1TwoP].Texture.ColB, 'P3Dark'); LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P4Dark'); - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, + Static[StaticP1TwoPScoreBG].Texture.ColB, 'P3Dark'); LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P4Dark'); @@ -751,8 +751,8 @@ begin if PlayersPlay = 6 then begin if ScreenAct = 1 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, + Static[StaticP1ThreeP].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P2Dark'); LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, @@ -760,8 +760,8 @@ begin - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, + Static[StaticP1ThreePScoreBG].Texture.ColB, 'P1Dark'); LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, @@ -771,8 +771,8 @@ begin end; if ScreenAct = 2 then begin - LoadColor(Static[StaticP1].Texture.ColR, Static[StaticP1].Texture.ColG, - Static[StaticP1].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, + Static[StaticP1ThreeP].Texture.ColB, 'P4Dark'); LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, Static[StaticP2R].Texture.ColB, 'P5Dark'); LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, @@ -781,8 +781,8 @@ begin - LoadColor(Static[StaticP1ScoreBG].Texture.ColR, Static[StaticP1ScoreBG].Texture.ColG, - Static[StaticP1ScoreBG].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, + Static[StaticP1ThreePScoreBG].Texture.ColB, 'P4Dark'); LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, Static[StaticP2RScoreBG].Texture.ColB, 'P5Dark'); LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, @@ -797,20 +797,22 @@ begin // set player names (for 2 screens and only Singstar skin) if ScreenAct = 1 then begin - Text[TextP1].Text := 'P1'; - Text[TextP2R].Text := 'P2'; - Text[TextP2M].Text := 'P2'; - Text[TextP3R].Text := 'P3'; + Text[TextP1].Text := 'P1'; + Text[TextP1TwoP].Text := 'P1'; // added for ps3 skin + Text[TextP1ThreeP].Text := 'P1'; // added for ps3 skin + Text[TextP2R].Text := 'P2'; + Text[TextP2M].Text := 'P2'; + Text[TextP3R].Text := 'P3'; end; if ScreenAct = 2 then begin case PlayersPlay of 4: begin - Text[TextP1].Text := 'P3'; + Text[TextP1TwoP].Text := 'P3'; Text[TextP2R].Text := 'P4'; end; 6: begin - Text[TextP1].Text := 'P4'; + Text[TextP1ThreeP].Text := 'P4'; Text[TextP2M].Text := 'P5'; Text[TextP3R].Text := 'P6'; end; @@ -818,7 +820,7 @@ begin end; // if - // stereo + // stereo <- and where iss P2M? or P3? Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX; @@ -841,7 +843,7 @@ begin if PlayersPlay = 2 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1TwoPScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -851,7 +853,7 @@ begin if PlayersPlay = 3 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1ThreePScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -866,7 +868,7 @@ begin if ScreenAct = 1 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1TwoPScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -875,7 +877,7 @@ begin if ScreenAct = 2 then begin Tekst := IntToStr(Player[2].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1TwoPScore].Text := Tekst; Tekst := IntToStr(Player[3].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -887,7 +889,7 @@ begin if ScreenAct = 1 then begin Tekst := IntToStr(Player[0].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1ThreePScore].Text := Tekst; Tekst := IntToStr(Player[1].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -900,7 +902,7 @@ begin if ScreenAct = 2 then begin Tekst := IntToStr(Player[3].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; + Text[TextP1ThreePScore].Text := Tekst; Tekst := IntToStr(Player[4].ScoreTotalI); while Length(Tekst) < 5 do Tekst := '0' + Tekst; @@ -1007,26 +1009,19 @@ end; // back stereo Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; - - Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX; - - Text[TextP1].X := Text[TextP1].X - 10*ScreenX; Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX; - Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; - - + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX; - - Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX; Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX; + for S := 1 to 1 do Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX; diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 403cb7dd..ae0ad67c 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -675,28 +675,30 @@ TexY1=0 TexX2=1 TexY2=1 +# O N E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # # +#PlayerOne [SingP1Static] Tex =P -X =16 -Y =55 -W =50 -H =54 +X =20 +Y =297 +W =33 +H =38 Color =P1Dark Type=Transparent [SingP1Text] -Text =P1 -X =27 -Y =62 +Text =P2 +X =26 +Y =302 Font =1 -Size =8 +Size =6 Color =White Align=0 [SingP1Static2] Tex =ScoreBG -X =75 -Y =55 +X =680 +Y =285 W =100 H =40 Color =P1Dark @@ -704,35 +706,74 @@ Type=Transparent [SingP1TextScore] Text =00000 -X =85 -Y =60 +X =690 +Y =290 +Font =0 +Size =10 +Color =White +Align=0 + +# T W O P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # # +#Player One +[SingP1TwoPStatic] +Tex =P +X =20 +Y =117 +W =33 +H =38 +Color =P1Dark +Type=Transparent + +[SingP1TwoPText] +Text =P1 +X =26 +Y =122 +Font =1 +Size =6 +Color =White +Align=0 + +[SingP1TwoPStatic2] +Tex =ScoreBG +X =680 +Y =105 +W =100 +H =40 +Color =P1Dark +Type=Transparent + +[SingP1TwoPTextScore] +Text =00000 +X =690 +Y =110 Font =0 Size =10 Color =White Align=0 +#Player Two [SingP2RStatic] Tex =P -X =739 -Y =55 -W =50 -H =54 +X =20 +Y =297 +W =33 +H =38 Color =P2Dark Type=Transparent [SingP2RText] Text =P2 -X =750 -Y =62 +X =26 +Y =302 Font =1 -Size =8 +Size =6 Color =White Align=0 [SingP2RStatic2] Tex =ScoreBG -X =620 -Y =55 +X =680 +Y =285 W =100 H =40 Color =P2Dark @@ -740,13 +781,52 @@ Type=Transparent [SingP2RTextScore] Text =00000 -X =630 +X =690 +Y =290 +Font =0 +Size =10 +Color =White +Align=0 + +# T H R E E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # # +#Player One +[SingP1ThreePStatic] +Tex =P +X =16 +Y =55 +W =50 +H =54 +Color =P1Dark +Type=Transparent + +[SingP1ThreePText] +Text =P1 +X =27 +Y =62 +Font =1 +Size =8 +Color =White +Align=0 + +[SingP1ThreePStatic2] +Tex =ScoreBG +X =75 +Y =55 +W =100 +H =40 +Color =P1Dark +Type=Transparent + +[SingP1ThreePTextScore] +Text =00000 +X =85 Y =60 Font =0 Size =10 Color =White Align=0 +#Player Two [SingP2MStatic] Tex =P X =311 @@ -783,6 +863,7 @@ Size =10 Color =White Align=0 +#Player Three [SingP3RStatic] Tex =P X =611 -- cgit v1.2.3 From 1c5357580b64fb3573728803e11b769cecb5f45a Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 17 Apr 2007 21:19:31 +0000 Subject: Bugfix: Scores where not shown correctly when in 4 or 6 player mode (UScreenScore.pas), some more effort should be needed to draw the score bars in this mode correctly (but not now) Theme/Skin: Playerboxes in score screen are now draw in player color (just affected the 4 and 6 player mode) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@110 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenScore.pas | 19 +++++++++++++++++-- Themes/Deluxe.ini | 24 ++++++++++++------------ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index 2c018b96..72c42cb8 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -574,8 +574,23 @@ begin while (Length(S)<4) do S := '0' + S; Text[TextNotesScore[Item]].Text := S; - while (Length(S)<5) do S := '0' + S; - Text[TextTotalScore[Item]].Text := S; +// while (Length(S)<5) do S := '0' + S; +// Text[TextTotalScore[Item]].Text := S; + +//fixed: line bonus and golden notes don't show up, +// another bug: total score was shown without added golden-, linebonus + S := IntToStr(Player[P].ScoreTotalI); + while (Length(S)<5) do S := '0' + S; + Text[TextTotalScore[Item]].Text := S; + + S := IntToStr(Player[P].ScoreLineI); + while (Length(S)<4) do S := '0' + S; + Text[TextLineBonusScore[Item]].Text := S; + + S := IntToStr(Player[P].ScoreGoldenI); + while (Length(S)<4) do S := '0' + S; + Text[TextGoldenNotesScore[Item]].Text := S; +//end of fix LoadColor( Text[TextName[Item]].ColR, diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index ae0ad67c..3ecfe5ff 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -1120,7 +1120,7 @@ H =4 Type =Font Black Color =White -[ScorePlayer1Static6] +[ScoreStaticBoxDark1] Tex =PlayerNumberBox X =150 Y =467 @@ -1201,7 +1201,7 @@ TexY1=0 TexX2=1 TexY2=1 -[ScorePlayer1Static7] +[ScorePlayer1Static6] Tex =ScoreEndCap X =469 Y =460 @@ -1216,7 +1216,7 @@ TexY2=1 Reflection=1 ReflectionSpacing=4 -[ScorePlayer1Static8] +[ScorePlayer1Static7] Tex =ScoreLine X =468 Y =460 @@ -1369,7 +1369,7 @@ H =4 Type =Font Black Color =White -[ScorePlayer2Static6] +[ScoreStaticBoxDark2] Tex =PlayerNumberBox X =20 Y =467 @@ -1446,7 +1446,7 @@ TexY1=0 TexX2=0 TexY2=0.5 -[ScorePlayer2Static7] +[ScorePlayer2Static6] Tex =ScoreEndCap X =308 Y =460 @@ -1461,7 +1461,7 @@ TexY2=1 Reflection=1 ReflectionSpacing=4 -[ScorePlayer2Static8] +[ScorePlayer2Static7] Tex =ScoreLine X =307 Y =460 @@ -1616,7 +1616,7 @@ H =4 Type =Font Black Color =White -[ScorePlayer3Static6] +[ScoreStaticBoxDark3] Tex =PlayerNumberBox X =755 Y =467 @@ -1697,7 +1697,7 @@ TexY1=0 TexX2=1 TexY2=0.5 -[ScorePlayer3Static7] +[ScorePlayer3Static6] Tex =ScoreEndCap X =402 Y =460 @@ -1712,7 +1712,7 @@ TexY2=1 Reflection=1 ReflectionSpacing=4 -[ScorePlayer3Static8] +[ScorePlayer3Static7] Tex =ScoreLine X =401 Y =460 @@ -1818,7 +1818,7 @@ Align=2 Text=00000 Color=White -[ScorePlayer4Static6] +[ScoreStaticBoxDark4] Tex =PlayerNumberBox X =20 Y =370 @@ -1979,7 +1979,7 @@ Align=2 Text=00000 Color=White -[ScorePlayer5Static6] +[ScoreStaticBoxDark5] Tex =PlayerNumberBox X =280 Y =370 @@ -2139,7 +2139,7 @@ Align=2 Text=00000 Color=White -[ScorePlayer6Static6] +[ScoreStaticBoxDark6] Tex =PlayerNumberBox X =540 Y =370 -- cgit v1.2.3 From 6b6edf009b8708de5a3918cad39708b07f1886d9 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 17 Apr 2007 23:48:00 +0000 Subject: fixed a bug that caused song selection screen to be drawn incorrectly and singscreen crash when screen fading was disabled git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@111 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 3f6e70da..fc18025f 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -2,7 +2,7 @@ unit UDisplay; interface -uses Windows, SDL, UMenu, OpenGL12, SysUtils, dialogs; +uses Windows, SDL, UMenu, OpenGL12, SysUtils, dialogs, Math; type TDisplay = class @@ -43,6 +43,7 @@ uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture, UIni; constructor TDisplay.Create; begin inherited Create; + // fade mod myfade:=0; @@ -163,6 +164,8 @@ begin // ActualScreen.SetAnimationProgress(Fade-1); // nop? + glClearColor(Col, Col, Col , 0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); NextScreen.Draw; // draw next screen // and draw old screen over it... slowly fading out @@ -180,7 +183,10 @@ begin glEnd; glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); - end; + end + else NextScreen.OnShow; + + if (myfade > 40) or (not doFade) or (not canFade) then begin // fade out complete... myFade:=0; ActualScreen.onHide; // nop... whatever -- cgit v1.2.3 From e649ff6f87df06fee90abb905d8c318e4e17fd49 Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 17 Apr 2007 23:52:09 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@112 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Line Bonus PopUp.JPG | Bin 1995 -> 0 bytes Skins/Deluxe/Sing Bar Back.jpg | Bin 1098 -> 0 bytes Skins/Deluxe/Sing Bar Bar.jpg | Bin 1143 -> 0 bytes Skins/Deluxe/Sing Bar Front.jpg | Bin 1117 -> 0 bytes Skins/Deluxe/Song Selection.jpg | Bin 3614 -> 0 bytes Skins/Deluxe/W&C.ini | 92 +++++++++++++++++++++------------- Skins/Deluxe/[sing]lineBonusPopUp.jpg | Bin 0 -> 1759 bytes Skins/Deluxe/[sing]singBarBack.jpg | Bin 0 -> 388 bytes Skins/Deluxe/[sing]singBarBar.jpg | Bin 0 -> 371 bytes Skins/Deluxe/[sing]singBarFront.jpg | Bin 0 -> 549 bytes Skins/Deluxe/[sing]textBar.jpg | Bin 0 -> 928 bytes 11 files changed, 57 insertions(+), 35 deletions(-) delete mode 100644 Skins/Deluxe/Line Bonus PopUp.JPG delete mode 100644 Skins/Deluxe/Sing Bar Back.jpg delete mode 100644 Skins/Deluxe/Sing Bar Bar.jpg delete mode 100644 Skins/Deluxe/Sing Bar Front.jpg delete mode 100644 Skins/Deluxe/Song Selection.jpg create mode 100644 Skins/Deluxe/[sing]lineBonusPopUp.jpg create mode 100644 Skins/Deluxe/[sing]singBarBack.jpg create mode 100644 Skins/Deluxe/[sing]singBarBar.jpg create mode 100644 Skins/Deluxe/[sing]singBarFront.jpg create mode 100644 Skins/Deluxe/[sing]textBar.jpg diff --git a/Skins/Deluxe/Line Bonus PopUp.JPG b/Skins/Deluxe/Line Bonus PopUp.JPG deleted file mode 100644 index 4b399cb0..00000000 Binary files a/Skins/Deluxe/Line Bonus PopUp.JPG and /dev/null differ diff --git a/Skins/Deluxe/Sing Bar Back.jpg b/Skins/Deluxe/Sing Bar Back.jpg deleted file mode 100644 index ead02155..00000000 Binary files a/Skins/Deluxe/Sing Bar Back.jpg and /dev/null differ diff --git a/Skins/Deluxe/Sing Bar Bar.jpg b/Skins/Deluxe/Sing Bar Bar.jpg deleted file mode 100644 index a7466084..00000000 Binary files a/Skins/Deluxe/Sing Bar Bar.jpg and /dev/null differ diff --git a/Skins/Deluxe/Sing Bar Front.jpg b/Skins/Deluxe/Sing Bar Front.jpg deleted file mode 100644 index 35b4ff88..00000000 Binary files a/Skins/Deluxe/Sing Bar Front.jpg and /dev/null differ diff --git a/Skins/Deluxe/Song Selection.jpg b/Skins/Deluxe/Song Selection.jpg deleted file mode 100644 index c8f06315..00000000 Binary files a/Skins/Deluxe/Song Selection.jpg and /dev/null differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 82af2ab5..369f656a 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -9,18 +9,16 @@ Name=W & C Color=Blue [Textures] -GrayLeft=Left Gray.bmp -GrayMid=Mid Gray.bmp -GrayRight=Right Gray.bmp -NoteBGLeft=Note BG Left.bmp -NoteBGMid=Note BG Mid.bmp -NoteBGRight=Note BG Right.bmp - -Ball=Ball.bmp -SongCover = [main]songCover.jpg +MainBar=Main Bar.jpg +Logo=Main Bar2.jpg +Bar=Bar.jpg +ButtonF=Buttonf.jpg +HDL_Pointer=Pointer.BMP +# # # M A I N # # # Button=Button.jpg +#Backgrounds LoadingBG = [bg-load]summer.jpg MainBG = [bg-main]summer.jpg SongBG = [bg-main]summer.jpg @@ -29,6 +27,7 @@ Top5BG = [bg-main]summer.jpg OptionsBG = [bg-main]summer.jpg PartyBG = [bg-main]summer.jpg +#Icons on screen SongCD = [icon]cd.jpg MainIcon = [icon]main.jpg MainSearch = [icon]search.jpg @@ -36,45 +35,53 @@ IconOption = [icon]options.jpg IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg +# # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg -PlayerNumberBox = [main]playerNumberBox.jpg -ScoreLine = [main]scoreLine.jpg +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg -ScoreEndCap = [score]endcap.jpg +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg -MainBar=Main Bar.jpg -Logo=Main Bar2.jpg +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg -Bar=Bar.jpg -ButtonF=Buttonf.jpg -P=P.jpg +#Background for scores +ScoreBG = [sing]scoreBg.jpg -ScoreBox=Score Box.jpg -ScoreLevel=Score Level.jpg -ScoreLevelRound=Score Level Round.jpg -ScoreBG = [sing]scoreBg.jpg +#Background for the P1, P2 and so on +P = P.jpg +#Pointer for lyrics +Ball = Ball.bmp -LyricBar=Text Bar.jpg -LyricHelpBar=[sing]lyricsHelpBar.bmp -SingBarBack=Sing Bar Back.jpg -SingBarBar=Sing Bar Bar.jpg -SingBarFront=Sing Bar Front.jpg +# # # S C O R E / T O P 5 # # # +ScoreBox = Score Box.jpg +ScoreLevel = Score Level.jpg +ScoreLevelRound = Score Level Round.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [main]scoreLine.jpg +PlayerNumberBox = [main]playerNumberBox.jpg -LineBonusBack=Line Bonus PopUp.jpg -HDL_Pointer=Pointer.BMP +# # # P A R T Y # # # +Joker=Joker.jpg +[BG]PartyRound=[BG]PartyRound.jpg + +# # # N A V I # # # ButtonP = button_p.jpg ButtonM = button_m.jpg ButtonJ = button_j.jpg @@ -82,10 +89,25 @@ ButtonAlt = button_alt.jpg ButtonAZ = button_az.jpg ButtonEnter= button_enter.jpg +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg -Rectangle=Rectangle.jpg +# # # N O T E S # # # +GrayLeft = Left Gray.bmp +GrayMid = Mid Gray.bmp +GrayRight = Right Gray.bmp +NoteBGLeft = Note BG Left.bmp +NoteBGMid = Note BG Mid.bmp +NoteBGRight = Note BG Right.bmp -Joker=Joker.jpg -[BG]PartyRound=[BG]PartyRound.jpg \ No newline at end of file + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +#dirty helpers +Rectangle = Rectangle.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[sing]lineBonusPopUp.jpg b/Skins/Deluxe/[sing]lineBonusPopUp.jpg new file mode 100644 index 00000000..a2eea116 Binary files /dev/null and b/Skins/Deluxe/[sing]lineBonusPopUp.jpg differ diff --git a/Skins/Deluxe/[sing]singBarBack.jpg b/Skins/Deluxe/[sing]singBarBack.jpg new file mode 100644 index 00000000..d7dcd791 Binary files /dev/null and b/Skins/Deluxe/[sing]singBarBack.jpg differ diff --git a/Skins/Deluxe/[sing]singBarBar.jpg b/Skins/Deluxe/[sing]singBarBar.jpg new file mode 100644 index 00000000..4fd9bde9 Binary files /dev/null and b/Skins/Deluxe/[sing]singBarBar.jpg differ diff --git a/Skins/Deluxe/[sing]singBarFront.jpg b/Skins/Deluxe/[sing]singBarFront.jpg new file mode 100644 index 00000000..eec27b79 Binary files /dev/null and b/Skins/Deluxe/[sing]singBarFront.jpg differ diff --git a/Skins/Deluxe/[sing]textBar.jpg b/Skins/Deluxe/[sing]textBar.jpg new file mode 100644 index 00000000..4ad36aa8 Binary files /dev/null and b/Skins/Deluxe/[sing]textBar.jpg differ -- cgit v1.2.3 From fd3af821fa531361f509098d693b9959ae3ee965 Mon Sep 17 00:00:00 2001 From: crazy_joker Date: Wed, 18 Apr 2007 12:32:54 +0000 Subject: Update: LyricBarHelper git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@113 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[sing]lyricsHelpBar.bmp | Bin 3128 -> 3128 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bmp index d70b479d..5c5a85f6 100644 Binary files a/Skins/Deluxe/[sing]lyricsHelpBar.bmp and b/Skins/Deluxe/[sing]lyricsHelpBar.bmp differ -- cgit v1.2.3 From fb56bafdf1f290bd73f1d0136427c28fff7d9ae1 Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 18 Apr 2007 12:40:01 +0000 Subject: Removed EXIF from [BG]PartyRound.jpg (20k smaler) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@114 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[BG]PartyRound.jpg | Bin 27286 -> 5781 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[BG]PartyRound.jpg b/Skins/Deluxe/[BG]PartyRound.jpg index e85347df..164b1686 100644 Binary files a/Skins/Deluxe/[BG]PartyRound.jpg and b/Skins/Deluxe/[BG]PartyRound.jpg differ -- cgit v1.2.3 From 8a921d115ad33f183419af198dbf05da45c2d88f Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 19 Apr 2007 12:36:35 +0000 Subject: Just some skinning. Joker.jpg changed to PS-Mic, P.jpg no more Pummelig and [sing]lyricsHelpBar.jpg (backups added) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@115 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Joker.bak.jpg | Bin 0 -> 3501 bytes Skins/Deluxe/Joker.jpg | Bin 3501 -> 7169 bytes Skins/Deluxe/P.bak.jpg | Bin 0 -> 1234 bytes Skins/Deluxe/P.jpg | Bin 1234 -> 1935 bytes Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp | Bin 0 -> 3128 bytes Skins/Deluxe/[sing]lyricsHelpBar.bmp | Bin 3128 -> 3126 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Deluxe/Joker.bak.jpg create mode 100644 Skins/Deluxe/P.bak.jpg create mode 100644 Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp diff --git a/Skins/Deluxe/Joker.bak.jpg b/Skins/Deluxe/Joker.bak.jpg new file mode 100644 index 00000000..b1f469df Binary files /dev/null and b/Skins/Deluxe/Joker.bak.jpg differ diff --git a/Skins/Deluxe/Joker.jpg b/Skins/Deluxe/Joker.jpg index b1f469df..e2a18684 100644 Binary files a/Skins/Deluxe/Joker.jpg and b/Skins/Deluxe/Joker.jpg differ diff --git a/Skins/Deluxe/P.bak.jpg b/Skins/Deluxe/P.bak.jpg new file mode 100644 index 00000000..6df17a72 Binary files /dev/null and b/Skins/Deluxe/P.bak.jpg differ diff --git a/Skins/Deluxe/P.jpg b/Skins/Deluxe/P.jpg index 6df17a72..a2e36d78 100644 Binary files a/Skins/Deluxe/P.jpg and b/Skins/Deluxe/P.jpg differ diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp new file mode 100644 index 00000000..5c5a85f6 Binary files /dev/null and b/Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp differ diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bmp index 5c5a85f6..05d54752 100644 Binary files a/Skins/Deluxe/[sing]lyricsHelpBar.bmp and b/Skins/Deluxe/[sing]lyricsHelpBar.bmp differ -- cgit v1.2.3 From 2cf9ef0a436dd8f216554bc03d3c2f76ff0268a1 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 19 Apr 2007 14:45:26 +0000 Subject: p.jpg, now with border ;) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@116 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/P.jpg | Bin 1935 -> 1968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/P.jpg b/Skins/Deluxe/P.jpg index a2e36d78..cb6ac136 100644 Binary files a/Skins/Deluxe/P.jpg and b/Skins/Deluxe/P.jpg differ -- cgit v1.2.3 From e7650e739e84b47ce6384767e39115adb5d3211a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 19 Apr 2007 15:30:51 +0000 Subject: Fixed a Bug in PageBreak generation for Text Added support for /n Tag in Texts git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@117 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 4b8ea391..55f84bf8 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -61,6 +61,7 @@ var begin TextString := Value; + //Create Page Breaks if width is given if (W > 0) then begin //Set Font Propertys @@ -76,7 +77,7 @@ begin I := Pos (' ', Value); While (I <> 0) do begin - if (glTextWidth(PChar(Copy (Value,LastBreak + 1,I))) > W) AND (LastPos <> 1) then + if (glTextWidth(PChar(Copy (Value,LastBreak + 1,I - LastBreak))) > W) AND (LastPos <> 1) then begin //new Break SetLength (TextTiles, L+1); @@ -105,6 +106,39 @@ begin SetLength (TextTiles, L+1); TextTiles[L] := Copy (Value, LastBreak + 1, Length(Value) - LastBreak); + end + else + begin + SetLength (TextTiles, 1); + TextTiles[0] := Value; + end; + + I := 0; + // /n Hack + While (I <= High(TextTiles)) do + begin + LastPos := Pos ('/n', TextTiles[I]); + if (LastPos = 0) then //No /n Tags -> Search in next Tile + Inc(I) + else //Found /n Tag -> Create a Break + begin + //Add a new Tile and move all Tiles behind actual Tile to the right + L := Length(TextTiles); + SetLength(TextTiles, L+1); + For L := L-1 downto I + 1 do + begin + TextTiles[L+1] := TextTiles[L]; + end; + + //Write Text to new Tile + TextTiles[I+1] := Trim(Copy(TextTiles[I], LastPos + 2, Length(TextTiles[I]) - LastPos - 1)); + //Delete Text that now is in new Tile from cur. Tile + Delete(TextTiles[I], LastPos, Length(TextTiles[I]) - LastPos + 1); + TextTiles[I] := Trim (TextTiles[I]); + + //Goto next Tile because cur. Tile can not have another /n Tag + Inc(I) + end; end; //Set Cursor Visible @@ -148,7 +182,7 @@ begin end; end; - if (W <= 0) then //No Width set Draw as one Long String + if (False) then //No Width set Draw as one Long String begin if not (SelectBool AND SelectBlink) then Text2 := Text -- cgit v1.2.3 From 6cdcfb402ce738dfc77b008fcb98fd1cda691eb5 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 19 Apr 2007 18:53:22 +0000 Subject: Added Statistic Screens to C0de and to Theme Moved some Translated Strings from UScreenPartyOptions to UTheme to use it with the Statistic Screens, too. Fixed use of /n Tag istead of the correct \n git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@118 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDataBase.pas | 131 +++++++++++ Game/Code/Classes/UGraphic.pas | 36 +-- Game/Code/Classes/UThemes.pas | 33 ++- Game/Code/Menu/UMenuText.pas | 6 +- Game/Code/Screens/UScreenMain.pas | 6 + Game/Code/Screens/UScreenPartyOptions.pas | 9 +- Game/Code/Screens/UScreenStatDetail.pas | 254 ++++++++++++++++++++++ Game/Code/Screens/UScreenStatMain.pas | 229 +++++++++++++++++++ Game/Code/UltraStar.dpr | 4 +- Themes/Deluxe.ini | 350 +++++++++++++++++++++++++++++- 10 files changed, 1026 insertions(+), 32 deletions(-) create mode 100644 Game/Code/Screens/UScreenStatDetail.pas create mode 100644 Game/Code/Screens/UScreenStatMain.pas diff --git a/Game/Code/Classes/UDataBase.pas b/Game/Code/Classes/UDataBase.pas index 1ebc18db..0e5a4a3f 100644 --- a/Game/Code/Classes/UDataBase.pas +++ b/Game/Code/Classes/UDataBase.pas @@ -8,6 +8,26 @@ uses USongs, SQLiteTable3; //DataBaseSystem - Class including all DB Methods //-------------------- type + TStatResult = record + Case Typ: Byte of + 0: (Singer: ShortString; + Score: Word; + Difficulty: Byte; + SongArtist: ShortString; + SongTitle: ShortString); + + 1: (Player: ShortString; + AverageScore: Word); + + 2: (Artist: ShortString; + Title: ShortString; + TimesSung: Word); + + 3: (ArtistName: ShortString; + TimesSungtot: Word); + end; + AStatResult = Array of TStatResult; + TDataBaseSystem = class private ScoreDB: TSqliteDatabase; @@ -15,12 +35,17 @@ type public + property Filename: String read sFilename; + Destructor Free; Procedure Init(const Filename: string); procedure ReadScore(var Song: TSong); procedure AddScore(var Song: TSong; Level: integer; Name: string; Score: integer); procedure WriteScore(var Song: TSong); + + Function GetStats(var Stats: AStatResult; const Typ, Count: Byte; const Page: Cardinal; const Reversed: Boolean): Boolean; + Function GetTotalEntrys(const Typ: Byte): Cardinal; end; var @@ -160,4 +185,110 @@ begin end; end; +//-------------------- +//GetStats - Write some Stats to Array, Returns True if Chossen Page has Entrys +//Case Typ of +//0 - Best Scores +//1 - Best Singers +//2 - Most sung Songs +//3 - Most popular Band +//-------------------- +Function TDataBaseSystem.GetStats(var Stats: AStatResult; const Typ, Count: Byte; const Page: Cardinal; const Reversed: Boolean): Boolean; +var + Query: String; + TableData: TSqliteTable; +begin + Result := False; + + if (Length(Stats) < Count) then + Exit; + + {Todo: + Add Prevention that only Players with more than 5 Scores are Selected at Typ 2} + + //Create Query + Case Typ of + 0: Query := 'SELECT `Player` , `Difficulty` , `Score` , `Artist` , `Title` FROM `US_Scores` INNER JOIN `US_Songs` ON (`SongID` = `ID`) ORDER BY `Score`'; + 1: Query := 'SELECT `Player` , (Sum(`Score`) / COUNT(`Score`)) FROM `US_Scores` GROUP BY `Player` ORDER BY (Sum(`Score`) / COUNT(`Score`))'; + 2: Query := 'SELECT `Artist` , `Title` , `TimesPlayed` FROM `US_Songs` ORDER BY `TimesPlayed`'; + 3: Query := 'SELECT `Artist` , Sum(`TimesPlayed`) FROM `US_Songs` GROUP BY `Artist` ORDER BY Sum(`TimesPlayed`)'; + end; + + //Add Order Direction + If Reversed then + Query := Query + ' ASC' + else + Query := Query + ' DESC'; + + //Add Limit + Query := Query + ' LIMIT ' + InttoStr(Count * Page) + ', ' + InttoStr(Count) + ';'; + + //Execute Query + //try + TableData := ScoreDB.GetTable(Query); + {except + exit; + end;} + + //if Result empty -> Exit + if (TableData.RowCount < 1) then + exit; + + //Copy Result to Stats Array + while not TableData.Eof do + begin + Stats[TableData.Row].Typ := Typ; + + Case Typ of + 0:begin + Stats[TableData.Row].Singer := TableData.Fields[0]; + + Stats[TableData.Row].Difficulty := StrtoIntDef(TableData.Fields[1], 0); + + Stats[TableData.Row].Score := StrtoIntDef(TableData.Fields[2], 0){TableData.FieldAsInteger(2)}; + Stats[TableData.Row].SongArtist := TableData.Fields[3]; + Stats[TableData.Row].SongTitle := TableData.Fields[4]; + end; + + 1:begin + Stats[TableData.Row].Player := TableData.Fields[0]; + Stats[TableData.Row].AverageScore := TableData.FieldAsInteger(1); + end; + + 2:begin + Stats[TableData.Row].Artist := TableData.Fields[0]; + Stats[TableData.Row].Title := TableData.Fields[1]; + Stats[TableData.Row].TimesSung := StrtoIntDef(TableData.Fields[2], 0); + end; + + 3:begin + Stats[TableData.Row].ArtistName := TableData.Fields[0]; + Stats[TableData.Row].TimesSungtot := StrtoIntDef(TableData.Fields[1], 0); + end; + + end; + + TableData.Next; + end; + + Result := True; +end; + +//-------------------- +//GetTotalEntrys - Get Total Num of entrys for a Stats Query +//-------------------- +Function TDataBaseSystem.GetTotalEntrys(const Typ: Byte): Cardinal; +var Query: String; +begin + //Create Query + Case Typ of + 0: Query := 'SELECT COUNT(`SongID`) FROM `US_Scores`;'; + 1: Query := 'SELECT COUNT(DISTINCT `Player`) FROM `US_Scores`;'; + 2: Query := 'SELECT COUNT(`ID`) FROM `US_Songs`;'; + 3: Query := 'SELECT COUNT(DISTINCT `Artist`) FROM `US_Songs`;'; + end; + + Result := ScoreDB.GetTableValue(Query); +end; + end. diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index b909e49f..342efe3c 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -7,7 +7,8 @@ uses UScreenOptionsGraphics, UScreenOptionsSound, UScreenOptionsLyrics, UScreenOptionsThemes, UScreenOptionsRecord, UScreenOptionsAdvanced, UScreenSong, UScreenSing, UScreenScore, UScreenTop5, UScreenEditSub, UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, UScreenSongJumpto, - {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer; + {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer, + {Stats Screens} UScreenStatMain, UScreenStatDetail; type TRecR = record @@ -62,6 +63,10 @@ var ScreenPartyOptions: TScreenPartyOptions; ScreenPartyPlayer: TScreenPartyPlayer; + //StatsScreens + ScreenStatMain: TScreenStatMain; + ScreenStatDetail: TScreenStatDetail; + Tex_Left: array[0..6] of TTexture; Tex_Mid: array[0..6] of TTexture; @@ -221,20 +226,27 @@ var Icon: TIcon; Res: TResourceStream; ISurface: PSDL_Surface; + Pixel: PByteArray; begin Log.LogStatus('LoadOpenGL', 'Initialize3D'); Log.BenchmarkStart(2); LoadOpenGL; - {//Load Icon + Log.LogStatus('SDL_Init', 'Initialize3D'); + if ( SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO)= -1 ) then begin + Log.LogError('SDL_Init Failed', 'Initialize3D'); + exit; + end; + + { //Load Icon Res := TResourceStream.CreateFromID(HInstance, 3, RT_ICON); Icon := TIcon.Create; Icon.LoadFromStream(Res); Res.Free; - + Icon. //Create icon Surface - SDL_CreateRGBSurface ( + SDL_CreateRGBSurfaceFrom ( SDL_SWSURFACE, Icon.Width, Icon.Height, @@ -243,18 +255,12 @@ begin 32 or 16, 8 or 4, 2 or 1); - SDL_BlitSurface( //} - + //SDL_BlitSurface( - SDL_WM_SetIcon(SDL_LoadBMP('us.ico'), 0); //} - Log.LogStatus('SDL_Init', 'Initialize3D'); - if ( SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO)= -1 ) then begin - Log.LogError('SDL_Init Failed', 'Initialize3D'); - exit; - end; + SDL_WM_SetIcon(SDL_LoadBMP('DEFAULT_WINDOW_ICON'), 0); //} - SDL_WM_SetCaption(PChar(Title), 'WM_DEFAULT'); + SDL_WM_SetCaption(PChar(Title), nil); InitializeScreen; @@ -433,6 +439,10 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyOptions', 3); Log.BenchmarkStart(3); ScreenPartyPlayer := TScreenPartyPlayer.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyPlayer', 3); Log.BenchmarkStart(3); + ScreenStatMain := TScreenStatMain.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Main', 3); Log.BenchmarkStart(3); + ScreenStatDetail := TScreenStatDetail.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Detail', 3); Log.BenchmarkStart(3); end; end. diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 5aca1401..4f4ab2b9 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -570,10 +570,15 @@ type ButtonPrev: TThemeButton; ButtonReverse: TThemeButton; ButtonExit: TThemeButton; - - Description: array[0..3] of string; + TextDescription: TThemeText; + TextPage: TThemeText; TextList: AThemeText; + + Description: array[0..3] of string; + DescriptionR: array[0..3] of string; + FormatStr: array[0..3] of string; + PageStr: String; end; //Playlist Translations @@ -620,6 +625,8 @@ type Playlist: TThemePlaylist; + ILevel: array[0..2] of String; + constructor Create(FileName: string); overload; // Initialize theme system constructor Create(FileName: string; Color: integer); overload; // Initialize theme system with color function LoadTheme(FileName: string; sColor: integer): boolean; // Load some theme settings from file @@ -1242,15 +1249,35 @@ begin ThemeLoadButton(StatDetail.ButtonExit, 'StatDetailButtonExit'); ThemeLoadText (StatDetail.TextDescription, 'StatDetailTextDescription'); + ThemeLoadText (StatDetail.TextPage, 'StatDetailTextPage'); ThemeLoadTexts(StatDetail.TextList, 'StatDetailTextList'); + //Translate Texts StatDetail.Description[0] := Language.Translate('STAT_DESC_SCORES'); StatDetail.Description[1] := Language.Translate('STAT_DESC_SINGERS'); StatDetail.Description[2] := Language.Translate('STAT_DESC_SONGS'); StatDetail.Description[3] := Language.Translate('STAT_DESC_BANDS'); + StatDetail.DescriptionR[0] := Language.Translate('STAT_DESC_SCORES_REVERSED'); + StatDetail.DescriptionR[1] := Language.Translate('STAT_DESC_SINGERS_REVERSED'); + StatDetail.DescriptionR[2] := Language.Translate('STAT_DESC_SONGS_REVERSED'); + StatDetail.DescriptionR[3] := Language.Translate('STAT_DESC_BANDS_REVERSED'); + + StatDetail.FormatStr[0] := Language.Translate('STAT_FORMAT_SCORES'); + StatDetail.FormatStr[1] := Language.Translate('STAT_FORMAT_SINGERS'); + StatDetail.FormatStr[2] := Language.Translate('STAT_FORMAT_SONGS'); + StatDetail.FormatStr[3] := Language.Translate('STAT_FORMAT_BANDS'); + + StatDetail.PageStr := Language.Translate('STAT_PAGE'); + //Playlist Translations - Playlist.CatText := Language.Translate('PLAYLIST_CATTEXT') + Playlist.CatText := Language.Translate('PLAYLIST_CATTEXT'); + + //Level Translations + //Fill ILevel + ILevel[0] := Language.Translate('SING_EASY'); + ILevel[1] := Language.Translate('SING_MEDIUM'); + ILevel[2] := Language.Translate('SING_HARD'); end; ThemeIni.Free; diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 55f84bf8..65034f1d 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -114,13 +114,13 @@ begin end; I := 0; - // /n Hack + // \n Hack While (I <= High(TextTiles)) do begin - LastPos := Pos ('/n', TextTiles[I]); + LastPos := Pos ('\n', TextTiles[I]); if (LastPos = 0) then //No /n Tags -> Search in next Tile Inc(I) - else //Found /n Tag -> Create a Break + else //Found \n Tag -> Create a Break begin //Add a new Tile and move all Tiles behind actual Tile to the right L := Length(TextTiles); diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index dd7f21c5..8d2d13b6 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -135,6 +135,12 @@ begin end; end; + SDLK_S: + begin + Music.PlayStart; + FadeTo(@ScreenStatMain); + end; + SDLK_RETURN: begin if (Interaction = 0) and (Length(Songs.Song) >= 1) then begin diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index 1fd4da8f..fd7b5107 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -31,7 +31,6 @@ type end; var - ILevel: array[0..2] of String; IPlaylist: array[0..2] of String; IPlaylist2: array of String; const @@ -185,12 +184,6 @@ var I: integer; begin inherited Create; - - //Fill ILevel - ILevel[0] := Language.Translate('SING_EASY'); - ILevel[1] := Language.Translate('SING_MEDIUM'); - ILevel[2] := Language.Translate('SING_HARD'); - //Fill IPlaylist IPlaylist[0] := Language.Translate('PARTY_PLAYLIST_ALL'); IPlaylist[1] := Language.Translate('PARTY_PLAYLIST_CATEGORY'); @@ -210,7 +203,7 @@ begin AddBackground(Theme.PartyOptions.Background.Tex); - SelectLevel := AddSelectSlide (Theme.PartyOptions.SelectLevel, Ini.Difficulty, ILevel); + SelectLevel := AddSelectSlide (Theme.PartyOptions.SelectLevel, Ini.Difficulty, Theme.ILevel); SelectPlayList := AddSelectSlide (Theme.PartyOptions.SelectPlayList, PlayList, IPlaylist); SelectPlayList2 := AddSelectSlide (Theme.PartyOptions.SelectPlayList2, PlayList2, IPlaylist2); SelectRounds := AddSelectSlide (Theme.PartyOptions.SelectRounds, Rounds, IRounds); diff --git a/Game/Code/Screens/UScreenStatDetail.pas b/Game/Code/Screens/UScreenStatDetail.pas new file mode 100644 index 00000000..dc4a0f1f --- /dev/null +++ b/Game/Code/Screens/UScreenStatDetail.pas @@ -0,0 +1,254 @@ +unit UScreenStatDetail; + +interface + +uses + UMenu, SDL, SysUtils, UDisplay, UMusic, UIni, UThemes; + +type + TScreenStatDetail = class(TMenu) + public + Typ: Byte; + Page: CardinaL; + Count: Byte; + Reversed: Boolean; + + TotEntrys: Cardinal; + TotPages: Cardinal; + + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + + procedure SetTitle; + Procedure SetPage(NewPage: Cardinal); + end; + +implementation + +{Stat Screens: + 0 - Best Scores + 1 - Best Singers + 2 - Most sung Songs + 3 - Most popular Band +} + +uses UGraphic, UDataBase, ULanguage, math, ULog; + +function TScreenStatDetail.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + SDLK_ESCAPE: + begin + Music.PlayBack; + FadeTo(@ScreenStatMain); + end; + SDLK_RETURN: + begin + if Interaction = 0 then begin + //Next Page + SetPage(Page+1); + end; + + if Interaction = 1 then begin + //Previous Page + if (Page > 0) then + SetPage(Page-1); + end; + + if Interaction = 2 then begin + //Reverse Order + Reversed := not Reversed; + SetPage(Page); + end; + + if Interaction = 3 then begin + Music.PlayBack; + FadeTo(@ScreenStatMain); + end; + end; + SDLK_LEFT: + begin + InteractPrev; + end; + SDLK_RIGHT: + begin + InteractNext; + end; + SDLK_UP: + begin + InteractPrev; + end; + SDLK_DOWN: + begin + InteractNext; + end; + end; + end; +end; + +constructor TScreenStatDetail.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.StatDetail.Background.Tex); + + AddButton(Theme.StatDetail.ButtonNext); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Language.Translate('STAT_NEXT')); + + AddButton(Theme.StatDetail.ButtonPrev); + if (Length(Button[1].Text)=0) then + AddButtonText(14, 20, Language.Translate('STAT_PREV')); + + AddButton(Theme.StatDetail.ButtonReverse); + if (Length(Button[2].Text)=0) then + AddButtonText(14, 20, Language.Translate('STAT_REVERSE')); + + AddButton(Theme.StatDetail.ButtonExit); + if (Length(Button[3].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[7]); + + for I := 0 to High(Theme.StatDetail.TextList) do + AddText(Theme.StatDetail.TextList[I]); + + Count := Length(Theme.StatDetail.TextList); + + AddText(Theme.StatDetail.TextDescription); + AddText(Theme.StatDetail.TextPage); + + for I := 0 to High(Theme.StatDetail.Static) do + AddStatic(Theme.StatDetail.Static[I]); + + for I := 0 to High(Theme.StatDetail.Text) do + AddText(Theme.StatDetail.Text[I]); + + + + Interaction := 0; + Typ := 0; +end; + +procedure TScreenStatDetail.onShow; +begin + //Set Tot Entrys and PAges + TotEntrys := DataBase.GetTotalEntrys(Typ); + TotPages := Ceil(TotEntrys / Count); + //Show correct Title + SetTitle; + //Show First Page + Reversed := False; + SetPage(0); +end; + +procedure TScreenStatDetail.SetTitle; +begin + //Set Title + Case Reversed of + True: Text[Count].Text := Theme.StatDetail.DescriptionR[Typ]; + False: Text[Count].Text := Theme.StatDetail.Description[Typ]; + end; +end; + +Procedure TScreenStatDetail.SetPage(NewPage: Cardinal); +var + Result: AStatResult; + I: Integer; + FormatStr: String; + PerPage: Byte; +begin + SetLength(Result, Count); + if (Database.GetStats(Result, Typ, Count, NewPage, Reversed)) then + begin + Page := NewPage; + + FormatStr := Theme.StatDetail.FormatStr[Typ]; + + //refresh Texts + For I := 0 to Count-1 do + begin + try + case Typ of + 0:begin //Best Scores + //Set Texts + if (Result[I].Score>0) then + Text[I].Text := Format(FormatStr, [Result[I].Singer, + Result[I].Score, + Theme.ILevel[Result[I].Difficulty], + Result[I].SongArtist, + Result[I].SongTitle]) + else + Text[I].Text := ''; + end; + + 1:begin //Best Singers + //Set Texts + if (Result[I].AverageScore>0) then + Text[I].Text := Format(FormatStr, [Result[I].Player, + Result[I].AverageScore]) + else + Text[I].Text := ''; + end; + + 2:begin //Popular Songs + //Set Texts + if (Result[I].Artist<>'') then + Text[I].Text := Format(FormatStr, [Result[I].Artist, + Result[I].Title, + Result[I].TimesSung]) + else + Text[I].Text := ''; + end; + + 3:begin //Popular Bands + //Set Texts + if (Result[I].ArtistName<>'') then + Text[I].Text := Format(FormatStr, [Result[I].ArtistName, + Result[I].TimesSungtot]) + else + Text[I].Text := ''; + end; + end; + except + on E: EConvertError do + Log.LogError('Error Parsing FormatString in UScreenStatDetail: ' + E.Message); + end; + end; + + if (Page + 1 = TotPages) AND (TotEntrys Mod Count <> 0) then + PerPage := (TotEntrys Mod Count) + else + PerPage := Count; + + Text[Count+1].Text := Format(Theme.StatDetail.PageStr, [Page + 1, + TotPages, + PerPage, + TotEntrys]); + + //Show correct Title + SetTitle; + + end; + +end; + + +procedure TScreenStatDetail.SetAnimationProgress(Progress: real); +var I: Integer; +begin + For I := 0 to high(Button) do + Button[I].Texture.ScaleW := Progress; +end; + +end. diff --git a/Game/Code/Screens/UScreenStatMain.pas b/Game/Code/Screens/UScreenStatMain.pas new file mode 100644 index 00000000..337ed745 --- /dev/null +++ b/Game/Code/Screens/UScreenStatMain.pas @@ -0,0 +1,229 @@ +unit UScreenStatMain; + +interface + +uses + UMenu, SDL, SysUtils, UDisplay, UMusic, UIni, UThemes; + +type + TScreenStatMain = class(TMenu) + private + //Some Stat Value that don't need to be calculated 2 times + SongswithVid: Cardinal; + public + TextOverview: integer; + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure SetAnimationProgress(Progress: real); override; + + procedure SetOverview; + end; + +implementation + +uses UGraphic, UDataBase, USongs, ULanguage, windows, ULog; + +function TScreenStatMain.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + SDLK_ESCAPE: + begin + Ini.Save; + Music.PlayBack; + FadeTo(@ScreenMain); + end; + SDLK_RETURN: + begin + //Exit Button Pressed + if Interaction = 4 then begin + Music.PlayBack; + FadeTo(@ScreenMain); + end + else //One of the Stats Buttons Pressed + begin + Music.PlayBack; + ScreenStatDetail.Typ := Interaction; + FadeTo(@ScreenStatDetail); + end; + end; + SDLK_LEFT: + begin + InteractPrev; + end; + SDLK_RIGHT: + begin + InteractNext; + end; + SDLK_UP: + begin + InteractPrev; + end; + SDLK_DOWN: + begin + InteractNext; + end; + end; + end; +end; + +constructor TScreenStatMain.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.StatMain.Background.Tex); + + AddButton(Theme.StatMain.ButtonScores); + if (Length(Button[0].Text)=0) then + AddButtonText(14, 20, Theme.StatDetail.Description[0]); + + AddButton(Theme.StatMain.ButtonSingers); + if (Length(Button[1].Text)=0) then + AddButtonText(14, 20, Theme.StatDetail.Description[1]); + + AddButton(Theme.StatMain.ButtonSongs); + if (Length(Button[2].Text)=0) then + AddButtonText(14, 20, Theme.StatDetail.Description[2]); + + AddButton(Theme.StatMain.ButtonBands); + if (Length(Button[3].Text)=0) then + AddButtonText(14, 20, Theme.StatDetail.Description[3]); + + AddButton(Theme.StatMain.ButtonExit); + if (Length(Button[4].Text)=0) then + AddButtonText(14, 20, Theme.Options.Description[4]); + + TextOverview := AddText(Theme.StatMain.TextOverview); + + for I := 0 to High(Theme.StatMain.Static) do + AddStatic(Theme.StatMain.Static[I]); + + for I := 0 to High(Theme.StatMain.Text) do + AddText(Theme.StatMain.Text[I]); + + Interaction := 0; + + SongswithVid := 0; + For I := 0 to high(Songs.Song) do + if (Songs.Song[I].Video <> '') AND FileExists(Songs.Song[I].Path + Songs.Song[I].Video) then + Inc(SongswithVid); +end; + +procedure TScreenStatMain.onShow; +begin + //Set Overview Text: + SetOverview; +end; + +procedure TScreenStatMain.SetOverview; +var + Overview, Formatstr: String; + I: Integer; + //Some Vars to Save Attributes to + A1, A2, A3: Integer; + A4, A5: String; + Result1, Result2: AStatResult; + ResetTime: TSystemTime; + function GetFileCreation(Filename: String): TSystemTime; + var + FindData: TWin32FindData; + Handle: THandle; + begin + Handle := FindFirstFile(PChar(Filename), FindData); + if Handle <> INVALID_HANDLE_VALUE then + begin + FileTimeToSystemTime(FindData.ftCreationTime, Result); + Windows.FindClose(Handle); + end; + end; +begin + //Song Overview + + //Introduction + Formatstr := Language.Translate ('STAT_OVERVIEW_INTRO'); + {Format: + %0:d Ultrastar Version + %1:d Day of Reset (A1) + %2:d Month of Reset (A2) + %3:d Year of Reset (A3)} + + ResetTime := GetFileCreation(Database.Filename); + + A1 := ResetTime.wDay; + A2 := ResetTime.wMonth; + A3 := ResetTime.wYear; + try + Overview := Format(Formatstr, [Language.Translate('US_VERSION'), A1, A2, A3]); + except + on E: EConvertError do + Log.LogError('Error Parsing FormatString "STAT_OVERVIEW_INTRO": ' + E.Message); + end; + + Formatstr := Language.Translate ('STAT_OVERVIEW_SONG'); + {Format: + %0:d Count Songs (A1) + %1:d Count of Sung Songs (A2) + %2:d Count of UnSung Songs + %3:d Count of Songs with Video (A3) + %4:s Name of the most popular Song} + A1 := Length(CatSongs.Song); + A2 := Database.GetTotalEntrys(2); + + A3 := SongswithVid; + + SetLength(Result1, 1); + Database.GetStats(Result1, 2, 1, 0, False); + A4 := Result1[0].Artist; + A5 := Result1[0].Title; + + try + Overview := Overview + '\n \n' + Format(Formatstr, [A1, A2, A1-A2, A3, A4, A5]); + except + on E: EConvertError do + Log.LogError('Error Parsing FormatString "STAT_OVERVIEW_SONG": ' + E.Message); + end; + + //Player Overview + Formatstr := Language.Translate ('STAT_OVERVIEW_PLAYER'); + {Format: + %0:d Count Players (A1) + %1:s Best Player (Result) + %2:d Best Players Score + %3:s Best Score Player (Result2) + %4:d Best Score} + A1 := Database.GetTotalEntrys(1); + + SetLength(Result1, 1); + Database.GetStats(Result1, 1, 1, 0, False); + + SetLength(Result2, 1); + Database.GetStats(Result2, 0, 1, 0, False); + + try + Overview := Overview + '\n \n' + Format(Formatstr, [A1, Result1[0].Player, Result1[0].AverageScore, Result2[0].Singer, Result2[0].Score]); + except + on E: EConvertError do + Log.LogError('Error Parsing FormatString "STAT_OVERVIEW_PLAYER": ' + E.Message); + end; + + Text[0].Text := Overview; +end; + + +procedure TScreenStatMain.SetAnimationProgress(Progress: real); +var I: Integer; +begin + For I := 0 to high(Button) do + Button[I].Texture.ScaleW := Progress; +end; + +end. \ No newline at end of file diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index fc1fa8a2..d5418e04 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -78,6 +78,8 @@ uses UScreenTop5 in 'Screens\UScreenTop5.pas', UScreenSongMenu in 'Screens\UScreenSongMenu.pas', UScreenSongJumpto in 'Screens\UScreenSongJumpto.pas', + UScreenStatMain in 'Screens\UScreenStatMain.pas', + UScreenStatDetail in 'Screens\UScreenStatDetail.pas', //------------------------------ //Includes - Screens PartyMode @@ -103,7 +105,7 @@ uses const - Version = 'UltraStar Deluxe V 0.95 Beta'; + Version = 'UltraStar Deluxe V 0.96 Beta'; var WndTitle: string; diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 3ecfe5ff..db7080f4 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -210,8 +210,8 @@ Texts =3 Tex=SongBG [SongCover] -X=252 -Y=125 +X=252 +Y=125 W=320 H=190 Style=5 @@ -1188,7 +1188,7 @@ TexY1=0.1 TexX2=1 TexY2=0.9 -[ScoreStaticLevelRound1] +[ScoreStaticLevelRound1] Tex =ScoreLevelRound X =450 Y =380 @@ -5336,4 +5336,346 @@ Font =0 Size =8 Text=SONG_JUMPTO_HELP Align=0 -Z=1 \ No newline at end of file +Z=1 + +[StatMain] +Texts=0 +Statics=0 + +[StatMainBackground] +Tex=MainBG + +[StatMainButtonScores] +X =589 +Y =80 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatMainButtonScoresText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_DESC_SCORES +Color=White + +[StatMainButtonSingers] +X =589 +Y =140 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatMainButtonSingersText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_DESC_SINGERS +Color=White + +[StatMainButtonSongs] +X =589 +Y =200 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatMainButtonSongsText1] +X =95 +Y =10 +Font=0 +Size=9 +Align=1 +Text=STAT_DESC_SONGS +Color=White + +[StatMainButtonBands] +X =589 +Y =260 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatMainButtonBandsText1] +X =95 +Y =10 +Font=0 +Size=9 +Align=1 +Text=STAT_DESC_BANDS +Color=White + +[StatMainButtonExit] +X =589 +Y =320 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatMainButtonExitText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_EXIT +Color=White + +[StatMainTextOverview] +X =30 +Y =80 +W =550 +Color=Grey +Font =0 +Size =12 +Align=0 +Text= + +[StatMainText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Align=0 +Text=STAT_MAIN_DESC + +[StatDetail] +Texts=0 +Statics=0 + +[StatDetailBackground] +Tex=MainBG + +[StatDetailButtonNext] +X =589 +Y =70 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatDetailButtonNextText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_NEXT +Color=White + +[StatDetailButtonPrev] +X =589 +Y =130 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatDetailButtonPrevText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_PREV +Color=White + +[StatDetailButtonReverse] +X =589 +Y =190 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatDetailButtonReverseText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_REVERSE +Color=White + +[StatDetailButtonExit] +X =589 +Y =250 +W =190 +H =50 +Tex =Button +Color =DarkBlue +DColor = LightBlue +Type=Font Black +Texts=1 +Reflection=0 + +[StatDetailButtonExitText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_EXIT +Color=White + +[StatDetailTextDescription] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Align=0 +Text= + +[StatDetailTextPage] +X = 795 +Y = 560 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Align=2 +Text= + +[StatDetailTextList1] +X = 30 +Y = 70 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text=Stat1 + +[StatDetailTextList2] +X = 30 +Y = 117 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text=Stat2 + +[StatDetailTextList3] +X = 30 +Y = 164 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList4] +X = 30 +Y = 211 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList5] +X = 30 +Y = 258 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList6] +X = 30 +Y = 305 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList7] +X = 30 +Y = 352 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList8] +X = 30 +Y = 399 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList9] +X = 30 +Y = 446 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= + +[StatDetailTextList10] +X = 30 +Y = 493 +ColR = 0.3 +ColG = 0.3 +ColB = 0.3 +Font = 0 +Size = 8 +Text= \ No newline at end of file -- cgit v1.2.3 From 54f719b45c4cf87e82b92f21069634fd0b004e35 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 19 Apr 2007 19:10:59 +0000 Subject: Added new Language Entrys for Statistics Screen Added some missing Entrys in German and English Language File and Readme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@119 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 36 ++++++++++++++++++++++++++++++++++++ Languages/German.ini | 33 +++++++++++++++++++++++++++++++-- Languages/readme.txt | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index de30266a..14d6bb90 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -65,8 +65,11 @@ SING_OPTIONS_ADVANCED_ONSONGCLICK=after SongSelection SING_CHOOSE_MODE=choose mode SING_GAME_OPTIONS=game options SING_GAME_OPTIONS_DESC=change game settings + SING_LEGEND_SELECT=SELECT SING_LEGEND_NAVIGATE=NAVIGATE +SING_LEGEND_CONTINUE=Continue + SING_OPTIONS=options SING_DIFFICULTY=select difficulty @@ -155,6 +158,10 @@ SONG_JUMPTO_TYPE3=Artist SONG_JUMPTO_SONGSFOUND=%d Song(s) found SONG_JUMPTO_NOSONGSFOUND=No Song found SONG_JUMPTO_HELP=Type Text to Search for +SONG_JUMPTO_CATTEXT=Search for: %s + +PARTY_ROUND=Round +PARTY_ROUND_WINNER=Winner PARTY_SCORE_WINS=%s wins! PARTY_OPTIONS_DESC=Party Mode @@ -168,6 +175,8 @@ PARTY_TEAMS_PLAYER3=Player Team3 PARTY_SELECT_PLAYER=Enter Playernames! PARTY_DISMISSED=Dismissed! +PARTY_NOTPLAYEDYET=Not played yet +PARTY_NOBODY=Nobody PLUGIN_HDL_NAME=Hold the Line PLUGIN_HDL_DESC=Don't get worse than the Pointer at the Rating bar shows you. @@ -177,3 +186,30 @@ PLUGIN_DUELL_NAME=Duell PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Duell without seeing the Notes + +STAT_MAIN_DESC=Statistics + +STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s. +STAT_OVERVIEW_PLAYER=Since the last Reset ther were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. + +STAT_NEXT=Next Page +STAT_PREV=Previous Page +STAT_REVERSE=Change Order +STAT_PAGE=Seite %0:d of %1:d Pages\n (%2:d of %3:d Entrys) + +STAT_DESC_SCORES=HighScores +STAT_DESC_SCORES_REVERSED=LowestScores +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Best Singers +STAT_DESC_SINGERS_REVERSED=Worst Singers +STAT_FORMAT_SINGERS=%0:s \n Average Score: %1:d + +STAT_DESC_SONGS=Most popular Songs +STAT_DESC_SONGS_REVERSED=Least popular Songs +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung + +STAT_DESC_BANDS=Most popular Bands +STAT_DESC_BANDS_REVERSED=Least popular Bands +STAT_FORMAT_BANDS=%0:s \n %1:dx Sung \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index e9cd82ae..d7dce803 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -164,6 +164,9 @@ SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden SONG_JUMPTO_HELP=Text eingeben um zu suchen SONG_JUMPTO_CATTEXT=Suche nach: %s +PARTY_ROUND=Runde +PARTY_ROUND_WINNER=Sieger + PARTY_SCORE_WINS=%s hat gewonnen! PARTY_OPTIONS_DESC=Party Modus PARTY_DIFFICULTY=Schwierigkeitsgrad @@ -176,6 +179,8 @@ PARTY_TEAMS_PLAYER3=Spieler Team3 PARTY_SELECT_PLAYER=Gib die Spielernamen ein! PARTY_DISMISSED=Ausgeschieden +PARTY_NOTPLAYEDYET=Noch nicht gespielt +PARTY_NOBODY=Niemand PLUGIN_HDL_NAME=Balken halten PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich @@ -186,6 +191,30 @@ PLUGIN_DUELL_DESC=Normales Spiel PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl -PARTY_ROUND=Runde -PARTY_ROUND_WINNER=Sieger +STAT_MAIN_DESC=Statistiken + +STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Songs(%3:d mit Video), davon wurden %1:d schon einmal gesungen und %2:d noch nicht.\n Der am häufigsten gesungene Song ist %5:s von %4:s. +STAT_OVERVIEW_PLAYER=Seit dem letzten Reset haben %0:d verschiedene Spieler gesungen.\n Der Beste Spieler ist %1:s mit einer Score von %2:d Punkten.\n Die höchste Punktzahl, %4:d, wurde von %3:s erreicht. + +STAT_NEXT=Nächste Seite +STAT_PREV=Vorherige Seite +STAT_REVERSE=Reihenfolge umkehren +STAT_PAGE=Seite %0:d von %1:d\n (%2:d von %3:d Einträgen) + +STAT_DESC_SCORES=HighScores +STAT_DESC_SCORES_REVERSED=LowestScores +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Beste Sänger +STAT_DESC_SINGERS_REVERSED=Schlechteste Sänger +STAT_FORMAT_SINGERS=%0:s \n Durchschnittliche Score: %1:d + +STAT_DESC_SONGS=Beliebteste Songs +STAT_DESC_SONGS_REVERSED=Unbeliebteste Songs +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx gesungen + +STAT_DESC_BANDS=Beliebteste Bands +STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands +STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d \ No newline at end of file diff --git a/Languages/readme.txt b/Languages/readme.txt index 3a19fa29..fce7c4e9 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -35,6 +35,9 @@ LINEBONUS_WORST=Ghastly! IMPLODE_GLUE1=, IMPLODE_GLUE2= and +#Text for the Legend Bar at the bottom +SING_LEGEND_CONTINUE=Continue + #Texts of the Menu that appears when M is Pressed at the SongSelection SONG_MENU_NAME_MAIN=Song Menu SONG_MENU_PLAY=Sing @@ -78,6 +81,7 @@ SONG_JUMPTO_TYPE3=Artist SONG_JUMPTO_SONGSFOUND=%d Song(s) found SONG_JUMPTO_NOSONGSFOUND=No Song found SONG_JUMPTO_HELP=Type Text to Search for +SONG_JUMPTO_CATTEXT=Search for: %s #Texts for Party Mode PARTY_SCORE_WINS=%s wins! @@ -92,6 +96,8 @@ PARTY_TEAMS_PLAYER3=Player Team3 PARTY_SELECT_PLAYER=Enter Playernames! PARTY_DISMISSED=Dismissed! +PARTY_NOTPLAYEDYET=Not played yet +PARTY_NOBODY=Nobody #Texts that descripts Plugins or Modis PLUGIN_HDL_NAME=Hold the Line @@ -102,3 +108,33 @@ PLUGIN_DUELL_NAME=Duell PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Duell without seeing the Notes + +#Statistics Screen +#For more Info about the Format Strings look at the SorceCode (UScreenStatMain) +STAT_MAIN_DESC=Statistics + +STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s. +STAT_OVERVIEW_PLAYER=Since the last Reset ther were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. + +#Stat Detail Screen +STAT_NEXT=Next Page +STAT_PREV=Previous Page +STAT_REVERSE=Change Order +STAT_PAGE=Seite %0:d of %1:d Pages\n (%2:d of %3:d Entrys) + +STAT_DESC_SCORES=HighScores +STAT_DESC_SCORES_REVERSED=LowestScores +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Best Singers +STAT_DESC_SINGERS_REVERSED=Worst Singers +STAT_FORMAT_SINGERS=%0:s \n Average Score: %1:d + +STAT_DESC_SONGS=Most popular Songs +STAT_DESC_SONGS_REVERSED=Least popular Songs +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung + +STAT_DESC_BANDS=Most popular Bands +STAT_DESC_BANDS_REVERSED=Least popular Bands +STAT_FORMAT_BANDS=%0:s \n %1:dx Sung \ No newline at end of file -- cgit v1.2.3 From 78d90a89c226975891b6b47b83eb189946aedaf5 Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 20 Apr 2007 00:45:39 +0000 Subject: New skin for Notes. more Colorfull and the glow more smoothly. Fixed artefacts in p.jpg. Graphics renamed. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@120 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/W&C.ini | 14 +++++++------- Skins/Deluxe/[sing]notesBgLeft.bmp | Bin 0 -> 1590 bytes Skins/Deluxe/[sing]notesBgMid.bmp | Bin 0 -> 1590 bytes Skins/Deluxe/[sing]notesBgRight.bmp | Bin 0 -> 1590 bytes Skins/Deluxe/[sing]notesLeft.bmp | Bin 0 -> 822 bytes Skins/Deluxe/[sing]notesMid.bmp | Bin 0 -> 3126 bytes Skins/Deluxe/[sing]notesRight.bmp | Bin 0 -> 822 bytes Skins/Deluxe/[sing]p.jpg | Bin 0 -> 2138 bytes 8 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 Skins/Deluxe/[sing]notesBgLeft.bmp create mode 100644 Skins/Deluxe/[sing]notesBgMid.bmp create mode 100644 Skins/Deluxe/[sing]notesBgRight.bmp create mode 100644 Skins/Deluxe/[sing]notesLeft.bmp create mode 100644 Skins/Deluxe/[sing]notesMid.bmp create mode 100644 Skins/Deluxe/[sing]notesRight.bmp create mode 100644 Skins/Deluxe/[sing]p.jpg diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 369f656a..b9ab4ea8 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -61,7 +61,7 @@ SingBarFront = [sing]singBarFront.jpg ScoreBG = [sing]scoreBg.jpg #Background for the P1, P2 and so on -P = P.jpg +P = [sing]p.jpg #Pointer for lyrics Ball = Ball.bmp @@ -96,12 +96,12 @@ JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg # # # N O T E S # # # -GrayLeft = Left Gray.bmp -GrayMid = Mid Gray.bmp -GrayRight = Right Gray.bmp -NoteBGLeft = Note BG Left.bmp -NoteBGMid = Note BG Mid.bmp -NoteBGRight = Note BG Right.bmp +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp # # # E F F E C T S # # # diff --git a/Skins/Deluxe/[sing]notesBgLeft.bmp b/Skins/Deluxe/[sing]notesBgLeft.bmp new file mode 100644 index 00000000..bcdbe562 Binary files /dev/null and b/Skins/Deluxe/[sing]notesBgLeft.bmp differ diff --git a/Skins/Deluxe/[sing]notesBgMid.bmp b/Skins/Deluxe/[sing]notesBgMid.bmp new file mode 100644 index 00000000..759ac8a3 Binary files /dev/null and b/Skins/Deluxe/[sing]notesBgMid.bmp differ diff --git a/Skins/Deluxe/[sing]notesBgRight.bmp b/Skins/Deluxe/[sing]notesBgRight.bmp new file mode 100644 index 00000000..2edc178c Binary files /dev/null and b/Skins/Deluxe/[sing]notesBgRight.bmp differ diff --git a/Skins/Deluxe/[sing]notesLeft.bmp b/Skins/Deluxe/[sing]notesLeft.bmp new file mode 100644 index 00000000..c819849b Binary files /dev/null and b/Skins/Deluxe/[sing]notesLeft.bmp differ diff --git a/Skins/Deluxe/[sing]notesMid.bmp b/Skins/Deluxe/[sing]notesMid.bmp new file mode 100644 index 00000000..2fdce32d Binary files /dev/null and b/Skins/Deluxe/[sing]notesMid.bmp differ diff --git a/Skins/Deluxe/[sing]notesRight.bmp b/Skins/Deluxe/[sing]notesRight.bmp new file mode 100644 index 00000000..3241beeb Binary files /dev/null and b/Skins/Deluxe/[sing]notesRight.bmp differ diff --git a/Skins/Deluxe/[sing]p.jpg b/Skins/Deluxe/[sing]p.jpg new file mode 100644 index 00000000..7d8de70f Binary files /dev/null and b/Skins/Deluxe/[sing]p.jpg differ -- cgit v1.2.3 From 077677f9f93bb337822739b0fdb5299e4c3529c2 Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 20 Apr 2007 02:33:18 +0000 Subject: p again :) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@121 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[sing]p.jpg | Bin 2138 -> 2630 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[sing]p.jpg b/Skins/Deluxe/[sing]p.jpg index 7d8de70f..e490fbf4 100644 Binary files a/Skins/Deluxe/[sing]p.jpg and b/Skins/Deluxe/[sing]p.jpg differ -- cgit v1.2.3 From 6a7518ffc93647ec4da4ed151186b858a271626b Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 20 Apr 2007 14:32:19 +0000 Subject: Removed Border-Artefacts in [sing]scoreBg, [special]bar1 and [special]bar2. Minor fix in [sing]notesBgLeft and Right git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@122 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[sing]notesBgLeft.bmp | Bin 1590 -> 1590 bytes Skins/Deluxe/[sing]notesBgRight.bmp | Bin 1590 -> 1590 bytes Skins/Deluxe/[sing]scoreBg.jpg | Bin 969 -> 1762 bytes Themes/Deluxe.ini | 112 ++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) diff --git a/Skins/Deluxe/[sing]notesBgLeft.bmp b/Skins/Deluxe/[sing]notesBgLeft.bmp index bcdbe562..4f64022b 100644 Binary files a/Skins/Deluxe/[sing]notesBgLeft.bmp and b/Skins/Deluxe/[sing]notesBgLeft.bmp differ diff --git a/Skins/Deluxe/[sing]notesBgRight.bmp b/Skins/Deluxe/[sing]notesBgRight.bmp index 2edc178c..f0fdd913 100644 Binary files a/Skins/Deluxe/[sing]notesBgRight.bmp and b/Skins/Deluxe/[sing]notesBgRight.bmp differ diff --git a/Skins/Deluxe/[sing]scoreBg.jpg b/Skins/Deluxe/[sing]scoreBg.jpg index 91db7715..069c6394 100644 Binary files a/Skins/Deluxe/[sing]scoreBg.jpg and b/Skins/Deluxe/[sing]scoreBg.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index db7080f4..7f7fa721 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -88,6 +88,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [MainStatic2] X =254 @@ -99,6 +103,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [MainStatic3] X =600 @@ -287,6 +295,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [SongStatic4] X =254 @@ -298,6 +310,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [SongStatic8] X =260 @@ -703,6 +719,10 @@ W =100 H =40 Color =P1Dark Type=Transparent +TexX1=0.01 +TexY1=0 +TexX2=0.99 +TexY2=1 [SingP1TextScore] Text =00000 @@ -741,6 +761,10 @@ W =100 H =40 Color =P1Dark Type=Transparent +TexX1=0.01 +TexY1=0 +TexX2=0.99 +TexY2=1 [SingP1TwoPTextScore] Text =00000 @@ -778,6 +802,10 @@ W =100 H =40 Color =P2Dark Type=Transparent +TexX1=0.01 +TexY1=0 +TexX2=0.99 +TexY2=1 [SingP2RTextScore] Text =00000 @@ -816,6 +844,10 @@ W =100 H =40 Color =P1Dark Type=Transparent +TexX1=0.01 +TexY1=0 +TexX2=0.99 +TexY2=1 [SingP1ThreePTextScore] Text =00000 @@ -853,6 +885,10 @@ W =100 H =40 Color =P2Dark Type=Transparent +TexX1=0.01 +TexY1=0 +TexX2=0.99 +TexY2=1 [SingP2MTextScore] Text =00000 @@ -890,6 +926,10 @@ W =100 H =40 Color =P3Dark Type=Transparent +TexX1=0.01 +TexY1=0 +TexX2=0.99 +TexY2=1 [SingP3RTextScore] Text =00000 @@ -943,6 +983,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [ScoreStatic3] X =254 @@ -954,6 +998,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [ScoreText2] X =120 @@ -2252,6 +2300,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [OptionsStatic3] X =254 @@ -2263,6 +2315,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [OptionsText2] X =120 @@ -3416,6 +3472,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [Top5Static3] X =254 @@ -3427,6 +3487,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [Top5Text2] X =120 @@ -3669,6 +3733,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [LevelStatic2] X =254 @@ -3680,6 +3748,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [LevelStatic3] X =40 @@ -3787,6 +3859,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [NameStatic2] X =254 @@ -3798,6 +3874,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [NameText2] X =120 @@ -4051,6 +4131,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyNewRoundStatic6] X =254 @@ -4062,6 +4146,10 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyNewRoundStatic7] X =260 @@ -4477,6 +4565,10 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyScoreStaticTeam2] X =380 @@ -4487,6 +4579,10 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyScoreStaticTeam3] X =380 @@ -4497,6 +4593,10 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyWin] Texts=0 @@ -4576,6 +4676,10 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyWinStaticTeam2] X =380 @@ -4586,6 +4690,10 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyWinStaticTeam3] X =380 @@ -4596,6 +4704,10 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black +TexX1=0.1 +TexY1=0 +TexX2=0.9 +TexY2=1 [PartyOptions] -- cgit v1.2.3 From 34988301a511ca8552a954c231fafde007cb94a1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 20 Apr 2007 15:29:48 +0000 Subject: 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 --- Game/Code/Classes/USongs.pas | 26 +++++++++++++++++++--- Game/Code/Menu/UMenu.pas | 35 ++++++++++++++++++++++++++++-- Game/Code/Screens/UScreenOptionsRecord.pas | 2 ++ Game/Code/Screens/UScreenSong.pas | 3 +++ 4 files changed, 61 insertions(+), 5 deletions(-) diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index cc3c8b95..4240d135 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -58,6 +58,9 @@ type end; TSongs = class + private + BrowsePos: Cardinal; //Actual Pos in Song Array + public Song: array of TSong; // array of songs Selected: integer; // selected song index procedure LoadSongList; // load all songs @@ -100,10 +103,14 @@ begin Log.LogStatus('Initializing', 'LoadSongList'); // clear - Setlength(Song, 0); + Setlength(Song, 50); + BrowsePos := 0; // browse directories BrowseDir(SongPath); + + //Set Correct SongArray Length + SetLength(Song, BrowsePos + 1); // if Ini.Debug = 1 then BrowseDir('D:\Extract\Songs\'); end; @@ -125,14 +132,19 @@ begin if FindFirst(Dir + '*.txt', 0, SR) = 0 then begin // Log.LogStatus('Parsing file: ' + Dir + SR.Name + '\' + SRD.Name, 'LoadSongList'); repeat + //New Mod for better Memory Management + + SLen := BrowsePos; + {//Old SLen := Length(Song); - SetLength(Song, SLen + 1); + SetLength(Song, SLen + 1);//} + Song[SLen].Path := Dir; Song[SLen].Folder := Copy(Dir, Length(SongPath)+1, 10000); Song[SLen].Folder := Copy(Song[SLen].Folder, 1, Pos('\', Song[SLen].Folder)-1); Song[SLen].FileName := SR.Name; - if (AnalyseFile(Song[SLen]) = false) then SetLength(Song, SLen) + if (AnalyseFile(Song[SLen]) = false) then Dec(BrowsePos) else begin // scanning complete, file is good // if there is no cover then try to find it @@ -146,6 +158,14 @@ begin // Song[SLen].Cover := Song[SLen].Path + Song[SLen].Cover; end; + //Change Length Only every 50 Entrys + Inc(BrowsePos); + + if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then + begin + SetLength(Song, Length(Song) + 50); + end; + until FindNext(SR) <> 0; end; // if FindFirst FindClose(SR); 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 diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index e6989d43..1d09d0b8 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -72,6 +72,8 @@ var SC: integer; SCI: integer; begin + inherited Create; + AddBackground(Theme.OptionsRecord.Background.Tex); for I := 0 to High(Theme.OptionsRecord.Static) do AddStatic(Theme.OptionsRecord.Static[I]); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 7c8447ee..79a5abb1 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -634,6 +634,9 @@ begin // Song List // Songs.LoadSongList; // moved to the UltraStar unit CatSongs.Refresh; + + //Set Length of Button Array one Time Instead of one time for every Song + SetButtonLength(Length(CatSongs.Song)); for Pet := 0 to High(CatSongs.Song) do begin // creating all buttons // new Texture.Limit := 512;// 256 0.4.2 value, 512 in 0.5.0 -- cgit v1.2.3 From e68a4499226b3b9a129e55c94cebee5910c0ff02 Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 20 Apr 2007 17:19:05 +0000 Subject: Changed LinePopup Colors from Red->Green to Red->Yellow->Green git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@124 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSing.pas | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 650cfdff..e7572ab9 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1145,9 +1145,36 @@ begin Player[I].ScoreTotalI := Player[I].ScoreI + Player[I].ScoreGoldenI + Player[I].ScoreLineI; //Color - Player[I].LineBonus_Color.B := 0; - Player[I].LineBonus_Color.R := (8-A)/8; - Player[I].LineBonus_Color.G := A/10; + Case Floor(A) of + 0: begin + Player[I].LineBonus_Color.R := 1; + Player[I].LineBonus_Color.G := 0; + Player[I].LineBonus_Color.B := 0; + end; + 1..3: begin + Player[I].LineBonus_Color.R := 1; + Player[I].LineBonus_Color.G := (A * 0.25); + Player[I].LineBonus_Color.B := 0; + end; + 4: begin + Player[I].LineBonus_Color.R := 1; + Player[I].LineBonus_Color.G := 1; + Player[I].LineBonus_Color.B := 0; + end; + 5..7: begin + Player[I].LineBonus_Color.R := 1-((a-4)*0.25); + Player[I].LineBonus_Color.G := 1; + Player[I].LineBonus_Color.B := 0; + end; + 8: begin + Player[I].LineBonus_Color.R := 0; + Player[I].LineBonus_Color.G := 1; + Player[I].LineBonus_Color.B := 0; + end; + End; //Case + //Player[I].LineBonus_Color.B := 0; + //Player[I].LineBonus_Color.R := (8-A)/8; + //Player[I].LineBonus_Color.G := A/10; Player[I].LineBonus_PosX := Player[I].LineBonus_StartX; Player[I].LineBonus_PosY := Player[I].LineBonus_StartY; -- cgit v1.2.3 From 3c106109e17a62c0d6c3620fc290a90410cae84c Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 20 Apr 2007 20:36:21 +0000 Subject: Made the Line-Popup pop up. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@125 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 193 +++++++++++++++++--------------------- Game/Code/Classes/UMain.pas | 5 +- Game/Code/Screens/UScreenSing.pas | 1 + 3 files changed, 88 insertions(+), 111 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 410fbb2e..bd6b5db6 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -20,7 +20,7 @@ procedure SingGoldenStar(X, Y, A: real); procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer); //Phrasen Bonus - Line Bonus -procedure SingDrawLineBonus( const X, Y: integer; Color: TRGB; Alpha: Single; Text: string); +procedure SingDrawLineBonus( const X, Y: Single; Color: TRGB; Alpha: Single; Text: string; Age: Integer); //Draw Editor NoteLines procedure EditDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); @@ -662,7 +662,6 @@ begin Rec.Right := Rec.Left + 50; Rec.Top := Skin_LyricsT + 3; Rec.Bottom := Rec.Top + 33;//SingScreen.LyricMain.Size * 3; - { // zapalanie BarAlpha := (BarWspol*10) * 0.5; if BarAlpha > 0.5 then BarAlpha := 0.5; @@ -685,14 +684,7 @@ begin glTexCoord2f(15/16, 1/16); glVertex2f(Rec.Right, Rec.Top); glEnd; glDisable(GL_BLEND); -{ glBegin(GL_QUADS); - glColor4f(26/255, 165/255, 220/255, 0); - glVertex2f(Rec.Left, Rec.Top); - glVertex2f(Rec.Left, Rec.Bottom); - glColor4f(26/255, 165/255, 220/255, BarAlpha); - glVertex2f(Rec.Right, Rec.Bottom); - glVertex2f(Rec.Right, Rec.Top); - glEnd;} + end; // oscilloscope @@ -793,58 +785,61 @@ begin for E := 0 to (PlayersPlay - 1) do begin //Change Alpha Player[E].LineBonus_Alpha := Player[E].LineBonus_Alpha - 0.02; - if Player[E].LineBonus_Alpha <= 0 then - Player[E].LineBonus_Visible := False + begin + Player[E].LineBonus_Age := 0; + Player[E].LineBonus_Visible := False + end else begin + inc(Player[E].LineBonus_Age, 1); //Change Position if (Player[E].LineBonus_PosX < Player[E].LineBonus_TargetX) then - Inc(Player[E].LineBonus_PosX,1) + Player[E].LineBonus_PosX := Player[E].LineBonus_PosX + (2 - Player[E].LineBonus_Alpha * 1.5) else if (Player[E].LineBonus_PosX > Player[E].LineBonus_TargetX) then - Dec(Player[E].LineBonus_PosX,1); + Player[E].LineBonus_PosX := Player[E].LineBonus_PosX - (2 - Player[E].LineBonus_Alpha * 1.5); if (Player[E].LineBonus_PosY < Player[E].LineBonus_TargetY) then - Inc(Player[E].LineBonus_PosY,1) + Player[E].LineBonus_PosY := Player[E].LineBonus_PosY + (2 - Player[E].LineBonus_Alpha * 1.5) else if (Player[E].LineBonus_PosY > Player[E].LineBonus_TargetY) then - Dec(Player[E].LineBonus_PosY,1); + Player[E].LineBonus_PosY := Player[E].LineBonus_PosY - (2 - Player[E].LineBonus_Alpha * 1.5); end; end; end; //if if PlayersPlay = 1 then begin - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); end else if PlayersPlay = 2 then begin - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); end else if PlayersPlay = 3 then begin - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); - SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text, Player[2].LineBonus_Age); end else if PlayersPlay = 4 then begin if ScreenAct = 1 then begin - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); end; if ScreenAct = 2 then begin - SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); - SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text, Player[2].LineBonus_Age); + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text, Player[3].LineBonus_Age); end; end; if PlayersPlay = 6 then begin if ScreenAct = 1 then begin - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); - SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text, Player[2].LineBonus_Age); end; if ScreenAct = 2 then begin - SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); - SingDrawLineBonus( Player[4].LineBonus_PosX, Player[4].LineBonus_PosY, Player[4].LineBonus_Color, Player[4].LineBonus_Alpha, Player[4].LineBonus_Text); - SingDrawLineBonus( Player[5].LineBonus_PosX, Player[5].LineBonus_PosY, Player[5].LineBonus_Color, Player[5].LineBonus_Alpha, Player[5].LineBonus_Text); + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text, Player[3].LineBonus_Age); + SingDrawLineBonus( Player[4].LineBonus_PosX, Player[4].LineBonus_PosY, Player[4].LineBonus_Color, Player[4].LineBonus_Alpha, Player[4].LineBonus_Text, Player[4].LineBonus_Age); + SingDrawLineBonus( Player[5].LineBonus_PosX, Player[5].LineBonus_PosY, Player[5].LineBonus_Color, Player[5].LineBonus_Alpha, Player[5].LineBonus_Text, Player[5].LineBonus_Age); end; end; end; @@ -1056,24 +1051,28 @@ begin Rec.Right := Rec.Left + 50; Rec.Top := Skin_LyricsT + 3; Rec.Bottom := Rec.Top + 33;//SingScreen.LyricMain.Size * 3; +{ // zapalanie + BarAlpha := (BarWspol*10) * 0.5; + if BarAlpha > 0.5 then BarAlpha := 0.5; - // zapalanie - BarAlpha := (BarWspol*10) * 0.5; - if BarAlpha > 0.5 then BarAlpha := 0.5; + // gaszenie + if BarWspol > 0.95 then BarAlpha := 0.5 * (1 - (BarWspol - 0.95) * 20);} - // gaszenie - if BarWspol > 0.95 then BarAlpha := 0.5 * (1 - (BarWspol - 0.95) * 20); - //Change fuer Crazy Joker - glEnable(GL_BLEND); - glBegin(GL_QUADS); - glColor4f(26/255, 165/255, 220/255, 0); - glVertex2f(Rec.Left, Rec.Top); - glVertex2f(Rec.Left, Rec.Bottom); - glColor4f(26/255, 165/255, 220/255, BarAlpha); - glVertex2f(Rec.Right, Rec.Bottom); - glVertex2f(Rec.Right, Rec.Top); - glEnd; - glDisable(GL_BLEND); + //Change fuer Crazy Joker + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, Tex_Lyric_Help_Bar.TexNum); + glBegin(GL_QUADS); + glColor4f(1, 1, 1, 0); + glTexCoord2f(1/16, 1/16); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(1/16, 15/16); glVertex2f(Rec.Left, Rec.Bottom); + glColor4f(1, 1, 1, 0.5); + glTexCoord2f(15/16, 15/16); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(15/16, 1/16); glVertex2f(Rec.Right, Rec.Top); + glEnd; + glDisable(GL_BLEND); end; // oscilloscope @@ -1207,20 +1206,27 @@ begin //Change Alpha Player[E].LineBonus_Alpha := Player[E].LineBonus_Alpha - 0.02; + if Player[E].LineBonus_Alpha <= 0 then + begin + Player[E].LineBonus_Age := 0; Player[E].LineBonus_Visible := False + + end else begin + inc(Player[E].LineBonus_Age, 1); + //Change Position if (Player[E].LineBonus_PosX < Player[E].LineBonus_TargetX) then - Inc(Player[E].LineBonus_PosX,1) + Player[E].LineBonus_PosX := Player[E].LineBonus_PosX + (2 - Player[E].LineBonus_Alpha * 1.5) else if (Player[E].LineBonus_PosX > Player[E].LineBonus_TargetX) then - Dec(Player[E].LineBonus_PosX,1); + Player[E].LineBonus_PosX := Player[E].LineBonus_PosX - (2 - Player[E].LineBonus_Alpha * 1.5); if (Player[E].LineBonus_PosY < Player[E].LineBonus_TargetY) then - Inc(Player[E].LineBonus_PosY,1) + Player[E].LineBonus_PosY := Player[E].LineBonus_PosY + (2 - Player[E].LineBonus_Alpha * 1.5) else if (Player[E].LineBonus_PosY > Player[E].LineBonus_TargetY) then - Dec(Player[E].LineBonus_PosY,1); + Player[E].LineBonus_PosY := Player[E].LineBonus_PosY - (2 - Player[E].LineBonus_Alpha * 1.5); end; end; @@ -1228,52 +1234,52 @@ begin if PlayersPlay = 1 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); end else if PlayersPlay = 2 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); end else if PlayersPlay = 3 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); if PlayerInfo.Playerinfo[2].Enabled then - SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text, Player[2].LineBonus_Age); end else if PlayersPlay = 4 then begin if ScreenAct = 1 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); end; if ScreenAct = 2 then begin if PlayerInfo.Playerinfo[2].Enabled then - SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text, Player[2].LineBonus_Age); if PlayerInfo.Playerinfo[3].Enabled then - SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text, Player[3].LineBonus_Age); end; end; if PlayersPlay = 6 then begin if ScreenAct = 1 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text); + SingDrawLineBonus( Player[0].LineBonus_PosX, Player[0].LineBonus_PosY, Player[0].LineBonus_Color, Player[0].LineBonus_Alpha, Player[0].LineBonus_Text, Player[0].LineBonus_Age); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text); + SingDrawLineBonus( Player[1].LineBonus_PosX, Player[1].LineBonus_PosY, Player[1].LineBonus_Color, Player[1].LineBonus_Alpha, Player[1].LineBonus_Text, Player[1].LineBonus_Age); if PlayerInfo.Playerinfo[2].Enabled then - SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text); + SingDrawLineBonus( Player[2].LineBonus_PosX, Player[2].LineBonus_PosY, Player[2].LineBonus_Color, Player[2].LineBonus_Alpha, Player[2].LineBonus_Text, Player[2].LineBonus_Age); end; if ScreenAct = 2 then begin if PlayerInfo.Playerinfo[3].Enabled then - SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text); + SingDrawLineBonus( Player[3].LineBonus_PosX, Player[3].LineBonus_PosY, Player[3].LineBonus_Color, Player[3].LineBonus_Alpha, Player[3].LineBonus_Text, Player[3].LineBonus_Age); if PlayerInfo.Playerinfo[4].Enabled then - SingDrawLineBonus( Player[4].LineBonus_PosX, Player[4].LineBonus_PosY, Player[4].LineBonus_Color, Player[4].LineBonus_Alpha, Player[4].LineBonus_Text); + SingDrawLineBonus( Player[4].LineBonus_PosX, Player[4].LineBonus_PosY, Player[4].LineBonus_Color, Player[4].LineBonus_Alpha, Player[4].LineBonus_Text, Player[4].LineBonus_Age); if PlayerInfo.Playerinfo[5].Enabled then - SingDrawLineBonus( Player[5].LineBonus_PosX, Player[5].LineBonus_PosY, Player[5].LineBonus_Color, Player[5].LineBonus_Alpha, Player[5].LineBonus_Text); + SingDrawLineBonus( Player[5].LineBonus_PosX, Player[5].LineBonus_PosY, Player[5].LineBonus_Color, Player[5].LineBonus_Alpha, Player[5].LineBonus_Text, Player[5].LineBonus_Age); end; end; end; @@ -1492,16 +1498,17 @@ end; //end Singbar Mod //PhrasenBonus - Line Bonus Mod -procedure SingDrawLineBonus( const X, Y: integer; Color: TRGB; Alpha: Single; Text: string); +procedure SingDrawLineBonus( const X, Y: Single; Color: TRGB; Alpha: Single; Text: string; Age: Integer); var Length, X2: Real; //Length of Text +Size: Integer; //Size of Popup begin if Alpha <> 0 then begin //Set Font Propertys SetFontStyle(2); //Font: Outlined1 -SetFontSize(6); +if Age < 5 then SetFontSize(Age + 1) else SetFontSize(6); SetFontItalic(False); //Check Font Size @@ -1510,56 +1517,24 @@ Length := glTextWidth ( PChar(Text)) + 3; //Little Space for a Better Look ^^ //Text SetFontPos (X + 50 - (Length / 2), Y + 12); //Position + +if Age < 5 then Size := Age * 10 else Size := 50; + //Draw Background glColor4f(Color.R, Color.G, Color.B, Alpha); //Set Color glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //Old Method with Variable Background - {//Draw Left Side - glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusL.TexNum); - - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(X, Y); - glTexCoord2f(0, 1); glVertex2f(X, Y + Tex_SingLineBonusL.H * Tex_SingLineBonusL.ScaleH); - glTexCoord2f(1, 1); glVertex2f(X + Tex_SingLineBonusL.W * Tex_SingLineBonusL.scaleW, Y + Tex_SingLineBonusL.H * Tex_SingLineBonusL.scaleH); - glTexCoord2f(1, 0); glVertex2f(X + Tex_SingLineBonusL.W * Tex_SingLineBonusL.scaleW, Y); - glEnd; - //Set X of Next Tile - X2 := X + Tex_SingLineBonusL.W * Tex_SingLineBonusL.scaleW; - - //Draw Middle - glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusM.TexNum); - - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(X2, Y); - glTexCoord2f(0, 1); glVertex2f(X2, Y + Tex_SingLineBonusM.H * Tex_SingLineBonusM.ScaleH); - glTexCoord2f(1, 1); glVertex2f(X2 + Length, Y + Tex_SingLineBonusM.H * Tex_SingLineBonusM.scaleH); - glTexCoord2f(1, 0); glVertex2f(X2 + Length, Y); - glEnd; - - //Set X of Next Tile - X2 := X2 + Length; - - //Draw Rigth Side - glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusR.TexNum); - - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(X2, Y); - glTexCoord2f(0, 1); glVertex2f(X2, Y + Tex_SingLineBonusR.H * Tex_SingLineBonusR.ScaleH); - glTexCoord2f(1, 1); glVertex2f(X2 + Tex_SingLineBonusR.W * Tex_SingLineBonusR.scaleW, Y + Tex_SingLineBonusR.H * Tex_SingLineBonusR.scaleH); - glTexCoord2f(1, 0); glVertex2f(X2 + Tex_SingLineBonusR.W * Tex_SingLineBonusR.scaleW, Y); - glEnd;} //New Method, Not Variable glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusBack.TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/32, 0); glVertex2f(X, Y); - glTexCoord2f(1/32, 1); glVertex2f(X, Y + 50); - glTexCoord2f(31/32, 1); glVertex2f(X + 100, Y + 50); - glTexCoord2f(31/32, 0); glVertex2f(X + 100, Y); + glTexCoord2f(1/32, 0); glVertex2f(X + 50 - Size, Y + 25 - (Size/2)); + glTexCoord2f(1/32, 1); glVertex2f(X + 50 - Size, Y + 25 + (Size/2)); + glTexCoord2f(31/32, 1); glVertex2f(X + 50 + Size, Y + 25 + (Size/2)); + glTexCoord2f(31/32, 0); glVertex2f(X + 50 + Size, Y + 25 - (Size/2)); glEnd; glColor4f(1, 1, 1, Alpha); //Set Color diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 3b6be56e..c9002a36 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -26,12 +26,13 @@ type //end Singbar Mod //PhrasenBonus - Line Bonus Mod - LineBonus_PosX: integer; - LineBonus_PosY: integer; + LineBonus_PosX: Single; + LineBonus_PosY: Single; LineBonus_Alpha: Single; LineBonus_Visible: boolean; LineBonus_Text: string; LineBonus_Color: TRGB; + LineBonus_Age: Integer; //Variable vor Positioning -> Set on ScreenShow, different when Playercount Changes LineBonus_TargetX: integer; diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index e7572ab9..6cd444a2 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -1180,6 +1180,7 @@ begin Player[I].LineBonus_PosY := Player[I].LineBonus_StartY; Player[I].LineBonus_Alpha := 0.92; Player[I].LineBonus_Visible := True; + Player[I].LineBonus_Age := 1; end; //PhrasenBonus - Line Bonus Mod End// } -- cgit v1.2.3 From e7e9d945a53b293516c4a248abb042872759ba1d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 21 Apr 2007 17:42:22 +0000 Subject: Fixed some Bugs in Party Mode Fixed TeamScores are not Reseted Added SBGW to MenuSelectSlide3 to Fit the Menu a little bit More. Need much Work to be Perfect git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@126 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UParty.pas | 43 +++++++++++++++++++++++++++--- Game/Code/Screens/UScreenPartyNewRound.pas | 1 - Themes/Deluxe.ini | 10 +++---- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas index e5252f82..946aca77 100644 --- a/Game/Code/Classes/UParty.pas +++ b/Game/Code/Classes/UParty.pas @@ -116,6 +116,7 @@ begin TeamMode := False; end; Teams.Teaminfo[I].Joker := Round(NumRounds*0.7); + Teams.Teaminfo[I].Score := 0; end; //Fill Plugin Array @@ -149,10 +150,46 @@ end; //---------- function TParty_Session.GetRandomPlayer(Team: Byte): Byte; var - I, J: Integer; + I, R: Integer; lowestTP: Byte; + NumPwithLTP: Byte; begin - //Get lowest TimesPlayed + LowestTP := high(Byte); + NumPwithLTP := 0; + + //Search for Players that have not often played yet + For I := 0 to Teams.Teaminfo[Team].NumPlayers-1 do + begin + if (Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed < lowestTP) then + begin + lowestTP := Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed; + NumPwithLTP := 1; + end + else if (Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed = lowestTP) then + begin + Inc(NumPwithLTP); + end; + end; + + //Create Random No + R := Random(NumPwithLTP); + + //Search for Random Player + For I := 0 to Teams.Teaminfo[Team].NumPlayers-1 do + begin + if Teams.Teaminfo[Team].Playerinfo[I].TimesPlayed = lowestTP then + begin + //Player Found + if (R = 0) then + begin + Result := I; + Break; + end; + + Dec(R); + end; + end; + {//Get lowest TimesPlayed lowestTP := high(Byte); J := -1; for I := 0 to Teams.Teaminfo[Team].NumPlayers-1 do @@ -174,7 +211,7 @@ begin Result := Random(Teams.Teaminfo[Team].NumPlayers); until (Teams.Teaminfo[Team].Playerinfo[Result].TimesPlayed = lowestTP) else //Else Select the one with lowest TP - Result:= J; + Result:= J;} end; //---------- diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index c8c0febc..b268e04f 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -177,7 +177,6 @@ var I: Integer; begin PartySession.StartRound; - Log.LogError(InttoStr(Length(DllMan.Plugins))); //Set Visibility of Round Infos I := Length(PartySession.Rounds); diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 7f7fa721..c985bde5 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -5322,16 +5322,16 @@ Align=0 Z=1 [SongMenuSelectSlide3] -Tex = button -TexSBG = button +TexSBG = Rectangle Text = X = 460 -Y = 250 +Y = 225 Z = 0.99 W = 0 -H = 50 +H = 25 SkipX = 0 -Fields=7 + +SBGW = 270 Color = ColorDark DColor = Gray -- cgit v1.2.3 From a32c1026810fb137ce6bcb72a7ee654fc8931504 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 23 Apr 2007 12:47:08 +0000 Subject: Fixed: SongSorting is CaseSensitive Inspired by official Ultrastar SVN git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@127 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/USongs.pas | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index 4240d135..0a319370 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -182,7 +182,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Edition < Song[S-1].Edition then begin + if CompareText(Song[S].Edition, Song[S-1].Edition) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -193,7 +193,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Genre < Song[S-1].Genre then begin + if CompareText(Song[S].Genre, Song[S-1].Genre) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -204,7 +204,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Title < Song[S-1].Title then begin + if CompareText(Song[S].Title, Song[S-1].Title) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -216,7 +216,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Artist < Song[S-1].Artist then begin + if CompareText(Song[S].Artist, Song[S-1].Artist) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -227,7 +227,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Folder < Song[S-1].Folder then begin + if CompareText(Song[S].Folder, Song[S-1].Folder) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -238,7 +238,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Title < Song[S-1].Title then begin + if CompareText(Song[S].Title, Song[S-1].Title) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -250,7 +250,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Artist < Song[S-1].Artist then begin + if CompareText(Song[S].Artist, Song[S-1].Artist) < 0 then begin // zamiana miejscami TempSong := Song[S-1]; Song[S-1] := Song[S]; @@ -261,7 +261,7 @@ begin begin for S2 := 0 to Length(Song)-1 do for S := 1 to Length(Song)-1 do - if Song[S].Language < Song[S-1].Language then begin + if CompareText(Song[S].Language, Song[S-1].Language) < 0 then begin TempSong := Song[S-1]; Song[S-1] := Song[S]; Song[S] := TempSong; @@ -330,7 +330,7 @@ case Ini.Sorting of for S := Low(Songs.Song) to High(Songs.Song) do begin if (Ini.Tabs = 1) then - if (Ini.Sorting = sEdition) and (SS <> Songs.Song[S].Edition) then begin + if (Ini.Sorting = sEdition) and (CompareText(SS, Songs.Song[S].Edition) <> 0) then begin // add Category Button Inc(Order); SS := Songs.Song[S].Edition; @@ -373,7 +373,7 @@ case Ini.Sorting of CatSongs.Song[CatLen].Visible := true; end - else if (Ini.Sorting = sGenre) and (SS <> Songs.Song[S].Genre) then begin + else if (Ini.Sorting = sGenre) and (CompareText(SS, Songs.Song[S].Genre) <> 0) then begin // add Genre Button Inc(Order); SS := Songs.Song[S].Genre; @@ -399,7 +399,7 @@ case Ini.Sorting of CatSongs.Song[CatLen].Visible := true; end - else if (Ini.Sorting = sLanguage) and (SS <> Songs.Song[S].Language) then begin + else if (Ini.Sorting = sLanguage) and (CompareText(SS, Songs.Song[S].Language) <> 0) then begin // add Language Button Inc(Order); SS := Songs.Song[S].Language; @@ -425,10 +425,10 @@ case Ini.Sorting of CatSongs.Song[CatLen].Visible := true; end - else if (Ini.Sorting = sTitle) and (Length(Songs.Song[S].Title)>=1) and (Letter <> Songs.Song[S].Title[1]) then begin + else if (Ini.Sorting = sTitle) and (Length(Songs.Song[S].Title)>=1) and (Letter <> UpCase(Songs.Song[S].Title[1])) then begin // add a letter Category Button Inc(Order); - Letter := Songs.Song[S].Title[1]; + Letter := UpCase(Songs.Song[S].Title[1]); CatLen := Length(CatSongs.Song); SetLength(CatSongs.Song, CatLen+1); CatSongs.Song[CatLen].Artist := '[' + Letter + ']'; @@ -453,10 +453,10 @@ case Ini.Sorting of CatSongs.Song[CatLen].Visible := true; end - else if (Ini.Sorting = sArtist) and (Length(Songs.Song[S].Artist)>=1) and (Letter <> Songs.Song[S].Artist[1]) then begin + else if (Ini.Sorting = sArtist) and (Length(Songs.Song[S].Artist)>=1) and (Letter <> UpCase(Songs.Song[S].Artist[1])) then begin // add a letter Category Button Inc(Order); - Letter := Songs.Song[S].Artist[1]; + Letter := UpCase(Songs.Song[S].Artist[1]); CatLen := Length(CatSongs.Song); SetLength(CatSongs.Song, CatLen+1); CatSongs.Song[CatLen].Artist := '[' + Letter + ']'; @@ -480,7 +480,7 @@ case Ini.Sorting of CatSongs.Song[CatLen].Visible := true; end - else if (Ini.Sorting = sFolder) and (SS <> Songs.Song[S].Folder) then begin + else if (Ini.Sorting = sFolder) and (CompareText(SS, Songs.Song[S].Folder) <> 0) then begin // 0.5.0: add folder tab Inc(Order); SS := Songs.Song[S].Folder; @@ -507,7 +507,7 @@ case Ini.Sorting of end else if (Ini.Sorting = sTitle2) AND (Length(Songs.Song[S].Title)>=1) then begin - if (ord(Songs.Song[S].Title[1]) > 47) and (ord(Songs.Song[S].Title[1]) < 58) then Letter2 := '#' else Letter2 := Songs.Song[S].Title[1]; + if (ord(Songs.Song[S].Title[1]) > 47) and (ord(Songs.Song[S].Title[1]) < 58) then Letter2 := '#' else Letter2 := UpCase(Songs.Song[S].Title[1]); if (Letter <> Letter2) then begin // add a letter Category Button Inc(Order); @@ -537,7 +537,7 @@ case Ini.Sorting of end else if (Ini.Sorting = sArtist2) AND (Length(Songs.Song[S].Artist)>=1) then begin - if (ord(Songs.Song[S].Artist[1]) > 47) and (ord(Songs.Song[S].Artist[1]) < 58) then Letter2 := '#' else Letter2 := Songs.Song[S].Artist[1]; + if (ord(Songs.Song[S].Artist[1]) > 47) and (ord(Songs.Song[S].Artist[1]) < 58) then Letter2 := '#' else Letter2 := UpCase(Songs.Song[S].Artist[1]); if (Letter <> Letter2) then begin // add a letter Category Button Inc(Order); -- cgit v1.2.3 From b49192ef9d03915744a65009e25f06fafd72bd30 Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 23 Apr 2007 21:38:08 +0000 Subject: Feature: SingBar is now moveable via theme/skin (affects UDraw.pas, UThemes.pas, UScreenSing.pas) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@128 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 100 +++++++++++++++++++++++++------------- Game/Code/Classes/UThemes.pas | 27 ++++++++++ Game/Code/Screens/UScreenSing.pas | 18 +++++++ Themes/Deluxe.ini | 36 ++++++++++++++ 4 files changed, 148 insertions(+), 33 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index bd6b5db6..d18830ba 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -730,6 +730,7 @@ begin end //SingBar Mod + //modded again to make it moveable: it's working, so why try harder else if Ini.Oscilloscope = 2 then begin A := GetTickCount div 33; if A <> Tickold then begin @@ -741,37 +742,53 @@ begin end; //for end; //if if PlayersPlay = 1 then begin - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + //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); 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( 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); + SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent); 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( 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); + SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent); + SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent); end; if PlayersPlay = 4 then begin if ScreenAct = 1 then begin - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); - SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + //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); + SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent); 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( 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); + SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[3].ScorePercent); end; end; if PlayersPlay = 6 then begin if ScreenAct = 1 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); - end; + //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); + SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent); + SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent); + 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( 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); + SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[4].ScorePercent); + SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[5].ScorePercent); end; end; end; @@ -1134,6 +1151,7 @@ begin end //SingBar Mod + // was fürn sinn hattn der quark hier? else if ((Ini.Oscilloscope = 2) AND (DLLMan.Selected.ShowRateBar_O)) OR (DLLMan.Selected.ShowRateBar) then begin A := GetTickCount div 33; if A <> Tickold then begin @@ -1146,52 +1164,68 @@ begin end; //if if PlayersPlay = 1 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + //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); end; if PlayersPlay = 2 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + //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); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + //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); end; if PlayersPlay = 3 then begin if PlayerInfo.Playerinfo[0].Enabled then - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent); + //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); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + //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); if PlayerInfo.Playerinfo[2].Enabled then - SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent); + //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); 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( 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); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + //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); end; if ScreenAct = 2 then begin if PlayerInfo.Playerinfo[2].Enabled then - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent); + //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); if PlayerInfo.Playerinfo[3].Enabled then - SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent); + //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); 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( 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); if PlayerInfo.Playerinfo[1].Enabled then - SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent); + //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); if PlayerInfo.Playerinfo[2].Enabled then - SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent); + //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); end; if ScreenAct = 2 then begin if PlayerInfo.Playerinfo[3].Enabled then - SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent); + //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); if PlayerInfo.Playerinfo[4].Enabled then - SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[4].ScorePercent); + //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); if PlayerInfo.Playerinfo[5].Enabled then - SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[5].ScorePercent); + //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); end; end; end; diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 4f4ab2b9..33cf4258 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -272,6 +272,15 @@ type TextP1: TThemeText; TextP1Score: TThemeText; + //moveable singbar mod + StaticP1SingBar: TThemeStatic; + StaticP1ThreePSingBar: TThemeStatic; + StaticP1TwoPSingBar: TThemeStatic; + StaticP2RSingBar: TThemeStatic; + StaticP2MSingBar: TThemeStatic; + StaticP3SingBar: TThemeStatic; + //eoa moveable singbar + //added for ps3 skin //game in 2/4 player modi StaticP1TwoP: TThemeStatic; @@ -914,6 +923,15 @@ begin // Sing ThemeLoadBasic(Sing, 'Sing'); + //moveable singbar mod + ThemeLoadStatic(Sing.StaticP1SingBar, 'SingP1SingBar'); + ThemeLoadStatic(Sing.StaticP1TwoPSingBar, 'SingP1TwoPSingBar'); + ThemeLoadStatic(Sing.StaticP1ThreePSingBar, 'SingP1ThreePSingBar'); + ThemeLoadStatic(Sing.StaticP2RSingBar, 'SingP2RSingBar'); + ThemeLoadStatic(Sing.StaticP2MSingBar, 'SingP2MSingBar'); + ThemeLoadStatic(Sing.StaticP3SingBar, 'SingP3SingBar'); + //eoa moveable singbar + ThemeLoadStatic(Sing.StaticP1, 'SingP1Static'); ThemeLoadText(Sing.TextP1, 'SingP1Text'); ThemeLoadStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); @@ -1814,6 +1832,15 @@ begin ThemeSaveStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); ThemeSaveText(Sing.TextP1Score, 'SingP1TextScore'); + //moveable singbar mod + ThemeSaveStatic(Sing.StaticP1SingBar, 'SingP1SingBar'); + ThemeSaveStatic(Sing.StaticP1TwoPSingBar, 'SingP1TwoPSingBar'); + ThemeSaveStatic(Sing.StaticP1ThreePSingBar, 'SingP1ThreePSingBar'); + ThemeSaveStatic(Sing.StaticP2RSingBar, 'SingP2RSingBar'); + ThemeSaveStatic(Sing.StaticP2MSingBar, 'SingP2MSingBar'); + ThemeSaveStatic(Sing.StaticP3SingBar, 'SingP3SingBar'); + //eoa moveable singbar + //Added for ps3 skin //This one is shown in 2/4P mode ThemeSaveStatic(Sing.StaticP1TwoP, 'SingP1TwoPStatic'); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 6cd444a2..01195db2 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -19,6 +19,15 @@ type TextP1: integer; TextP1Score: integer; + //moveable singbar mod + StaticP1SingBar: integer; + StaticP1ThreePSingBar: integer; + StaticP1TwoPSingBar: integer; + StaticP2RSingBar: integer; + StaticP2MSingBar: integer; + StaticP3SingBar: integer; + //eoa moveable singbar + //Added for ps3 skin //shown when game is in 2/4 player modus StaticP1TwoP: integer; @@ -170,6 +179,15 @@ begin TextP1 := AddText(Theme.Sing.TextP1); TextP1Score := AddText(Theme.Sing.TextP1Score); + //moveable singbar mod + StaticP1SingBar := AddStatic(Theme.Sing.StaticP1SingBar); + StaticP1ThreePSingBar := AddStatic(Theme.Sing.StaticP1ThreePSingBar); + StaticP1TwoPSingBar := AddStatic(Theme.Sing.StaticP2RSingBar); + StaticP2RSingBar := AddStatic(Theme.Sing.StaticP2RSingBar); + StaticP2MSingBar := AddStatic(Theme.Sing.StaticP2MSingBar); + StaticP3SingBar := AddStatic(Theme.Sing.StaticP3SingBar); + //eoa moveable singbar + //Added for ps3 skin //This one is shown in 2/4P mode StaticP1TwoP := AddStatic(Theme.Sing.StaticP1TwoP); diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index c985bde5..b3fff3d2 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -733,6 +733,12 @@ Size =10 Color =White Align=0 +[SingP1SingBar] +X =680 +Y =325 +W =100 +H =8 + # T W O P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # # #Player One [SingP1TwoPStatic] @@ -775,6 +781,12 @@ Size =10 Color =White Align=0 +[SingP1TwoPSingBar] +X =680 +Y =145 +W =100 +H =8 + #Player Two [SingP2RStatic] Tex =P @@ -816,6 +828,12 @@ Size =10 Color =White Align=0 +[SingP2RSingBar] +X =680 +Y =325 +W =100 +H =8 + # T H R E E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # # #Player One [SingP1ThreePStatic] @@ -858,6 +876,12 @@ Size =10 Color =White Align=0 +[SingP1ThreePSingBar] +X =75 +Y =95 +W =100 +H =8 + #Player Two [SingP2MStatic] Tex =P @@ -899,6 +923,12 @@ Size =10 Color =White Align=0 +[SingP2MSingBar] +X =370 +Y =95 +W =100 +H =8 + #Player Three [SingP3RStatic] Tex =P @@ -940,6 +970,12 @@ Size =10 Color =White Align=0 +[SingP3SingBar] +X =670 +Y =95 +W =100 +H =8 + [Score] Texts =1 -- cgit v1.2.3 From e4c8e7918cde3b197a1c26e496bd9c345b7a0fa3 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Apr 2007 11:38:52 +0000 Subject: ScreenFading now works in dual screen mode (it should not work with resolutions higher than 1024x768 because of limited texture size, someone with a big screen should check this) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@129 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 51 ++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index fc18025f..ad383782 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -2,7 +2,7 @@ unit UDisplay; interface -uses Windows, SDL, UMenu, OpenGL12, SysUtils, dialogs, Math; +uses Windows, SDL, UMenu, OpenGL12, SysUtils, dialogs; type TDisplay = class @@ -19,7 +19,7 @@ type myFade: integer; lastTime: Cardinal; pTexData : Pointer; - pTex : glUInt; + pTex : array[1..2] of glUInt; // end function Draw: Boolean; @@ -41,6 +41,7 @@ implementation uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture, UIni; constructor TDisplay.Create; +var i: integer; begin inherited Create; @@ -56,10 +57,11 @@ begin // generate texture for fading between screens GetMem(pTexData, 1024*1024*3); if pTexData <> NIL then + for i:= 1 to 2 do begin - glGenTextures(1, pTex); + glGenTextures(1, pTex[i]); if glGetError <> GL_NO_ERROR then canFade := False; - glBindTexture(GL_TEXTURE_2D, pTex); + glBindTexture(GL_TEXTURE_2D, pTex[i]); if glGetError <> GL_NO_ERROR then canFade := False; glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData); if glGetError <> GL_NO_ERROR then canFade := False; @@ -67,12 +69,12 @@ begin if glGetError <> GL_NO_ERROR then canFade := False; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); if glGetError <> GL_NO_ERROR then canFade := False; - FreeMem(pTexData); end else begin canFade:=False; end; + FreeMem(pTexData); if not canFade then begin showmessage('Fehler beim Initialisieren der Fading-Textur... Fading deaktiviert'); doFade:=False; @@ -94,7 +96,7 @@ var S: integer; Col: Real; // fade mod - myFade2:integer; + myFade2: Real; currentTime: Cardinal; // end begin @@ -116,7 +118,6 @@ begin ScreenX := 0; - if S = 2 then TimeSkip := 0 else; // it's easier than rewriting code glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); // ActualScreen.SetAnimationProgress(1); @@ -139,8 +140,8 @@ begin if myfade = 0 then begin ActualScreen.Draw; - glBindTexture(GL_TEXTURE_2D, pTex); - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 1024, 1024, 0); + glBindTexture(GL_TEXTURE_2D, pTex[S]); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (S-1)*ScreenW div Screens, 0, 1024, 1024, 0); if glGetError <> GL_NO_ERROR then begin canFade := False; @@ -148,14 +149,18 @@ begin end; NextScreen.onShow; lastTime:=GetTickCount; - myfade:=myfade+1; - end; + if (S=2) or (Screens = 1) then + myfade:=myfade+1; + end; // end texture creation in first fading step + + //do some time-based fading currentTime:=GetTickCount; - if currentTime > lastTime+30 then + if (currentTime > lastTime+30) and (S=1) then begin myfade:=myfade+4; lastTime:=currentTime; end; + // LastFade := Fade; // whatever // Fade := Fade -0.999; // start fading out @@ -164,22 +169,20 @@ begin // ActualScreen.SetAnimationProgress(Fade-1); // nop? - glClearColor(Col, Col, Col , 0); - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); NextScreen.Draw; // draw next screen // and draw old screen over it... slowly fading out - myfade2:=myfade*myfade; - glBindTexture(GL_TEXTURE_2D, pTex); - glColor4f(1, 1, 1, (1000-myfade2)/1000); // strange calculation - alpha gets negative... but looks good this way + myfade2:=(myfade*myfade)/10000; + glBindTexture(GL_TEXTURE_2D, pTex[S]); + glColor4f(1, 1, 1, (1000-myfade*myfade)/1000); // strange calculation - alpha gets negative... but looks good this way glEnable(GL_TEXTURE_2D); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glBegin(GL_QUADS); - glTexCoord2f(0,0);glVertex2f(0-myfade2, 600+myfade2); - glTexCoord2f(0,ScreenH/1024);glVertex2f(0-myfade2, 0-myfade2); - glTexCoord2f(ScreenW/1024,ScreenH/1024);glVertex2f(800+myfade2, 0-myfade2); - glTexCoord2f(ScreenW/1024,0);glVertex2f(800+myfade2, 600+myfade2); + glTexCoord2f(0+myfade2,0+myfade2);glVertex2f(0, 600); + glTexCoord2f(0+myfade2,ScreenH/1024-myfade2);glVertex2f(0, 0); + glTexCoord2f((ScreenW div Screens)/1024-myfade2,ScreenH/1024-myfade2);glVertex2f(800, 0); + glTexCoord2f((ScreenW div Screens)/1024-myfade2,0+myfade2);glVertex2f(800, 600); glEnd; glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); @@ -189,12 +192,12 @@ begin if (myfade > 40) or (not doFade) or (not canFade) then begin // fade out complete... myFade:=0; - ActualScreen.onHide; // nop... whatever + ActualScreen.onHide; ActualScreen.ShowFinish:=False; ActualScreen:=NextScreen; NextScreen := nil; - ActualScreen.onShowFinish; // one more nop... - ActualScreen.ShowFinish := true; // who wrote this crap? + ActualScreen.onShowFinish; + ActualScreen.ShowFinish := true; // end of fade mod end; end; // if -- cgit v1.2.3 From 8c3c4d3107df8a6fa9cddbc7360cd7fa36b39c95 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Apr 2007 11:48:19 +0000 Subject: re-inserted a line that is essential for proper timing in dual screen mode git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@130 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index ad383782..6144f3bd 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -117,7 +117,7 @@ begin // if (Screens = 2) and (S = 2) then ScreenX := 1; ScreenX := 0; - + if S = 2 then TimeSkip := 0 else; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); // ActualScreen.SetAnimationProgress(1); -- cgit v1.2.3 From e79530fd2165c92a9291076b05dfb0e0236fc222 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 24 Apr 2007 12:59:54 +0000 Subject: Added ability to Select Players before Song Make Option OnSongClick Work git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@131 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenMain.pas | 19 +++++++++++++++++++ Game/Code/Screens/UScreenName.pas | 9 ++++++++- Game/Code/Screens/UScreenSong.pas | 23 +++++++++++++++++++++-- Game/Code/Screens/UScreenSongMenu.pas | 2 +- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 8d2d13b6..051cd101 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -147,6 +147,8 @@ begin Music.PlayStart; if (Ini.Players >= 0) and (Ini.Players <= 3) then PlayersPlay := Ini.Players + 1; if (Ini.Players = 4) then PlayersPlay := 6; + + ScreenName.Goto_SingScreen := False; FadeTo(@ScreenName); end; if Interaction = 1 then begin @@ -206,6 +208,23 @@ begin TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong); Interaction := 0; + + //Some Testing for Button Fade + Button[0].SelectH := Button[0].H * 3; + Button[0].Fade := True; + Button[0].FadeText := True; + Button[0].DeSelectReflectionspacing := 280; + + Button[1].SelectH := Button[0].H * 3; + Button[1].Fade := True; + + Button[2].SelectH := Button[0].H * 3; + Button[2].Fade := True; + Button[2].FadeText := True; + + Button[3].SelectH := Button[0].H * 3; + Button[3].Fade := True; + Button[3].FadeText := True; end; procedure TScreenMain.onShow; diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index 82519e87..e8bc2dd8 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -8,6 +8,7 @@ uses type TScreenName = class(TMenu) public + Goto_SingScreen: Boolean; //If True then next Screen in SingScreen constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; @@ -49,7 +50,13 @@ begin Ini.Name[I-1] := Button[I-1].Text[0].Text; Ini.SaveNames; Music.PlayStart; - FadeTo(@ScreenLevel); + + if GoTo_SingScreen then + FadeTo(@ScreenSing) + else + FadeTo(@ScreenLevel); + + GoTo_SingScreen := False; end; // Up and Down could be done at the same time, diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 79a5abb1..5814efbf 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -83,6 +83,7 @@ type procedure StartSong; procedure OpenEditor; procedure DoJoker(Team: Byte); + procedure SelectPlayers; //Extensions procedure DrawExtensions; @@ -299,8 +300,17 @@ begin end else begin // clicked on song if (Mode = 0) then //Normal Mode -> Start Song begin - StartSong; - + //Do the Action that is specified in Ini + case Ini.OnSongClick of + 0: StartSong; + 1: SelectPlayers; + 2:begin + If (CatSongs.CatNumShow = -3) then + ScreenSongMenu.MenuShow(SM_Playlist) + else + ScreenSongMenu.MenuShow(SM_Main); + end; + end; end else if (Mode = 1) then //PartyMode -> Show Menu begin @@ -1615,6 +1625,15 @@ begin end; end; +procedure TScreenSong.SelectPlayers; +begin + CatSongs.Selected := Interaction; + Music.Stop; + + ScreenName.Goto_SingScreen := True; + FadeTo(@ScreenName); +end; + procedure TScreenSong.OpenEditor; begin if (Length(Songs.Song) > 0) and (not CatSongs.Song[Interaction].Main) AND (Mode = 0) then begin diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 3ccba228..699e0b92 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -368,7 +368,7 @@ begin 1: //Button 2 begin //Select New Players then Sing: - + ScreenSong.SelectPlayers; Visible := False; end; -- cgit v1.2.3 From 569213582ca4147e6df5309f65d8a442da394a25 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Apr 2007 13:02:06 +0000 Subject: changed size of texture for screen fading effect to fixed size of 512x512, need comments git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@132 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 6144f3bd..ddbc0d1f 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -55,7 +55,7 @@ begin canFade:=True; // generate texture for fading between screens - GetMem(pTexData, 1024*1024*3); + GetMem(pTexData, 512*512*3); if pTexData <> NIL then for i:= 1 to 2 do begin @@ -63,7 +63,7 @@ begin if glGetError <> GL_NO_ERROR then canFade := False; glBindTexture(GL_TEXTURE_2D, pTex[i]); if glGetError <> GL_NO_ERROR then canFade := False; - glTexImage2D(GL_TEXTURE_2D, 0, 3, 1024, 1024, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData); + glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData); if glGetError <> GL_NO_ERROR then canFade := False; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); if glGetError <> GL_NO_ERROR then canFade := False; @@ -117,7 +117,7 @@ begin // if (Screens = 2) and (S = 2) then ScreenX := 1; ScreenX := 0; - if S = 2 then TimeSkip := 0 else; + if S = 2 then TimeSkip := 0 else; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); // ActualScreen.SetAnimationProgress(1); @@ -139,9 +139,11 @@ begin //Create Fading texture if we're just starting if myfade = 0 then begin + glViewPort((S-1) * 512, 0, 512, 512); ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex[S]); - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (S-1)*ScreenW div Screens, 0, 1024, 1024, 0); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (S-1)*512, 0, 512, 512, 0); + glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); if glGetError <> GL_NO_ERROR then begin canFade := False; @@ -180,9 +182,9 @@ begin glEnable(GL_BLEND); glBegin(GL_QUADS); glTexCoord2f(0+myfade2,0+myfade2);glVertex2f(0, 600); - glTexCoord2f(0+myfade2,ScreenH/1024-myfade2);glVertex2f(0, 0); - glTexCoord2f((ScreenW div Screens)/1024-myfade2,ScreenH/1024-myfade2);glVertex2f(800, 0); - glTexCoord2f((ScreenW div Screens)/1024-myfade2,0+myfade2);glVertex2f(800, 600); + glTexCoord2f(0+myfade2,1-myfade2);glVertex2f(0, 0); + glTexCoord2f(1-myfade2,1-myfade2);glVertex2f(800, 0); + glTexCoord2f(1-myfade2,0+myfade2);glVertex2f(800, 600); glEnd; glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); -- cgit v1.2.3 From 4ca6b721c705fb98e3dd7f952403e600ddee9238 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 24 Apr 2007 13:09:36 +0000 Subject: Fixed: Select a not Visible Button in Joker Menu, if the first Team has no Joker git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@133 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongMenu.pas | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 699e0b92..d4ad8016 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -329,8 +329,8 @@ begin SelectsS[0].Visible := False; Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY'); - Button[1].Text[0].Text := Language.Translate('SONG_MENU_JOKER'); - Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYMODI'); + //Button[1].Text[0].Text := Language.Translate('SONG_MENU_JOKER'); + //Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYMODI'); Button[3].Text[0].Text := Language.Translate('SONG_MENU_JOKER'); end; @@ -349,6 +349,21 @@ begin Button[1].Text[0].Text := String(PartySession.Teams.Teaminfo[1].Name); Button[2].Text[0].Text := String(PartySession.Teams.Teaminfo[2].Name); Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + + //Set right Interaction + if (not Button[0].Visible) then + begin + if (not Button[1].Visible) then + begin + if (not Button[2].Visible) then + begin + Interaction := 4; + end + else Interaction := 2; + end + else Interaction := 1; + end; + end; end; end; -- cgit v1.2.3 From 6c530e99b8a5314bb1e988a00680ba4332ac4abc Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Apr 2007 13:23:53 +0000 Subject: UTexture.pas: texture-wrap-mode changed to GL_CLAMP_TO_EDGE - solves some problems where edges of textures were drawn incorrectly UDisplay.pas: simplified generation of fade texture (a little) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@134 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UTexture.pas | 8 ++++---- Game/Code/Menu/UDisplay.pas | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas index 4a8fa786..0eae68a2 100644 --- a/Game/Code/Classes/UTexture.pas +++ b/Game/Code/Classes/UTexture.pas @@ -259,8 +259,8 @@ begin glGenTextures(1, ActTex); glBindTexture(GL_TEXTURE_2D, ActTex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); if Typ = 'Plain' then begin // wymiary @@ -755,8 +755,8 @@ begin glGenTextures(1, ActTex); // ActText = new texture number glBindTexture(GL_TEXTURE_2D, ActTex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexImage2D(GL_TEXTURE_2D, 0, 3, W, H, 0, GL_RGB, GL_UNSIGNED_BYTE, @Data[0]); if Mipmapping then begin diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index ddbc0d1f..9d13d2a6 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -139,10 +139,10 @@ begin //Create Fading texture if we're just starting if myfade = 0 then begin - glViewPort((S-1) * 512, 0, 512, 512); + glViewPort(0, 0, 512, 512); ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex[S]); - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (S-1)*512, 0, 512, 512, 0); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 512, 512, 0); glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); if glGetError <> GL_NO_ERROR then begin -- cgit v1.2.3 From 665cc80df49badf73b9db86733dec1773a8a8861 Mon Sep 17 00:00:00 2001 From: crazy_joker Date: Tue, 24 Apr 2007 14:16:53 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@135 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index b3fff3d2..7cbabd1f 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -714,7 +714,7 @@ Align=0 [SingP1Static2] Tex =ScoreBG X =680 -Y =285 +Y =276 W =100 H =40 Color =P1Dark @@ -727,7 +727,7 @@ TexY2=1 [SingP1TextScore] Text =00000 X =690 -Y =290 +Y =281 Font =0 Size =10 Color =White @@ -735,7 +735,7 @@ Align=0 [SingP1SingBar] X =680 -Y =325 +Y =316 W =100 H =8 @@ -762,7 +762,7 @@ Align=0 [SingP1TwoPStatic2] Tex =ScoreBG X =680 -Y =105 +Y =96 W =100 H =40 Color =P1Dark @@ -775,7 +775,7 @@ TexY2=1 [SingP1TwoPTextScore] Text =00000 X =690 -Y =110 +Y =101 Font =0 Size =10 Color =White @@ -783,7 +783,7 @@ Align=0 [SingP1TwoPSingBar] X =680 -Y =145 +Y =136 W =100 H =8 @@ -809,7 +809,7 @@ Align=0 [SingP2RStatic2] Tex =ScoreBG X =680 -Y =285 +Y =276 W =100 H =40 Color =P2Dark @@ -822,7 +822,7 @@ TexY2=1 [SingP2RTextScore] Text =00000 X =690 -Y =290 +Y =281 Font =0 Size =10 Color =White @@ -830,7 +830,7 @@ Align=0 [SingP2RSingBar] X =680 -Y =325 +Y =316 W =100 H =8 -- cgit v1.2.3 From d5cbbd6e1fa5934a79f9bdd63dca5778d5d177e0 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 24 Apr 2007 15:30:25 +0000 Subject: Fixed a Bug in PartyMode that causes that Players are not chossen fair git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@136 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UParty.pas | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas index 946aca77..b07ad5ad 100644 --- a/Game/Code/Classes/UParty.pas +++ b/Game/Code/Classes/UParty.pas @@ -55,7 +55,7 @@ var end; TeamMode: Boolean; Len: Integer; - I: Integer; + I, J: Integer; function GetRandomPlugin: Byte; var @@ -107,7 +107,7 @@ begin PlayersPlay := Teams.NumTeams; - //Get Teammode and Set Joker + //Get Teammode and Set Joker, also set TimesPlayed TeamMode := True; For I := 0 to Teams.NumTeams-1 do begin @@ -115,6 +115,11 @@ begin begin TeamMode := False; end; + //Set Player Attributes + For J := 0 to Teams.TeamInfo[I].NumPlayers-1 do + begin + Teams.TeamInfo[I].Playerinfo[J].TimesPlayed := 0; + end; Teams.Teaminfo[I].Joker := Round(NumRounds*0.7); Teams.Teaminfo[I].Score := 0; end; @@ -156,6 +161,7 @@ var begin LowestTP := high(Byte); NumPwithLTP := 0; + Result := 0; //Search for Players that have not often played yet For I := 0 to Teams.Teaminfo[Team].NumPlayers-1 do @@ -323,7 +329,7 @@ begin //Increase TimesPlayed 4 all Players For I := 0 to Teams.NumTeams-1 do - Inc(Teams.Teaminfo[I].Playerinfo[Teams.Teaminfo[0].CurPlayer].TimesPlayed); + Inc(Teams.Teaminfo[I].Playerinfo[Teams.Teaminfo[I].CurPlayer].TimesPlayed); end; -- cgit v1.2.3 From 019b5bf1730eab1c5b69a0cf1f805b3aa8566b6b Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Apr 2007 19:57:28 +0000 Subject: just to test something git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@137 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 9d13d2a6..19266414 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -143,12 +143,12 @@ begin ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex[S]); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 512, 512, 0); - glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); if glGetError <> GL_NO_ERROR then begin canFade := False; showmessage('Fehler beim Kopieren der Fade-Textur... Fading deaktiviert'); end; + glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); NextScreen.onShow; lastTime:=GetTickCount; if (S=2) or (Screens = 1) then -- cgit v1.2.3 From b595cf066cea127e3f890e880e67535d51ccbcf8 Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 25 Apr 2007 18:42:25 +0000 Subject: Removed workarounds in UDraw.pas and Deluxe.ini. Altered Graphics to reflect the changes. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@138 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 136 ++++++++++++++++++------------------ Skins/Deluxe/[sing]notesBgLeft.bmp | Bin 1590 -> 1590 bytes Skins/Deluxe/[sing]notesBgRight.bmp | Bin 1590 -> 1590 bytes Skins/Deluxe/[sing]scoreBg.jpg | Bin 1762 -> 2161 bytes Themes/Deluxe.ini | 24 ------- 5 files changed, 68 insertions(+), 92 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index d18830ba..f5722175 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -234,10 +234,10 @@ begin Rec.Bottom := Rec.Top + 2 * NotesH; glBindTexture(GL_TEXTURE_2D, Tex_Left[Color].TexNum); glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; //We keep the postion of the top left corner b4 it's overwritten @@ -251,10 +251,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_Mid[Color].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/32, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/32, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(31/32, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(31/32, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; // prawa czesc - right part @@ -263,10 +263,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_Right[Color].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; // Golden Star Patch @@ -336,10 +336,10 @@ var glColor3f(1, 1, 1); glBindTexture(GL_TEXTURE_2D, Tex_Left[NrGracza+1].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; // srodkowa czesc @@ -356,10 +356,10 @@ var // glBindTexture(GL_TEXTURE_2D, Tex_MidGray.TexNum); glBindTexture(GL_TEXTURE_2D, Tex_Mid[NrGracza+1].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; glColor3f(1, 1, 1); @@ -369,10 +369,10 @@ var glBindTexture(GL_TEXTURE_2D, Tex_Right[NrGracza+1].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; @@ -474,10 +474,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_BG_Left[NrGracza+1].TexNum); glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; @@ -487,10 +487,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_BG_Mid[NrGracza+1].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/32, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/32, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(31/32, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(31/32, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; // prawa czesc @@ -499,10 +499,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_BG_Right[NrGracza+1].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; end; // if not FreeStyle end; // with @@ -677,11 +677,11 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_Lyric_Help_Bar.TexNum); glBegin(GL_QUADS); glColor4f(1, 1, 1, 0); - glTexCoord2f(1/16, 1/16); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/16, 15/16); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); glColor4f(1, 1, 1, 0.5); - glTexCoord2f(15/16, 15/16); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(15/16, 1/16); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; glDisable(GL_BLEND); @@ -1083,11 +1083,11 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_Lyric_Help_Bar.TexNum); glBegin(GL_QUADS); glColor4f(1, 1, 1, 0); - glTexCoord2f(1/16, 1/16); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/16, 15/16); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); glColor4f(1, 1, 1, 0.5); - glTexCoord2f(15/16, 15/16); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(15/16, 1/16); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; glDisable(GL_BLEND); end; @@ -1468,10 +1468,10 @@ begin; glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Back.TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/16, 0); glVertex2f(X, Y); - glTexCoord2f(1/16, 1); glVertex2f(X, Y+H); - glTexCoord2f(1 - 1/16, 1); glVertex2f(X+W, Y+H); - glTexCoord2f(1 - 1/16, 0); glVertex2f(X+W, Y); + glTexCoord2f(0, 0); glVertex2f(X, Y); + glTexCoord2f(0, 1); glVertex2f(X, Y+H); + glTexCoord2f(1, 1); glVertex2f(X+W, Y+H); + glTexCoord2f(1, 0); glVertex2f(X+W, Y); glEnd; //SingBar coloured Bar @@ -1510,10 +1510,10 @@ begin; glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Bar.TexNum); //Size= Player[PlayerNum].ScorePercent of W glBegin(GL_QUADS); - glTexCoord2f(1/16, 0); glVertex2f(X, Y); - glTexCoord2f(1/16, 1); glVertex2f(X, Y+H); - glTexCoord2f(1 - 1/16, 1); glVertex2f(X+(W/100 * (Percent +1)), Y+H); - glTexCoord2f(1 - 1/16, 0); glVertex2f(X+(W/100 * (Percent +1)), Y); + glTexCoord2f(0, 0); glVertex2f(X, Y); + glTexCoord2f(0, 1); glVertex2f(X, Y+H); + glTexCoord2f(1, 1); glVertex2f(X+(W/100 * (Percent +1)), Y+H); + glTexCoord2f(1, 0); glVertex2f(X+(W/100 * (Percent +1)), Y); glEnd; //SingBar Front @@ -1565,10 +1565,10 @@ if Age < 5 then Size := Age * 10 else Size := 50; glBindTexture(GL_TEXTURE_2D, Tex_SingLineBonusBack.TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/32, 0); glVertex2f(X + 50 - Size, Y + 25 - (Size/2)); - glTexCoord2f(1/32, 1); glVertex2f(X + 50 - Size, Y + 25 + (Size/2)); - glTexCoord2f(31/32, 1); glVertex2f(X + 50 + Size, Y + 25 + (Size/2)); - glTexCoord2f(31/32, 0); glVertex2f(X + 50 + Size, Y + 25 - (Size/2)); + glTexCoord2f(0, 0); glVertex2f(X + 50 - Size, Y + 25 - (Size/2)); + glTexCoord2f(0, 1); glVertex2f(X + 50 - Size, Y + 25 + (Size/2)); + glTexCoord2f(1, 1); glVertex2f(X + 50 + Size, Y + 25 + (Size/2)); + glTexCoord2f(1, 0); glVertex2f(X + 50 + Size, Y + 25 - (Size/2)); glEnd; glColor4f(1, 1, 1, Alpha); //Set Color @@ -1614,10 +1614,10 @@ begin Rec.Bottom := Rec.Top + 2 * NotesH; glBindTexture(GL_TEXTURE_2D, Tex_Left[Color].TexNum); glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(7/8, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(7/8, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; // srodkowa czesc - middle part @@ -1626,10 +1626,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_Mid[Color].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/32, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/32, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(31/32, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(31/32, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; // prawa czesc - right part @@ -1638,10 +1638,10 @@ begin glBindTexture(GL_TEXTURE_2D, Tex_Right[Color].TexNum); glBegin(GL_QUADS); - glTexCoord2f(1/8, 0); glVertex2f(Rec.Left, Rec.Top); - glTexCoord2f(1/8, 1); glVertex2f(Rec.Left, Rec.Bottom); - glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); - glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); + glTexCoord2f(0, 0); glVertex2f(Rec.Left, Rec.Top); + glTexCoord2f(0, 1); glVertex2f(Rec.Left, Rec.Bottom); + glTexCoord2f(1, 1); glVertex2f(Rec.Right, Rec.Bottom); + glTexCoord2f(1, 0); glVertex2f(Rec.Right, Rec.Top); glEnd; end; // with diff --git a/Skins/Deluxe/[sing]notesBgLeft.bmp b/Skins/Deluxe/[sing]notesBgLeft.bmp index 4f64022b..776e567c 100644 Binary files a/Skins/Deluxe/[sing]notesBgLeft.bmp and b/Skins/Deluxe/[sing]notesBgLeft.bmp differ diff --git a/Skins/Deluxe/[sing]notesBgRight.bmp b/Skins/Deluxe/[sing]notesBgRight.bmp index f0fdd913..9b1ffc18 100644 Binary files a/Skins/Deluxe/[sing]notesBgRight.bmp and b/Skins/Deluxe/[sing]notesBgRight.bmp differ diff --git a/Skins/Deluxe/[sing]scoreBg.jpg b/Skins/Deluxe/[sing]scoreBg.jpg index 069c6394..0ad261ae 100644 Binary files a/Skins/Deluxe/[sing]scoreBg.jpg and b/Skins/Deluxe/[sing]scoreBg.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 7cbabd1f..019c1a93 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -719,10 +719,6 @@ W =100 H =40 Color =P1Dark Type=Transparent -TexX1=0.01 -TexY1=0 -TexX2=0.99 -TexY2=1 [SingP1TextScore] Text =00000 @@ -767,10 +763,6 @@ W =100 H =40 Color =P1Dark Type=Transparent -TexX1=0.01 -TexY1=0 -TexX2=0.99 -TexY2=1 [SingP1TwoPTextScore] Text =00000 @@ -814,10 +806,6 @@ W =100 H =40 Color =P2Dark Type=Transparent -TexX1=0.01 -TexY1=0 -TexX2=0.99 -TexY2=1 [SingP2RTextScore] Text =00000 @@ -862,10 +850,6 @@ W =100 H =40 Color =P1Dark Type=Transparent -TexX1=0.01 -TexY1=0 -TexX2=0.99 -TexY2=1 [SingP1ThreePTextScore] Text =00000 @@ -909,10 +893,6 @@ W =100 H =40 Color =P2Dark Type=Transparent -TexX1=0.01 -TexY1=0 -TexX2=0.99 -TexY2=1 [SingP2MTextScore] Text =00000 @@ -956,10 +936,6 @@ W =100 H =40 Color =P3Dark Type=Transparent -TexX1=0.01 -TexY1=0 -TexX2=0.99 -TexY2=1 [SingP3RTextScore] Text =00000 -- cgit v1.2.3 From 85dd8313961a9a7c519a3f4466c46f3027a67411 Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 25 Apr 2007 19:36:07 +0000 Subject: Fixed positions for popups git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@139 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSing.pas | 64 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 01195db2..cca398a1 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -592,107 +592,107 @@ begin Case PlayersPlay of 1: begin - Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65; - Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_StartY := Skin_P2_NotesB - 105; end; 2: begin //P1 - Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; - Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; //P2 - Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; - Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; end; 3: begin //P1 - Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_TargetY := 120 - 65 + 28; - Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_StartY := 120 + 28; //P2 - Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_TargetY := 245 - 65 + 28; - Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_StartY := 245 + 28; //P3 - Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[2].LineBonus_TargetY := 370 - 65 + 28; - Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[2].LineBonus_StartY := 370 + 28; end; 4: begin //P1 - Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; - Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; //P2 - Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; - Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; //P3 - Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[2].LineBonus_TargetY := Skin_P1_NotesB - 105 - 65 + 28; - Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[2].LineBonus_StartY := Skin_P1_NotesB - 105 + 28; //P4 - Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[3].LineBonus_TargetY := Skin_P2_NotesB - 105 - 65 + 28; - Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[3].LineBonus_StartY := Skin_P2_NotesB - 105 + 28; end; 6: begin //P1 - Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_TargetY := 120 - 65 + 28; - Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[0].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[0].LineBonus_StartY := 120 + 28; //P2 - Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_TargetY := 245 - 65 + 28; - Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[1].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[1].LineBonus_StartY := 245 + 28; //P3 - Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[2].LineBonus_TargetY := 370 - 65 + 28; - Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[2].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[2].LineBonus_StartY := 370 + 28; //P4 - Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[3].LineBonus_TargetY := 120 - 65 + 28; - Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[3].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[3].LineBonus_StartY := 120 + 28; //P5 - Player[4].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[4].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[4].LineBonus_TargetY := 245 - 65 + 28; - Player[4].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[4].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[4].LineBonus_StartY := 245 + 28; //P6 - Player[5].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 87); + Player[5].LineBonus_TargetX := Round(Nr.Right + 10*ScreenX - 100); Player[5].LineBonus_TargetY := 370 - 65 + 28; - Player[5].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 87); + Player[5].LineBonus_StartX := Round(Nr.Right + 10*ScreenX - 100); Player[5].LineBonus_StartY := 370 + 28; end; end; -- cgit v1.2.3 From 00523aa053c7fa3ddcc3a8e574417ca10288895a Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 25 Apr 2007 19:41:46 +0000 Subject: fixed texture for last commit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@140 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[sing]lineBonusPopUp.jpg | Bin 1759 -> 2356 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[sing]lineBonusPopUp.jpg b/Skins/Deluxe/[sing]lineBonusPopUp.jpg index a2eea116..58d93130 100644 Binary files a/Skins/Deluxe/[sing]lineBonusPopUp.jpg and b/Skins/Deluxe/[sing]lineBonusPopUp.jpg differ -- cgit v1.2.3 From e3ec6fbc344c9af26b80932d3a29fb4bf1f6c9a2 Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 26 Apr 2007 00:11:39 +0000 Subject: Feature: Credits screen is now a screen for itself (UGraphic.pas, UScreenMain.pas, UScreenCredits.pas) Feature: Credits screen now has a tune in the background, thanks weezl <3 !! (place the mp3 into your "Sounds" path) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@141 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphic.pas | 11 +- Game/Code/Screens/UScreenCredits.pas | 223 +++++++++++++++++++++++++++++++++++ Game/Code/Screens/UScreenMain.pas | 184 +++-------------------------- Game/Code/UltraStar.dpr | 25 +--- Game/Sounds/wome_-_echoes.mp3 | Bin 0 -> 1063307 bytes 5 files changed, 247 insertions(+), 196 deletions(-) create mode 100644 Game/Code/Screens/UScreenCredits.pas create mode 100644 Game/Sounds/wome_-_echoes.mp3 diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 342efe3c..df7cd411 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -8,7 +8,8 @@ uses UScreenSong, UScreenSing, UScreenScore, UScreenTop5, UScreenEditSub, UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, UScreenSongJumpto, {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer, - {Stats Screens} UScreenStatMain, UScreenStatDetail; + {Stats Screens} UScreenStatMain, UScreenStatDetail, + {CreditsScreen} UScreenCredits; type TRecR = record @@ -67,7 +68,10 @@ var ScreenStatMain: TScreenStatMain; ScreenStatDetail: TScreenStatDetail; + //CreditsScreen + ScreenCredits: TScreenCredits; + //Notes Tex_Left: array[0..6] of TTexture; Tex_Mid: array[0..6] of TTexture; Tex_Right: array[0..6] of TTexture; @@ -443,6 +447,9 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Main', 3); Log.BenchmarkStart(3); ScreenStatDetail := TScreenStatDetail.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Detail', 3); Log.BenchmarkStart(3); -end; + ScreenCredits := TScreenCredits.Create(''); + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Credits', 3); Log.BenchmarkStart(3); + + end; end. diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas new file mode 100644 index 00000000..2e5f4abc --- /dev/null +++ b/Game/Code/Screens/UScreenCredits.pas @@ -0,0 +1,223 @@ +unit UScreenCredits; + +interface + +uses + UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes, ULCD, ULight; + +type + TScreenCredits = class(TMenu) + public + + Credits_Y: Real; + Credits_Time: Cardinal; + Credits_Alpha: Cardinal; + + Fadeout: boolean; + constructor Create(Back: String); override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + function Draw: boolean; override; + procedure onShow; override; + procedure onHide; override; + procedure DrawCredits; + end; + + const Credits_Text: Array[0..52] of PChar = ( + ':SPACE:', + 'Main Idea: Corvus 5', + 'Thank you very much for this great Game', + ':SPACE:', + 'The Ultrastar Deluxe Team:', + ':SPACE:', + 'blindy:', + 'VFX Programming', + ':SPACE:', + 'commandi00:', + 'Beta Testing', + ':SPACE:', + 'Crazy Joker:', + 'Graphics', + ':SPACE:', + 'DennistheMenace:', + 'Beta Testing and great Support in "the Board"', + ':SPACE:', + 'Mog:', + 'Programming, Graphics', + ':SPACE:', + 'Mota:', + 'Programming, Idea of creating this Mod', + ':SPACE:', + 'Sawyer:', + 'Web Master, Programming', + ':SPACE:', + 'Whiteshark:', + 'Programming, Creating Release', + ':SPACE:', + ':SPACE:', + 'Thanks to', + ':SPACE:', + 'Blind Guard', + 'for supporting us and administrate this great Board', + ':SPACE:', + 'Weezl', + 'for the credits screen music', + ':SPACE:', + 'The whole Community from www.ultra-star.dl.am', + 'for supporting us, supporting the newbies', + 'and remembering us to continue work', + ':SPACE:', + 'You', + 'for using Ultrastar Deluxe', + ':SPACE:', + ':SPACE:', + 'Visit us at:', + 'http://www.ultrastardx.dl.am', + 'http://sourceforge.net/projects/ultrastardx/', + 'http://www.Ultra-Star.dl.am', + 'Please write Bug Reports and Feature Requests', + 'to help making this a better Game'); + + +implementation + +uses Dialogs,Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage; + +function TScreenCredits.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + case PressedKey of + SDLK_ESCAPE : + begin + FadeTo(@ScreenMain); + Music.PlayBack; + end; + end;//esac + end; //fi +end; + +constructor TScreenCredits.Create(Back: String); +var + I: integer; +begin + inherited Create(Back); + + AddBackground(Theme.Loading.Background.Tex); + +// for I := 0 to High(Theme.Loading.Static) do +// AddStatic(Theme.Loading.Static[I]); + +// for I := 0 to High(Theme.Loading.Text) do +// AddText(Theme.Loading.Text[I]); + + Fadeout := false; +end; + +function TScreenCredits.Draw: boolean; +begin + DrawCredits; +end; + +procedure TScreenCredits.onShow; +begin + Credits_Y := 600; + Credits_Alpha := 0; + //Music.SetLoop(true); Loop looped ned, so ne scheisse + Music.Open(soundpath + 'wome_-_echoes.mp3'); //danke kleinster liebster weeeetüüüüü!! + Music.Play; +end; + +procedure TScreenCredits.onHide; +begin + Music.Stop; +end; + +procedure TScreenCredits.DrawCredits; +var + T,I: Cardinal; + Y: Real; + Ver: PChar; +begin + T := GetTickCount div 33; + if T <> Credits_Time then + begin + Credits_Time := T; + //Change Position + Credits_Y := Credits_Y - 1; + //Change Alpha + Inc (Credits_Alpha, 3); + end; + //If lowest Position is outside the Screen-> Show MainMenu + if (Y <= 0) then + Y := 600; + //Draw BackGround + DrawBG; + + + //Draw pulsing Credits Text + //Set Font + SetFontStyle (2); + SetFontItalic(False); + SetFontSize(9); + SetFontPos (10, 5); + glColor4f(1, 0, 0, 0.2 + Abs((Credits_Alpha mod 150)/100 - 0.75)); + glPrint ('You may press ESC now'); + + //Set Font Size for Credits + SetFontSize(12); + //Draw Version + if (Credits_Y>-35) then + begin + Ver := PChar(Language.Translate('US_VERSION')); + //Set Color + if Credits_Y > 500 then + glColor4f(1, 0.6, 0.08, (600 - Credits_Y)/100 - 0.2) + else + glColor4f(1, 0.6, 0.08, 0.8); + + SetFontPos (400 - glTextWidth(Ver)/2, Credits_Y); + glprint(Ver); + end; + + //Set Color + Start Pos + glColor4f(0.8, 0.8, 1, 0.8); + Y := Credits_Y + 50; + + //Search upper Position + For I := 0 to high(Credits_Text) do + begin + if (Credits_Text[I]=':SPACE:') then //Spacer + Y := Y + 55 + else + Y := Y + 30; + + if Y > -35 then + break; + end; + + //Draw Text + For T := I+1 to high(Credits_Text) do + begin + if (Credits_Text[T]=':SPACE:') then //Spacer + Y := Y + 55 + else + begin + //Set Color + if Y > 500 then + glColor4f(0.8, 0.8, 1, (600 - Y)/100 - 0.2) + else + glColor4f(0.8, 0.8, 1, 0.8); + + SetFontPos (400 - glTextWidth(Credits_Text[T])/2, Y); + glprint(Credits_Text[T]); + Y := Y + 30; + end; + + if Y > 600 then + break; + end; + +end; + +end. diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 051cd101..28c255d1 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -11,14 +11,6 @@ type TextDescription: integer; TextDescriptionLong: integer; - //Credits Mod - Credits_Visible: Boolean; - Credits_Y: Real; - Credits_Time: Cardinal; - Credits_Alpha: Cardinal; - procedure DrawCredits; - //Credits Mod End - constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; @@ -26,65 +18,12 @@ type procedure InteractPrev; override; procedure UpdateLCD; procedure SetAnimationProgress(Progress: real); override; - function Draw: boolean; override; + //function Draw: boolean; override; end; -const Credits_Text: Array[0..49] of PChar = ( - ':SPACE:', - 'Main Idea: Corvus 5', - 'Thank you very much for this great Game', - ':SPACE:', - 'The Ultrastar Deluxe Team:', - ':SPACE:', - 'blindy:', - 'VFX Programming', - ':SPACE:', - 'commandi00:', - 'Beta Testing', - ':SPACE:', - 'Crazy Joker:', - 'Graphics', - ':SPACE:', - 'DennistheMenace:', - 'Beta Testing and great Support in "the Board"', - ':SPACE:', - 'Mog:', - 'Programming, Graphics', - ':SPACE:', - 'Mota:', - 'Programming, Idea of creating this Mod', - ':SPACE:', - 'Sawyer:', - 'Web Master, Programming', - ':SPACE:', - 'Whiteshark:', - 'Programming, Creating Release', - ':SPACE:', - ':SPACE:', - 'Thanks to', - ':SPACE:', - 'Blind Guard', - 'for supporting us and administrate this great Board', - ':SPACE:', - 'The whole Community from www.ultra-star.dl.am', - 'for supporting us, supporting the newbies', - 'and remembering us to continue work', - ':SPACE:', - 'You', - 'for using Ultrastar Deluxe', - ':SPACE:', - ':SPACE:', - 'Visit us at:', - 'http://www.ultrastardx.dl.am', - 'http://sourceforge.net/projects/ultrastardx/', - 'http://www.Ultra-Star.dl.am', - 'Please write Bug Reports and Feature Requests', - 'to help making this a better Game'); - - implementation -uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager; +uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager, UScreenCredits; function TScreenMain.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; @@ -98,11 +37,11 @@ begin + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); //Deactivate Credits when Key is pressed - if Credits_Visible then - begin - Credits_Visible := False; - exit; - end; +// if Credits_Visible then +// begin +// Credits_Visible := False; +// exit; +// end; If (PressedDown) Then begin // Key Down @@ -121,9 +60,11 @@ begin begin if (SDL_ModState = KMOD_LALT) then begin - Credits_Y := 600; - Credits_Alpha := 0; - Credits_Visible := True; + //Credits_Y := 600; + //Credits_Alpha := 0; + //Credits_Visible := True; + Music.PlayStart; + FadeTo(@ScreenCredits); end; end; SDLK_M: @@ -210,7 +151,7 @@ begin Interaction := 0; //Some Testing for Button Fade - Button[0].SelectH := Button[0].H * 3; +{ Button[0].SelectH := Button[0].H * 3; Button[0].Fade := True; Button[0].FadeText := True; Button[0].DeSelectReflectionspacing := 280; @@ -225,6 +166,7 @@ begin Button[3].SelectH := Button[0].H * 3; Button[3].Fade := True; Button[3].FadeText := True; +} end; procedure TScreenMain.onShow; @@ -266,102 +208,4 @@ begin Static[0].Texture.ScaleW := Progress; Static[0].Texture.ScaleH := Progress; end; - -function TScreenMain.Draw: boolean; -begin -Result := True; -if Credits_Visible then - DrawCredits -else - Result := inherited Draw; -end; - -procedure TScreenMain.DrawCredits; -var - T, I: Cardinal; - Y: Real; - Ver: PChar; -begin - T := GetTickCount div 33; - if T <> Credits_Time then - begin - Credits_Time := T; - //Change Position - Credits_Y := Credits_Y - 1; - //Change Alpha - Inc (Credits_Alpha, 3); - end; - - //Draw BackGround - DrawBG; - - - //Draw pulsing Credits Text - //Set Font - SetFontStyle (2); - SetFontItalic(False); - SetFontSize(9); - SetFontPos (10, 5); - glColor4f(1, 0, 0, 0.2 + Abs((Credits_Alpha mod 150)/100 - 0.75)); - glPrint ('Credits! Press any Key to Continue'); - - //Set Font Size for Credits - SetFontSize(12); - //Draw Version - if (Credits_Y>-35) then - begin - Ver := PChar(Language.Translate('US_VERSION')); - //Set Color - if Credits_Y > 500 then - glColor4f(1, 0.6, 0.08, (600 - Credits_Y)/100 - 0.2) - else - glColor4f(1, 0.6, 0.08, 0.8); - - SetFontPos (400 - glTextWidth(Ver)/2, Credits_Y); - glprint(Ver); - end; - - //Set Color + Start Pos - glColor4f(0.8, 0.8, 1, 0.8); - Y := Credits_Y + 50; - - //Search upper Position - For I := 0 to high(Credits_Text) do - begin - if (Credits_Text[I]=':SPACE:') then //Spacer - Y := Y + 55 - else - Y := Y + 30; - - if Y > -35 then - break; - end; - - //Draw Text - For T := I+1 to high(Credits_Text) do - begin - if (Credits_Text[T]=':SPACE:') then //Spacer - Y := Y + 55 - else - begin - //Set Color - if Y > 500 then - glColor4f(0.8, 0.8, 1, (600 - Y)/100 - 0.2) - else - glColor4f(0.8, 0.8, 1, 0.8); - - SetFontPos (400 - glTextWidth(Credits_Text[T])/2, Y); - glprint(Credits_Text[T]); - Y := Y + 30; - end; - - if Y > 600 then - break; - end; - - //If lowest Position is outside the Screen-> Show MainMenu - if (Y <= 0) then - Credits_Visible := False; -end; - end. diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index d5418e04..0db37635 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -6,9 +6,6 @@ program UltraStar; {$R 'UltraStar.res' 'UltraStar.rc'} uses - //------------------------------ - //Includes - Menu System - //------------------------------ UDisplay in 'Menu\UDisplay.pas', UMenu in 'Menu\UMenu.pas', UMenuStatic in 'Menu\UMenuStatic.pas', @@ -18,10 +15,6 @@ uses UMenuSelect in 'Menu\UMenuSelect.pas', UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', UDrawTexture in 'Menu\UDrawTexture.pas', - - //------------------------------ - //Includes - Classes - //------------------------------ UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', @@ -50,10 +43,6 @@ uses UDLLManager in 'Classes\UDLLManager.pas', UParty in 'Classes\UParty.pas', UPlaylist in 'Classes\UPlaylist.pas', - - //------------------------------ - //Includes - Screens - //------------------------------ UScreenLoading in 'Screens\UScreenLoading.pas', UScreenWelcome in 'Screens\UScreenWelcome.pas', UScreenMain in 'Screens\UScreenMain.pas', @@ -80,30 +69,18 @@ uses UScreenSongJumpto in 'Screens\UScreenSongJumpto.pas', UScreenStatMain in 'Screens\UScreenStatMain.pas', UScreenStatDetail in 'Screens\UScreenStatDetail.pas', - - //------------------------------ - //Includes - Screens PartyMode - //------------------------------ UScreenSingModi in 'Screens\UScreenSingModi.pas', UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', UScreenPartyScore in 'Screens\UScreenPartyScore.pas', UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', UScreenPartyWin in 'Screens\UScreenPartyWin.pas', - - //------------------------------ - //Includes - Modi SDK - //------------------------------ ModiSDK in '..\..\Modis\SDK\ModiSDK.pas', - - //------------------------------ - //Includes - Delphi - //------------------------------ + UScreenCredits in 'Screens\UScreenCredits.pas', Windows, SDL, SysUtils; - const Version = 'UltraStar Deluxe V 0.96 Beta'; diff --git a/Game/Sounds/wome_-_echoes.mp3 b/Game/Sounds/wome_-_echoes.mp3 new file mode 100644 index 00000000..ddde2d60 Binary files /dev/null and b/Game/Sounds/wome_-_echoes.mp3 differ -- cgit v1.2.3 From 88180a90a43d3a5392b300b95d62249f11fed786 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 26 Apr 2007 11:16:05 +0000 Subject: Some Themework for Party-Mode. New Party-Icon. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@142 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 10 +- Skins/Deluxe/W&C.ini | 2 +- Skins/Deluxe/[icon]party.jpg | Bin 0 -> 1528 bytes Themes/Deluxe.ini | 491 ++++++++++++++++++++++--------------------- 4 files changed, 261 insertions(+), 242 deletions(-) create mode 100644 Skins/Deluxe/[icon]party.jpg diff --git a/Languages/German.ini b/Languages/German.ini index d7dce803..a4819356 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -169,14 +169,20 @@ PARTY_ROUND_WINNER=Sieger PARTY_SCORE_WINS=%s hat gewonnen! PARTY_OPTIONS_DESC=Party Modus -PARTY_DIFFICULTY=Schwierigkeitsgrad +PARTY_OPTIONS_OPTIONS=Party Optionen +PARTY_OPTIONS_OPTIONS_DESC=Macht eure Einstellungen +PARTY_DIFFICULTY=Schwierigkeit PARTY_PLAYLIST=Playlist Modus PARTY_ROUNDS=Runden PARTY_TEAMS=Teams PARTY_TEAMS_PLAYER1=Spieler Team1 PARTY_TEAMS_PLAYER2=Spieler Team2 PARTY_TEAMS_PLAYER3=Spieler Team3 -PARTY_SELECT_PLAYER=Gib die Spielernamen ein! +PARTY_SELECT_PLAYER=Gebt eure Team- und Spielernamen ein! +PARTY_PLAYLIST_ALL=Alle Lieder +PARTY_PLAYLIST_CATEGORY=Ordner +PARTY_PLAYLIST_PLAYLIST=Playlist + PARTY_DISMISSED=Ausgeschieden PARTY_NOTPLAYEDYET=Noch nicht gespielt diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index b9ab4ea8..37de9c2f 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -34,7 +34,7 @@ MainSearch = [icon]search.jpg IconOption = [icon]options.jpg IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg - +PartyIcon = [icon]party.jpg # # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg diff --git a/Skins/Deluxe/[icon]party.jpg b/Skins/Deluxe/[icon]party.jpg new file mode 100644 index 00000000..2bccd403 Binary files /dev/null and b/Skins/Deluxe/[icon]party.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 019c1a93..18533519 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -88,10 +88,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [MainStatic2] X =254 @@ -103,10 +99,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [MainStatic3] X =600 @@ -295,10 +287,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [SongStatic4] X =254 @@ -310,10 +298,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [SongStatic8] X =260 @@ -995,10 +979,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [ScoreStatic3] X =254 @@ -1010,10 +990,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [ScoreText2] X =120 @@ -2312,10 +2288,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [OptionsStatic3] X =254 @@ -2327,10 +2299,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [OptionsText2] X =120 @@ -3484,10 +3452,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [Top5Static3] X =254 @@ -3499,10 +3463,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [Top5Text2] X =120 @@ -3745,10 +3705,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [LevelStatic2] X =254 @@ -3760,10 +3716,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [LevelStatic3] X =40 @@ -3871,10 +3823,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [NameStatic2] X =254 @@ -3886,10 +3834,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [NameText2] X =120 @@ -3907,7 +3851,7 @@ Color=Black Font =0 Size =7 Align=0 -Text=PARTY_SELECT_PLAYER +Text=SING_ENTER_PLAYER_NAME [NameStatic3] X =40 @@ -4143,10 +4087,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyNewRoundStatic6] X =254 @@ -4158,10 +4098,6 @@ Color =White Type=Plain Reflection=1 ReflectionSpacing=1 -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyNewRoundStatic7] X =260 @@ -4394,7 +4330,7 @@ X =80 Y =70 Color =White Font =0 -Size =1 +Size =11 Text =Next Round Align=0 @@ -4577,10 +4513,6 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyScoreStaticTeam2] X =380 @@ -4591,10 +4523,6 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyScoreStaticTeam3] X =380 @@ -4605,10 +4533,6 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyWin] Texts=0 @@ -4688,10 +4612,6 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyWinStaticTeam2] X =380 @@ -4702,10 +4622,6 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyWinStaticTeam3] X =380 @@ -4716,29 +4632,73 @@ Tex=Leiste1 Color =AquaLightGreen Int = 1 Type=Font Black -TexX1=0.1 -TexY1=0 -TexX2=0.9 -TexY2=1 [PartyOptions] -Texts = 1 +Texts = 3 [PartyOptionsBackground] Tex=PartyBG +[PartyOptionsStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyOptionsStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyOptionsStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + [PartyOptionsText1] -X = 30 -Y = 0 +X =70 +Y =6 ColR = 0.7 ColG = 0.7 ColB = 0.7 -Font = 1 +Font = 0 Size = 20 Color =White Text=PARTY_OPTIONS_DESC +[PartyOptionsText2] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_OPTIONS_OPTIONS + +[PartyOptionsText3] +X =300 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_OPTIONS_OPTIONS_DESC [PartyOptionsSelectLevel] Tex = MainBar @@ -4766,7 +4726,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_PLAYLIST X = 40 -Y = 120 +Y = 110 W = 230 H = 70 SkipX = 50 @@ -4787,7 +4747,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_PLAYLIST X = 40 -Y = 190 +Y = 170 W = 230 H = 70 SkipX = 50 @@ -4808,7 +4768,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_ROUNDS X = 40 -Y = 260 +Y = 230 W = 230 H = 70 SkipX = 50 @@ -4829,7 +4789,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS X = 40 -Y = 340 +Y = 290 W = 230 H = 70 SkipX = 50 @@ -4850,7 +4810,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS_PLAYER1 X = 40 -Y = 410 +Y = 350 W = 230 H = 70 SkipX = 50 @@ -4871,7 +4831,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS_PLAYER2 X = 40 -Y = 480 +Y = 410 W = 230 H = 70 SkipX = 50 @@ -4892,7 +4852,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS_PLAYER3 X = 40 -Y = 540 +Y = 470 W = 230 H = 70 SkipX = 50 @@ -4908,123 +4868,184 @@ SBGDColor = Gray STColor = White STDColor = GrayDark + + [PartyPlayer] -Texts=2 +Texts=3 [PartyPlayerBackground] Tex=PartyBG +[PartyPlayerStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyPlayerStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyPlayerText2] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_OPTIONS_GAME_PLAYERS + +[PartyPlayerText3] +X =300 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_SELECT_PLAYER + +[PartyPlayerStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + +[PartyPlayerText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_ENTER_PLAYER_NAME +Color=White + + [PartyPlayerTeam1Name] Tex=Button -X=10 +X=105 Y=100 -W=250 -H=70 +W=150 +H=50 Type=Font Black Texts=1 -Color =P2Dark -DColor =P2Light +Color =P1Dark +DColor =P1Light Reflection=0 [PartyPlayerTeam1NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Team 1 Color=White [PartyPlayerPlayer1Name] Tex=Button -X=10 +X=105 Y=190 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P1Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer1NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 1 Color=White [PartyPlayerPlayer2Name] Tex=Button -X=10 +X=105 Y=270 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P1Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer2NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 -Text= Player 2 +Text=Player 2 Color=White [PartyPlayerPlayer3Name] Tex=Button -X=10 +X=105 Y=350 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P1Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer3NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 3 Color=White [PartyPlayerPlayer4Name] Tex=Button -X=10 +X=105 Y=430 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P1Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer4NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 4 Color=White [PartyPlayerTeam2Name] Tex=Button -X=275 +X=325 Y=100 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 Color =P2Dark @@ -5032,94 +5053,94 @@ DColor =P2Light Reflection=0 [PartyPlayerTeam2NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Team 2 Color=White [PartyPlayerPlayer5Name] Tex=Button -X=275 +X=325 Y=190 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P2Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer5NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 5 Color=White [PartyPlayerPlayer6Name] Tex=Button -X=275 +X=325 Y=270 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P2Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer6NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 6 Color=White [PartyPlayerPlayer7Name] Tex=Button -X=275 +X=325 Y=350 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P2Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer7NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 7 Color=White [PartyPlayerPlayer8Name] Tex=Button -X=275 +X=325 Y=430 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P2Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer8NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 8 Color=White @@ -5128,19 +5149,19 @@ Color=White Tex=Button X=545 Y=100 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =P2Dark -DColor =P2Light +Color =P3Dark +DColor =P3Light Reflection=0 [PartyPlayerTeam3NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Team 3 Color=White @@ -5149,19 +5170,19 @@ Color=White Tex=Button X=545 Y=190 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P3Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer9NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 9 Color=White @@ -5170,19 +5191,19 @@ Color=White Tex=Button X=545 Y=270 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P3Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer10NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 10 Color=White @@ -5191,19 +5212,19 @@ Color=White Tex=Button X=545 Y=350 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P3Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer11NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 11 Color=White @@ -5212,31 +5233,23 @@ Color=White Tex=Button X=545 Y=430 -W=250 -H=70 +W =150 +H =50 Type=Font Black Texts=1 -Color =DarkBlue -DColor = LightBlue +Color =P3Dark +DColor = GrayLight Reflection=0 [PartyPlayerPlayer12NameText1] -X=125 -Y=15 -Font=1 -Size=9 +X =75 +Y =10 +Font=0 +Size=10 Align=1 Text=Player 12 Color=White -[PartyPlayerText1] -X=10 -Y=5 -Font=1 -Size=18 -Align=0 -Text=PARTY_SELECT_PLAYER -Color=White [SongMenu] Texts=0 -- cgit v1.2.3 From b2518890d0dd62eeb96ee8b4b5f2d86e61ca75e7 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 26 Apr 2007 19:42:55 +0000 Subject: Added PS3 like ButtonFade ability Some new ThemeButton Attributes: DeSelectReflectionSpacing: ReflectionSpacing when Button is not Selected Fade: Enable Stepings in Fading FadeText: Fade Texts with Button SelectW, SelectH: Width and Height when Button is Selected FadeTex: Texture used when Button Fades to not stretch the Texture. Not nessecary. FadeTexPos: Position of FadeTex git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@143 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 24 ++++ Game/Code/Menu/UMenu.pas | 26 ++-- Game/Code/Menu/UMenuButton.pas | 266 ++++++++++++++++++++++++++++++++++++-- Game/Code/Screens/UScreenMain.pas | 20 +-- Skins/Deluxe/ButtonFade.jpg | Bin 0 -> 825 bytes Skins/Deluxe/W&C.ini | 3 +- Themes/Deluxe.ini | 28 ++++ 7 files changed, 325 insertions(+), 42 deletions(-) create mode 100644 Skins/Deluxe/ButtonFade.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 33cf4258..90bab7c1 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -134,6 +134,14 @@ type //Reflection Mod Reflection: boolean; Reflectionspacing: Real; + //Fade Mod + SelectH: integer; + SelectW: integer; + Fade: boolean; + FadeText: boolean; + DeSelectReflectionspacing : Real; + FadeTex: string; + FadeTexPos: integer; end; TThemeSelect = record @@ -1454,6 +1462,22 @@ begin ThemeButton.DColB := Color[C].RGB.B; end; + //Fade Mod + ThemeButton.SelectH := ThemeIni.ReadInteger (Name, 'SelectH', ThemeButton.H); + ThemeButton.SelectW := ThemeIni.ReadInteger (Name, 'SelectW', ThemeButton.W); + + ThemeButton.DeSelectReflectionspacing := ThemeIni.ReadFloat(Name, 'DeSelectReflectionSpacing', ThemeButton.Reflectionspacing); + + ThemeButton.Fade := (ThemeIni.ReadInteger(Name, 'Fade', 0) = 1); + ThemeButton.FadeText := (ThemeIni.ReadInteger(Name, 'FadeText', 0) = 1); + + + ThemeButton.FadeTex := ThemeIni.ReadString(Name, 'FadeTex', ''); + ThemeButton.FadeTexPos:= ThemeIni.ReadInteger(Name, 'FadeTexPos', 0); + if (ThemeButton.FadeTexPos > 4) Or (ThemeButton.FadeTexPos < 0) then + ThemeButton.FadeTexPos := 0; + + //Read ButtonTexts TLen := ThemeIni.ReadInteger(Name, 'Texts', 0); SetLength(ThemeButton.Text, TLen); for T := 1 to TLen do diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index 1c4418c1..28ba17e7 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -65,7 +65,7 @@ type 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; - function AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean; ReflectionSpacing: Real): integer; overload; + function AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean; ReflectionSpacing, DeSelectReflectionSpacing: Real): integer; overload; procedure ClearButtons; procedure AddButtonText(AddX, AddY: real; AddText: string); overload; procedure AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; AddText: string); overload; @@ -394,10 +394,19 @@ begin Result := AddButton(ThemeButton.X, ThemeButton.Y, ThemeButton.W, ThemeButton.H, ThemeButton.ColR, ThemeButton.ColG, ThemeButton.ColB, ThemeButton.Int, ThemeButton.DColR, ThemeButton.DColG, ThemeButton.DColB, ThemeButton.DInt, - Skin.GetTextureFileName(ThemeButton.Tex), 'JPG', ThemeButton.Typ, ThemeButton.Reflection, ThemeButton.Reflectionspacing); + Skin.GetTextureFileName(ThemeButton.Tex), 'JPG', ThemeButton.Typ, ThemeButton.Reflection, ThemeButton.Reflectionspacing, ThemeButton.DeSelectReflectionspacing); Button[Result].Z := ThemeButton.Z; + //Some Things from ButtonFading + Button[Result].SelectH := ThemeButton.SelectH; + Button[Result].SelectW := ThemeButton.SelectW; + + Button[Result].Fade := ThemeButton.Fade; + Button[Result].FadeText := ThemeButton.FadeText; + Button[Result].FadeTex := Texture.GetTexture(Skin.GetTextureFileName(ThemeButton.FadeTex), ThemeButton.Typ, true); + Button[Result].FadeTexPos := ThemeButton.FadeTexPos; + BTLen := Length(ThemeButton.Text); for BT := 0 to BTLen-1 do begin @@ -415,10 +424,10 @@ end; function TMenu.AddButton(X, Y, W, H: real; Name, Format, Typ: String; Reflection: Boolean): integer; begin - Result := AddButton(X, Y, W, H, 1, 1, 1, 1, 1, 1, 1, 0.5, Name, 'JPG', 'Plain', Reflection, 15); + Result := AddButton(X, Y, W, H, 1, 1, 1, 1, 1, 1, 1, 0.5, Name, 'JPG', 'Plain', Reflection, 15, 15); 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; +function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean; ReflectionSpacing, DeSelectReflectionSpacing: Real): integer; begin // adds button //SetLength is used to reduce Memory usement @@ -442,10 +451,10 @@ begin // Button[Result] := TButton.Create(Texture.GetTexture(Name, Typ, false)); // don't use cache texture} // configures button - Button[Result].Texture.X := X; - Button[Result].Texture.Y := Y; - Button[Result].Texture.W := W; - Button[Result].Texture.H := H; + Button[Result].X := X; + Button[Result].Y := Y; + Button[Result].W := W; + Button[Result].H := H; Button[Result].SelectColR := ColR; Button[Result].SelectColG := ColG; Button[Result].SelectColB := ColB; @@ -462,6 +471,7 @@ begin Button[Result].Reflection := Reflection; Button[Result].Reflectionspacing := ReflectionSpacing; + Button[Result].DeSelectReflectionspacing := DeSelectReflectionSpacing; // adds interaction AddInteraction(iButton, Result); diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index 3a871c5f..34d45083 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -7,11 +7,23 @@ type TButton = class private SelectBool: Boolean; + + FadeProgress: Real; + FadeLastTick: Cardinal; + + DeSelectW: Real; + DeSelectH: Real; + PosX: Real; + PosY: Real; + constructor Create(); overload; public Text: Array of TText; Texture: TTexture; // Button Screen position and size Texture2: TTexture; // second texture only used for fading full resolution covers + + FadeTex: TTexture; //Texture for beautiful fading + FadeTexPos: byte; //Pos of the FadeTexture (0: Top, 1: Left, 2: Bottom, 3: Right) // Texture2Blend: real; // blending factor for second texture (0=invisible, 1=visible) // now uses alpha @@ -20,7 +32,12 @@ type //Reflection Mod Reflection: boolean; Reflectionspacing: Real; - + DeSelectReflectionspacing: Real; + + //Fade Mod + Fade: Boolean; + FadeText: Boolean; + Selectable: boolean; SelectColR: real; @@ -28,6 +45,9 @@ type SelectColB: real; SelectInt: real; SelectTInt: real; + //Fade Mod + SelectW: real; + SelectH: real; DeselectColR: real; DeselectColG: real; @@ -36,12 +56,16 @@ type DeselectTInt: real; procedure SetY(Value: real); + procedure SetX(Value: real); + procedure SetW(Value: real); + procedure SetH(Value: real); + procedure SetSelect(Value: Boolean); - property X: real read Texture.x write Texture.x; - property Y: real read Texture.y write SetY; + property X: real read PosX write SetX; + property Y: real read PosY write SetY; property Z: real read Texture.z write Texture.z; - property W: real read Texture.w write Texture.w; - property H: real read Texture.h write Texture.h; + property W: real read DeSelectW write SetW; + property H: real read DeSelectH write SetH; property Selected: Boolean read SelectBool write SetSelect; procedure Draw; @@ -51,24 +75,76 @@ type end; implementation -uses UDrawTexture, SysUtils; +uses UDrawTexture, SysUtils, windows; + +procedure TButton.SetX(Value: real); +var + dx: real; + T: integer; // text +begin + {dY := Value - Texture.y; + + Texture.X := Value; + + for T := 0 to High(Text) do + Text[T].X := Text[T].X + dY;} + + PosX := Value; + if (FadeTex.TexNum = -1) then + Texture.X := Value; + +end; procedure TButton.SetY(Value: real); var dY: real; T: integer; // text begin - dY := Value - Texture.y; + {dY := Value - PosY; - Texture.y := Value; for T := 0 to High(Text) do - Text[T].Y := Text[T].Y + dY; + Text[T].Y := Text[T].Y + dY;} + + PosY := Value; + if (FadeTex.TexNum = -1) then + Texture.y := Value; +end; + +procedure TButton.SetW(Value: real); +begin + if SelectW = DeSelectW then + SelectW := Value; + + DeSelectW := Value; + + if Not Fade then + begin + if SelectBool then + Texture.W := SelectW + else + Texture.W := DeSelectW; + end; +end; +procedure TButton.SetH(Value: real); +begin + if SelectH = DeSelectH then + SelectH := Value; + + DeSelectH := Value; + + if Not Fade then + begin + if SelectBool then + Texture.H := SelectH + else + Texture.H := DeSelectH; + end; end; procedure TButton.SetSelect(Value : Boolean); -var +var T: integer; begin SelectBool := Value; @@ -85,6 +161,18 @@ begin for T := 0 to High(Text) do Text[T].Int := SelectTInt; + + //Fade Mod + if Fade then + begin + if (FadeProgress <= 0) then + FadeProgress := 0.125; + end + else + begin + Texture.W := SelectW; + Texture.H := SelectH; + end; end else begin Texture.ColR := DeselectColR; Texture.ColG := DeselectColG; @@ -98,6 +186,18 @@ begin for T := 0 to High(Text) do Text[T].Int := DeselectTInt; + + //Fade Mod + if Fade then + begin + if (FadeProgress >= 1) then + FadeProgress := 0.875; + end + else + begin + Texture.W := DeSelectW; + Texture.H := DeSelectH; + end; end; end; @@ -140,7 +240,16 @@ begin DeselectInt := 0.5; DeselectTInt := 1; + FadeTex.TexNum := -1; + FadeProgress := 0; + Fade := False; + FadeText := False; + SelectW := DeSelectW; + SelectH := DeSelectH; + + PosX := 0; + PosY := 0; end; // ***** Public methods ****** // @@ -148,10 +257,130 @@ end; procedure TButton.Draw; var T: integer; + Tick: Cardinal; + Spacing: Real; begin if Visible then begin + //Fade Mod + if Fade then + begin + if (FadeProgress < 1) and (FadeProgress > 0) then + begin + Tick := GetTickCount div 16; + if (Tick <> FadeLastTick) then + begin + FadeLastTick := Tick; + if SelectBool then + FadeProgress := FadeProgress + 0.125 + else + FadeProgress := FadeProgress - 0.125; + + if (FadeText) then + begin + For T := 0 to high(Text) do + begin + Text[T].MoveX := (SelectW - DeSelectW) * FadeProgress; + Text[T].MoveY := (SelectH - DeSelectH) * FadeProgress; + end; + end; + end; + end; + //Method without Fade Texture + if (FadeTex.TexNum = -1) then + begin + Texture.W := DeSelectW + (SelectW - DeSelectW) * FadeProgress; + Texture.H := DeSelectH + (SelectH - DeSelectH) * FadeProgress; + end + else //method with Fade Texture + begin + Texture.W := DeSelectW; + Texture.H := DeSelectH; + + FadeTex.ColR := Texture.ColR; + FadeTex.ColG := Texture.ColG; + FadeTex.ColB := Texture.ColB; + FadeTex.Int := Texture.Int; + + FadeTex.Z := Texture.Z; + + FadeTex.Alpha := Texture.Alpha; + FadeTex.TexX1 := 0; + FadeTex.TexX2 := 1; + FadeTex.TexY1 := 0; + FadeTex.TexY2 := 1; + + Case FadeTexPos of + 0: //FadeTex on Top + begin + //Standard Texture + Texture.X := PosX; + Texture.Y := PosY + (SelectH - DeSelectH) * FadeProgress; + //Fade Tex + FadeTex.X := PosX; + FadeTex.Y := PosY; + FadeTex.W := Texture.W; + FadeTex.H := (SelectH - DeSelectH) * FadeProgress; + FadeTex.ScaleW := Texture.ScaleW; + //Some Hack that Fixes a little Space between both Textures + FadeTex.TexY2 := 0.9; + end; + 1: //FadeTex on Left + begin + //Standard Texture + Texture.X := PosX + (SelectW - DeSelectW) * FadeProgress; + Texture.Y := PosY; + //Fade Tex + FadeTex.X := PosX; + FadeTex.Y := PosY; + FadeTex.H := Texture.H; + FadeTex.W := (SelectW - DeSelectW) * FadeProgress; + FadeTex.ScaleH := Texture.ScaleH; + //Some Hack that Fixes a little Space between both Textures + FadeTex.TexX2 := 0.9; + end; + 2: //FadeTex on Bottom + begin + //Standard Texture + Texture.X := PosX; + Texture.Y := PosY; + //Fade Tex + FadeTex.X := PosX; + FadeTex.Y := PosY + (SelectH - DeSelectH) * FadeProgress;; + FadeTex.W := Texture.W; + FadeTex.H := (SelectH - DeSelectH) * FadeProgress; + FadeTex.ScaleW := Texture.ScaleW; + //Some Hack that Fixes a little Space between both Textures + FadeTex.TexY1 := 0.1; + end; + 3: //FadeTex on Right + begin + //Standard Texture + Texture.X := PosX; + Texture.Y := PosY; + //Fade Tex + FadeTex.X := PosX + (SelectW - DeSelectW) * FadeProgress; + FadeTex.Y := PosY; + FadeTex.H := Texture.H; + FadeTex.W := (SelectW - DeSelectW) * FadeProgress; + FadeTex.ScaleH := Texture.ScaleH; + //Some Hack that Fixes a little Space between both Textures + FadeTex.TexX1 := 0.1; + end; + end; + end; + end + else if (FadeText) then + begin + Text[T].MoveX := (SelectW - DeSelectW); + Text[T].MoveY := (SelectH - DeSelectH); + end; + DrawTexture(Texture); + //Draw FadeTex + if (FadeTex.TexNum <> -1) then + DrawTexture(FadeTex); + if Texture2.Alpha > 0 then begin Texture2.ScaleW := Texture.ScaleW; Texture2.ScaleH := Texture.ScaleH; @@ -174,6 +403,15 @@ begin //Reflection Mod if (Reflection) then // Draw Reflections begin + if (FadeProgress <> 0) AND (FadeProgress <> 1) then + begin + Spacing := DeSelectReflectionspacing - (DeSelectReflectionspacing - Reflectionspacing) * FadeProgress; + end + else if SelectBool then + Spacing := Reflectionspacing + else + Spacing := DeSelectReflectionspacing; + with Texture do begin //Bind Tex and GL Attributes @@ -191,23 +429,23 @@ begin glBegin(GL_QUADS);//Top Left glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); glTexCoord2f(TexX1*TexW, TexY2*TexH); - glVertex3f(x, y+h*scaleH+ Reflectionspacing, z); + glVertex3f(x, y+h*scaleH+ Spacing, z); //Bottom Left glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); glTexCoord2f(TexX1*TexW, {TexY1*TexH*}0.5); - glVertex3f(x, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); + glVertex3f(x, y+h*scaleH + h*scaleH/2 + Spacing, z); //Bottom Right glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); glTexCoord2f(TexX2*TexW, {TexY1*TexH*}0.5); - glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); + glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Spacing, z); //Top Right glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); glTexCoord2f(TexX2*TexW, TexY2*TexH); - glVertex3f(x+w*scaleW, y+h*scaleH + Reflectionspacing, z); + glVertex3f(x+w*scaleW, y+h*scaleH + Spacing, z); glEnd; glDisable(GL_TEXTURE_2D); diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 28c255d1..4c822640 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -23,7 +23,7 @@ type implementation -uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager, UScreenCredits; +uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager, UScreenCredits, USkins; function TScreenMain.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; @@ -149,24 +149,6 @@ begin TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong); Interaction := 0; - - //Some Testing for Button Fade -{ Button[0].SelectH := Button[0].H * 3; - Button[0].Fade := True; - Button[0].FadeText := True; - Button[0].DeSelectReflectionspacing := 280; - - Button[1].SelectH := Button[0].H * 3; - Button[1].Fade := True; - - Button[2].SelectH := Button[0].H * 3; - Button[2].Fade := True; - Button[2].FadeText := True; - - Button[3].SelectH := Button[0].H * 3; - Button[3].Fade := True; - Button[3].FadeText := True; -} end; procedure TScreenMain.onShow; diff --git a/Skins/Deluxe/ButtonFade.jpg b/Skins/Deluxe/ButtonFade.jpg new file mode 100644 index 00000000..6de293f7 Binary files /dev/null and b/Skins/Deluxe/ButtonFade.jpg differ diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 37de9c2f..38583c84 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -110,4 +110,5 @@ NotePerfectStar = [effect]perfectNoteStar.jpg #dirty helpers -Rectangle = Rectangle.jpg \ No newline at end of file +Rectangle = Rectangle.jpg +ButtonFade = ButtonFade.jpg \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 18533519..d64536ec 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -130,6 +130,13 @@ DColor = LightBlue Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=15 +DeSelectReflectionSpacing=280 +Fade=1 +FadeText=1 +SelectH=150 +FadeTex=ButtonFade +FadeTexPos=0 [MainButtonSoloText1] X =75 @@ -151,6 +158,13 @@ DColor = LightBlue Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=15 +DeSelectReflectionSpacing=280 +Fade=1 +FadeText=1 +SelectH=150 +FadeTex=ButtonFade +FadeTexPos=0 [MainButtonEditorText1] X =75 @@ -172,6 +186,13 @@ DColor = LightBlue Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=15 +DeSelectReflectionSpacing=280 +Fade=1 +FadeText=1 +SelectH=150 +FadeTex=ButtonFade +FadeTexPos=0 [MainButtonOptionsText1] X =75 @@ -193,6 +214,13 @@ DColor = LightBlue Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=15 +DeSelectReflectionSpacing=280 +Fade=1 +FadeText=1 +SelectH=150 +FadeTex=ButtonFade +FadeTexPos=0 [MainButtonExitText1] X =75 -- cgit v1.2.3 From f6b57ab8738f54e6f77f87d7fdec477fac882f81 Mon Sep 17 00:00:00 2001 From: crazy_joker Date: Fri, 27 Apr 2007 16:22:35 +0000 Subject: Update : Ready Party main Screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@144 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 4 + Skins/Deluxe/W&C.ini | 3 +- Skins/Deluxe/[BG]PartyRounds.jpg | Bin 0 -> 26594 bytes Themes/Deluxe.ini | 247 +++++++++++++++++++++++---------------- 4 files changed, 154 insertions(+), 100 deletions(-) create mode 100644 Skins/Deluxe/[BG]PartyRounds.jpg diff --git a/Languages/German.ini b/Languages/German.ini index a4819356..7e9dcfbc 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -183,6 +183,10 @@ PARTY_PLAYLIST_ALL=Alle Lieder PARTY_PLAYLIST_CATEGORY=Ordner PARTY_PLAYLIST_PLAYLIST=Playlist +PARTY_MODE=Party Modus + +NEXT_ROUND=Nächste Runde: +NEXT_ROUND_PLAYER=Nächste Runde spielt: PARTY_DISMISSED=Ausgeschieden PARTY_NOTPLAYEDYET=Noch nicht gespielt diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 38583c84..965eeaf7 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -78,8 +78,7 @@ PlayerNumberBox = [main]playerNumberBox.jpg # # # P A R T Y # # # Joker=Joker.jpg -[BG]PartyRound=[BG]PartyRound.jpg - +PartyRounds=[BG]PartyRounds.jpg # # # N A V I # # # ButtonP = button_p.jpg diff --git a/Skins/Deluxe/[BG]PartyRounds.jpg b/Skins/Deluxe/[BG]PartyRounds.jpg new file mode 100644 index 00000000..207e9c47 Binary files /dev/null and b/Skins/Deluxe/[BG]PartyRounds.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index d64536ec..79052cb2 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -4033,65 +4033,99 @@ Texts =0 Tex=MainBG [PartyNewRoundText1] -X =40 -Y =10 +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 Color =White -Font =0 -Size =20 -Text =Party Modus -Align=0 +Text =PARTY_MODE [PartyNewRoundText2] -X =460 -Y =75 +X =370 +Y =160 Color =White Font =0 -Size =15 +Size =13 Text =PARTY_ROUND Align=0 [PartyNewRoundText3] -X =650 -Y =75 +X =540 +Y =160 Color =White Font =0 -Size =15 +Size =13 Text =PARTY_ROUND_WINNER Align=0 +[PartyNewRoundText4] +X =40 +Y =200 +Color =White +Font =0 +Size =12 +Text =NEXT_ROUND +Align=0 + +[PartyNewRoundText5] +X =40 +Y =330 +Color =White +Font =0 +Size =12 +Text =NEXT_ROUND_PLAYER +Align=0 + +[PartyNewRoundText6] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_MODE + +[PartyNewRoundText7] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_CONTINUE + [PartyNewRoundStatic1] -Tex =[BG]PartyRound -X =450 -Y =70 -W = 350 -H = 450 +Tex =PartyRounds +X =350 +Y =160 +W = 450 +H = 380 Int=1 Color =DarkBlue Type=Font Black [PartyNewRoundStatic2] -Tex =[BG]PartyRound -X = 20 -Y =80 -W =130 +Tex =Button +X =40 +Y =70 +W =200 H =80 Int=1 Color =P1Dark Type=Font Black -Reflection=1 -ReflectionSpacing=5 [PartyNewRoundStatic3] -Tex =[BG]PartyRound -X =165 -Y =80 -W =130 +Tex =Button +X =280 +Y =70 +W =200 H =80 Int=1 Color =P2Dark Type=Font Black -Reflection=1 -ReflectionSpacing=5 [PartyNewRoundStatic4] Tex = @@ -4136,9 +4170,36 @@ Tex=ButtonEnter Color =White Type=Plain +[PartyNewRoundStatic8] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + +[PartyNewRoundStatic9] +X =40 +Y =360 +W =290 +H =3 +Color =White +Tex =ScoreLine +Type=Font Black + +[PartyNewRoundStatic10] +X =40 +Y =230 +W =215 +H =3 +Color =White +Tex =ScoreLine +Type=Font Black + [PartyNewRoundTextRound1] -X =460 -Y =120 +X =370 +Y =210 Color =White Font =0 Size =11 @@ -4146,8 +4207,8 @@ Text =Round 1 Align=0 [PartyNewRoundTextRound2] -X =460 -Y =160 +X =370 +Y =250 Color =White Font =0 Size =11 @@ -4155,8 +4216,8 @@ Text =Round 2 Align=0 [PartyNewRoundTextRound3] -X =460 -Y =200 +X =370 +Y =290 Color =White Font =0 Size =11 @@ -4164,8 +4225,8 @@ Text =Round 3 Align=0 [PartyNewRoundTextRound4] -X =460 -Y =240 +X =370 +Y =330 Color =White Font =0 Size =11 @@ -4173,8 +4234,8 @@ Text =Round 4 Align=0 [PartyNewRoundTextRound5] -X =460 -Y =280 +X =370 +Y =370 Color =White Font =0 Size =11 @@ -4182,8 +4243,8 @@ Text =Round 5 Align=0 [PartyNewRoundTextRound6] -X =460 -Y =320 +X =370 +Y =410 Color =White Font =0 Size =11 @@ -4191,8 +4252,8 @@ Text =Round 6 Align=0 [PartyNewRoundTextRound7] -X =460 -Y =360 +X =370 +Y =450 Color =White Font =0 Size =11 @@ -4200,8 +4261,8 @@ Text =Round 7 Align=0 [PartyNewRoundTextWinner1] -X =640 -Y =120 +X =540 +Y =210 Color =White Font =0 Size =11 @@ -4209,8 +4270,8 @@ Text =Winner 1 Align=0 [PartyNewRoundTextWinner2] -X =640 -Y =160 +X =540 +Y =250 Color =White Font =0 Size =11 @@ -4218,8 +4279,8 @@ Text =Winner 2 Align=0 [PartyNewRoundTextWinner3] -X =640 -Y =200 +X =540 +Y =290 Color =White Font =0 Size =11 @@ -4227,8 +4288,8 @@ Text =Winner 3 Align=0 [PartyNewRoundTextWinner4] -X =640 -Y =240 +X =540 +Y =330 Color =White Font =0 Size =11 @@ -4236,8 +4297,8 @@ Text =Winner 4 Align=0 [PartyNewRoundTextWinner5] -X =640 -Y =280 +X =540 +Y =370 Color =White Font =0 Size =11 @@ -4245,8 +4306,8 @@ Text =Winner 5 Align=0 [PartyNewRoundTextWinner6] -X =640 -Y =320 +X =540 +Y =410 Color =White Font =0 Size =11 @@ -4254,8 +4315,8 @@ Text =Winner 6 Align=0 [PartyNewRoundTextWinner7] -X =640 -Y =360 +X =540 +Y =450 Color =White Font =0 Size =11 @@ -4354,26 +4415,27 @@ TexX2=1 TexY2=1 [PartyNewRoundTextNextRound] -X =80 -Y =70 +X =40 +Y =250 +W = 310 Color =White Font =0 -Size =11 +Size =10 Text =Next Round Align=0 [PartyNewRoundTextNextRoundNo] -X =40 -Y =70 +X = +Y = Color =White -Font =0 +Font = Size =1 Text =99 Align=0 [PartyNewRoundTextScoreTeam1] -X =75 -Y = 120 +X =130 +Y = 110 Color =White Font =0 Size =15 @@ -4381,8 +4443,8 @@ Text =3000 Align=0 [PartyNewRoundTextScoreTeam2] -X =220 -Y =120 +X =370 +Y =110 Color =White Font =0 Size =15 @@ -4390,8 +4452,8 @@ Text =2000 Align=0 [PartyNewRoundTextScoreTeam3] -X =365 -Y =120 +X =610 +Y =110 Color =White Font =0 Size =15 @@ -4399,7 +4461,7 @@ Text =1000 Align=0 [PartyNewRoundTextNameTeam1] -X =25 +X =90 Y =80 Color =White Font =0 @@ -4408,7 +4470,7 @@ Text =Team 1 Align=0 [PartyNewRoundTextNameTeam2] -X =170 +X =330 Y =80 Color =White Font =0 @@ -4417,7 +4479,7 @@ Text =Team 2 Align=0 [PartyNewRoundTextNameTeam3] -X =315 +X =570 Y =80 Color =White Font =0 @@ -4426,43 +4488,32 @@ Text =Team 3 Align=0 [PartyNewRoundTextNextPlayer1] -X =100 -Y =120 -Color =White -Font =1 -Size =0 +X =40 +Y =390 +Color =P1Dark +Font =0 +Size =10 Text =Player 1 Align=0 [PartyNewRoundTextNextPlayer2] -X =250 -Y =120 -Color =White -Font =1 -Size =0 +X =40 +Y =420 +Color =P2Dark +Font =0 +Size =10 Text =Player 2 Align=0 [PartyNewRoundTextNextPlayer3] -X =400 -Y =120 -Color =White -Font =1 -Size =0 -Text =Player 3 -Align=0 - - -[PartyNewRoundTextNextPlayer3] -X =650 -Y =400 -Color =White -Font =1 -Size =13 +X =40 +Y =450 +Color =P3Dark +Font =0 +Size =10 Text =Player 3 Align=0 - [PartyScore] Texts=0 -- cgit v1.2.3 From 3d1f2a49bbffd8568916a41a131213198f408bef Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 27 Apr 2007 20:02:41 +0000 Subject: PageBreak Code Rewritten Now there is more structur in Code Also some Bugs are fixed that appears when \n Tags and Textwidth is used in one Text. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@145 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 283 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 233 insertions(+), 50 deletions(-) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 65034f1d..adf58840 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -15,6 +15,8 @@ type public X: real; Y: real; + MoveX: real; //Some Modifier for X - Position that don't Affect the Real Y + MoveY: real; //Some Modifier for Y - Position that don't Affect the Real Y W: real; // if text is wider than W then it is breaked // H: real; Size: real; @@ -54,66 +56,139 @@ end; procedure TText.SetText(Value: String); var - I: Integer; - L: Integer; - LastPos: Integer; - LastBreak: Integer; + NextPos: Cardinal; //NextPos of a Space etc. + LastPos: Cardinal; //LastPos " + LastBreak: Cardinal; //Last Break + isBreak: Boolean; //True if the Break is not Caused because the Text is out of the area + FirstWord: Word; //Is First Word after Break? + Len: Word; //Length of the Tiles Array + Function Smallest(const A, B: Cardinal):Cardinal; + begin + if (A < B) then + Result := A + else + Result := B; + end; + + Function GetNextPos: Boolean; + var + T1, T2, T3: Cardinal; + begin + LastPos := NextPos; + + //Next Space (If Width is given) + if (W > 0) then + T1 := PosEx(' ', Value, LastPos + 1) + else T1 := Length(Value); + + {//Next - + T2 := PosEx('-', Value, LastPos + 1);} + + //Next Break + T3 := PosEx('\n', Value, LastPos + 1); + + if T1 = 0 then + T1 := Length(Value); + {if T2 = 0 then + T2 := Length(Value); } + if T3 = 0 then + T3 := Length(Value); + + //Get Nearest Pos + NextPos := Smallest(T1, T3{Smallest(T2, T3)}); + + if (LastPos = Length(Value)) then + NextPos := 0; + + isBreak := (NextPos = T3) AND (NextPos <> Length(Value)); + Result := (NextPos <> 0); + end; + procedure AddBreak(const From, bTo: Cardinal); + begin + if (isBreak) OR (bTo - From > 1) then + begin + Inc(Len); + SetLength (TextTiles, Len); + TextTiles[Len-1] := Trim(Copy(Value, From, bTo - From)); + + if isBreak then + LastBreak := bTo + 2 + else + LastBreak := bTo + 1; + FirstWord := 0; + end; + end; begin + //Set TExtstring TextString := Value; - //Create Page Breaks if width is given + //Create Tiles + //Reset Text Array + SetLength (TextTiles, 0); + Len := 0; + + //Reset Counter Vars + LastPos := 1; + NextPos := 1; + LastBreak := 1; + FirstWord := 1; + if (W > 0) then begin //Set Font Propertys SetFontStyle(Style); SetFontSize(Size); + end; - //Create New TextTiles Array - SetLength (TextTiles, 0); - L := 0; - LastPos := 1; - LastBreak := 0; - I := Pos (' ', Value); - While (I <> 0) do - begin - if (glTextWidth(PChar(Copy (Value,LastBreak + 1,I - LastBreak))) > W) AND (LastPos <> 1) then + //go Through Text + While (GetNextPos) do + begin + //Break in Text + if isBreak then begin - //new Break - SetLength (TextTiles, L+1); - TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); - - Inc(L); - LastBreak := LastPos; - end; - - LastPos := I; - I := PosEx (' ', Value, I+1); - end; + //Look for Break before the Break + if (glTextWidth(PChar(Copy(Value, LastBreak, NextPos - LastBreak + 1))) > W) AND (NextPos-LastPos > 1) then + begin + //Not the First word after Break, so we don't have to break within a word + if (FirstWord > 1) then + begin + //Add Break before actual Position, because there the Text fits the Area + AddBreak(LastBreak, LastPos); + end + else //First Word after Break Break within the Word + begin + //ToDo + //AddBreak(LastBreak, LastBreak + 155); + end; + end; - //Last Break - if (glTextWidth(PChar(Copy (Value,LastBreak + 1,Length(Value) - LastBreak))) > W) AND (LastPos <> 1) then + //Add Break from Text + AddBreak(LastBreak, NextPos); + end + //Text comes out of the Text Area -> CreateBreak + else if (glTextWidth(PChar(Copy(Value, LastBreak, NextPos - LastBreak + 1))) > W) then begin - //new Break - SetLength (TextTiles, L+1); - TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); - - Inc(L); - LastBreak := LastPos; + //Not the First word after Break, so we don't have to break within a word + if (FirstWord > 1) then + begin + //Add Break before actual Position, because there the Text fits the Area + AddBreak(LastBreak, LastPos); + end + else //First Word after Break -> Break within the Word + begin + //ToDo + //AddBreak(LastBreak, LastBreak + 155); + end; end; - - //last Part - SetLength (TextTiles, L+1); - TextTiles[L] := Copy (Value, LastBreak + 1, Length(Value) - LastBreak); - - end - else - begin - SetLength (TextTiles, 1); - TextTiles[0] := Value; + //end; + Inc(FirstWord) end; + //Add Ending + AddBreak(LastBreak, Length(Value)+1); + - I := 0; + {I := 0; // \n Hack While (I <= High(TextTiles)) do begin @@ -135,12 +210,120 @@ begin //Delete Text that now is in new Tile from cur. Tile Delete(TextTiles[I], LastPos, Length(TextTiles[I]) - LastPos + 1); TextTiles[I] := Trim (TextTiles[I]); - + //Goto next Tile because cur. Tile can not have another /n Tag - Inc(I) + Inc(I) end; end; + //Create Page Breaks if width is given and the Text overlapps the width + if (W > 0) then + begin + //Set Font Propertys + SetFontStyle(Style); + SetFontSize(Size); + + {//Create New TextTiles Array + SetLength (TextTiles, 0);}{ + I := 0; + + //Go Through all Tiles + While (I <= High(TextTiles)) do + begin + LastPos := 0; + CurPos := Pos (' ', TextTiles[I]); + + //Go through all Spaces + While (CurPos <> 0) do + begin + //Text is too long for given Width and not the First Word(That means that the Given Word don't Fit the given Width + if (glTextWidth(PChar(Copy (TextTiles[I],1,CurPos-1))) > W) AND (LastPos <> 1) then + begin + //Add a new Tile and move all Tiles behind actual Tile to the right + L := Length(TextTiles); + SetLength(TextTiles, L+1); + For L := L-1 downto I + 1 do + begin + TextTiles[L+1] := TextTiles[L]; + end; + + //Write Text to new Tile + TextTiles[I+1] := Trim(Copy(TextTiles[I], LastPos + 1, Length(TextTiles[I]) - LastPos)); + //Delete Text that now is in new Tile from cur. Tile + Delete(TextTiles[I], LastPos, Length(TextTiles[I]) - LastPos + 1); + TextTiles[I] := Trim (TextTiles[I]); + + //Goto next Tile because cur. Tile can not have another Space + Inc(I) + end; + //Set LastPos and Cur Pos + LastPos := CurPos; + CurPos := PosEx (' ', TextTiles[I], LastPos+1); + end; + + //Look for PageBreak in Last Part of the Tile + CurPos := Length(TextTiles[I]); + if (glTextWidth(PChar(Copy (TextTiles[I],1,CurPos))) > W) AND (LastPos <> 1) then + begin + //Add a new Tile and move all Tiles behind actual Tile to the right + L := Length(TextTiles); + SetLength(TextTiles, L+1); + For L := L-1 downto I + 1 do + begin + TextTiles[L+1] := TextTiles[L]; + end; + + //Write Text to new Tile + TextTiles[I+1] := Trim(Copy(TextTiles[I], LastPos + 1, CurPos - LastPos)); + //Delete Text from cur. Tile that now is in new Tile + Delete(TextTiles[I], LastPos, CurPos - LastPos + 1); + TextTiles[I] := Trim (TextTiles[I]); + //Goto next Tile because cur. Tile can not have another Space + Inc(I) + end; + + //Inc I if Current Tile has no more Spaces + Inc(I) + end; + + I := high(TextTiles); + + {LastPos := 1; + LastBreak := 0; + I := Pos (' ', Value); + While (I <> 0) do + begin + if (glTextWidth(PChar(Copy (Value,LastBreak + 1,I - LastBreak))) > W) AND (LastPos <> 1) then + begin + //new Break + SetLength (TextTiles, L+1); + TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); + + Inc(L); + LastBreak := LastPos; + end; + + LastPos := I; + I := PosEx (' ', Value, I+1); + end; + + //Last Break + if (glTextWidth(PChar(Copy (Value,LastBreak + 1,Length(Value) - LastBreak))) > W) AND (LastPos <> 1) then + begin + //new Break + SetLength (TextTiles, L+1); + TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); + + Inc(L); + LastBreak := LastPos; + end; + + //last Part + SetLength (TextTiles, L+1); + TextTiles[L] := Copy (Value, LastBreak + 1, Length(Value) - LastBreak); + + end; } + //Set Cursor Visible SelectBlink := True; STicks := GettickCount div 550; @@ -201,7 +384,7 @@ begin end else begin //Draw Text as Many Strings - Y2 := Y; + Y2 := Y + MoveY; for I := 0 to high(TextTiles) do begin if (not (SelectBool AND SelectBlink)) OR (I <> high(TextTiles)) then @@ -210,9 +393,9 @@ begin Text2 := TextTiles[I] + '|'; case Align of - 0: X2 := X; - 1: X2 := X - glTextWidth(pchar(Text2))/2; - 2: X2 := X - glTextWidth(pchar(Text2)); + 0: X2 := X + MoveX; + 1: X2 := X + MoveX - glTextWidth(pchar(Text2))/2; + 2: X2 := X + MoveX - glTextWidth(pchar(Text2)); end; SetFontPos(X2, Y2); -- cgit v1.2.3 From 5c8ba0055244ca316dc9957fec02d6f151df0d2e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 27 Apr 2007 20:04:56 +0000 Subject: Some Code Cleanup in UMenuText git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@146 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 145 ++----------------------------------------- 1 file changed, 5 insertions(+), 140 deletions(-) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index adf58840..0ebaede2 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -187,143 +187,6 @@ begin //Add Ending AddBreak(LastBreak, Length(Value)+1); - - {I := 0; - // \n Hack - While (I <= High(TextTiles)) do - begin - LastPos := Pos ('\n', TextTiles[I]); - if (LastPos = 0) then //No /n Tags -> Search in next Tile - Inc(I) - else //Found \n Tag -> Create a Break - begin - //Add a new Tile and move all Tiles behind actual Tile to the right - L := Length(TextTiles); - SetLength(TextTiles, L+1); - For L := L-1 downto I + 1 do - begin - TextTiles[L+1] := TextTiles[L]; - end; - - //Write Text to new Tile - TextTiles[I+1] := Trim(Copy(TextTiles[I], LastPos + 2, Length(TextTiles[I]) - LastPos - 1)); - //Delete Text that now is in new Tile from cur. Tile - Delete(TextTiles[I], LastPos, Length(TextTiles[I]) - LastPos + 1); - TextTiles[I] := Trim (TextTiles[I]); - - //Goto next Tile because cur. Tile can not have another /n Tag - Inc(I) - end; - end; - - //Create Page Breaks if width is given and the Text overlapps the width - if (W > 0) then - begin - //Set Font Propertys - SetFontStyle(Style); - SetFontSize(Size); - - {//Create New TextTiles Array - SetLength (TextTiles, 0);}{ - I := 0; - - //Go Through all Tiles - While (I <= High(TextTiles)) do - begin - LastPos := 0; - CurPos := Pos (' ', TextTiles[I]); - - //Go through all Spaces - While (CurPos <> 0) do - begin - //Text is too long for given Width and not the First Word(That means that the Given Word don't Fit the given Width - if (glTextWidth(PChar(Copy (TextTiles[I],1,CurPos-1))) > W) AND (LastPos <> 1) then - begin - //Add a new Tile and move all Tiles behind actual Tile to the right - L := Length(TextTiles); - SetLength(TextTiles, L+1); - For L := L-1 downto I + 1 do - begin - TextTiles[L+1] := TextTiles[L]; - end; - - //Write Text to new Tile - TextTiles[I+1] := Trim(Copy(TextTiles[I], LastPos + 1, Length(TextTiles[I]) - LastPos)); - //Delete Text that now is in new Tile from cur. Tile - Delete(TextTiles[I], LastPos, Length(TextTiles[I]) - LastPos + 1); - TextTiles[I] := Trim (TextTiles[I]); - - //Goto next Tile because cur. Tile can not have another Space - Inc(I) - end; - //Set LastPos and Cur Pos - LastPos := CurPos; - CurPos := PosEx (' ', TextTiles[I], LastPos+1); - end; - - //Look for PageBreak in Last Part of the Tile - CurPos := Length(TextTiles[I]); - if (glTextWidth(PChar(Copy (TextTiles[I],1,CurPos))) > W) AND (LastPos <> 1) then - begin - //Add a new Tile and move all Tiles behind actual Tile to the right - L := Length(TextTiles); - SetLength(TextTiles, L+1); - For L := L-1 downto I + 1 do - begin - TextTiles[L+1] := TextTiles[L]; - end; - - //Write Text to new Tile - TextTiles[I+1] := Trim(Copy(TextTiles[I], LastPos + 1, CurPos - LastPos)); - //Delete Text from cur. Tile that now is in new Tile - Delete(TextTiles[I], LastPos, CurPos - LastPos + 1); - TextTiles[I] := Trim (TextTiles[I]); - //Goto next Tile because cur. Tile can not have another Space - Inc(I) - end; - - //Inc I if Current Tile has no more Spaces - Inc(I) - end; - - I := high(TextTiles); - - {LastPos := 1; - LastBreak := 0; - I := Pos (' ', Value); - While (I <> 0) do - begin - if (glTextWidth(PChar(Copy (Value,LastBreak + 1,I - LastBreak))) > W) AND (LastPos <> 1) then - begin - //new Break - SetLength (TextTiles, L+1); - TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); - - Inc(L); - LastBreak := LastPos; - end; - - LastPos := I; - I := PosEx (' ', Value, I+1); - end; - - //Last Break - if (glTextWidth(PChar(Copy (Value,LastBreak + 1,Length(Value) - LastBreak))) > W) AND (LastPos <> 1) then - begin - //new Break - SetLength (TextTiles, L+1); - TextTiles[L] := Copy (Value, LastBreak + 1, LastPos - LastBreak); - - Inc(L); - LastBreak := LastPos; - end; - - //last Part - SetLength (TextTiles, L+1); - TextTiles[L] := Copy (Value, LastBreak + 1, Length(Value) - LastBreak); - - end; } - //Set Cursor Visible SelectBlink := True; STicks := GettickCount div 550; @@ -365,7 +228,7 @@ begin end; end; - if (False) then //No Width set Draw as one Long String + {if (False) then //No Width set Draw as one Long String begin if not (SelectBool AND SelectBlink) then Text2 := Text @@ -383,7 +246,9 @@ begin SetFontStyle(0); // reset to default end else - begin //Draw Text as Many Strings + begin} + //Now Use allways: + //Draw Text as Many Strings Y2 := Y + MoveY; for I := 0 to high(TextTiles) do begin @@ -405,7 +270,7 @@ begin end; SetFontStyle(0); // reset to default - end; + //end; end; end; -- cgit v1.2.3 From ef87bafc41e7321c8559a23005c79de88b625741 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 28 Apr 2007 09:25:53 +0000 Subject: SongScreen: Changed Alt+Letter now Jump to Artist Added Alt+Shift+Letter: Jump to Title git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@147 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 48 +++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 5814efbf..16ac46ab 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -199,25 +199,49 @@ begin SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); - //Jump To - if (SDL_ModState = KMOD_LALT) AND (Mode = 0) AND (PressedKey > SDLK_A) AND (PressedKey < SDLK_Z) then + //Jump to Artist/Titel + if (SDL_ModState and KMOD_LALT <> 0) AND (Mode = 0) AND (PressedKey > SDLK_A) AND (PressedKey < SDLK_Z) then begin Letter := UpCase(Chr(ScanCode)); - Log.LogError(Letter); I2 := Length(CatSongs.Song); - For I := 1 to high(CatSongs.Song) do + + //Jump To Titel + if (SDL_ModState = KMOD_LALT or KMOD_LSHIFT) then begin - if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND (UpCase(CatSongs.Song[(I + Interaction) mod I2].Title[1]) = Letter) then + For I := 1 to high(CatSongs.Song) do begin - SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); + if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND (UpCase(CatSongs.Song[(I + Interaction) mod I2].Title[1]) = Letter) then + begin + SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); - Music.PlayChange; + Music.PlayChange; - ChangeMusic; - SetScroll4; - UpdateLCD; - //Break and Exit - Exit; + ChangeMusic; + SetScroll4; + UpdateLCD; + //Break and Exit + Exit; + end; + end; + end + //Jump to Artist + else if (SDL_ModState = KMOD_LALT) then + begin + For I := 1 to high(CatSongs.Song) do + begin + if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND (Length(CatSongs.Song[(I + Interaction) mod I2].Artist)>0) AND (UpCase(CatSongs.Song[(I + Interaction) mod I2].Artist[1]) = Letter) then + begin + SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); + + Music.PlayChange; + + ChangeMusic; + SetScroll4; + UpdateLCD; + + //Break and Exit + Exit; + end; end; end; Exit; -- cgit v1.2.3 From 23e4d293dc19ce496da33b3929c9b71952148e86 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 28 Apr 2007 15:25:11 +0000 Subject: Fixed a Bug in UMenuText that causes that Text with only one Char is not displayed git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@148 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 0ebaede2..abf3784c 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -105,7 +105,7 @@ var end; procedure AddBreak(const From, bTo: Cardinal); begin - if (isBreak) OR (bTo - From > 1) then + if (isBreak) OR (bTo - From >= 1) then begin Inc(Len); SetLength (TextTiles, Len); @@ -122,6 +122,18 @@ begin //Set TExtstring TextString := Value; + //Set Cursor Visible + SelectBlink := True; + STicks := GettickCount div 550; + + //Exit if there is no Need to Create Tiles + If (W <= 0) and (Pos('\n', Value) = 0) then + begin + SetLength (TextTiles, 1); + TextTiles[0] := Value; + Exit; + end; + //Create Tiles //Reset Text Array SetLength (TextTiles, 0); @@ -133,6 +145,7 @@ begin LastBreak := 1; FirstWord := 1; + if (W > 0) then begin //Set Font Propertys @@ -140,7 +153,6 @@ begin SetFontSize(Size); end; - //go Through Text While (GetNextPos) do begin @@ -186,10 +198,6 @@ begin end; //Add Ending AddBreak(LastBreak, Length(Value)+1); - - //Set Cursor Visible - SelectBlink := True; - STicks := GettickCount div 550; end; Procedure TText.DeleteLastL; -- cgit v1.2.3 From bda4fa8e57ca63a1d591433f120b4226d6a5d327 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 29 Apr 2007 17:50:29 +0000 Subject: Added 2 new Buttons to ScreenMain: Multi and Stats Updated Language Fiels to Fit with new Buttons Some CodeClean Up in Menu Class and in Screens Some minor Bug fixes I forgot about Added ability to group Buttons within a Screen New Theme Object: ButtonCollection: Same Attributes as a Button Plus FirstChild: Defining the First Button in the Group. For Example: SingSolo is 1, SingMulti Button is 2, in ScreenMain Added Attribute to Theme Button: Parent: Number of the assigned Group, 0 for no Group Used new Abilitys in MainScreen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@149 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphic.pas | 28 +-- Game/Code/Classes/UThemes.pas | 123 ++++++++-- Game/Code/Menu/UMenu.pas | 348 ++++++++++++++++++++++----- Game/Code/Menu/UMenuButton.pas | 17 +- Game/Code/Menu/UMenuButtonCollection.pas | 59 +++++ Game/Code/Menu/UMenuInteract.pas | 2 +- Game/Code/Menu/UMenuText.pas | 2 + Game/Code/Screens/UScreenCredits.pas | 6 +- Game/Code/Screens/UScreenEdit.pas | 6 +- Game/Code/Screens/UScreenEditConvert.pas | 6 +- Game/Code/Screens/UScreenEditHeader.pas | 6 +- Game/Code/Screens/UScreenEditSub.pas | 6 +- Game/Code/Screens/UScreenLevel.pas | 8 +- Game/Code/Screens/UScreenLoading.pas | 16 +- Game/Code/Screens/UScreenMain.pas | 79 ++++-- Game/Code/Screens/UScreenName.pas | 9 +- Game/Code/Screens/UScreenOpen.pas | 6 +- Game/Code/Screens/UScreenOptions.pas | 91 +------ Game/Code/Screens/UScreenOptionsAdvanced.pas | 14 +- Game/Code/Screens/UScreenOptionsGame.pas | 14 +- Game/Code/Screens/UScreenOptionsGraphics.pas | 14 +- Game/Code/Screens/UScreenOptionsLyrics.pas | 14 +- Game/Code/Screens/UScreenOptionsRecord.pas | 14 +- Game/Code/Screens/UScreenOptionsSound.pas | 15 +- Game/Code/Screens/UScreenOptionsThemes.pas | 14 +- Game/Code/Screens/UScreenPartyNewRound.pas | 13 +- Game/Code/Screens/UScreenPartyOptions.pas | 45 +--- Game/Code/Screens/UScreenPartyPlayer.pas | 8 +- Game/Code/Screens/UScreenPartyScore.pas | 8 +- Game/Code/Screens/UScreenPartyWin.pas | 8 +- Game/Code/Screens/UScreenScore.pas | 54 +---- Game/Code/Screens/UScreenSing.pas | 8 +- Game/Code/Screens/UScreenSong.pas | 8 +- Game/Code/Screens/UScreenSongJumpto.pas | 11 +- Game/Code/Screens/UScreenSongMenu.pas | 48 +--- Game/Code/Screens/UScreenStatDetail.pas | 26 +- Game/Code/Screens/UScreenStatMain.pas | 13 +- Game/Code/Screens/UScreenTop5.pas | 8 +- Game/Code/UltraStar.dpr | 26 +- Languages/English.ini | 19 +- Languages/German.ini | 16 +- Languages/readme.txt | 9 + Themes/Deluxe.ini | 79 +++++- 43 files changed, 777 insertions(+), 547 deletions(-) create mode 100644 Game/Code/Menu/UMenuButtonCollection.pas diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index df7cd411..39eea53d 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -375,7 +375,7 @@ end; procedure LoadScreens; begin - ScreenLoading := TScreenLoading.Create(''); + ScreenLoading := TScreenLoading.Create; ScreenLoading.onShow; Display.ActualScreen := @ScreenLoading; ScreenLoading.Draw; @@ -397,35 +397,35 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Song Menu', 3); Log.BenchmarkStart(3); ScreenSing := TScreenSing.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Sing', 3); Log.BenchmarkStart(3); - ScreenScore := TScreenScore.Create(''); + ScreenScore := TScreenScore.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Score', 3); Log.BenchmarkStart(3); ScreenTop5 := TScreenTop5.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Top5', 3); Log.BenchmarkStart(3); - ScreenOptions := TScreenOptions.Create(''); + ScreenOptions := TScreenOptions.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options', 3); Log.BenchmarkStart(3); - ScreenOptionsGame := TScreenOptionsGame.Create(''); + ScreenOptionsGame := TScreenOptionsGame.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Game', 3); Log.BenchmarkStart(3); - ScreenOptionsGraphics := TScreenOptionsGraphics.Create(''); + ScreenOptionsGraphics := TScreenOptionsGraphics.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Graphics', 3); Log.BenchmarkStart(3); - ScreenOptionsSound := TScreenOptionsSound.Create(''); + ScreenOptionsSound := TScreenOptionsSound.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Sound', 3); Log.BenchmarkStart(3); - ScreenOptionsLyrics := TScreenOptionsLyrics.Create(''); + ScreenOptionsLyrics := TScreenOptionsLyrics.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Lyrics', 3); Log.BenchmarkStart(3); - ScreenOptionsThemes := TScreenOptionsThemes.Create(''); + ScreenOptionsThemes := TScreenOptionsThemes.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Themes', 3); Log.BenchmarkStart(3); ScreenOptionsRecord := TScreenOptionsRecord.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Record', 3); Log.BenchmarkStart(3); - ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create(''); + ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Options Advanced', 3); Log.BenchmarkStart(3); - ScreenEditSub := TScreenEditSub.Create(''); + ScreenEditSub := TScreenEditSub.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit Sub', 3); Log.BenchmarkStart(3); - ScreenEdit := TScreenEdit.Create(''); + ScreenEdit := TScreenEdit.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit', 3); Log.BenchmarkStart(3); - ScreenEditConvert := TScreenEditConvert.Create(''); + ScreenEditConvert := TScreenEditConvert.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen EditConvert', 3); Log.BenchmarkStart(3); // ScreenEditHeader := TScreenEditHeader.Create(Skin.ScoreBG); // Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Edit Header', 3); Log.BenchmarkStart(3); - ScreenOpen := TScreenOpen.Create(''); + ScreenOpen := TScreenOpen.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Open', 3); Log.BenchmarkStart(3); ScreenSingModi := TScreenSingModi.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Sing with Modi support', 3); Log.BenchmarkStart(3); @@ -447,7 +447,7 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Main', 3); Log.BenchmarkStart(3); ScreenStatDetail := TScreenStatDetail.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Detail', 3); Log.BenchmarkStart(3); - ScreenCredits := TScreenCredits.Create(''); + ScreenCredits := TScreenCredits.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Credits', 3); Log.BenchmarkStart(3); end; diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 90bab7c1..31081f23 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -142,8 +142,21 @@ type DeSelectReflectionspacing : Real; FadeTex: string; FadeTexPos: integer; + + //Button Collection Mod + Parent: Byte; //Number of the Button Collection this Button is assigned to. IF 0: No Assignement + end; + + //Button Collection Mod + TThemeButtonCollection = record + Style: TThemeButton; + ChildCount: Byte; //No of assigned Childs + FirstChild: Byte; //No of Child on whose Interaction Position the Button should be end; + AThemeButtonCollection = array of TThemeButtonCollection; + PAThemeButtonCollection = ^AThemeButtonCollection; + TThemeSelect = record Tex: string; TexSBG: string; @@ -186,10 +199,14 @@ type SkipX: integer; end; + PThemeBasic = ^TThemeBasic; TThemeBasic = class Background: TThemeBackground; Text: AThemeText; Static: AThemeStatic; + + //Button Collection Mod + ButtonCollection: AThemeButtonCollection; end; TThemeLoading = class(TThemeBasic) @@ -199,15 +216,16 @@ type TThemeMain = class(TThemeBasic) ButtonSolo: TThemeButton; -// ButtonMulti: TThemeButton; + ButtonMulti: TThemeButton; + ButtonStat: TThemeButton; ButtonEditor: TThemeButton; ButtonOptions: TThemeButton; ButtonExit: TThemeButton; TextDescription: TThemeText; TextDescriptionLong: TThemeText; - Description: array[0..4] of string; - DescriptionLong: array[0..4] of string; + Description: array[0..5] of string; + DescriptionLong: array[0..5] of string; end; TThemeName = class(TThemeBasic) @@ -604,12 +622,16 @@ type end; TTheme = class + private {$IFDEF THEMESAVE} ThemeIni: TIniFile; {$ELSE} ThemeIni: TMemIniFile; {$ENDIF} + LastThemeBasic: TThemeBasic; + public + Loading: TThemeLoading; Main: TThemeMain; Name: TThemeName; @@ -656,7 +678,9 @@ type procedure ThemeLoadTexts(var ThemeText: AThemeText; Name: string); procedure ThemeLoadStatic(var ThemeStatic: TThemeStatic; Name: string); procedure ThemeLoadStatics(var ThemeStatic: AThemeStatic; Name: string); - procedure ThemeLoadButton(var ThemeButton: TThemeButton; Name: string); + procedure ThemeLoadButton(var ThemeButton: TThemeButton; Name: string; const Collections: PAThemeButtonCollection = nil); + procedure ThemeLoadButtonCollection(var Collection: TThemeButtonCollection; Name: string); + procedure ThemeLoadButtonCollections(var Collections: AThemeButtonCollection; Name: string); procedure ThemeLoadSelect(var ThemeSelect: TThemeSelect; Name: string); procedure ThemeLoadSelectSlide(var ThemeSelectS: TThemeSelectSlide; Name: string); @@ -692,7 +716,7 @@ uses {{$IFDEF TRANSLATE} ULanguage, {{$ENDIF} -USkins, UIni; +USkins, UIni, Dialogs; constructor TTheme.Create(FileName: string); begin @@ -830,24 +854,30 @@ begin ThemeLoadText(Main.TextDescription, 'MainTextDescription'); ThemeLoadText(Main.TextDescriptionLong, 'MainTextDescriptionLong'); ThemeLoadButton(Main.ButtonSolo, 'MainButtonSolo'); + ThemeLoadButton(Main.ButtonMulti, 'MainButtonMulti'); + ThemeLoadButton(Main.ButtonStat, 'MainButtonStats'); ThemeLoadButton(Main.ButtonEditor, 'MainButtonEditor'); ThemeLoadButton(Main.ButtonOptions, 'MainButtonOptions'); ThemeLoadButton(Main.ButtonExit, 'MainButtonExit'); - //Score Text Translation Start + //Main Desc Text Translation Start {{$IFDEF TRANSLATE} Main.Description[0] := Language.Translate('SING_SING'); Main.DescriptionLong[0] := Language.Translate('SING_SING_DESC'); - Main.Description[1] := Language.Translate('SING_EDITOR'); - Main.DescriptionLong[1] := Language.Translate('SING_EDITOR_DESC'); - Main.Description[2] := Language.Translate('SING_GAME_OPTIONS'); - Main.DescriptionLong[2] := Language.Translate('SING_GAME_OPTIONS_DESC'); - Main.Description[3] := Language.Translate('SING_EXIT'); - Main.DescriptionLong[3] := Language.Translate('SING_EXIT_DESC'); + Main.Description[1] := Language.Translate('SING_MULTI'); + Main.DescriptionLong[1] := Language.Translate('SING_MULTI_DESC'); + Main.Description[2] := Language.Translate('SING_STATS'); + Main.DescriptionLong[2] := Language.Translate('SING_STATS_DESC'); + Main.Description[3] := Language.Translate('SING_EDITOR'); + Main.DescriptionLong[3] := Language.Translate('SING_EDITOR_DESC'); + Main.Description[4] := Language.Translate('SING_GAME_OPTIONS'); + Main.DescriptionLong[4] := Language.Translate('SING_GAME_OPTIONS_DESC'); + Main.Description[5] := Language.Translate('SING_EXIT'); + Main.DescriptionLong[5] := Language.Translate('SING_EXIT_DESC'); {{$ENDIF} - //Score Text Translation End + //Main Desc Text Translation End Main.TextDescription.Text := Main.Description[0]; Main.TextDescriptionLong.Text := Main.DescriptionLong[0]; @@ -931,14 +961,14 @@ begin // Sing ThemeLoadBasic(Sing, 'Sing'); - //moveable singbar mod - ThemeLoadStatic(Sing.StaticP1SingBar, 'SingP1SingBar'); - ThemeLoadStatic(Sing.StaticP1TwoPSingBar, 'SingP1TwoPSingBar'); - ThemeLoadStatic(Sing.StaticP1ThreePSingBar, 'SingP1ThreePSingBar'); - ThemeLoadStatic(Sing.StaticP2RSingBar, 'SingP2RSingBar'); - ThemeLoadStatic(Sing.StaticP2MSingBar, 'SingP2MSingBar'); - ThemeLoadStatic(Sing.StaticP3SingBar, 'SingP3SingBar'); - //eoa moveable singbar + //moveable singbar mod + ThemeLoadStatic(Sing.StaticP1SingBar, 'SingP1SingBar'); + ThemeLoadStatic(Sing.StaticP1TwoPSingBar, 'SingP1TwoPSingBar'); + ThemeLoadStatic(Sing.StaticP1ThreePSingBar, 'SingP1ThreePSingBar'); + ThemeLoadStatic(Sing.StaticP2RSingBar, 'SingP2RSingBar'); + ThemeLoadStatic(Sing.StaticP2MSingBar, 'SingP2MSingBar'); + ThemeLoadStatic(Sing.StaticP3SingBar, 'SingP3SingBar'); + //eoa moveable singbar ThemeLoadStatic(Sing.StaticP1, 'SingP1Static'); ThemeLoadText(Sing.TextP1, 'SingP1Text'); @@ -1315,6 +1345,9 @@ begin ThemeLoadBackground(Theme.Background, Name); ThemeLoadTexts(Theme.Text, Name + 'Text'); ThemeLoadStatics(Theme.Static, Name + 'Static'); + ThemeLoadButtonCollections(Theme.ButtonCollection, Name + 'ButtonCollection'); + + LastThemeBasic := Theme; end; procedure TTheme.ThemeLoadBackground(var ThemeBackground: TThemeBackground; Name: string); @@ -1417,11 +1450,40 @@ begin end; end; -procedure TTheme.ThemeLoadButton(var ThemeButton: TThemeButton; Name: string); +//Button Collection Mod +procedure TTheme.ThemeLoadButtonCollection(var Collection: TThemeButtonCollection; Name: string); +var T: Integer; +begin + //Load Collection Style + ThemeLoadButton(Collection.Style, Name); + + //Load Other Attributes + T := ThemeIni.ReadInteger (Name, 'FirstChild', 0); + if (T > 0) And (T < 256) then + Collection.FirstChild := T + else + Collection.FirstChild := 0; +end; + +procedure TTheme.ThemeLoadButtonCollections(var Collections: AThemeButtonCollection; Name: string); +var + I: integer; +begin + I := 1; + while ThemeIni.SectionExists(Name + IntToStr(I)) do begin + SetLength(Collections, I); + ThemeLoadButtonCollection(Collections[I-1], Name + IntToStr(I)); + Inc(I); + end; +end; +//End Button Collection Mod + +procedure TTheme.ThemeLoadButton(var ThemeButton: TThemeButton; Name: string; const Collections: PAThemeButtonCollection); var C: integer; TLen: integer; T: integer; + Collections2: PAThemeButtonCollection; begin DecimalSeparator := '.'; ThemeButton.Tex := ThemeIni.ReadString(Name, 'Tex', ''); @@ -1477,6 +1539,23 @@ begin if (ThemeButton.FadeTexPos > 4) Or (ThemeButton.FadeTexPos < 0) then ThemeButton.FadeTexPos := 0; + //Button Collection Mod + T := ThemeIni.ReadInteger(Name, 'Parent', 0); + + //Set Collections to Last Basic Collections if no valid Value + if (Collections = nil) then + Collections2 := @LastThemeBasic.ButtonCollection + else + Collections2 := Collections; + //Test for valid Value + if (Collections2 <> nil) AND (T > 0) AND (T <= Length(Collections2^)) then + begin + Inc(Collections2^[T-1].ChildCount); + ThemeButton.Parent := T; + end + else + ThemeButton.Parent := 0; + //Read ButtonTexts TLen := ThemeIni.ReadInteger(Name, 'Texts', 0); SetLength(ThemeButton.Text, TLen); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index 28ba17e7..fc217dba 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -3,7 +3,7 @@ unit UMenu; interface uses OpenGL12, SysUtils, UTexture, UMenuStatic, UMenuText, UMenuButton, UMenuSelect, UMenuSelectSlide, - UMenuInteract, UThemes; + UMenuInteract, UThemes, UMenuButtonCollection; type { Int16 = SmallInt;} @@ -18,12 +18,13 @@ type Button: array of TButton; Selects: array of TSelect; SelectsS: array of TSelectSlide; + ButtonCollection: Array of TButtonCollection; BackImg: TTexture; BackW: integer; BackH: integer; public Text: array of TText; - Static: array of TStatic; + Static: array of TStatic; mX: integer; // mouse X mY: integer; // mouse Y @@ -33,14 +34,20 @@ type destructor Destroy; override; constructor Create; overload; virtual; - constructor Create(Back: string); overload; virtual; // Back is a JPG resource name for background - constructor Create(Back: string; W, H: integer); overload; virtual; // W and H are the number of overlaps + //constructor Create(Back: string); overload; virtual; // Back is a JPG resource name for background + //constructor Create(Back: string; W, H: integer); overload; virtual; // W and H are the number of overlaps // interaction procedure AddInteraction(Typ, Num: integer); procedure SetInteraction(Num: integer); property Interaction: integer read SelInteraction write SetInteraction; + //Procedure Load BG, Texts, Statics and Button Collections from ThemeBasic + procedure LoadFromTheme(const ThemeBasic: TThemeBasic); + + procedure PrepareButtonCollections(const Collections: AThemeButtonCollection); + procedure AddButtonCollection(const ThemeCollection: TThemeButtonCollection; Const Num: Byte); + // background procedure AddBackground(Name: string); @@ -70,6 +77,7 @@ type procedure AddButtonText(AddX, AddY: real; AddText: string); overload; procedure AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; AddText: string); overload; procedure AddButtonText(AddX, AddY: real; ColR, ColG, ColB: real; Font: integer; Size: integer; Align: integer; AddText: string); overload; + procedure AddButtonText(CustomButton: TButton; AddX, AddY: real; ColR, ColG, ColB: real; Font: integer; Size: integer; Align: integer; AddText: string); overload; // select function AddSelect(ThemeSelect: TThemeSelect; var Data: integer; Values: array of string): integer; overload; @@ -113,7 +121,8 @@ type procedure SetAnimationProgress(Progress: real); virtual; - + function IsSelectable(Int: Cardinal): Boolean; + procedure InteractNext; virtual; procedure InteractCustom(CustomSwitch: integer); virtual; procedure InteractPrev; virtual; @@ -132,13 +141,14 @@ const iSelect = 1; iText = 2; iSelectS = 3; + iBCollectionChild = 5; // fBlack = 0; // fade type // fWhite = 1; implementation -uses UMain, UDrawTexture, UGraphic, UDisplay, UCovers, USkins; +uses UMain, UDrawTexture, UGraphic, UDisplay, UCovers, USkins, Dialogs; destructor TMenu.Destroy; begin @@ -157,7 +167,7 @@ begin //Set ButtonPos to Autoset Length ButtonPos := -1; end; - +{ constructor TMenu.Create(Back: String); begin inherited Create; @@ -183,7 +193,7 @@ begin BackImg.H := BackImg.H / H; BackW := W; BackH := H; -end; +end; } procedure TMenu.AddInteraction(Typ, Num: integer); var @@ -204,25 +214,67 @@ begin // set inactive OldNum := Interactions[Interaction].Num; OldTyp := Interactions[Interaction].Typ; + + NewNum := Interactions[Num].Num; + NewTyp := Interactions[Num].Typ; + case OldTyp of iButton: Button[OldNum].Selected := False; iSelect: Selects[OldNum].Selected := False; iText: Text[OldNum].Selected := False; iSelectS: SelectsS[OldNum].Selected := False; + //Button Collection Mod + iBCollectionChild: + begin + Button[OldNum].Selected := False; + + //Deselect Collection if Next Button is Not from Collection + if (NewTyp <> iButton) Or (Button[NewNum].Parent <> Button[OldNum].Parent) then + ButtonCollection[Button[OldNum].Parent-1].Selected := False; + end; end; // set active SelInteraction := Num; - NewNum := Interactions[Interaction].Num; - NewTyp := Interactions[Interaction].Typ; case NewTyp of iButton: Button[NewNum].Selected := True; iSelect: Selects[NewNum].Selected := True; iText: Text[NewNum].Selected := True; iSelectS: SelectsS[NewNum].Selected := True; + + //Button Collection Mod + iBCollectionChild: + begin + Button[NewNum].Selected := True; + ButtonCollection[Button[NewNum].Parent-1].Selected := True; + end; end; end; +//---------------------- +//LoadFromTheme - Load BG, Texts, Statics and +//Button Collections from ThemeBasic +//---------------------- +procedure TMenu.LoadFromTheme(const ThemeBasic: TThemeBasic); +var + I: Integer; +begin + //Add Button Collections (Set Button CollectionsLength) + //Button Collections are Created when the first ChildButton is Created + PrepareButtonCollections(ThemeBasic.ButtonCollection); + + + //Add Background + AddBackground(ThemeBasic.Background.Tex); + + //Add Statics and Texts + for I := 0 to High(ThemeBasic.Static) do + AddStatic(ThemeBasic.Static[I]); + + for I := 0 to High(ThemeBasic.Text) do + AddText(ThemeBasic.Text[I]); +end; + procedure TMenu.AddBackground(Name: string); begin if Name <> '' then begin @@ -235,6 +287,84 @@ begin end; end; +//---------------------- +//PrepareButtonCollections: +//Add Button Collections (Set Button CollectionsLength) +//---------------------- +procedure TMenu.PrepareButtonCollections(const Collections: AThemeButtonCollection); +var + I: Integer; +begin + SetLength(ButtonCollection, Length(Collections)); + For I := 0 to High(ButtonCollection) do + AddButtonCollection(Collections[I], I); +end; + +//---------------------- +//AddButtonCollection: +//Create a Button Collection; +//---------------------- +procedure TMenu.AddButtonCollection(const ThemeCollection: TThemeButtonCollection; Const Num: Byte); +var + BT, BTLen: Integer; +begin + if (Num > High(ButtonCollection)) then + exit; + + ButtonCollection[Num] := TButtonCollection.Create(Texture.GetTexture(Skin.GetTextureFileName(ThemeCollection.Style.Tex), ThemeCollection.Style.Typ, true)); // use cache texture + + //Set Parent menu + ButtonCollection[Num].ScreenButton := @Self.Button; + + //Set Attributes + ButtonCollection[Num].FirstChild := ThemeCollection.FirstChild; + ButtonCollection[Num].CountChilds := ThemeCollection.ChildCount; + ButtonCollection[Num].Parent := Num + 1; + + //Set Style + ButtonCollection[Num].X := ThemeCollection.Style.X; + ButtonCollection[Num].Y := ThemeCollection.Style.Y; + ButtonCollection[Num].W := ThemeCollection.Style.W; + ButtonCollection[Num].H := ThemeCollection.Style.H; + ButtonCollection[Num].SelectColR := ThemeCollection.Style.ColR; + ButtonCollection[Num].SelectColG := ThemeCollection.Style.ColG; + ButtonCollection[Num].SelectColB := ThemeCollection.Style.ColB; + ButtonCollection[Num].SelectInt := ThemeCollection.Style.Int; + ButtonCollection[Num].DeselectColR := ThemeCollection.Style.DColR; + ButtonCollection[Num].DeselectColG := ThemeCollection.Style.DColG; + ButtonCollection[Num].DeselectColB := ThemeCollection.Style.DColB; + ButtonCollection[Num].DeselectInt := ThemeCollection.Style.DInt; + ButtonCollection[Num].Texture.TexX1 := 0; + ButtonCollection[Num].Texture.TexY1 := 0; + ButtonCollection[Num].Texture.TexX2 := 1; + ButtonCollection[Num].Texture.TexY2 := 1; + ButtonCollection[Num].SetSelect(false); + + ButtonCollection[Num].Reflection := ThemeCollection.Style.Reflection; + ButtonCollection[Num].Reflectionspacing := ThemeCollection.Style.ReflectionSpacing; + ButtonCollection[Num].DeSelectReflectionspacing := ThemeCollection.Style.DeSelectReflectionSpacing; + + ButtonCollection[Num].Z := ThemeCollection.Style.Z; + + //Some Things from ButtonFading + ButtonCollection[Num].SelectH := ThemeCollection.Style.SelectH; + ButtonCollection[Num].SelectW := ThemeCollection.Style.SelectW; + + ButtonCollection[Num].Fade := ThemeCollection.Style.Fade; + ButtonCollection[Num].FadeText := ThemeCollection.Style.FadeText; + ButtonCollection[Num].FadeTex := Texture.GetTexture(Skin.GetTextureFileName(ThemeCollection.Style.FadeTex), ThemeCollection.Style.Typ, true); + ButtonCollection[Num].FadeTexPos := ThemeCollection.Style.FadeTexPos; + + + BTLen := Length(ThemeCollection.Style.Text); + for BT := 0 to BTLen-1 do begin + AddButtonText(ButtonCollection[Num], ThemeCollection.Style.Text[BT].X, ThemeCollection.Style.Text[BT].Y, + ThemeCollection.Style.Text[BT].ColR, ThemeCollection.Style.Text[BT].ColG, ThemeCollection.Style.Text[BT].ColB, + ThemeCollection.Style.Text[BT].Font, ThemeCollection.Style.Text[BT].Size, ThemeCollection.Style.Text[BT].Align, + ThemeCollection.Style.Text[BT].Text); + end; +end; + function TMenu.AddStatic(ThemeStatic: TThemeStatic): integer; begin Result := AddStatic(ThemeStatic.X, ThemeStatic.Y, ThemeStatic.W, ThemeStatic.H, ThemeStatic.Z, @@ -415,6 +545,20 @@ begin ThemeButton.Text[BT].Font, ThemeButton.Text[BT].Size, ThemeButton.Text[BT].Align, ThemeButton.Text[BT].Text); end; + + //BAutton Collection Mod + if (ThemeButton.Parent <> 0) then + begin + //If Collection Exists then Change Interaction to Child Button + if (@ButtonCollection[ThemeButton.Parent-1] <> nil) then + begin + Interactions[High(Interactions)].Typ := iBCollectionChild; + Button[Result].Visible := False; + Button[Result].Parent := ThemeButton.Parent; + if (ButtonCollection[ThemeButton.Parent-1].Fade) then + Button[Result].Texture.Alpha := 0; + end; + end; end; function TMenu.AddButton(X, Y, W, H: real; Name: String): integer; @@ -473,6 +617,10 @@ begin Button[Result].Reflectionspacing := ReflectionSpacing; Button[Result].DeSelectReflectionspacing := DeSelectReflectionSpacing; + //Button Collection Mod + Button[Result].Parent := 0; + + // adds interaction AddInteraction(iButton, Result); Interaction := 0; @@ -527,6 +675,10 @@ begin for J := 0 to Length(Text) - 1 do Text[J].Draw; + // Draw all ButtonCollections + For J := 0 to High(ButtonCollection) do + ButtonCollection[J].Draw; + // Second, we draw all of our buttons for J := 0 to Length(Button) - 1 do Button[J].Draw; @@ -595,60 +747,68 @@ begin SetLength(WidgetsRect, MinNumber); end;} +function TMenu.IsSelectable(Int: Cardinal): Boolean; +begin + Result := True; + Case Interactions[Int].Typ of + //Button + iButton: Result := Button[Interactions[Int].Num].Visible and Button[Interactions[Int].Num].Selectable; + //Select + iSelect: Result := True; + //Select Slide + iSelectS: Result := SelectsS[Interactions[Int].Num].Visible; + + //ButtonCollection Child + iBCollectionChild: + Result := (ButtonCollection[Button[Interactions[Int].Num].Parent - 1].FirstChild - 1 = Int) AND ((Interactions[Interaction].Typ <> iBCollectionChild) OR (Button[Interactions[Interaction].Num].Parent <> Button[Interactions[Int].Num].Parent)); + end; +end; + procedure TMenu.InteractNext; var - Num: integer; - Typ: integer; - Again: boolean; + Int: Integer; begin - Again := true; + Int := Interaction; // change interaction as long as it's needed - while (Again = true) do begin - Num := (Interaction + 1) Mod Length(Interactions); - Interaction := Num; - Again := false; // reset, default to accept changing interaction - - - // checking newly interacted element - Num := Interactions[Interaction].Num; - Typ := Interactions[Interaction].Typ; - case Typ of - iButton: - begin - if Button[Num].Selectable = false then Again := True; - end; - end; // case - end; // while + repeat + Int := (Int + 1) Mod Length(Interactions); + + //If no Interaction is Selectable Simply Select Next + if (Int = Interaction) then + begin + Int := (Int + 1) Mod Length(Interactions); + Break; + end; + Until IsSelectable(Int); + + //Set Interaction + Interaction := Int; end; procedure TMenu.InteractPrev; var - Num: integer; - Typ: integer; - Again: boolean; + Int: Integer; begin - Again := true; + Int := Interaction; // change interaction as long as it's needed - while (Again = true) do begin - Num := SelInteraction - 1; - if Num = -1 then Num := High(Interactions); - Interaction := Num; - Again := false; // reset, default to accept changing interaction - - // checking newly interacted element - Num := Interactions[Interaction].Num; - Typ := Interactions[Interaction].Typ; - case Typ of - iButton: - begin - if Button[Num].Selectable = false then Again := True; - end; - end; // case - end; // while - + repeat + Int := Int - 1; + if Int = -1 then Int := High(Interactions); + + //If no Interaction is Selectable Simply Select Next + if (Int = Interaction) then + begin + Int := SelInteraction - 1; + if Int = -1 then Int := High(Interactions); + Break; + end; + Until IsSelectable(Int); + + //Set Interaction + Interaction := Int end; @@ -658,7 +818,9 @@ var Typ: integer; Again: boolean; begin - if num<0 then begin + //Code Commented atm, because it needs to be Rewritten + //it doesn't work with Button Collections + {then begin CustomSwitch:= CustomSwitch*(-1); Again := true; // change interaction as long as it's needed @@ -698,7 +860,7 @@ begin end; end; // case end; // while - end + end } end; @@ -746,6 +908,24 @@ begin end; end; +procedure TMenu.AddButtonText(CustomButton: TButton; AddX, AddY: real; ColR, ColG, ColB: real; Font: integer; Size: integer; Align: integer; AddText: string); +var + Il: integer; +begin + with CustomButton do begin + Il := Length(Text); + SetLength(Text, Il+1); + Text[Il] := TText.Create(X + AddX, Y + AddY, AddText); + Text[Il].ColR := ColR; + Text[Il].ColG := ColG; + Text[Il].ColB := ColB; + Text[Il].Int := 1;//0.5; + Text[Il].Style := Font; + Text[Il].Size := Size; + Text[Il].Align := Align; + end; +end; + function TMenu.AddSelect(ThemeSelect: TThemeSelect; var Data: integer; Values: array of string): integer; var SO: integer; @@ -1114,6 +1294,28 @@ begin if Value <= High(SelectsS[Num].TextOptT) then SelectsS[Num].SelectedOption := Value; end; + //Button Collection Mod + iBCollectionChild: + begin + + //Select Next Button in Collection + For Num := 1 to High(Button) do + begin + Value := (Interaction + Num) Mod Length(Button); + if Value = 0 then + begin + InteractNext; + Break; + end; + if (Button[Value].Parent = Button[Interaction].Parent) then + begin + Interaction := Value; + Break; + end; + end; + end; + //interact Next if there is Nothing to Change + else InteractNext; end; end; @@ -1141,7 +1343,45 @@ begin if Value >= 0 then SelectsS[Num].SelectedOption := Value; end; - end + //Button Collection Mod + iBCollectionChild: + begin + //Select Prev Button in Collection + For Num := High(Button) downto 1 do + begin + Value := (Interaction + Num) Mod Length(Button); + if Value = High(Button) then + begin + InteractPrev; + Break; + end; + if (Button[Value].Parent = Button[Interaction].Parent) then + begin + Interaction := Value; + Break; + end; + end; + end; + //interact Prev if there is Nothing to Change + else + begin + InteractPrev; + //If ButtonCollection with more than 1 Entry then Select Last Entry + if (ButtonCollection[Button[Interactions[Interaction].Num].Parent-1].CountChilds > 1) then + begin + //Select Last Child + For Num := High(Button) downto 1 do + begin + Value := (Interaction + Num) Mod Length(Button); + if (Button[Value].Parent = Button[Interaction].Parent) then + begin + Interaction := Value; + Break; + end; + end; + end; + end; + end; end; procedure TMenu.AddBox(X, Y, W, H: real); diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index 34d45083..fde808e2 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -4,8 +4,9 @@ interface uses TextGL, UTexture, OpenGL12, UMenuText; type + CButton = class of TButton; TButton = class - private + protected SelectBool: Boolean; FadeProgress: Real; @@ -14,9 +15,10 @@ type DeSelectW: Real; DeSelectH: Real; PosX: Real; - PosY: Real; - + PosY: Real; + constructor Create(); overload; + public Text: Array of TText; Texture: TTexture; // Button Screen position and size @@ -40,6 +42,9 @@ type Selectable: boolean; + //No of the Parent Collection, 0 if in no Collection + Parent: Byte; + SelectColR: real; SelectColG: real; SelectColB: real; @@ -60,7 +65,7 @@ type procedure SetW(Value: real); procedure SetH(Value: real); - procedure SetSelect(Value: Boolean); + procedure SetSelect(Value: Boolean); virtual; property X: real read PosX write SetX; property Y: real read PosY write SetY; property Z: real read Texture.z write Texture.z; @@ -68,7 +73,7 @@ type property H: real read DeSelectH write SetH; property Selected: Boolean read SelectBool write SetSelect; - procedure Draw; + procedure Draw; virtual; constructor Create(Textura: TTexture); overload; destructor Destroy; override; @@ -250,6 +255,8 @@ begin PosX := 0; PosY := 0; + + Parent := 0; end; // ***** Public methods ****** // diff --git a/Game/Code/Menu/UMenuButtonCollection.pas b/Game/Code/Menu/UMenuButtonCollection.pas new file mode 100644 index 00000000..66ac70fc --- /dev/null +++ b/Game/Code/Menu/UMenuButtonCollection.pas @@ -0,0 +1,59 @@ +unit UMenuButtonCollection; + +interface +uses UMenuButton; + +type + //---------------- + //TButtonCollection + //No Extra Attributes or Functions ATM + //---------------- + AButton = Array of TButton; + PAButton = ^AButton; + TButtonCollection = class(TButton) + //num of the First Button, that can be Selected + FirstChild: Byte; + CountChilds: Byte; + + ScreenButton: PAButton; + + procedure SetSelect(Value : Boolean); override; + procedure Draw; override; + end; + +implementation + +procedure TButtonCollection.SetSelect(Value : Boolean); +var I: Integer; +begin + inherited; + + //Set Visible for Every Button that is a Child of this ButtonCollection + if (Not Fade) then + For I := 0 to High(ScreenButton^) do + if (ScreenButton^[I].Parent = Parent) then + ScreenButton^[I].Visible := Value; +end; + +procedure TButtonCollection.Draw; +var I: Integer; +begin + inherited; + //If fading is activated, Fade Child Buttons + if (Fade) then + begin + For I := 0 to High(ScreenButton^) do + if (ScreenButton^[I].Parent = Parent) then + begin + if (FadeProgress < 0.5) then + ScreenButton^[I].Visible := SelectBool + else + ScreenButton^[I].Texture.Alpha := (FadeProgress-0.666)*3; + //ScreenButton^[I].Text[0]. + end; + end; +end; + + + +end. diff --git a/Game/Code/Menu/UMenuInteract.pas b/Game/Code/Menu/UMenuInteract.pas index 3f2960b8..43249e3e 100644 --- a/Game/Code/Menu/UMenuInteract.pas +++ b/Game/Code/Menu/UMenuInteract.pas @@ -4,7 +4,7 @@ interface type TInteract = record // for moving thru menu - Typ: integer; // 0 - button, 1 - select + Typ: integer; // 0 - button, 1 - select, 2 - Text, 3 - Select SLide, 5 - ButtonCollection Child Num: integer; // number of this item in proper list like buttons, selects end; diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index abf3784c..4cb48cad 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -162,6 +162,7 @@ begin //Look for Break before the Break if (glTextWidth(PChar(Copy(Value, LastBreak, NextPos - LastBreak + 1))) > W) AND (NextPos-LastPos > 1) then begin + isBreak := False; //Not the First word after Break, so we don't have to break within a word if (FirstWord > 1) then begin @@ -175,6 +176,7 @@ begin end; end; + isBreak := True; //Add Break from Text AddBreak(LastBreak, NextPos); end diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index 2e5f4abc..0411c7b6 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -14,7 +14,7 @@ type Credits_Alpha: Cardinal; Fadeout: boolean; - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; function Draw: boolean; override; procedure onShow; override; @@ -97,11 +97,11 @@ begin end; //fi end; -constructor TScreenCredits.Create(Back: String); +constructor TScreenCredits.Create; var I: integer; begin - inherited Create(Back); + inherited Create; AddBackground(Theme.Loading.Background.Tex); diff --git a/Game/Code/Screens/UScreenEdit.pas b/Game/Code/Screens/UScreenEdit.pas index aa3301a7..00df0418 100644 --- a/Game/Code/Screens/UScreenEdit.pas +++ b/Game/Code/Screens/UScreenEdit.pas @@ -11,7 +11,7 @@ type FadeOut: boolean; Path: string; FileName: string;} - constructor Create(Back: String); override; + constructor Create; override; procedure onShow; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; { function Draw: boolean; override; @@ -63,9 +63,9 @@ begin end; end; -constructor TScreenEdit.Create(Back: String); +constructor TScreenEdit.Create; begin - inherited Create(Back); + inherited Create; AddButton(400-200, 100 + 0*70, 400, 40, Skin.GetTextureFileName('ButtonF')); AddButtonText(10, 5, 0, 0, 0, 'Convert Midi to Txt'); // Button[High(Button)].Text[0].Size := 11; diff --git a/Game/Code/Screens/UScreenEditConvert.pas b/Game/Code/Screens/UScreenEditConvert.pas index 68742535..62a50b3e 100644 --- a/Game/Code/Screens/UScreenEditConvert.pas +++ b/Game/Code/Screens/UScreenEditConvert.pas @@ -58,7 +58,7 @@ type procedure Extract; procedure MidiFile1MidiEvent(event: PMidiEvent); function SelectedNumber: integer; - constructor Create(Back: String); override; + constructor Create; override; procedure onShow; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; function Draw: boolean; override; @@ -299,11 +299,11 @@ begin MidiOut.PutShort(event.event, event.data1, event.data2); end; -constructor TScreenEditConvert.Create(Back: String); +constructor TScreenEditConvert.Create; var P: integer; begin - inherited Create(Back); + inherited Create; AddButton(40, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); AddButtonText(15, 5, 0, 0, 0, 'Open'); // Button[High(Button)].Text[0].Size := 11; diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas index a601555a..dbdd186c 100644 --- a/Game/Code/Screens/UScreenEditHeader.pas +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -35,7 +35,7 @@ type Sel: array[0..11] of boolean; procedure SetRoundButtons; - constructor Create(Back: String); override; + constructor Create; override; procedure onShow; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; { function Draw: boolean; override; @@ -124,9 +124,9 @@ begin end; end; -constructor TScreenEditHeader.Create(Back: String); +constructor TScreenEditHeader.Create; begin - inherited Create(Back); + inherited Create; AddButton(40, 20, 100, 40, Skin.GetTextureFileName('ButtonF')); AddButtonText(15, 5, 'Open'); diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 6094edd1..a665ba1c 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -62,7 +62,7 @@ type FadeOut: boolean; Path: string; FileName: string; - constructor Create(Back: String); override; + constructor Create; override; procedure onShow; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; function ParseInputEditText(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; @@ -1035,9 +1035,9 @@ begin end; -constructor TScreenEditSub.Create(Back: String); +constructor TScreenEditSub.Create; begin - inherited Create(Back); + inherited Create; SetLength(Player, 1); // linijka diff --git a/Game/Code/Screens/UScreenLevel.pas b/Game/Code/Screens/UScreenLevel.pas index 28aa40ea..80d42773 100644 --- a/Game/Code/Screens/UScreenLevel.pas +++ b/Game/Code/Screens/UScreenLevel.pas @@ -68,18 +68,12 @@ var begin inherited Create; - AddBackground(Theme.Level.Background.Tex); + LoadFromTheme(Theme.Level); AddButton(Theme.Level.ButtonEasy); AddButton(Theme.Level.ButtonMedium); AddButton(Theme.Level.ButtonHard); - for I := 0 to High(Theme.Level.Static) do - AddStatic(Theme.Level.Static[I]); - - for I := 0 to High(Theme.Level.Text) do - AddText(Theme.Level.Text[I]); - Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenLoading.pas b/Game/Code/Screens/UScreenLoading.pas index 5cc938bb..438b606e 100644 --- a/Game/Code/Screens/UScreenLoading.pas +++ b/Game/Code/Screens/UScreenLoading.pas @@ -9,7 +9,7 @@ type TScreenLoading = class(TMenu) public Fadeout: boolean; - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; function GetBGTexNum: GLUInt; procedure onShow; override; @@ -24,19 +24,11 @@ begin Result := true; end; -constructor TScreenLoading.Create(Back: String); -var - I: integer; +constructor TScreenLoading.Create; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.Loading.Background.Tex); - - for I := 0 to High(Theme.Loading.Static) do - AddStatic(Theme.Loading.Static[I]); - - for I := 0 to High(Theme.Loading.Text) do - AddText(Theme.Loading.Text[I]); + LoadFromTheme(Theme.Loading); Fadeout := false; end; diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 4c822640..49bd98ee 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -16,6 +16,8 @@ type procedure onShow; override; procedure InteractNext; override; procedure InteractPrev; override; + procedure InteractInc; override; + procedure InteractDec; override; procedure UpdateLCD; procedure SetAnimationProgress(Progress: real); override; //function Draw: boolean; override; @@ -84,6 +86,7 @@ begin SDLK_RETURN: begin + //Solo if (Interaction = 0) and (Length(Songs.Song) >= 1) then begin Music.PlayStart; if (Ini.Players >= 0) and (Ini.Players <= 3) then PlayersPlay := Ini.Players + 1; @@ -92,23 +95,44 @@ begin ScreenName.Goto_SingScreen := False; FadeTo(@ScreenName); end; + + //Multi if Interaction = 1 then begin + if (Ini.Players >= 1) AND (Length(DLLMan.Plugins)>=1) then + begin + Music.PlayStart; + FadeTo(@ScreenPartyOptions); + end; + end; + + //Stats + if Interaction = 2 then begin + Music.PlayStart; + FadeTo(@ScreenStatMain); + end; + + //Editor + if Interaction = 3 then begin Music.PlayStart; FadeTo(@ScreenEdit); end; - if Interaction = 2 then begin + + //Options + if Interaction = 4 then begin Music.PlayStart; FadeTo(@ScreenOptions); end; - if Interaction = 3 then begin + + //Exit + if Interaction = 5 then begin Result := false; end; end; // Up and Down could be done at the same time, // but I don't want to declare variables inside // functions like this one, called so many times - SDLK_DOWN: InteractNext; - SDLK_UP: InteractPrev; + SDLK_DOWN: InteractInc; + SDLK_UP: InteractDec; SDLK_RIGHT: InteractNext; SDLK_LEFT: InteractPrev; end; @@ -127,27 +151,28 @@ var begin inherited Create; -// AddButton(400-200, 320, 400, 60, Skin.GameStart); -// AddButton(400-200, 390, 400, 60, Skin.Editor); -// AddButton(400-200, 460, 400, 60, Skin.Options); -// AddButton(400-200, 530, 400, 60, Skin.Exit); + //---------------- + //Attention ^^: + //New Creation Order needed because of LoadFromTheme + //and Button Collections. + //At First Custom Texts and Statics + //Then LoadFromTheme + //after LoadFromTheme the Buttons and Selects + //---------------- + + + TextDescription := AddText(Theme.Main.TextDescription); + TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong); - AddBackground(Theme.Main.Background.Tex); + LoadFromTheme(Theme.Main); AddButton(Theme.Main.ButtonSolo); + AddButton(Theme.Main.ButtonMulti); + AddButton(Theme.Main.ButtonStat); AddButton(Theme.Main.ButtonEditor); AddButton(Theme.Main.ButtonOptions); AddButton(Theme.Main.ButtonExit); - for I := 0 to High(Theme.Main.Static) do - AddStatic(Theme.Main.Static[I]); - - for I := 0 to High(Theme.Main.Text) do - AddText(Theme.Main.Text[I]); - - TextDescription := AddText(Theme.Main.TextDescription); - TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong); - Interaction := 0; end; @@ -175,6 +200,24 @@ begin Light.LightOne(0, 200); end; +procedure TScreenMain.InteractDec; +begin + inherited InteractDec; + Text[TextDescription].Text := Theme.Main.Description[Interaction]; + Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; + UpdateLCD; + Light.LightOne(0, 200); +end; + +procedure TScreenMain.InteractInc; +begin + inherited InteractInc; + Text[TextDescription].Text := Theme.Main.Description[Interaction]; + Text[TextDescriptionLong].Text := Theme.Main.DescriptionLong[Interaction]; + UpdateLCD; + Light.LightOne(1, 200); +end; + procedure TScreenMain.UpdateLCD; begin case Interaction of diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index e8bc2dd8..9819b994 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -76,17 +76,12 @@ var begin inherited Create; - AddBackground(Theme.Name.Background.Tex); + LoadFromTheme(Theme.Name); + for I := 1 to 6 do AddButton(Theme.Name.ButtonPlayer[I]); - for I := 0 to High(Theme.Name.Static) do - AddStatic(Theme.Name.Static[I]); - - for I := 0 to High(Theme.Name.Text) do - AddText(Theme.Name.Text[I]); - Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index 264f57a9..4f0c32c5 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -16,7 +16,7 @@ type Path: string; BackScreen: pointer; procedure AddBox(X, Y, W, H: real); - constructor Create(Back: String); override; + constructor Create; override; procedure onShow; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; // function Draw: boolean; override; @@ -90,9 +90,9 @@ begin AddStatic(X+2, Y+2, W-4, H-4, 1, 1, 1, Skin.GetTextureFileName('Bar'), 'JPG', 'Font Black'); end; -constructor TScreenOpen.Create(Back: String); +constructor TScreenOpen.Create; begin - inherited Create(Back); + inherited Create; // linijka { AddStatic(20, 10, 80, 30, 0, 0, 0, 'Bar', 'JPG', 'Font Black'); diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index 0fffedac..f0229d8c 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -9,7 +9,7 @@ type TScreenOptions = class(TMenu) public TextDescription: integer; - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; procedure InteractNext; override; @@ -80,88 +80,23 @@ begin FadeTo(@ScreenMain); end; end; - SDLK_LEFT: - begin - {case SelInteraction of - 0: InteractCustom(+2); - 1: InteractCustom(-1); - 2: InteractCustom(-1); - 3: InteractCustom(+2); - 4: InteractCustom(-1); - 5: InteractCustom(-1); - end;} - InteractPrev; - end; - SDLK_RIGHT: - begin - {case SelInteraction of - 0: InteractCustom(+1); - 1: InteractCustom(+1); - 2: InteractCustom(-2); - 3: InteractCustom(+1); - 4: InteractCustom(+1); - 5: InteractCustom(-2); - end;} - InteractNext; - end; - SDLK_UP: - begin - InteractPrev; - {case SelInteraction of - 0: InteractCustom(+3); - 1: InteractCustom(+3); - 2: InteractCustom(+3); - 3: InteractCustom(-3); - 4: InteractCustom(-3); - 5: InteractCustom(-3); - end; } - end; - SDLK_DOWN: - begin - {case SelInteraction of - 0: InteractCustom(+3); - 1: InteractCustom(+3); - 2: InteractCustom(+3); - 3: InteractCustom(-3); - 4: InteractCustom(-3); - 5: InteractCustom(-3); - end; } - InteractNext; - end; + SDLK_DOWN: InteractInc; + SDLK_UP: InteractDec; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; end; end; end; -constructor TScreenOptions.Create(Back: String); +constructor TScreenOptions.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - // Game -{ AddButton(225, 100 + 0*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); - AddButtonText(11, 10, 'Game');} - - // Graphics -{ AddButton(225, 100 + 1*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); - AddButtonText(11, 10, 'Graphics'); - - // Sound - AddButton(225, 100 + 2*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); - AddButtonText(11, 10, 'Sound'); - - // Lyrics - AddButton(225, 100 + 3*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); - AddButtonText(11, 10, 'Lyrics'); - - // Themes - AddButton(225, 100 + 4*60, 350, 50, Skin.Button, 'JPG', 'Transparent Range'); - AddButtonText(11, 10, 'Themes'); - - // Exit - AddButton(225, 100 + 6*60, 350, 50, Skin.Exit);} + TextDescription := AddText(Theme.Options.TextDescription); - AddBackground(Theme.Options.Background.Tex); + LoadFromTheme(Theme.Options); AddButton(Theme.Options.ButtonGame); if (Length(Button[0].Text)=0) then @@ -195,14 +130,6 @@ begin if (Length(Button[7].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[7]); - for I := 0 to High(Theme.Options.Static) do - AddStatic(Theme.Options.Static[I]); - - for I := 0 to High(Theme.Options.Text) do - AddText(Theme.Options.Text[I]); - - TextDescription := AddText(Theme.Options.TextDescription); - Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index ed3bc164..256b02db 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -8,7 +8,7 @@ uses type TScreenOptionsAdvanced = class(TMenu) public - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; end; @@ -59,19 +59,13 @@ begin end; end; -constructor TScreenOptionsAdvanced.Create(Back: String); +constructor TScreenOptionsAdvanced.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.OptionsAdvanced.Background.Tex); - - for I := 0 to High(Theme.OptionsAdvanced.Static) do - AddStatic(Theme.OptionsAdvanced.Static[I]); - - for I := 0 to High(Theme.OptionsAdvanced.Text) do - AddText(Theme.OptionsAdvanced.Text[I]); + LoadFromTheme(Theme.OptionsAdvanced); AddSelect(Theme.OptionsAdvanced.SelectLoadAnimation, Ini.LoadAnimation, ILoadAnimation); AddSelect(Theme.OptionsAdvanced.SelectScreenFade, Ini.ScreenFade, IScreenFade); diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index 63bbec36..88bb34e3 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -9,7 +9,7 @@ type TScreenOptionsGame = class(TMenu) public old_Tabs, old_Sorting: integer; - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; procedure RefreshSongs; @@ -61,19 +61,13 @@ begin end; end; -constructor TScreenOptionsGame.Create(Back: String); +constructor TScreenOptionsGame.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.OptionsGame.Background.Tex); - - for I := 0 to High(Theme.OptionsGame.Static) do - AddStatic(Theme.OptionsGame.Static[I]); - - for I := 0 to High(Theme.OptionsGame.Text) do - AddText(Theme.OptionsGame.Text[I]); + LoadFromTheme(Theme.OptionsGame); //Refresh Songs Patch old_Sorting := Ini.Sorting; diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index 6152c9c0..b36bb7d3 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -8,7 +8,7 @@ uses type TScreenOptionsGraphics = class(TMenu) public - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; end; @@ -66,19 +66,13 @@ begin end; end; -constructor TScreenOptionsGraphics.Create(Back: String); +constructor TScreenOptionsGraphics.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.OptionsGraphics.Background.Tex); - - for I := 0 to High(Theme.OptionsGraphics.Static) do - AddStatic(Theme.OptionsGraphics.Static[I]); - - for I := 0 to High(Theme.OptionsGraphics.Text) do - AddText(Theme.OptionsGraphics.Text[I]); + LoadFromTheme(Theme.OptionsGraphics); AddSelectSlide(Theme.OptionsGraphics.SelectSlideResolution, Ini.Resolution, IResolution); AddSelect(Theme.OptionsGraphics.SelectFullscreen, Ini.Fullscreen, IFullscreen); diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index 35cb2415..ff03b2ba 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -8,7 +8,7 @@ uses type TScreenOptionsLyrics = class(TMenu) public - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; end; @@ -59,19 +59,13 @@ begin end; end; -constructor TScreenOptionsLyrics.Create(Back: String); +constructor TScreenOptionsLyrics.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.OptionsLyrics.Background.Tex); - - for I := 0 to High(Theme.OptionsLyrics.Static) do - AddStatic(Theme.OptionsLyrics.Static[I]); - - for I := 0 to High(Theme.OptionsLyrics.Text) do - AddText(Theme.OptionsLyrics.Text[I]); + LoadFromTheme(Theme.OptionsLyrics); AddSelect(Theme.OptionsLyrics.SelectLyricsFont, Ini.LyricsFont, ILyricsFont); AddSelect(Theme.OptionsLyrics.SelectLyricsEffect, Ini.LyricsEffect, ILyricsEffect); diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index 1d09d0b8..af7d2cd6 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -74,20 +74,8 @@ var begin inherited Create; - AddBackground(Theme.OptionsRecord.Background.Tex); - for I := 0 to High(Theme.OptionsRecord.Static) do - AddStatic(Theme.OptionsRecord.Static[I]); + LoadFromTheme(Theme.OptionsRecord); - for I := 0 to High(Theme.OptionsRecord.Text) do - AddText(Theme.OptionsRecord.Text[I]); - -// SetLength(ICard, 0); -// ICard[0] := 'karta'; - -// SetLength(IInput, 0); -// IInput[0] := 'wejscie'; - -// if Length(Recording.SoundCard) > 0 then begin SetLength(ICard, Length(Recording.SoundCard)); for SC := 0 to High(Recording.SoundCard) do ICard[SC] := Recording.SoundCard[SC].Description; diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index aea6cdbc..ee53ef02 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -8,7 +8,7 @@ uses type TScreenOptionsSound = class(TMenu) public - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; end; @@ -59,25 +59,18 @@ begin end; end; -constructor TScreenOptionsSound.Create(Back: String); +constructor TScreenOptionsSound.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.OptionsSound.Background.Tex); - - for I := 0 to High(Theme.OptionsSound.Static) do - AddStatic(Theme.OptionsSound.Static[I]); - - for I := 0 to High(Theme.OptionsSound.Text) do - AddText(Theme.OptionsSound.Text[I]); + LoadFromTheme(Theme.OptionsSound); AddSelect(Theme.OptionsSound.SelectMicBoost, Ini.MicBoost, IMicBoost); AddSelect(Theme.OptionsSound.SelectClickAssist, Ini.ClickAssist, IClickAssist); AddSelect(Theme.OptionsSound.SelectBeatClick, Ini.BeatClick, IBeatClick); AddSelect(Theme.OptionsSound.SelectThreshold, Ini.Threshold, IThreshold); - //AddSelect(Theme.OptionsSound.SelectTwoPlayerMode, Ini.TwoPlayerMode, ITwoPlayerMode); AddButton(Theme.OptionsSound.ButtonExit); if (Length(Button[0].Text)=0) then diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index 151913be..c0bf2e15 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -9,7 +9,7 @@ type TScreenOptionsThemes = class(TMenu) public SkinSelect: Integer; - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; procedure InteractInc; override; @@ -84,19 +84,13 @@ begin end; end; -constructor TScreenOptionsThemes.Create(Back: String); +constructor TScreenOptionsThemes.Create; var I: integer; begin - inherited Create(Back); + inherited Create; - AddBackground(Theme.OptionsThemes.Background.Tex); - - for I := 0 to High(Theme.OptionsThemes.Static) do - AddStatic(Theme.OptionsThemes.Static[I]); - - for I := 0 to High(Theme.OptionsThemes.Text) do - AddText(Theme.OptionsThemes.Text[I]); + LoadFromTheme(Theme.OptionsThemes); AddSelectSlide(Theme.OptionsThemes.SelectTheme, Ini.Theme, ITheme); diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index b268e04f..cf643310 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -116,9 +116,6 @@ var begin inherited Create; - AddBackground(Theme.PartyNewRound.Background.Tex); - Log.LogError(Theme.PartyNewRound.Background.Tex); - TextRound1 := AddText (Theme.PartyNewRound.TextRound1); TextRound2 := AddText (Theme.PartyNewRound.TextRound2); TextRound3 := AddText (Theme.PartyNewRound.TextRound3); @@ -161,15 +158,7 @@ begin StaticTeam2 := AddStatic (Theme.PartyNewRound.StaticTeam2); StaticTeam3 := AddStatic (Theme.PartyNewRound.StaticTeam3); - AddButton (Theme.PartyNewRound.ButtonNext); - - for I := 0 to High(Theme.PartyNewRound.Static) do - AddStatic(Theme.PartyNewRound.Static[I]); - - for I := 0 to High(Theme.PartyNewRound.Text) do - AddText(Theme.PartyNewRound.Text[I]); - - Interaction := 0; + LoadFromTheme(Theme.PartyNewRound); end; procedure TScreenPartyNewRound.onShow; diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index fd7b5107..f0df9871 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -45,37 +45,6 @@ uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UDLLManager, UPlaylist, function TScreenPartyOptions.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; var I, J: Integer; - - function IsVisible: Boolean; - begin - Result := True; - if (Interactions[Interaction].Typ = 0) then - begin - Result := Button[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 1) then - begin - //Result := Selects[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 3) then - begin - Result := SelectsS[Interactions[Interaction].Num].Visible; - end; - end; - - Procedure SelectNext; - begin - repeat - InteractNext; - until IsVisible; - end; - - Procedure SelectPrev; - begin - repeat - InteractPrev; - until IsVisible; - end; begin Result := true; If (PressedDown) Then @@ -137,8 +106,8 @@ begin // Up and Down could be done at the same time, // but I don't want to declare variables inside // functions like this one, called so many times - SDLK_DOWN: SelectNext; - SDLK_UP: SelectPrev; + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; SDLK_RIGHT: begin Music.PlayOption; @@ -193,6 +162,7 @@ begin SetLength(IPlaylist2, 1); IPlaylist2[0] := '---'; + //Clear all Selects NumTeams := 0; NumPlayer1 := 0; NumPlayer2 := 0; @@ -201,7 +171,8 @@ begin PlayList := 0; PlayList2 := 0; - AddBackground(Theme.PartyOptions.Background.Tex); + //Load Screen From Theme + LoadFromTheme(Theme.PartyOptions); SelectLevel := AddSelectSlide (Theme.PartyOptions.SelectLevel, Ini.Difficulty, Theme.ILevel); SelectPlayList := AddSelectSlide (Theme.PartyOptions.SelectPlayList, PlayList, IPlaylist); @@ -212,12 +183,6 @@ begin SelectPlayers2 := AddSelectSlide (Theme.PartyOptions.SelectPlayers2, NumPlayer2, IPlayers); SelectPlayers3 := AddSelectSlide (Theme.PartyOptions.SelectPlayers3, NumPlayer3, IPlayers); - for I := 0 to High(Theme.PartyOptions.Static) do - AddStatic(Theme.PartyOptions.Static[I]); - - for I := 0 to High(Theme.PartyOptions.Text) do - AddText(Theme.PartyOptions.Text[I]); - Interaction := 0; //Hide Team3 Players diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index 02f87710..d6e13d65 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -108,7 +108,7 @@ var begin inherited Create; - AddBackground(Theme.PartyPlayer.Background.Tex); + LoadFromTheme(Theme.PartyPlayer); Team1Name := AddButton(Theme.PartyPlayer.Team1Name); AddButton(Theme.PartyPlayer.Player1Name); @@ -128,12 +128,6 @@ begin AddButton(Theme.PartyPlayer.Player11Name); AddButton(Theme.PartyPlayer.Player12Name); - for I := 0 to High(Theme.PartyPlayer.Static) do - AddStatic(Theme.PartyPlayer.Static[I]); - - for I := 0 to High(Theme.PartyPlayer.Text) do - AddText(Theme.PartyPlayer.Text[I]); - Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index 142ec947..805525a1 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -72,8 +72,6 @@ var begin inherited Create; - AddBackground(Theme.PartyScore.Background.Tex); - TextScoreTeam1 := AddText (Theme.PartyScore.TextScoreTeam1); TextScoreTeam2 := AddText (Theme.PartyScore.TextScoreTeam2); TextScoreTeam3 := AddText (Theme.PartyScore.TextScoreTeam3); @@ -87,11 +85,7 @@ begin TextWinner := AddText (Theme.PartyScore.TextWinner); - for I := 0 to High(Theme.PartyScore.Static) do - AddStatic(Theme.PartyScore.Static[I]); - - for I := 0 to High(Theme.PartyScore.Text) do - AddText(Theme.PartyScore.Text[I]); + LoadFromTheme(Theme.PartyScore); end; procedure TScreenPartyScore.onShow; diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas index ac5f38d9..ff65e82f 100644 --- a/Game/Code/Screens/UScreenPartyWin.pas +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -61,8 +61,6 @@ var begin inherited Create; - AddBackground(Theme.PartyWin.Background.Tex); - TextScoreTeam1 := AddText (Theme.PartyWin.TextScoreTeam1); TextScoreTeam2 := AddText (Theme.PartyWin.TextScoreTeam2); TextScoreTeam3 := AddText (Theme.PartyWin.TextScoreTeam3); @@ -76,11 +74,7 @@ begin TextWinner := AddText (Theme.PartyWin.TextWinner); - for I := 0 to High(Theme.PartyWin.Static) do - AddStatic(Theme.PartyWin.Static[I]); - - for I := 0 to High(Theme.PartyWin.Text) do - AddText(Theme.PartyWin.Text[I]); + LoadFromTheme(Theme.PartyWin); end; procedure TScreenPartyWin.onShow; diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index 72c42cb8..af1ccb59 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -40,7 +40,7 @@ type Animation: real; Fadeout: boolean; - constructor Create(Back: String); override; + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; function Draw: boolean; override; @@ -92,60 +92,14 @@ begin end; end; -constructor TScreenScore.Create(Back: String); +constructor TScreenScore.Create; var P: integer; I, C: integer; begin - inherited Create(Back); + inherited Create; - // background arrows sorted from farthest to nearest -{ AddStatic(-2000 + 400, 100, 360, 60, 1, 1, 1, Skin.Arrow2, 'JPG', 'Arrow'); - AddStatic(-2000 + -50, 200, 420, 70, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); - AddStatic(-2000 + 90, 30, 500, 90, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); - AddStatic(-2000 + -250, 100, 800, 150, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); - - Static[0].Texture.Rot := 100 * pi/180; - Static[1].Texture.Rot := 7 * pi/180; - Static[2].Texture.Rot := 35 * pi/180; - - - // main arrow with text - AddStatic(0, 340, 1000, 180, 1, 1, 1, Skin.Arrow2, 'JPG', 'Arrow'); -// AddText(450, 409, 4, 15, 1, 1, 1, 'Smile'); - AddText(450, 409, 4, 15, 1, 1, 1, 'Let''s see the results'); - Text[0].Y := 401; - - Static[4].Texture.Rot := -3 * pi/180; - - - // two mid arrows - AddStatic(-2000 + -250, 100, 800, 150, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); - AddStatic(-2000 + -250, 100, 800, 150, 1, 1, 1, Skin.Arrow, 'JPG', 'Arrow'); - - - // last arrow - AddStatic(-2000, 340, 1100, 180, 1, 1, 1, Skin.Arrow2, 'JPG', 'Arrow'); -// AddText(-2000, 407, 4, 17, 1, 1, 1, 'SHUFFLE !'); - AddText(-2000, 407, 4, 15, 1, 1, 1, 'SHUFFLE !'); - - Static[7].Texture.Rot := 184 * pi/180; - - // score text - AddText(-2000, 407, 4, 17, 1, 1, 1, '10010 points'); - AddText(-2000, 407, 4, 17, 1, 1, 1, 'Cheater'); - - Fadeout := false;} - - - // Singstar Theme - AddBackground(Theme.Score.Background.Tex); - - for I := 0 to High(Theme.Score.Static) do - AddStatic(Theme.Score.Static[I]); - - for I := 0 to High(Theme.Score.Text) do - AddText(Theme.Score.Text[I]); + LoadFromTheme(Theme.Score); TextArtist := AddText(Theme.Score.TextArtist); TextTitle := AddText(Theme.Score.TextTitle); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index cca398a1..93c3ac48 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -163,13 +163,7 @@ var begin inherited Create; - AddBackground(Theme.Sing.Background.Tex); - - for I := 0 to High(Theme.Sing.Static) do - AddStatic(Theme.Sing.Static[I]); - - for I := 0 to High(Theme.Sing.Text) do - AddText(Theme.Sing.Text[I]); + LoadFromTheme(Theme.Sing); // time TextTime := AddText(75, 14, 1, 8, 0.25, 0.25, 0.25, '00:00'); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 16ac46ab..5c383168 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -630,13 +630,7 @@ begin // AddStatic(200, 10, 400, 90, Skin.SelectSong); // AddStatic(200-10, 140-5, 400+20, 50+10, Skin.Selection, 'JPG', 'Font Gray'); - AddBackground(Theme.Song.Background.Tex); - - for I := 0 to High(Theme.Song.Static) do - AddStatic(Theme.Song.Static[I]); - - for I := 0 to High(Theme.Song.Text) do - AddText(Theme.Song.Text[I]); + LoadFromTheme(Theme.Song); TextArtist := AddText(Theme.Song.TextArtist); TextTitle := AddText(Theme.Song.TextTitle); diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 123146c7..b90c558b 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -154,7 +154,9 @@ var begin inherited Create; - AddBackground(Theme.SongJumpto.Background.Tex); + AddText(Theme.SongJumpto.TextFound); + + LoadFromTheme(Theme.SongJumpto); AddButton(Theme.SongJumpto.ButtonSearchText); if (Length(Button[0].Text) = 0) then @@ -163,13 +165,6 @@ begin SelectType := 0; AddSelectSlide(Theme.SongJumpto.SelectSlideType, SelectType, Theme.SongJumpto.IType); - AddText(Theme.SongJumpto.TextFound); - - for I := 0 to High(Theme.SongJumpto.Static) do - AddStatic(Theme.SongJumpto.Static[I]); - - for I := 0 to High(Theme.SongJumpto.Text) do - AddText(Theme.SongJumpto.Text[I]); Interaction := 0; LastPlayed := 0; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index d4ad8016..fd875527 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -45,36 +45,6 @@ implementation uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist; function TScreenSongMenu.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; - function IsVisible: Boolean; - begin - Result := True; - if (Interactions[Interaction].Typ = 0) then - begin - Result := Button[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 1) then - begin - //Result := Selects[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 3) then - begin - Result := SelectsS[Interactions[Interaction].Num].Visible; - end; - end; - - Procedure SelectNext; - begin - repeat - InteractNext; - until IsVisible; - end; - - Procedure SelectPrev; - begin - repeat - InteractPrev; - until IsVisible; - end; begin Result := true; If (PressedDown) Then @@ -113,8 +83,8 @@ begin HandleReturn; end; - SDLK_DOWN: SelectNext; - SDLK_UP: SelectPrev; + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; SDLK_RIGHT: begin @@ -141,10 +111,15 @@ var I: integer; begin inherited Create; + + //Create Dummy SelectSlide Entrys SetLength(ISelections, 1); ISelections[0] := 'Dummy'; - AddBackground(Theme.SongMenu.Background.Tex); + + AddText(Theme.SongMenu.TextMenu); + + LoadFromTheme(Theme.SongMenu); AddButton(Theme.SongMenu.Button1); if (Length(Button[0].Text) = 0) then @@ -164,13 +139,6 @@ begin if (Length(Button[3].Text) = 0) then AddButtonText(14, 20, 'Button 4'); - AddText(Theme.SongMenu.TextMenu); - - for I := 0 to High(Theme.SongMenu.Static) do - AddStatic(Theme.SongMenu.Static[I]); - - for I := 0 to High(Theme.SongMenu.Text) do - AddText(Theme.SongMenu.Text[I]); Interaction := 0; end; diff --git a/Game/Code/Screens/UScreenStatDetail.pas b/Game/Code/Screens/UScreenStatDetail.pas index dc4a0f1f..1461a9da 100644 --- a/Game/Code/Screens/UScreenStatDetail.pas +++ b/Game/Code/Screens/UScreenStatDetail.pas @@ -102,7 +102,15 @@ var begin inherited Create; - AddBackground(Theme.StatDetail.Background.Tex); + for I := 0 to High(Theme.StatDetail.TextList) do + AddText(Theme.StatDetail.TextList[I]); + + Count := Length(Theme.StatDetail.TextList); + + AddText(Theme.StatDetail.TextDescription); + AddText(Theme.StatDetail.TextPage); + + LoadFromTheme(Theme.StatDetail); AddButton(Theme.StatDetail.ButtonNext); if (Length(Button[0].Text)=0) then @@ -120,22 +128,6 @@ begin if (Length(Button[3].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[7]); - for I := 0 to High(Theme.StatDetail.TextList) do - AddText(Theme.StatDetail.TextList[I]); - - Count := Length(Theme.StatDetail.TextList); - - AddText(Theme.StatDetail.TextDescription); - AddText(Theme.StatDetail.TextPage); - - for I := 0 to High(Theme.StatDetail.Static) do - AddStatic(Theme.StatDetail.Static[I]); - - for I := 0 to High(Theme.StatDetail.Text) do - AddText(Theme.StatDetail.Text[I]); - - - Interaction := 0; Typ := 0; end; diff --git a/Game/Code/Screens/UScreenStatMain.pas b/Game/Code/Screens/UScreenStatMain.pas index 337ed745..219ccd57 100644 --- a/Game/Code/Screens/UScreenStatMain.pas +++ b/Game/Code/Screens/UScreenStatMain.pas @@ -80,7 +80,9 @@ var begin inherited Create; - AddBackground(Theme.StatMain.Background.Tex); + TextOverview := AddText(Theme.StatMain.TextOverview); + + LoadFromTheme(Theme.StatMain); AddButton(Theme.StatMain.ButtonScores); if (Length(Button[0].Text)=0) then @@ -102,16 +104,9 @@ begin if (Length(Button[4].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[4]); - TextOverview := AddText(Theme.StatMain.TextOverview); - - for I := 0 to High(Theme.StatMain.Static) do - AddStatic(Theme.StatMain.Static[I]); - - for I := 0 to High(Theme.StatMain.Text) do - AddText(Theme.StatMain.Text[I]); - Interaction := 0; + //Set Songs with Vid SongswithVid := 0; For I := 0 to high(Songs.Song) do if (Songs.Song[I].Video <> '') AND FileExists(Songs.Song[I].Path + Songs.Song[I].Video) then diff --git a/Game/Code/Screens/UScreenTop5.pas b/Game/Code/Screens/UScreenTop5.pas index 94f3de1e..4d542bf0 100644 --- a/Game/Code/Screens/UScreenTop5.pas +++ b/Game/Code/Screens/UScreenTop5.pas @@ -58,13 +58,7 @@ var begin inherited Create; - AddBackground(Theme.Top5.Background.Tex); - - for I := 0 to High(Theme.Top5.Static) do - AddStatic(Theme.Top5.Static[I]); - - for I := 0 to High(Theme.Top5.Text) do - AddText(Theme.Top5.Text[I]); + LoadFromTheme(Theme.Top5); TextLevel := AddText(Theme.Top5.TextLevel); diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 0db37635..b7466d84 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -6,6 +6,9 @@ program UltraStar; {$R 'UltraStar.res' 'UltraStar.rc'} uses + //------------------------------ + //Includes - Menu System + //------------------------------ UDisplay in 'Menu\UDisplay.pas', UMenu in 'Menu\UMenu.pas', UMenuStatic in 'Menu\UMenuStatic.pas', @@ -15,6 +18,11 @@ uses UMenuSelect in 'Menu\UMenuSelect.pas', UMenuSelectSlide in 'Menu\UMenuSelectSlide.pas', UDrawTexture in 'Menu\UDrawTexture.pas', + UMenuButtonCollection in 'Menu\UMenuButtonCollection.pas', + + //------------------------------ + //Includes - Classes + //------------------------------ UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', @@ -43,6 +51,10 @@ uses UDLLManager in 'Classes\UDLLManager.pas', UParty in 'Classes\UParty.pas', UPlaylist in 'Classes\UPlaylist.pas', + + //------------------------------ + //Includes - Screens + //------------------------------ UScreenLoading in 'Screens\UScreenLoading.pas', UScreenWelcome in 'Screens\UScreenWelcome.pas', UScreenMain in 'Screens\UScreenMain.pas', @@ -69,14 +81,26 @@ uses UScreenSongJumpto in 'Screens\UScreenSongJumpto.pas', UScreenStatMain in 'Screens\UScreenStatMain.pas', UScreenStatDetail in 'Screens\UScreenStatDetail.pas', + UScreenCredits in 'Screens\UScreenCredits.pas', + + //------------------------------ + //Includes - Screens PartyMode + //------------------------------ UScreenSingModi in 'Screens\UScreenSingModi.pas', UScreenPartyNewRound in 'Screens\UScreenPartyNewRound.pas', UScreenPartyScore in 'Screens\UScreenPartyScore.pas', UScreenPartyPlayer in 'Screens\UScreenPartyPlayer.pas', UScreenPartyOptions in 'Screens\UScreenPartyOptions.pas', UScreenPartyWin in 'Screens\UScreenPartyWin.pas', + + //------------------------------ + //Includes - Modi SDK + //------------------------------ ModiSDK in '..\..\Modis\SDK\ModiSDK.pas', - UScreenCredits in 'Screens\UScreenCredits.pas', + + //------------------------------ + //Includes - Delphi + //------------------------------ Windows, SDL, SysUtils; diff --git a/Languages/English.ini b/Languages/English.ini index 14d6bb90..972e4ce4 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -1,9 +1,24 @@ [Text] SING_LOADING=Loading... + +SING_CHOOSE_MODE=choose mode SING_SING=sing SING_SING_DESC=quick game: sing solo or duet + +SING_MULTI=party +SING_MULTI_DESC=Sing in PartyMode + +SING_TOOLS=Tools + +SING_STATS=stats +SING_STATS_DESC=View the Statistics + SING_EDITOR=editor SING_EDITOR_DESC=create your own songs + +SING_GAME_OPTIONS=game options +SING_GAME_OPTIONS_DESC=change game settings + SING_EXIT_DESC=quit game SING_OPTIONS_GAME=game @@ -62,10 +77,6 @@ SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus SING_OPTIONS_ADVANCED_ONSONGCLICK=after SongSelection -SING_CHOOSE_MODE=choose mode -SING_GAME_OPTIONS=game options -SING_GAME_OPTIONS_DESC=change game settings - SING_LEGEND_SELECT=SELECT SING_LEGEND_NAVIGATE=NAVIGATE SING_LEGEND_CONTINUE=Continue diff --git a/Languages/German.ini b/Languages/German.ini index 7e9dcfbc..2ca72d4d 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -5,6 +5,14 @@ SING_CHOOSE_MODE=Modus w SING_SING=Singen SING_SING_DESC=Singen +SING_MULTI=Party +SING_MULTI_DESC=Ein rundenbasierendes Teamspiel spielen + +SING_TOOLS=Tools + +SING_STATS=Statistiken +SING_STATS_DESC=Die Statisiken anschauen + SING_EDITOR=Editor SING_EDITOR_DESC=Mach deinen eigenen Song @@ -204,14 +212,14 @@ PLUGIN_BLIND_DESC=Erreiche Blind die h STAT_MAIN_DESC=Statistiken -STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d -STAT_OVERVIEW_SONG=%0:d Songs(%3:d mit Video), davon wurden %1:d schon einmal gesungen und %2:d noch nicht.\n Der am häufigsten gesungene Song ist %5:s von %4:s. -STAT_OVERVIEW_PLAYER=Seit dem letzten Reset haben %0:d verschiedene Spieler gesungen.\n Der Beste Spieler ist %1:s mit einer Score von %2:d Punkten.\n Die höchste Punktzahl, %4:d, wurde von %3:s erreicht. +STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Songs(%3:d mit Video), davon wurden %1:d schon einmal gesungen und %2:d noch nicht. \n Der am häufigsten gesungene Song ist %5:s von %4:s. +STAT_OVERVIEW_PLAYER=Seit dem letzten Reset haben %0:d verschiedene Spieler gesungen. \n Der Beste Spieler ist %1:s mit einer Score von %2:d Punkten. \n Die höchste Punktzahl, %4:d, wurde von %3:s erreicht. STAT_NEXT=Nächste Seite STAT_PREV=Vorherige Seite STAT_REVERSE=Reihenfolge umkehren -STAT_PAGE=Seite %0:d von %1:d\n (%2:d von %3:d Einträgen) +STAT_PAGE=Seite %0:d von %1:d \n (%2:d von %3:d Einträgen) STAT_DESC_SCORES=HighScores STAT_DESC_SCORES_REVERSED=LowestScores diff --git a/Languages/readme.txt b/Languages/readme.txt index fce7c4e9..3c710036 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -2,8 +2,17 @@ To translate USD to a new language, take the English Language File, or another o To port a LanguageFile from Ultrastar 0.5.2 or Higher add the following Texts to the end of the file: +#Main Screen SING_MENU=Main Menu +SING_MULTI=party +SING_MULTI_DESC=Sing in PartyMode + +SING_TOOLS=Tools + +SING_STATS=stats +SING_STATS_DESC=View the Statistics + #Advanced Options Screen SING_OPTIONS_ADVANCED=advanced SING_OPTIONS_ADVANCED_DESC=advanced options diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 79052cb2..40951ee5 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -147,7 +147,7 @@ Align=1 Text=SING_SING Color=White -[MainButtonEditor] +[MainButtonMulti] X =335 Y =270 W =150 @@ -166,16 +166,16 @@ SelectH=150 FadeTex=ButtonFade FadeTexPos=0 -[MainButtonEditorText1] +[MainButtonMultiText1] X =75 Y =10 Font=0 Size=10 Align=1 -Text=SING_EDITOR +Text=SING_MULTI Color=White -[MainButtonOptions] +[MainButtonCollection1] X =490 Y =270 W =150 @@ -189,17 +189,84 @@ Reflection=1 ReflectionSpacing=15 DeSelectReflectionSpacing=280 Fade=1 -FadeText=1 +FadeText=0 SelectH=150 FadeTex=ButtonFade FadeTexPos=0 +FirstChild=3 -[MainButtonOptionsText1] +[MainButtonCollection1Text1] X =75 Y =10 Font=0 Size=10 Align=1 +Text=SING_TOOLS +Color=White + +[MainButtonStats] +X =495 +Y =310 +W =140 +H =30 +Tex =Rectangle +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Reflection=0 +Parent=1 + +[MainButtonStatsText1] +X =70 +Y =3 +Font=0 +Size=8 +Align=1 +Text=SING_STATS +Color=White + +[MainButtonEditor] +X =495 +Y =345 +W =140 +H =30 +Tex =Rectangle +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Reflection=0 +Parent=1 + +[MainButtonEditorText1] +X =70 +Y =3 +Font=0 +Size=8 +Align=1 +Text=SING_EDITOR +Color=White + +[MainButtonOptions] +X =495 +Y =380 +W =140 +H =30 +Tex =Rectangle +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Reflection=0 +Parent=1 + +[MainButtonOptionsText1] +X =70 +Y =3 +Font=0 +Size=8 +Align=1 Text=SING_OPTIONS Color=White -- cgit v1.2.3 From cc06446d0a651113083478fda94dfaa9a25d1d7e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 29 Apr 2007 18:29:42 +0000 Subject: Commented some Debuging Outputs in ULog Fixed a Bug in ButtonCollection that causes a Crash when UpButton is Pressed at the Last Button Added ShortCut E in MainMenu for Editor git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@150 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/ULog.pas | 10 +++++----- Game/Code/Menu/UMenu.pas | 2 +- Game/Code/Screens/UScreenMain.pas | 6 ++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Game/Code/Classes/ULog.pas b/Game/Code/Classes/ULog.pas index 6bffa04e..0b492cb3 100644 --- a/Game/Code/Classes/ULog.pas +++ b/Game/Code/Classes/ULog.pas @@ -139,7 +139,7 @@ var Miliseconds: integer; ValueText: string; begin - if Ini.Debug = 1 then begin + //if Ini.Debug = 1 then begin if not FileAnalyzeO then begin AssignFile(FileAnalyze, LogPath + 'Analyze.log'); @@ -154,7 +154,7 @@ begin Flush(FileAnalyze); // try to speed up end; - end; + //end; end; procedure TLog.LogError(Text: string); @@ -202,8 +202,9 @@ end; procedure TLog.LogStatus(Log1, Log2: string); begin -//asd - LogError (Log2 + ': ' + Log1); + //Just for Debugging + //Comment for Release + //LogAnalyze (Log2 + ': ' + Log1); end; procedure TLog.LogError(Log1, Log2: string); @@ -224,4 +225,3 @@ begin end; end. - \ No newline at end of file diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index fc217dba..c30b5c5c 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -1367,7 +1367,7 @@ begin begin InteractPrev; //If ButtonCollection with more than 1 Entry then Select Last Entry - if (ButtonCollection[Button[Interactions[Interaction].Num].Parent-1].CountChilds > 1) then + if (Button[Interactions[Interaction].Num].Parent <> 0) AND (ButtonCollection[Button[Interactions[Interaction].Num].Parent-1].CountChilds > 1) then begin //Select Last Child For Num := High(Button) downto 1 do diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 49bd98ee..78c98218 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -84,6 +84,12 @@ begin FadeTo(@ScreenStatMain); end; + SDLK_E: + begin + Music.PlayStart; + FadeTo(@ScreenEdit); + end; + SDLK_RETURN: begin //Solo -- cgit v1.2.3 From 37f734e1943563ca121791eabb9bff067a591e3d Mon Sep 17 00:00:00 2001 From: mota23 Date: Mon, 30 Apr 2007 09:24:50 +0000 Subject: Added new Static to ScreenPartyNewRound. Some Themework in Party-Mode. Still needs work. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@151 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 6 + Game/Code/Screens/UScreenPartyNewRound.pas | 16 + Languages/German.ini | 6 +- Skins/Deluxe/Blue.ini | 138 ++++-- Skins/Deluxe/W&C.ini | 9 +- Skins/Deluxe/[party]playerButton.jpg | Bin 0 -> 1519 bytes Skins/Deluxe/[party]playerTeamButton.jpg | Bin 0 -> 2428 bytes Skins/Deluxe/[party]roundBG1.jpg | Bin 0 -> 1043 bytes Skins/Deluxe/[party]roundBG2.jpg | Bin 0 -> 978 bytes Skins/Deluxe/[party]roundBG3.jpg | Bin 0 -> 1251 bytes Skins/Deluxe/[party]roundBG4.jpg | Bin 0 -> 1229 bytes Skins/Deluxe/[party]roundTeamButton.jpg | Bin 0 -> 2887 bytes Themes/Deluxe.ini | 772 +++++++++++++++-------------- 13 files changed, 531 insertions(+), 416 deletions(-) create mode 100644 Skins/Deluxe/[party]playerButton.jpg create mode 100644 Skins/Deluxe/[party]playerTeamButton.jpg create mode 100644 Skins/Deluxe/[party]roundBG1.jpg create mode 100644 Skins/Deluxe/[party]roundBG2.jpg create mode 100644 Skins/Deluxe/[party]roundBG3.jpg create mode 100644 Skins/Deluxe/[party]roundBG4.jpg create mode 100644 Skins/Deluxe/[party]roundTeamButton.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 31081f23..414da72f 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -520,6 +520,9 @@ type StaticTeam1: TThemeStatic; StaticTeam2: TThemeStatic; StaticTeam3: TThemeStatic; + StaticNextPlayer1: TThemeStatic; + StaticNextPlayer2: TThemeStatic; + StaticNextPlayer3: TThemeStatic; ButtonNext: TThemeButton; end; @@ -1214,6 +1217,9 @@ begin ThemeLoadStatic (PartyNewRound.StaticTeam1, 'PartyNewRoundStaticTeam1'); ThemeLoadStatic (PartyNewRound.StaticTeam2, 'PartyNewRoundStaticTeam2'); ThemeLoadStatic (PartyNewRound.StaticTeam3, 'PartyNewRoundStaticTeam3'); + ThemeLoadStatic (PartyNewRound.StaticNextPlayer1, 'PartyNewRoundStaticNextPlayer1'); + ThemeLoadStatic (PartyNewRound.StaticNextPlayer2, 'PartyNewRoundStaticNextPlayer2'); + ThemeLoadStatic (PartyNewRound.StaticNextPlayer3, 'PartyNewRoundStaticNextPlayer3'); ThemeLoadButton (PartyNewRound.ButtonNext, 'PartyNewRoundButtonNext'); diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index cf643310..8c1b8369 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -30,6 +30,7 @@ type TextNextPlayer1: Cardinal; TextNextPlayer2: Cardinal; TextNextPlayer3: Cardinal; + //Statics StaticRound1: Cardinal; StaticRound2: Cardinal; @@ -50,6 +51,12 @@ type StaticTeam1: Cardinal; StaticTeam2: Cardinal; StaticTeam3: Cardinal; + StaticNextPlayer1: Cardinal; + StaticNextPlayer2: Cardinal; + StaticNextPlayer3: Cardinal; + + + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; @@ -157,6 +164,9 @@ begin StaticTeam1 := AddStatic (Theme.PartyNewRound.StaticTeam1); StaticTeam2 := AddStatic (Theme.PartyNewRound.StaticTeam2); StaticTeam3 := AddStatic (Theme.PartyNewRound.StaticTeam3); + StaticNextPlayer1 := AddStatic (Theme.PartyNewRound.StaticNextPlayer1); + StaticNextPlayer2 := AddStatic (Theme.PartyNewRound.StaticNextPlayer2); + StaticNextPlayer3 := AddStatic (Theme.PartyNewRound.StaticNextPlayer3); LoadFromTheme(Theme.PartyNewRound); end; @@ -297,12 +307,14 @@ begin Text[TextScoreTeam1].Visible := True; Text[TextNameTeam1].Visible := True; Static[StaticTeam1].Visible := True; + Static[StaticNextPlayer1].Visible := True; end else begin Text[TextScoreTeam1].Visible := False; Text[TextNameTeam1].Visible := False; Static[StaticTeam1].Visible := False; + Static[StaticNextPlayer1].Visible := False; end; if (PartySession.Teams.NumTeams >= 2) then @@ -313,12 +325,14 @@ begin Text[TextScoreTeam2].Visible := True; Text[TextNameTeam2].Visible := True; Static[StaticTeam2].Visible := True; + Static[StaticNextPlayer2].Visible := True; end else begin Text[TextScoreTeam2].Visible := False; Text[TextNameTeam2].Visible := False; Static[StaticTeam2].Visible := False; + Static[StaticNextPlayer2].Visible := False; end; if (PartySession.Teams.NumTeams >= 3) then @@ -329,12 +343,14 @@ begin Text[TextScoreTeam3].Visible := True; Text[TextNameTeam3].Visible := True; Static[StaticTeam3].Visible := True; + Static[StaticNextPlayer3].Visible := True; end else begin Text[TextScoreTeam3].Visible := False; Text[TextNameTeam3].Visible := False; Static[StaticTeam3].Visible := False; + Static[StaticNextPlayer3].Visible := False; end; //nextRound Texts diff --git a/Languages/German.ini b/Languages/German.ini index 2ca72d4d..a4c46742 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -203,11 +203,11 @@ PARTY_NOBODY=Niemand PLUGIN_HDL_NAME=Balken halten PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich PLUGIN_UNTIL5000_NAME=Bis 5000 -PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt +PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt. PLUGIN_DUELL_NAME=Duell -PLUGIN_DUELL_DESC=Normales Spiel +PLUGIN_DUELL_DESC=Normales Spiel. Höchste Punkzahl gewinnt. PLUGIN_BLIND_NAME=Blind Mode -PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl +PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl. STAT_MAIN_DESC=Statistiken diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index bd43846a..b7c3c7b2 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -9,56 +9,112 @@ Name=Blue Color=Blue [Textures] -GrayLeft=Left Gray.bmp -GrayMid=Mid Gray.bmp -GrayRight=Right Gray.bmp -NoteBGLeft=Note BG Left.bmp -NoteBGMid=Note BG Mid.bmp -NoteBGRight=Note BG Right.bmp -NoteStar=Note Star.jpg -NotePerfectStar=NotePerfectStar.jpg -Ball=Ball.bmp -SongCover=Song Cover.jpg +MainBar=Main Bar.jpg +Logo=Main Bar2.jpg +Bar=Bar.jpg +ButtonF=Buttonf.jpg +HDL_Pointer=Pointer.BMP +# # # M A I N # # # Button=Button.jpg -LoadingBG=LoadingBackground.jpg -MainBG=MainBG_Blue.jpg -SongBG=Blue.jpg -ScoreBG=Blue.jpg -Top5BG=Blue.jpg -OptionsBG=Blue.jpg +#Backgrounds +LoadingBG = LoadingBackground.jpg +MainBG = Blue.jpg +SongBG = Blue.jpg +ScoreScreenBG = Blue.jpg +Top5BG = Blue.jpg +OptionsBG = Blue.jpg +PartyBG = Blue.jpg -MainSolo=Sing.jpg -MainMulti=Editor.jpg -MainOptions=Options.jpg -MainExit=Exit.jpg +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg -SongCD=cd.jpg +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg -Leiste1=Leiste1.jpg -Leiste2=Leiste2.jpg -MainBar=Main Bar.jpg -Logo=Main Bar2.jpg +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg -SongSelection1=Song Selection1.jpg -SongSelection2=Song Selection2.jpg -Bar=Bar.jpg -ButtonF=Buttonf.jpg -P=P.jpg -ScoreLine=Score Line.jpg -ScoreBox=Score Box.jpg -ScoreLevel=Score Level.jpg -ScoreLevelRound=Score Level Round.jpg +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = Ball.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = Score Box.jpg +ScoreLevel = Score Level.jpg +ScoreLevelRound = Score Level Round.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [main]scoreLine.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker=Joker.jpg +[BG]PartyRound=[BG]PartyRound.jpg +PartyPlayerButton=[party]playerButton.jpg +PartyTeamButton1=[party]roundTeamButton.jpg +PartyTeamButton2=[party]playerTeamButton.jpg +PartyRoundBG1=[party]roundBG1.jpg +PartyRoundBG2=[party]roundBG2.jpg +PartyRoundBG3=[party]roundBG3.jpg +PartyRoundBG4=[party]roundBG4.jpg + +# # # N A V I # # # +ButtonP = button_p.jpg +ButtonM = button_m.jpg +ButtonJ = button_j.jpg +ButtonAlt = button_alt.jpg +ButtonAZ = button_az.jpg +ButtonEnter= button_enter.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp -ScoreBG=Sing Score BG.jpg -LyricBar=Text Bar.jpg -LyricHelpBar=[sing]lyricsHelpBar.bmp +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg -SingBarBack=Sing Bar Back.jpg -SingBarBar=Sing Bar Bar.jpg -SingBarFront=Sing Bar Front.jpg -LineBonusBack=Line Bonus PopUp.jpg \ No newline at end of file +#dirty helpers +Rectangle = Rectangle.jpg +ButtonFade = ButtonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini index 965eeaf7..9fbc403b 100644 --- a/Skins/Deluxe/W&C.ini +++ b/Skins/Deluxe/W&C.ini @@ -78,7 +78,14 @@ PlayerNumberBox = [main]playerNumberBox.jpg # # # P A R T Y # # # Joker=Joker.jpg -PartyRounds=[BG]PartyRounds.jpg +[BG]PartyRound=[BG]PartyRound.jpg +PartyPlayerButton=[party]playerButton.jpg +PartyTeamButton1=[party]roundTeamButton.jpg +PartyTeamButton2=[party]playerTeamButton.jpg +PartyRoundBG1=[party]roundBG1.jpg +PartyRoundBG2=[party]roundBG2.jpg +PartyRoundBG3=[party]roundBG3.jpg +PartyRoundBG4=[party]roundBG4.jpg # # # N A V I # # # ButtonP = button_p.jpg diff --git a/Skins/Deluxe/[party]playerButton.jpg b/Skins/Deluxe/[party]playerButton.jpg new file mode 100644 index 00000000..15a34c66 Binary files /dev/null and b/Skins/Deluxe/[party]playerButton.jpg differ diff --git a/Skins/Deluxe/[party]playerTeamButton.jpg b/Skins/Deluxe/[party]playerTeamButton.jpg new file mode 100644 index 00000000..2faf9c4b Binary files /dev/null and b/Skins/Deluxe/[party]playerTeamButton.jpg differ diff --git a/Skins/Deluxe/[party]roundBG1.jpg b/Skins/Deluxe/[party]roundBG1.jpg new file mode 100644 index 00000000..464aabea Binary files /dev/null and b/Skins/Deluxe/[party]roundBG1.jpg differ diff --git a/Skins/Deluxe/[party]roundBG2.jpg b/Skins/Deluxe/[party]roundBG2.jpg new file mode 100644 index 00000000..3413958f Binary files /dev/null and b/Skins/Deluxe/[party]roundBG2.jpg differ diff --git a/Skins/Deluxe/[party]roundBG3.jpg b/Skins/Deluxe/[party]roundBG3.jpg new file mode 100644 index 00000000..c6b53caf Binary files /dev/null and b/Skins/Deluxe/[party]roundBG3.jpg differ diff --git a/Skins/Deluxe/[party]roundBG4.jpg b/Skins/Deluxe/[party]roundBG4.jpg new file mode 100644 index 00000000..5e4da0ac Binary files /dev/null and b/Skins/Deluxe/[party]roundBG4.jpg differ diff --git a/Skins/Deluxe/[party]roundTeamButton.jpg b/Skins/Deluxe/[party]roundTeamButton.jpg new file mode 100644 index 00000000..692db1bd Binary files /dev/null and b/Skins/Deluxe/[party]roundTeamButton.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 40951ee5..8f415335 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -315,7 +315,7 @@ Reflections=1 [SongEqualizer] Visible=1 Direction=1 -Color= White +Color=White Alpha=1 X=205 Y=514 @@ -324,7 +324,7 @@ PieceW=6 PieceH=6 Space=1 Bands=5 -Length=26 +Length=16 [SongText1] X =70 @@ -3972,8 +3972,8 @@ Y =270 W =150 H =50 Tex =Button -Color =DarkBlue -DColor = LightBlue +Color =P1Dark +DColor = P1Light Type=Font Black Texts=1 Reflection=1 @@ -3993,8 +3993,8 @@ Y =270 W =150 H =50 Tex =Button -Color =DarkRed -DColor = LightRed +Color =P2Dark +DColor = P2Light Type=Font Black Texts=1 Reflection=1 @@ -4015,8 +4015,8 @@ Y =270 W =150 H =50 Tex =Button -Color =DarkGreen -DColor = LightGreen +Color =P3Dark +DColor = P3Light Type=Font Black Texts=1 Reflection=1 @@ -4094,7 +4094,7 @@ Color=White Text= [PartyNewRound] -Texts =0 +Texts =8 [PartyNewRoundBackground] Tex=MainBG @@ -4102,111 +4102,86 @@ Tex=MainBG [PartyNewRoundText1] X =70 Y =6 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 0 -Size = 20 Color =White -Text =PARTY_MODE +Font =0 +Size =20 +Text =Party Modus +Align=0 [PartyNewRoundText2] -X =370 -Y =160 +X =460 +Y =100 Color =White Font =0 -Size =13 +Size =10 Text =PARTY_ROUND Align=0 [PartyNewRoundText3] -X =540 -Y =160 +X =600 +Y =100 Color =White Font =0 -Size =13 +Size =10 Text =PARTY_ROUND_WINNER Align=0 [PartyNewRoundText4] -X =40 -Y =200 -Color =White +X =290 +Y =552 +Color=Black Font =0 -Size =12 -Text =NEXT_ROUND +Size =7 Align=0 +Text=PARTY_ROUND_DESC [PartyNewRoundText5] -X =40 -Y =330 +X =448 +Y =350 Color =White Font =0 -Size =12 -Text =NEXT_ROUND_PLAYER -Align=0 +Size =18 +Text =PARTY_ROUND +Align=2 [PartyNewRoundText6] -X =120 -Y =552 -Color=Black +X =30 +Y =137 +Color=White Font =0 Size =7 Align=0 -Text=PARTY_MODE +Text=Dummytext, Player2, Player3, Player4 [PartyNewRoundText7] -X =290 -Y =552 -Color=Black +X =30 +Y =218 +Color=White Font =0 Size =7 Align=0 -Text=SING_LEGEND_CONTINUE +Text=Dummytext, Player2, Player3, Player4 + +[PartyNewRoundText8] +X =30 +Y =299 +Color=White +Font =0 +Size =7 +Align=0 +Text=Dummytext, Player2, Player3, Player4 [PartyNewRoundStatic1] -Tex =PartyRounds -X =350 -Y =160 -W = 450 -H = 380 +Tex =PartyRoundBG1 +X =450 +Y =103 +W = 330 +H = 24 Int=1 Color =DarkBlue Type=Font Black [PartyNewRoundStatic2] -Tex =Button -X =40 -Y =70 -W =200 -H =80 -Int=1 -Color =P1Dark -Type=Font Black - -[PartyNewRoundStatic3] -Tex =Button -X =280 -Y =70 -W =200 -H =80 -Int=1 -Color =P2Dark -Type=Font Black - -[PartyNewRoundStatic4] -Tex = -X =310 -Y =80 -W =130 -H =80 -Int=1 -Color =P3Dark -Type=Font Black -Reflection=1 -ReflectionSpacing=5 - -[PartyNewRoundStatic5] X =0 Y =549 W =252 @@ -4217,7 +4192,7 @@ Type=Plain Reflection=1 ReflectionSpacing=1 -[PartyNewRoundStatic6] +[PartyNewRoundStatic3] X =254 Y =549 W =548 @@ -4228,7 +4203,7 @@ Type=Plain Reflection=1 ReflectionSpacing=1 -[PartyNewRoundStatic7] +[PartyNewRoundStatic4] X =260 Y =553 W =26 @@ -4237,7 +4212,7 @@ Tex=ButtonEnter Color =White Type=Plain -[PartyNewRoundStatic8] +[PartyNewRoundStatic5] X =40 Y =22 W =27 @@ -4246,290 +4221,333 @@ Color =White Tex =PartyIcon Type=Font Black -[PartyNewRoundStatic9] -X =40 -Y =360 -W =290 -H =3 -Color =White -Tex =ScoreLine +[PartyNewRoundStatic6] +Tex =PartyRoundBG3 +X =250 +Y =350 +W = 300 +H = 50 +Int=1 +Color =DarkBlue Type=Font Black -[PartyNewRoundStatic10] -X =40 -Y =230 -W =215 -H =3 -Color =White -Tex =ScoreLine +[PartyNewRoundStatic7] +Tex =PartyRoundBG4 +X =50 +Y =495 +W = 700 +H = 30 +Int=1 +Color =LightBlue +Type=Font Black + +[PartyNewRoundStaticTeam1] +Tex =PartyTeamButton1 +X =20 +Y =110 +W =400 +H =50 +Int=1 +Color =P1Dark +Type=Font Black +Reflection=0 + +[PartyNewRoundStaticTeam2] +Tex =PartyTeamButton1 +X =20 +Y =191 +W =400 +H =50 +Int=1 +Color =P2Dark +Type=Font Black +Reflection=0 + +[PartyNewRoundStaticTeam3] +Tex =PartyTeamButton1 +X =20 +Y =272 +W =400 +H =50 +Int=1 +Color =P3Dark +Type=Font Black +Reflection=0 + +[PartyNewRoundStaticNextPlayer1] +Tex=PartyPlayerButton +X=155 +Y=415 +W=150 +H=50 +Type=Font Black +Texts=1 +Color =P1Light +Reflection=1 +ReflectionSpacing=2 + +[PartyNewRoundStaticNextPlayer2] +Tex=PartyPlayerButton +X=325 +Y=415 +W=150 +H=50 Type=Font Black +Texts=1 +Color =P2Light +Reflection=1 +ReflectionSpacing=2 + +[PartyNewRoundStaticNextPlayer3] +Tex=PartyPlayerButton +X=495 +Y=415 +W=150 +H=50 +Type=Font Black +Texts=1 +Color =P3Light +Reflection=1 +ReflectionSpacing=2 + [PartyNewRoundTextRound1] -X =370 -Y =210 +X =460 +Y =133 Color =White Font =0 -Size =11 +Size =8 Text =Round 1 Align=0 [PartyNewRoundTextRound2] -X =370 -Y =250 +X =460 +Y =162 Color =White Font =0 -Size =11 +Size =8 Text =Round 2 Align=0 [PartyNewRoundTextRound3] -X =370 -Y =290 +X =460 +Y =191 Color =White Font =0 -Size =11 +Size =8 Text =Round 3 Align=0 [PartyNewRoundTextRound4] -X =370 -Y =330 +X =460 +Y =220 Color =White Font =0 -Size =11 +Size =8 Text =Round 4 Align=0 [PartyNewRoundTextRound5] -X =370 -Y =370 +X =460 +Y =249 Color =White Font =0 -Size =11 +Size =8 Text =Round 5 Align=0 [PartyNewRoundTextRound6] -X =370 -Y =410 +X =460 +Y =278 Color =White Font =0 -Size =11 +Size =8 Text =Round 6 Align=0 [PartyNewRoundTextRound7] -X =370 -Y =450 +X =460 +Y =307 Color =White Font =0 -Size =11 +Size =8 Text =Round 7 Align=0 [PartyNewRoundTextWinner1] -X =540 -Y =210 +X =600 +Y =133 Color =White Font =0 -Size =11 +Size =8 Text =Winner 1 Align=0 [PartyNewRoundTextWinner2] -X =540 -Y =250 +X =600 +Y =162 Color =White Font =0 -Size =11 +Size =8 Text =Winner 2 Align=0 [PartyNewRoundTextWinner3] -X =540 -Y =290 +X =600 +Y =191 Color =White Font =0 -Size =11 +Size =8 Text =Winner 3 Align=0 [PartyNewRoundTextWinner4] -X =540 -Y =330 +X =600 +Y =220 Color =White Font =0 -Size =11 +Size =8 Text =Winner 4 Align=0 [PartyNewRoundTextWinner5] -X =540 -Y =370 +X =600 +Y =249 Color =White Font =0 -Size =11 +Size =8 Text =Winner 5 Align=0 [PartyNewRoundTextWinner6] -X =540 -Y =410 +X =600 +Y =278 Color =White Font =0 -Size =11 +Size =8 Text =Winner 6 Align=0 [PartyNewRoundTextWinner7] -X =540 -Y =450 +X =600 +Y =307 Color =White Font =0 -Size =11 +Size =8 Text =Winner 7 Align=0 [PartyNewRoundStaticRound1] -Tex = -X =40 -Y =300 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =135 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundStaticRound2] -Tex = -X =40 -Y =350 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =164 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundStaticRound3] -Tex = -X =40 -Y =400 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =193 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundStaticRound4] -Tex = -X =40 -Y =450 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =222 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundStaticRound5] -Tex = -X =40 -Y =500 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =251 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundStaticRound6] -Tex = -X =40 -Y =550 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =280 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundStaticRound7] -Tex = -X =40 -Y =590 -W =240 -H =35 -Color =GrayDark +Tex =PartyRoundBG2 +X =450 +Y =309 +W = 330 +H = 20 +Color =LightBlue Type =Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [PartyNewRoundTextNextRound] -X =40 -Y =250 -W = 310 +X =400 +Y =495 Color =White Font =0 Size =10 Text =Next Round -Align=0 +Align=1 [PartyNewRoundTextNextRoundNo] -X = -Y = +X =457 +Y =350 Color =White -Font = -Size =1 +Font =0 +Size =18 Text =99 Align=0 [PartyNewRoundTextScoreTeam1] -X =130 -Y = 110 +X =390 +Y =110 Color =White Font =0 -Size =15 +Size =17 Text =3000 -Align=0 +Align=1 [PartyNewRoundTextScoreTeam2] -X =370 -Y =110 +X =390 +Y =191 Color =White Font =0 -Size =15 +Size =17 Text =2000 -Align=0 +Align=1 [PartyNewRoundTextScoreTeam3] -X =610 -Y =110 +X =390 +Y =272 Color =White Font =0 -Size =15 +Size =17 Text =1000 -Align=0 +Align=1 [PartyNewRoundTextNameTeam1] -X =90 -Y =80 +X =30 +Y =108 Color =White Font =0 Size =12 @@ -4537,8 +4555,8 @@ Text =Team 1 Align=0 [PartyNewRoundTextNameTeam2] -X =330 -Y =80 +X =30 +Y =189 Color =White Font =0 Size =12 @@ -4546,8 +4564,8 @@ Text =Team 2 Align=0 [PartyNewRoundTextNameTeam3] -X =570 -Y =80 +X =30 +Y =270 Color =White Font =0 Size =12 @@ -4555,31 +4573,32 @@ Text =Team 3 Align=0 [PartyNewRoundTextNextPlayer1] -X =40 -Y =390 -Color =P1Dark +X =230 +Y =425 +Color =White Font =0 Size =10 Text =Player 1 -Align=0 +Align=1 [PartyNewRoundTextNextPlayer2] -X =40 -Y =420 -Color =P2Dark +X =400 +Y =425 +Color =White Font =0 Size =10 Text =Player 2 -Align=0 +Align=1 [PartyNewRoundTextNextPlayer3] -X =40 -Y =450 -Color =P3Dark +X =570 +Y =425 +Color =White Font =0 Size =10 Text =Player 3 -Align=0 +Align=1 + [PartyScore] Texts=0 @@ -4656,7 +4675,7 @@ Y =100 W =300 H =30 Tex=Leiste1 -Color =AquaLightGreen +Color =P1Light Int = 1 Type=Font Black @@ -4666,7 +4685,7 @@ Y =250 W =300 H =30 Tex=Leiste1 -Color =AquaLightGreen +Color =P2Light Int = 1 Type=Font Black @@ -4676,7 +4695,7 @@ Y =400 W =300 H =30 Tex=Leiste1 -Color =AquaLightGreen +Color =P3Light Int = 1 Type=Font Black @@ -4851,7 +4870,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_DIFFICULTY X = 40 -Y = 50 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -4872,7 +4891,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_PLAYLIST X = 40 -Y = 110 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -4893,7 +4912,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_PLAYLIST X = 40 -Y = 170 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -4914,7 +4933,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_ROUNDS X = 40 -Y = 230 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -4935,7 +4954,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS X = 40 -Y = 290 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -4956,7 +4975,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS_PLAYER1 X = 40 -Y = 350 +Y = 360 W = 230 H = 70 SkipX = 50 @@ -4977,7 +4996,7 @@ Tex = MainBar TexSBG = MainBar Text =PARTY_TEAMS_PLAYER2 X = 40 -Y = 410 +Y = 415 W = 230 H = 70 SkipX = 50 @@ -5022,6 +5041,35 @@ Texts=3 [PartyPlayerBackground] Tex=PartyBG +[PartyPlayerText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=PARTY_OPTIONS_DESC + +[PartyPlayerText2] +X =120 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_OPTIONS_GAME_PLAYERS + +[PartyPlayerText3] +X =300 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_SELECT_PLAYER + [PartyPlayerStatic1] X =0 Y =549 @@ -5044,24 +5092,6 @@ Type=Plain Reflection=1 ReflectionSpacing=1 -[PartyPlayerText2] -X =120 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_OPTIONS_GAME_PLAYERS - -[PartyPlayerText3] -X =300 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=PARTY_SELECT_PLAYER - [PartyPlayerStatic3] X =40 Y =22 @@ -5071,48 +5101,38 @@ Color =White Tex =PartyIcon Type=Font Black -[PartyPlayerText1] -X =70 -Y =6 -Color=White -Font =0 -Size =20 -Text=SING_ENTER_PLAYER_NAME -Color=White - - [PartyPlayerTeam1Name] -Tex=Button -X=105 +Tex=PartyTeamButton2 +X=85 Y=100 -W=150 +W=310 H=50 Type=Font Black Texts=1 -Color =P1Dark -DColor =P1Light -Reflection=0 +Color =P1Lightest +DColor =P1Dark [PartyPlayerTeam1NameText1] -X =75 -Y =10 +X =155 +Y =8 Font=0 -Size=10 +Size=12 Align=1 Text=Team 1 Color=White [PartyPlayerPlayer1Name] Tex=Button -X=105 -Y=190 +X=85 +Y=160 W =150 H =50 Type=Font Black Texts=1 -Color =P1Dark -DColor = GrayLight -Reflection=0 +Color =P1Lightest +DColor =P1Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer1NameText1] X =75 @@ -5125,15 +5145,16 @@ Color=White [PartyPlayerPlayer2Name] Tex=Button -X=105 -Y=270 +X=245 +Y=160 W =150 H =50 Type=Font Black Texts=1 -Color =P1Dark -DColor = GrayLight -Reflection=0 +Color =P1Lightest +DColor =P1Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer2NameText1] X =75 @@ -5146,15 +5167,16 @@ Color=White [PartyPlayerPlayer3Name] Tex=Button -X=105 -Y=350 +X=405 +Y=160 W =150 H =50 Type=Font Black Texts=1 -Color =P1Dark -DColor = GrayLight -Reflection=0 +Color =P1Lightest +DColor =P1Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer3NameText1] X =75 @@ -5167,15 +5189,16 @@ Color=White [PartyPlayerPlayer4Name] Tex=Button -X=105 -Y=430 +X=565 +Y=160 W =150 H =50 Type=Font Black Texts=1 -Color =P1Dark -DColor = GrayLight -Reflection=0 +Color =P1Lightest +DColor =P1Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer4NameText1] X =75 @@ -5187,37 +5210,37 @@ Text=Player 4 Color=White [PartyPlayerTeam2Name] -Tex=Button -X=325 -Y=100 -W =150 -H =50 +Tex=PartyTeamButton2 +X=85 +Y=240 +W=310 +H=50 Type=Font Black Texts=1 -Color =P2Dark -DColor =P2Light -Reflection=0 +Color =P2Lightest +DColor =P2Dark [PartyPlayerTeam2NameText1] -X =75 -Y =10 +X =155 +Y =8 Font=0 -Size=10 +Size=12 Align=1 Text=Team 2 Color=White [PartyPlayerPlayer5Name] Tex=Button -X=325 -Y=190 +X=85 +Y=300 W =150 H =50 Type=Font Black Texts=1 -Color =P2Dark -DColor = GrayLight -Reflection=0 +Color =P2Lightest +DColor =P2Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer5NameText1] X =75 @@ -5230,15 +5253,16 @@ Color=White [PartyPlayerPlayer6Name] Tex=Button -X=325 -Y=270 +X=245 +Y=300 W =150 H =50 Type=Font Black Texts=1 -Color =P2Dark -DColor = GrayLight -Reflection=0 +Color =P2Lightest +DColor =P2Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer6NameText1] X =75 @@ -5251,15 +5275,16 @@ Color=White [PartyPlayerPlayer7Name] Tex=Button -X=325 -Y=350 +X=405 +Y=300 W =150 H =50 Type=Font Black Texts=1 -Color =P2Dark -DColor = GrayLight -Reflection=0 +Color =P2Lightest +DColor =P2Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer7NameText1] X =75 @@ -5272,15 +5297,16 @@ Color=White [PartyPlayerPlayer8Name] Tex=Button -X=325 -Y=430 +X=565 +Y=300 W =150 H =50 Type=Font Black Texts=1 -Color =P2Dark -DColor = GrayLight -Reflection=0 +Color =P2Lightest +DColor =P2Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer8NameText1] X =75 @@ -5293,36 +5319,37 @@ Color=White [PartyPlayerTeam3Name] Tex=Button -X=545 -Y=100 -W =150 -H =50 +Tex=PartyTeamButton2 +X=85 +Y=380 +W=310 +H=50 Type=Font Black Texts=1 -Color =P3Dark -DColor =P3Light -Reflection=0 +Color =P3Lightest +DColor =P3Dark [PartyPlayerTeam3NameText1] -X =75 -Y =10 +X =155 +Y =8 Font=0 -Size=10 +Size=12 Align=1 Text=Team 3 Color=White [PartyPlayerPlayer9Name] Tex=Button -X=545 -Y=190 +X=85 +Y=440 W =150 H =50 Type=Font Black Texts=1 -Color =P3Dark -DColor = GrayLight -Reflection=0 +Color =P3Lightest +DColor =P3Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer9NameText1] X =75 @@ -5335,15 +5362,16 @@ Color=White [PartyPlayerPlayer10Name] Tex=Button -X=545 -Y=270 +X=245 +Y=440 W =150 H =50 Type=Font Black Texts=1 -Color =P3Dark -DColor = GrayLight -Reflection=0 +Color =P3Lightest +DColor =P3Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer10NameText1] X =75 @@ -5356,15 +5384,16 @@ Color=White [PartyPlayerPlayer11Name] Tex=Button -X=545 -Y=350 +X=405 +Y=440 W =150 H =50 Type=Font Black Texts=1 -Color =P3Dark -DColor = GrayLight -Reflection=0 +Color =P3Lightest +DColor =P3Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer11NameText1] X =75 @@ -5377,15 +5406,16 @@ Color=White [PartyPlayerPlayer12Name] Tex=Button -X=545 -Y=430 +X=565 +Y=440 W =150 H =50 Type=Font Black Texts=1 -Color =P3Dark -DColor = GrayLight -Reflection=0 +Color =P3Lightest +DColor =P3Light +Reflection=1 +ReflectionSpacing=1 [PartyPlayerPlayer12NameText1] X =75 -- cgit v1.2.3 From 5737662e749229ef0631e3731858a5bf013c78eb Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 30 Apr 2007 12:30:35 +0000 Subject: Added ability to make buttons invisible(and also unselectable) in Theme. Visible = 0 Useful for f.e. the Exit Button from MainScreen Fixed a bug in PartyNewRoundScreen that causes a crash when an Arrow Button is pressed git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@152 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 5 +++++ Game/Code/Menu/UMenu.pas | 5 ++++- Game/Code/Screens/UScreenPartyNewRound.pas | 8 -------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 414da72f..47c1abf1 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -131,6 +131,9 @@ type DInt: real; Tex: string; Typ: string; + + Visible: Boolean; + //Reflection Mod Reflection: boolean; Reflectionspacing: Real; @@ -1530,6 +1533,8 @@ begin ThemeButton.DColB := Color[C].RGB.B; end; + ThemeButton.Visible := (ThemeIni.ReadInteger(Name, 'Visible', 1) = 1); + //Fade Mod ThemeButton.SelectH := ThemeIni.ReadInteger (Name, 'SelectH', ThemeButton.H); ThemeButton.SelectW := ThemeIni.ReadInteger (Name, 'SelectW', ThemeButton.W); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index c30b5c5c..4ad8270a 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -528,6 +528,9 @@ begin Button[Result].Z := ThemeButton.Z; + //Button Visibility + Button[Result].Visible := ThemeButton.Visible; + //Some Things from ButtonFading Button[Result].SelectH := ThemeButton.SelectH; Button[Result].SelectW := ThemeButton.SelectW; @@ -574,7 +577,7 @@ end; function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean; ReflectionSpacing, DeSelectReflectionSpacing: Real): integer; begin // adds button - //SetLength is used to reduce Memory usement + //SetLength is used once to reduce Memory usement if (ButtonPos <> -1) then begin Result := ButtonPos; diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index 8c1b8369..09391438 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -99,14 +99,6 @@ begin FadeTo(@ScreenSingModi); end; end; - - // Up and Down could be done at the same time, - // but I don't want to declare variables inside - // functions like this one, called so many times - SDLK_DOWN: InteractNext; - SDLK_UP: InteractPrev; - SDLK_RIGHT: InteractNext; - SDLK_LEFT: InteractPrev; end; end else // Key Up -- cgit v1.2.3 From ac508bab2e69d6ed7987c23f383ed503a310785c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 30 Apr 2007 15:50:23 +0000 Subject: Added new Object to PartyNewRound Screen TextTeam[1..3]Players: Text shows the Players of the Team git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@153 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 12 ++++++---- Game/Code/Screens/UScreenPartyNewRound.pas | 36 ++++++++++++++++++++++++++++-- Themes/Deluxe.ini | 6 ++--- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 47c1abf1..6004502e 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -520,14 +520,16 @@ type TextNameTeam1: TThemeText; TextNameTeam2: TThemeText; TextNameTeam3: TThemeText; + TextTeam1Players: TThemeText; + TextTeam2Players: TThemeText; + TextTeam3Players: TThemeText; + StaticTeam1: TThemeStatic; StaticTeam2: TThemeStatic; StaticTeam3: TThemeStatic; StaticNextPlayer1: TThemeStatic; StaticNextPlayer2: TThemeStatic; StaticNextPlayer3: TThemeStatic; - - ButtonNext: TThemeButton; end; TThemePartyScore = class(TThemeBasic) @@ -1217,6 +1219,10 @@ begin ThemeLoadText (PartyNewRound.TextNameTeam2, 'PartyNewRoundTextNameTeam2'); ThemeLoadText (PartyNewRound.TextNameTeam3, 'PartyNewRoundTextNameTeam3'); + ThemeLoadText (PartyNewRound.TextTeam1Players, 'PartyNewRoundTextTeam1Players'); + ThemeLoadText (PartyNewRound.TextTeam2Players, 'PartyNewRoundTextTeam2Players'); + ThemeLoadText (PartyNewRound.TextTeam3Players, 'PartyNewRoundTextTeam3Players'); + ThemeLoadStatic (PartyNewRound.StaticTeam1, 'PartyNewRoundStaticTeam1'); ThemeLoadStatic (PartyNewRound.StaticTeam2, 'PartyNewRoundStaticTeam2'); ThemeLoadStatic (PartyNewRound.StaticTeam3, 'PartyNewRoundStaticTeam3'); @@ -1224,8 +1230,6 @@ begin ThemeLoadStatic (PartyNewRound.StaticNextPlayer2, 'PartyNewRoundStaticNextPlayer2'); ThemeLoadStatic (PartyNewRound.StaticNextPlayer3, 'PartyNewRoundStaticNextPlayer3'); - ThemeLoadButton (PartyNewRound.ButtonNext, 'PartyNewRoundButtonNext'); - //Party Score ThemeLoadBasic(PartyScore, 'PartyScore'); diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index 09391438..22f76218 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -48,6 +48,10 @@ type TextNameTeam2: Cardinal; TextNameTeam3: Cardinal; + TextTeam1Players: Cardinal; + TextTeam2Players: Cardinal; + TextTeam3Players: Cardinal; + StaticTeam1: Cardinal; StaticTeam2: Cardinal; StaticTeam3: Cardinal; @@ -153,6 +157,11 @@ begin TextNameTeam2 := AddText (Theme.PartyNewRound.TextNameTeam2); TextNameTeam3 := AddText (Theme.PartyNewRound.TextNameTeam3); + //Players + TextTeam1Players := AddText (Theme.PartyNewRound.TextTeam1Players); + TextTeam2Players := AddText (Theme.PartyNewRound.TextTeam2Players); + TextTeam3Players := AddText (Theme.PartyNewRound.TextTeam3Players); + StaticTeam1 := AddStatic (Theme.PartyNewRound.StaticTeam1); StaticTeam2 := AddStatic (Theme.PartyNewRound.StaticTeam2); StaticTeam3 := AddStatic (Theme.PartyNewRound.StaticTeam3); @@ -166,6 +175,22 @@ end; procedure TScreenPartyNewRound.onShow; var I: Integer; + function GetTeamPlayers(const Num: Byte): String; + var + Players: Array of String; + J: Byte; + begin + if (Num-1 >= PartySession.Teams.NumTeams) then + exit; + + //Create Players Array + SetLength(Players, PartySession.Teams.TeamInfo[Num-1].NumPlayers); + For J := 0 to PartySession.Teams.TeamInfo[Num-1].NumPlayers-1 do + Players[J] := String(PartySession.Teams.TeamInfo[Num-1].PlayerInfo[J].Name); + + //Implode and Return + Result := Language.Implode(Players); + end; begin PartySession.StartRound; @@ -295,9 +320,11 @@ begin begin Text[TextScoreTeam1].Text := InttoStr(PartySession.Teams.TeamInfo[0].Score); Text[TextNameTeam1].Text := String(PartySession.Teams.TeamInfo[0].Name); + Text[TextTeam1Players].Text := GetTeamPlayers(1); Text[TextScoreTeam1].Visible := True; Text[TextNameTeam1].Visible := True; + Text[TextTeam1Players].Visible := True; Static[StaticTeam1].Visible := True; Static[StaticNextPlayer1].Visible := True; end @@ -305,6 +332,7 @@ begin begin Text[TextScoreTeam1].Visible := False; Text[TextNameTeam1].Visible := False; + Text[TextTeam1Players].Visible := False; Static[StaticTeam1].Visible := False; Static[StaticNextPlayer1].Visible := False; end; @@ -313,9 +341,11 @@ begin begin Text[TextScoreTeam2].Text := InttoStr(PartySession.Teams.TeamInfo[1].Score); Text[TextNameTeam2].Text := String(PartySession.Teams.TeamInfo[1].Name); + Text[TextTeam2Players].Text := GetTeamPlayers(2); Text[TextScoreTeam2].Visible := True; Text[TextNameTeam2].Visible := True; + Text[TextTeam2Players].Visible := True; Static[StaticTeam2].Visible := True; Static[StaticNextPlayer2].Visible := True; end @@ -323,6 +353,7 @@ begin begin Text[TextScoreTeam2].Visible := False; Text[TextNameTeam2].Visible := False; + Text[TextTeam2Players].Visible := False; Static[StaticTeam2].Visible := False; Static[StaticNextPlayer2].Visible := False; end; @@ -331,9 +362,11 @@ begin begin Text[TextScoreTeam3].Text := InttoStr(PartySession.Teams.TeamInfo[2].Score); Text[TextNameTeam3].Text := String(PartySession.Teams.TeamInfo[2].Name); + Text[TextTeam3Players].Text := GetTeamPlayers(3); Text[TextScoreTeam3].Visible := True; Text[TextNameTeam3].Visible := True; + Text[TextTeam3Players].Visible := True; Static[StaticTeam3].Visible := True; Static[StaticNextPlayer3].Visible := True; end @@ -341,6 +374,7 @@ begin begin Text[TextScoreTeam3].Visible := False; Text[TextNameTeam3].Visible := False; + Text[TextTeam3Players].Visible := False; Static[StaticTeam3].Visible := False; Static[StaticNextPlayer3].Visible := False; end; @@ -372,8 +406,6 @@ begin else Text[TextNextPlayer3].Visible := False; - Log.LogError('Plugin Selected: ' + InttoStr(PartySession.Rounds[0].Plugin)); - // LCD.WriteText(1, ' Choose mode: '); // UpdateLCD; diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 8f415335..a0a6abb9 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -4144,7 +4144,7 @@ Size =18 Text =PARTY_ROUND Align=2 -[PartyNewRoundText6] +[PartyNewRoundTextTeam1Players] X =30 Y =137 Color=White @@ -4153,7 +4153,7 @@ Size =7 Align=0 Text=Dummytext, Player2, Player3, Player4 -[PartyNewRoundText7] +[PartyNewRoundTextTeam2Players] X =30 Y =218 Color=White @@ -4162,7 +4162,7 @@ Size =7 Align=0 Text=Dummytext, Player2, Player3, Player4 -[PartyNewRoundText8] +[PartyNewRoundTextTeam3Players] X =30 Y =299 Color=White -- cgit v1.2.3 From dfa0f5a144b8bf018b29d801f7d8a7c54ae6d108 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 2 May 2007 17:44:23 +0000 Subject: 2 Bugs Fixed: Select Last Song instead First Song when showing Song Screen for the first Time Go to MainScreen instead of Song Screen when pressing Esc in the Name Screen after Selecting Select Players from Menu git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@154 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UPlaylist.pas | 1 + Game/Code/Screens/UScreenName.pas | 5 ++++- Game/Code/Screens/UScreenSong.pas | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas index a6207c4f..15e17047 100644 --- a/Game/Code/Classes/UPlaylist.pas +++ b/Game/Code/Classes/UPlaylist.pas @@ -217,6 +217,7 @@ begin end; finally + log.LogError('Could not write Playlistfile "' + Playlists[Index].Name + '"'); CloseFile(F); end; end; diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index 9819b994..9db7947c 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -41,7 +41,10 @@ begin begin Ini.SaveNames; Music.PlayBack; - FadeTo(@ScreenMain); + if GoTo_SingScreen then + FadeTo(@ScreenSong) + else + FadeTo(@ScreenMain); end; SDLK_RETURN: diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 5c383168..1f3c7c8f 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1169,7 +1169,7 @@ begin if (Ini.Tabs_at_startup = 1) AND (CatSongs.CatNumShow = -1) then begin CatSongs.ShowCategoryList; - SelectNext;SelectPrev; //Workaround <- must be fixed sometime + SelectNext; //Workaround <- must be fixed sometime FixSelected; //Show Cat in Top Left Mod HideCatTL; -- cgit v1.2.3 From 79c50bf9f8b6ae2046deaa401005944e2ce4d17b Mon Sep 17 00:00:00 2001 From: b1indy Date: Wed, 2 May 2007 19:37:02 +0000 Subject: popup-screen will be included soon git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@155 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenPopup.pas | 165 +++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 Game/Code/Screens/UScreenPopup.pas diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas new file mode 100644 index 00000000..41279197 --- /dev/null +++ b/Game/Code/Screens/UScreenPopup.pas @@ -0,0 +1,165 @@ +unit UScreenPopup; + +interface + +uses + UMenu, SDL, UMusic, UPliki, SysUtils, UThemes, dialogs, Messages; + +type + TScreenPopup = class(TMenu) + private + CurMenu: Byte; //Num of the cur. Shown Menu + public + Visible: Boolean; //Whether the Menu should be Drawn + + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure ShowPopup(sPopup: Byte); + function Draw: boolean; override; + end; + +const + PU_Error = 1; + + +var + ISelections: Array of String; + SelectValue: Integer; + + +implementation + +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist; + +function TScreenPopup.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; + function IsVisible: Boolean; + begin + Result := True; + if (Interactions[Interaction].Typ = 0) then + begin + Result := Button[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 1) then + begin + //Result := Selects[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 3) then + begin + Result := SelectsS[Interactions[Interaction].Num].Visible; + end; + end; + + Procedure SelectNext; + begin + repeat + InteractNext; + until IsVisible; + end; + + Procedure SelectPrev; + begin + repeat + InteractPrev; + until IsVisible; + end; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Result := false; + end; + + SDLK_RETURN: + begin + Visible:=False; + Result := false; + end; + + SDLK_DOWN: SelectNext; + SDLK_UP: SelectPrev; + + SDLK_RIGHT: SelectNext; + SDLK_LEFT: SelectPrev; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenPopup.Create; +var + I: integer; +begin + inherited Create; + SetLength(ISelections, 1); + ISelections[0] := 'Dummy'; + + AddBackground(Theme.CheckPopup.Background.Tex); + + AddButton(Theme.CheckPopup.Button1); + if (Length(Button[0].Text) = 0) then + AddButtonText(14, 20, 'Button 1'); + + AddButton(Theme.CheckPopup.Button2); + if (Length(Button[1].Text) = 0) then + AddButtonText(14, 20, 'Button 2'); + + AddText(Theme.CheckPopup.TextCheck); + + for I := 0 to High(Theme.CheckPopup.Static) do + AddStatic(Theme.CheckPopup.Static[I]); + + for I := 0 to High(Theme.CheckPopup.Text) do + AddText(Theme.CheckPopup.Text[I]); + + Interaction := 0; +end; + +function TScreenPopup.Draw: boolean; +begin + inherited Draw; +end; + +procedure TScreenPopup.onShow; +begin + +end; + +procedure TScreenPopup.ShowPopup(sPopup: Byte); +begin + Interaction := 0; //Reset Interaction + Visible := True; //Set Visible + Case sPopup of + PU_Error: + begin + Text[0].Text := 'Wirklich beenden?';{Language.Translate('SONG_MENU_NAME_MAIN');} + + Button[0].Visible := True; + Button[1].Visible := True; +// Button[2].Visible := True; +// Button[3].Visible := True; +// SelectsS[0].Visible := False; + + Button[0].Text[0].Text := 'JA'; + Button[1].Text[0].Text := 'NEIN'; +// Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD'); +// Button[3].Text[0].Text := Language.Translate('SONG_MENU_EDIT'); + end; + end; +end; + +end. \ No newline at end of file -- cgit v1.2.3 From 28b809432bd8064400bbc9a52a4e354debf86bb6 Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 2 May 2007 21:23:24 +0000 Subject: General cleanup of Skins/Deluxe. Some Themework done. To do: Party-Mode: 2 screens, Navigation-Bar about 60%, Statistic Graphics marked with x_ are temp. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@156 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 55 ++-- Skins/Deluxe/Ball3.bmp | Bin 536 -> 0 bytes Skins/Deluxe/Bar.jpg | Bin 1377 -> 0 bytes Skins/Deluxe/Blue.ini | 101 +++--- Skins/Deluxe/Blue.jpg | Bin 110682 -> 0 bytes Skins/Deluxe/Button.jpg | Bin 1519 -> 0 bytes Skins/Deluxe/ButtonFade.jpg | Bin 825 -> 0 bytes Skins/Deluxe/Buttonf.jpg | Bin 17717 -> 0 bytes Skins/Deluxe/Joker.bak.jpg | Bin 3501 -> 0 bytes Skins/Deluxe/Joker.jpg | Bin 7169 -> 0 bytes Skins/Deluxe/Left gray.bmp | Bin 822 -> 0 bytes Skins/Deluxe/Line.jpg | Bin 1041 -> 0 bytes Skins/Deluxe/LoadingBackground.jpg | Bin 41690 -> 0 bytes Skins/Deluxe/Main Bar.jpg | Bin 2957 -> 0 bytes Skins/Deluxe/MainBG_Blue.jpg | Bin 110682 -> 0 bytes Skins/Deluxe/Mid gray.bmp | Bin 3126 -> 0 bytes Skins/Deluxe/Note BG Left.bmp | Bin 1590 -> 0 bytes Skins/Deluxe/Note BG Mid.bmp | Bin 1590 -> 0 bytes Skins/Deluxe/Note BG Right.bmp | Bin 1590 -> 0 bytes Skins/Deluxe/P.bak.jpg | Bin 1234 -> 0 bytes Skins/Deluxe/P.jpg | Bin 1968 -> 0 bytes Skins/Deluxe/Pointer.bmp | Bin 6198 -> 0 bytes Skins/Deluxe/Right gray.bmp | Bin 822 -> 0 bytes Skins/Deluxe/RoundPartyBG.JPG | Bin 6485 -> 0 bytes Skins/Deluxe/Score Box.jpg | Bin 690 -> 0 bytes Skins/Deluxe/Score Level Round.jpg | Bin 614 -> 0 bytes Skins/Deluxe/Score Level.jpg | Bin 1264 -> 0 bytes Skins/Deluxe/Score Line.jpg | Bin 730 -> 0 bytes Skins/Deluxe/Sing Score BG.jpg | Bin 3692 -> 0 bytes Skins/Deluxe/Song Fade.jpg | Bin 2537 -> 0 bytes Skins/Deluxe/Square.jpg | Bin 1574 -> 0 bytes Skins/Deluxe/Text Bar.jpg | Bin 5462 -> 0 bytes Skins/Deluxe/W&C-Summer.ini | 125 ++++++++ Skins/Deluxe/W&C.ini | 120 ------- Skins/Deluxe/[BG]PartyRound.jpg | Bin 5781 -> 0 bytes Skins/Deluxe/[BG]PartyRounds.jpg | Bin 26594 -> 0 bytes Skins/Deluxe/[button]alt.jpg | Bin 0 -> 3752 bytes Skins/Deluxe/[button]az.jpg | Bin 0 -> 3784 bytes Skins/Deluxe/[button]enter.jpg | Bin 0 -> 3281 bytes Skins/Deluxe/[button]j.jpg | Bin 0 -> 2851 bytes Skins/Deluxe/[button]m.jpg | Bin 0 -> 3062 bytes Skins/Deluxe/[button]navi.jpg | Bin 0 -> 4304 bytes Skins/Deluxe/[button]p.jpg | Bin 0 -> 2900 bytes Skins/Deluxe/[helper]buttonFade.jpg | Bin 0 -> 825 bytes Skins/Deluxe/[helper]rectangle.jpg | Bin 0 -> 604 bytes Skins/Deluxe/[main]button.jpg | Bin 0 -> 1519 bytes Skins/Deluxe/[main]buttonf.jpg | Bin 0 -> 17717 bytes Skins/Deluxe/[main]mainBar.jpg | Bin 0 -> 2957 bytes Skins/Deluxe/[main]scoreLine.jpg | Bin 559 -> 0 bytes Skins/Deluxe/[party]Joker.jpg | Bin 0 -> 7169 bytes Skins/Deluxe/[party]pointer.bmp | Bin 0 -> 6198 bytes Skins/Deluxe/[score]Line.jpg | Bin 0 -> 559 bytes Skins/Deluxe/[score]box.jpg | Bin 0 -> 690 bytes Skins/Deluxe/[score]level.jpg | Bin 0 -> 1264 bytes Skins/Deluxe/[score]levelRound.jpg | Bin 0 -> 614 bytes Skins/Deluxe/[sing]LyricsBall.bmp | Bin 0 -> 536 bytes Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp | Bin 3128 -> 0 bytes Skins/Deluxe/[sing]timeBar.jpg | Bin 0 -> 1377 bytes Skins/Deluxe/[special]bar1.jpg | Bin 1128 -> 3990 bytes Skins/Deluxe/button_alt.jpg | Bin 3752 -> 0 bytes Skins/Deluxe/button_az.jpg | Bin 3784 -> 0 bytes Skins/Deluxe/button_enter.jpg | Bin 3281 -> 0 bytes Skins/Deluxe/button_j.jpg | Bin 2851 -> 0 bytes Skins/Deluxe/button_m.jpg | Bin 3062 -> 0 bytes Skins/Deluxe/button_p.jpg | Bin 2900 -> 0 bytes Skins/Deluxe/rectangle.jpg | Bin 604 -> 0 bytes Skins/Deluxe/x_W&C-Autum.ini | 125 ++++++++ Skins/Deluxe/x_W&C-Winter.ini | 125 ++++++++ Skins/Deluxe/x_[bg-load]autum.jpg | Bin 0 -> 102278 bytes Skins/Deluxe/x_[bg-load]blue.jpg | Bin 0 -> 94649 bytes Skins/Deluxe/x_[bg-load]winter.jpg | Bin 0 -> 104401 bytes Skins/Deluxe/x_[bg-main]autum.jpg | Bin 0 -> 99750 bytes Skins/Deluxe/x_[bg-main]blue.jpg | Bin 0 -> 84321 bytes Skins/Deluxe/x_[bg-main]winter.jpg | Bin 0 -> 100174 bytes Skins/Deluxe/x_[button]esc.jpg | Bin 0 -> 3403 bytes Skins/Deluxe/x_[icon]stats.jpg | Bin 0 -> 1741 bytes Themes/Deluxe.ini | 531 +++++++++++++++++++++++-------- 77 files changed, 870 insertions(+), 312 deletions(-) delete mode 100644 Skins/Deluxe/Ball3.bmp delete mode 100644 Skins/Deluxe/Bar.jpg delete mode 100644 Skins/Deluxe/Blue.jpg delete mode 100644 Skins/Deluxe/Button.jpg delete mode 100644 Skins/Deluxe/ButtonFade.jpg delete mode 100644 Skins/Deluxe/Buttonf.jpg delete mode 100644 Skins/Deluxe/Joker.bak.jpg delete mode 100644 Skins/Deluxe/Joker.jpg delete mode 100644 Skins/Deluxe/Left gray.bmp delete mode 100644 Skins/Deluxe/Line.jpg delete mode 100644 Skins/Deluxe/LoadingBackground.jpg delete mode 100644 Skins/Deluxe/Main Bar.jpg delete mode 100644 Skins/Deluxe/MainBG_Blue.jpg delete mode 100644 Skins/Deluxe/Mid gray.bmp delete mode 100644 Skins/Deluxe/Note BG Left.bmp delete mode 100644 Skins/Deluxe/Note BG Mid.bmp delete mode 100644 Skins/Deluxe/Note BG Right.bmp delete mode 100644 Skins/Deluxe/P.bak.jpg delete mode 100644 Skins/Deluxe/P.jpg delete mode 100644 Skins/Deluxe/Pointer.bmp delete mode 100644 Skins/Deluxe/Right gray.bmp delete mode 100644 Skins/Deluxe/RoundPartyBG.JPG delete mode 100644 Skins/Deluxe/Score Box.jpg delete mode 100644 Skins/Deluxe/Score Level Round.jpg delete mode 100644 Skins/Deluxe/Score Level.jpg delete mode 100644 Skins/Deluxe/Score Line.jpg delete mode 100644 Skins/Deluxe/Sing Score BG.jpg delete mode 100644 Skins/Deluxe/Song Fade.jpg delete mode 100644 Skins/Deluxe/Square.jpg delete mode 100644 Skins/Deluxe/Text Bar.jpg create mode 100644 Skins/Deluxe/W&C-Summer.ini delete mode 100644 Skins/Deluxe/W&C.ini delete mode 100644 Skins/Deluxe/[BG]PartyRound.jpg delete mode 100644 Skins/Deluxe/[BG]PartyRounds.jpg create mode 100644 Skins/Deluxe/[button]alt.jpg create mode 100644 Skins/Deluxe/[button]az.jpg create mode 100644 Skins/Deluxe/[button]enter.jpg create mode 100644 Skins/Deluxe/[button]j.jpg create mode 100644 Skins/Deluxe/[button]m.jpg create mode 100644 Skins/Deluxe/[button]navi.jpg create mode 100644 Skins/Deluxe/[button]p.jpg create mode 100644 Skins/Deluxe/[helper]buttonFade.jpg create mode 100644 Skins/Deluxe/[helper]rectangle.jpg create mode 100644 Skins/Deluxe/[main]button.jpg create mode 100644 Skins/Deluxe/[main]buttonf.jpg create mode 100644 Skins/Deluxe/[main]mainBar.jpg delete mode 100644 Skins/Deluxe/[main]scoreLine.jpg create mode 100644 Skins/Deluxe/[party]Joker.jpg create mode 100644 Skins/Deluxe/[party]pointer.bmp create mode 100644 Skins/Deluxe/[score]Line.jpg create mode 100644 Skins/Deluxe/[score]box.jpg create mode 100644 Skins/Deluxe/[score]level.jpg create mode 100644 Skins/Deluxe/[score]levelRound.jpg create mode 100644 Skins/Deluxe/[sing]LyricsBall.bmp delete mode 100644 Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp create mode 100644 Skins/Deluxe/[sing]timeBar.jpg delete mode 100644 Skins/Deluxe/button_alt.jpg delete mode 100644 Skins/Deluxe/button_az.jpg delete mode 100644 Skins/Deluxe/button_enter.jpg delete mode 100644 Skins/Deluxe/button_j.jpg delete mode 100644 Skins/Deluxe/button_m.jpg delete mode 100644 Skins/Deluxe/button_p.jpg delete mode 100644 Skins/Deluxe/rectangle.jpg create mode 100644 Skins/Deluxe/x_W&C-Autum.ini create mode 100644 Skins/Deluxe/x_W&C-Winter.ini create mode 100644 Skins/Deluxe/x_[bg-load]autum.jpg create mode 100644 Skins/Deluxe/x_[bg-load]blue.jpg create mode 100644 Skins/Deluxe/x_[bg-load]winter.jpg create mode 100644 Skins/Deluxe/x_[bg-main]autum.jpg create mode 100644 Skins/Deluxe/x_[bg-main]blue.jpg create mode 100644 Skins/Deluxe/x_[bg-main]winter.jpg create mode 100644 Skins/Deluxe/x_[button]esc.jpg create mode 100644 Skins/Deluxe/x_[icon]stats.jpg diff --git a/Languages/German.ini b/Languages/German.ini index a4c46742..6459dbdd 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -2,6 +2,7 @@ SING_LOADING=Lade... SING_CHOOSE_MODE=Modus wählen + SING_SING=Singen SING_SING_DESC=Singen @@ -80,7 +81,7 @@ SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitz SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Songauswahl SING_LEGEND_SELECT=AUSWÄHLEN -SING_LEGEND_NAVIGATE=NAVIGIEREN +SING_LEGEND_NAVIGATE=Navigieren SING_LEGEND_CONTINUE=weiter @@ -161,7 +162,6 @@ SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=Joker spielen - SONG_JUMPTO_DESC=Jump to Song SONG_JUMPTO_TYPE_DESC=Suchen in: SONG_JUMPTO_TYPE1=Allem @@ -172,44 +172,61 @@ SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden SONG_JUMPTO_HELP=Text eingeben um zu suchen SONG_JUMPTO_CATTEXT=Suche nach: %s -PARTY_ROUND=Runde -PARTY_ROUND_WINNER=Sieger -PARTY_SCORE_WINS=%s hat gewonnen! -PARTY_OPTIONS_DESC=Party Modus -PARTY_OPTIONS_OPTIONS=Party Optionen -PARTY_OPTIONS_OPTIONS_DESC=Macht eure Einstellungen +PARTY_MODE=Party Modus PARTY_DIFFICULTY=Schwierigkeit PARTY_PLAYLIST=Playlist Modus -PARTY_ROUNDS=Runden -PARTY_TEAMS=Teams -PARTY_TEAMS_PLAYER1=Spieler Team1 -PARTY_TEAMS_PLAYER2=Spieler Team2 -PARTY_TEAMS_PLAYER3=Spieler Team3 -PARTY_SELECT_PLAYER=Gebt eure Team- und Spielernamen ein! PARTY_PLAYLIST_ALL=Alle Lieder PARTY_PLAYLIST_CATEGORY=Ordner PARTY_PLAYLIST_PLAYLIST=Playlist +PARTY_ROUNDS=Runden +PARTY_TEAMS=Teams +PARTY_TEAMS_PLAYER1=Spieler Team 1 +PARTY_TEAMS_PLAYER2=Spieler Team 2 +PARTY_TEAMS_PLAYER3=Spieler Team 3 -PARTY_MODE=Party Modus +PARTY_LEGEND_CONTINUE=weiter -NEXT_ROUND=Nächste Runde: -NEXT_ROUND_PLAYER=Nächste Runde spielt: +PARTY_OPTIONS_DESC=Einstellungen für das Partyspiel. +PARTY_OPTIONS_WHEREAMI=Party Optionen -PARTY_DISMISSED=Ausgeschieden +PARTY_PLAYER_DESC=Team- und Spielernamen eingeben. +PARTY_PLAYER_WHEREAMI=Party Spielernamen +PARTY_PLAYER_ENTER_NAME=Namen eingeben +PARTY_PLAYER_LEGEND_CONTINUE=Party-Spiel starten + +PARTY_ROUND_DESC=Die nächsten Spieler an die Micros! +PARTY_ROUND_WHEREAMI=Party nächste Runde +PARTY_ROUND_LEGEND_CONTINUE=Runde starten + +PARTY_SCORE_DESC=Punkte der letzten Runde. +PARTY_SCORE_WHEREAMI=Party Punkte + +PARTY_WIN_DESC=Gewinner des Partyspiels. +PARTY_WIN_WHEREAMI=Party Gewinner +PARTY_WIN_LEGEND_CONTINUE=zurück zum Hauptmenue + +PARTY_ROUND=Runde +PARTY_ROUND_WINNER=Sieger PARTY_NOTPLAYEDYET=Noch nicht gespielt PARTY_NOBODY=Niemand +NEXT_ROUND=Nächste Runde: + +PARTY_DISMISSED=Ausgeschieden +PARTY_SCORE_WINS=Team %s hat gewonnen! PLUGIN_HDL_NAME=Balken halten PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich + PLUGIN_UNTIL5000_NAME=Bis 5000 PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt. + PLUGIN_DUELL_NAME=Duell PLUGIN_DUELL_DESC=Normales Spiel. Höchste Punkzahl gewinnt. + PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl. - STAT_MAIN_DESC=Statistiken STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d diff --git a/Skins/Deluxe/Ball3.bmp b/Skins/Deluxe/Ball3.bmp deleted file mode 100644 index 5b7d7943..00000000 Binary files a/Skins/Deluxe/Ball3.bmp and /dev/null differ diff --git a/Skins/Deluxe/Bar.jpg b/Skins/Deluxe/Bar.jpg deleted file mode 100644 index e6191a95..00000000 Binary files a/Skins/Deluxe/Bar.jpg and /dev/null differ diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index b7c3c7b2..bab91903 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -9,23 +9,21 @@ Name=Blue Color=Blue [Textures] -MainBar=Main Bar.jpg -Logo=Main Bar2.jpg -Bar=Bar.jpg -ButtonF=Buttonf.jpg -HDL_Pointer=Pointer.BMP + # # # M A I N # # # -Button=Button.jpg +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg #Backgrounds -LoadingBG = LoadingBackground.jpg -MainBG = Blue.jpg -SongBG = Blue.jpg -ScoreScreenBG = Blue.jpg -Top5BG = Blue.jpg -OptionsBG = Blue.jpg -PartyBG = Blue.jpg +LoadingBG = x_[bg-load]blue.jpg +MainBG = x_[bg-main]blue.jpg +SongBG = x_[bg-main]blue.jpg +ScoreScreenBG = x_[bg-main]blue.jpg +Top5BG = x_[bg-main]blue.jpg +OptionsBG = x_[bg-main]blue.jpg +PartyBG = x_[bg-main]blue.jpg #Icons on screen SongCD = [icon]cd.jpg @@ -36,6 +34,7 @@ IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg + # # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg SongSelection2 = [main]songSelection2.jpg @@ -44,62 +43,68 @@ SongCover = [main]songCover.jpg # # # S I N G # # # #the bar where the lyrics reside -LyricBar = [sing]textBar.jpg +LyricBar = [sing]textBar.jpg #this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#this one resides behind the timer-text +Bar = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg +LineBonusBack = [sing]lineBonusPopUp.jpg #Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg #Background for scores -ScoreBG = [sing]scoreBg.jpg +ScoreBG = [sing]scoreBg.jpg #Background for the P1, P2 and so on -P = [sing]p.jpg +P = [sing]p.jpg #Pointer for lyrics -Ball = Ball.bmp +Ball = [sing]LyricsBall.bmp # # # S C O R E / T O P 5 # # # -ScoreBox = Score Box.jpg -ScoreLevel = Score Level.jpg -ScoreLevelRound = Score Level Round.jpg +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg ScoreEndCap = [score]endcap.jpg -ScoreLine = [main]scoreLine.jpg +ScoreLine = [score]line.jpg PlayerNumberBox = [main]playerNumberBox.jpg # # # P A R T Y # # # -Joker=Joker.jpg -[BG]PartyRound=[BG]PartyRound.jpg -PartyPlayerButton=[party]playerButton.jpg -PartyTeamButton1=[party]roundTeamButton.jpg -PartyTeamButton2=[party]playerTeamButton.jpg -PartyRoundBG1=[party]roundBG1.jpg -PartyRoundBG2=[party]roundBG2.jpg -PartyRoundBG3=[party]roundBG3.jpg -PartyRoundBG4=[party]roundBG4.jpg +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp + # # # N A V I # # # -ButtonP = button_p.jpg -ButtonM = button_m.jpg -ButtonJ = button_j.jpg -ButtonAlt = button_alt.jpg -ButtonAZ = button_az.jpg -ButtonEnter= button_enter.jpg +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg # # # N O T E S # # # GrayLeft = [sing]notesLeft.bmp @@ -115,6 +120,6 @@ NoteStar = [effect]goldenNoteStar.jpg NotePerfectStar = [effect]perfectNoteStar.jpg -#dirty helpers -Rectangle = Rectangle.jpg -ButtonFade = ButtonFade.jpg \ No newline at end of file +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/Blue.jpg b/Skins/Deluxe/Blue.jpg deleted file mode 100644 index 27b31463..00000000 Binary files a/Skins/Deluxe/Blue.jpg and /dev/null differ diff --git a/Skins/Deluxe/Button.jpg b/Skins/Deluxe/Button.jpg deleted file mode 100644 index 15a34c66..00000000 Binary files a/Skins/Deluxe/Button.jpg and /dev/null differ diff --git a/Skins/Deluxe/ButtonFade.jpg b/Skins/Deluxe/ButtonFade.jpg deleted file mode 100644 index 6de293f7..00000000 Binary files a/Skins/Deluxe/ButtonFade.jpg and /dev/null differ diff --git a/Skins/Deluxe/Buttonf.jpg b/Skins/Deluxe/Buttonf.jpg deleted file mode 100644 index d844add5..00000000 Binary files a/Skins/Deluxe/Buttonf.jpg and /dev/null differ diff --git a/Skins/Deluxe/Joker.bak.jpg b/Skins/Deluxe/Joker.bak.jpg deleted file mode 100644 index b1f469df..00000000 Binary files a/Skins/Deluxe/Joker.bak.jpg and /dev/null differ diff --git a/Skins/Deluxe/Joker.jpg b/Skins/Deluxe/Joker.jpg deleted file mode 100644 index e2a18684..00000000 Binary files a/Skins/Deluxe/Joker.jpg and /dev/null differ diff --git a/Skins/Deluxe/Left gray.bmp b/Skins/Deluxe/Left gray.bmp deleted file mode 100644 index 328e0122..00000000 Binary files a/Skins/Deluxe/Left gray.bmp and /dev/null differ diff --git a/Skins/Deluxe/Line.jpg b/Skins/Deluxe/Line.jpg deleted file mode 100644 index b3540a60..00000000 Binary files a/Skins/Deluxe/Line.jpg and /dev/null differ diff --git a/Skins/Deluxe/LoadingBackground.jpg b/Skins/Deluxe/LoadingBackground.jpg deleted file mode 100644 index b05a1ab1..00000000 Binary files a/Skins/Deluxe/LoadingBackground.jpg and /dev/null differ diff --git a/Skins/Deluxe/Main Bar.jpg b/Skins/Deluxe/Main Bar.jpg deleted file mode 100644 index fa4cbd78..00000000 Binary files a/Skins/Deluxe/Main Bar.jpg and /dev/null differ diff --git a/Skins/Deluxe/MainBG_Blue.jpg b/Skins/Deluxe/MainBG_Blue.jpg deleted file mode 100644 index 27b31463..00000000 Binary files a/Skins/Deluxe/MainBG_Blue.jpg and /dev/null differ diff --git a/Skins/Deluxe/Mid gray.bmp b/Skins/Deluxe/Mid gray.bmp deleted file mode 100644 index 90d97860..00000000 Binary files a/Skins/Deluxe/Mid gray.bmp and /dev/null differ diff --git a/Skins/Deluxe/Note BG Left.bmp b/Skins/Deluxe/Note BG Left.bmp deleted file mode 100644 index 83e61525..00000000 Binary files a/Skins/Deluxe/Note BG Left.bmp and /dev/null differ diff --git a/Skins/Deluxe/Note BG Mid.bmp b/Skins/Deluxe/Note BG Mid.bmp deleted file mode 100644 index bc85ede9..00000000 Binary files a/Skins/Deluxe/Note BG Mid.bmp and /dev/null differ diff --git a/Skins/Deluxe/Note BG Right.bmp b/Skins/Deluxe/Note BG Right.bmp deleted file mode 100644 index 62682410..00000000 Binary files a/Skins/Deluxe/Note BG Right.bmp and /dev/null differ diff --git a/Skins/Deluxe/P.bak.jpg b/Skins/Deluxe/P.bak.jpg deleted file mode 100644 index 6df17a72..00000000 Binary files a/Skins/Deluxe/P.bak.jpg and /dev/null differ diff --git a/Skins/Deluxe/P.jpg b/Skins/Deluxe/P.jpg deleted file mode 100644 index cb6ac136..00000000 Binary files a/Skins/Deluxe/P.jpg and /dev/null differ diff --git a/Skins/Deluxe/Pointer.bmp b/Skins/Deluxe/Pointer.bmp deleted file mode 100644 index 88bbcc3d..00000000 Binary files a/Skins/Deluxe/Pointer.bmp and /dev/null differ diff --git a/Skins/Deluxe/Right gray.bmp b/Skins/Deluxe/Right gray.bmp deleted file mode 100644 index a4cbc1ae..00000000 Binary files a/Skins/Deluxe/Right gray.bmp and /dev/null differ diff --git a/Skins/Deluxe/RoundPartyBG.JPG b/Skins/Deluxe/RoundPartyBG.JPG deleted file mode 100644 index 7186b3ac..00000000 Binary files a/Skins/Deluxe/RoundPartyBG.JPG and /dev/null differ diff --git a/Skins/Deluxe/Score Box.jpg b/Skins/Deluxe/Score Box.jpg deleted file mode 100644 index b37f7e46..00000000 Binary files a/Skins/Deluxe/Score Box.jpg and /dev/null differ diff --git a/Skins/Deluxe/Score Level Round.jpg b/Skins/Deluxe/Score Level Round.jpg deleted file mode 100644 index 38cfddea..00000000 Binary files a/Skins/Deluxe/Score Level Round.jpg and /dev/null differ diff --git a/Skins/Deluxe/Score Level.jpg b/Skins/Deluxe/Score Level.jpg deleted file mode 100644 index 9e9c4086..00000000 Binary files a/Skins/Deluxe/Score Level.jpg and /dev/null differ diff --git a/Skins/Deluxe/Score Line.jpg b/Skins/Deluxe/Score Line.jpg deleted file mode 100644 index 2fd951aa..00000000 Binary files a/Skins/Deluxe/Score Line.jpg and /dev/null differ diff --git a/Skins/Deluxe/Sing Score BG.jpg b/Skins/Deluxe/Sing Score BG.jpg deleted file mode 100644 index 9a1cc5e0..00000000 Binary files a/Skins/Deluxe/Sing Score BG.jpg and /dev/null differ diff --git a/Skins/Deluxe/Song Fade.jpg b/Skins/Deluxe/Song Fade.jpg deleted file mode 100644 index 1d6b80ff..00000000 Binary files a/Skins/Deluxe/Song Fade.jpg and /dev/null differ diff --git a/Skins/Deluxe/Square.jpg b/Skins/Deluxe/Square.jpg deleted file mode 100644 index 8af62b71..00000000 Binary files a/Skins/Deluxe/Square.jpg and /dev/null differ diff --git a/Skins/Deluxe/Text Bar.jpg b/Skins/Deluxe/Text Bar.jpg deleted file mode 100644 index 83f20f4f..00000000 Binary files a/Skins/Deluxe/Text Bar.jpg and /dev/null differ diff --git a/Skins/Deluxe/W&C-Summer.ini b/Skins/Deluxe/W&C-Summer.ini new file mode 100644 index 00000000..4fc5533f --- /dev/null +++ b/Skins/Deluxe/W&C-Summer.ini @@ -0,0 +1,125 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=W&C-Summer +Color=Blue + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = [bg-load]summer.jpg +MainBG = [bg-main]summer.jpg +SongBG = [bg-main]summer.jpg +ScoreScreenBG = [bg-main]summer.jpg +Top5BG = [bg-main]summer.jpg +OptionsBG = [bg-main]summer.jpg +PartyBG = [bg-main]summer.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#this one resides behind the timer-text +Bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/W&C.ini b/Skins/Deluxe/W&C.ini deleted file mode 100644 index 9fbc403b..00000000 --- a/Skins/Deluxe/W&C.ini +++ /dev/null @@ -1,120 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=W & C -Color=Blue - -[Textures] -MainBar=Main Bar.jpg -Logo=Main Bar2.jpg -Bar=Bar.jpg -ButtonF=Buttonf.jpg -HDL_Pointer=Pointer.BMP - -# # # M A I N # # # -Button=Button.jpg - -#Backgrounds -LoadingBG = [bg-load]summer.jpg -MainBG = [bg-main]summer.jpg -SongBG = [bg-main]summer.jpg -ScoreScreenBG = [bg-main]summer.jpg -Top5BG = [bg-main]summer.jpg -OptionsBG = [bg-main]summer.jpg -PartyBG = [bg-main]summer.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = Ball.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = Score Box.jpg -ScoreLevel = Score Level.jpg -ScoreLevelRound = Score Level Round.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [main]scoreLine.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker=Joker.jpg -[BG]PartyRound=[BG]PartyRound.jpg -PartyPlayerButton=[party]playerButton.jpg -PartyTeamButton1=[party]roundTeamButton.jpg -PartyTeamButton2=[party]playerTeamButton.jpg -PartyRoundBG1=[party]roundBG1.jpg -PartyRoundBG2=[party]roundBG2.jpg -PartyRoundBG3=[party]roundBG3.jpg -PartyRoundBG4=[party]roundBG4.jpg - -# # # N A V I # # # -ButtonP = button_p.jpg -ButtonM = button_m.jpg -ButtonJ = button_j.jpg -ButtonAlt = button_alt.jpg -ButtonAZ = button_az.jpg -ButtonEnter= button_enter.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -#dirty helpers -Rectangle = Rectangle.jpg -ButtonFade = ButtonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[BG]PartyRound.jpg b/Skins/Deluxe/[BG]PartyRound.jpg deleted file mode 100644 index 164b1686..00000000 Binary files a/Skins/Deluxe/[BG]PartyRound.jpg and /dev/null differ diff --git a/Skins/Deluxe/[BG]PartyRounds.jpg b/Skins/Deluxe/[BG]PartyRounds.jpg deleted file mode 100644 index 207e9c47..00000000 Binary files a/Skins/Deluxe/[BG]PartyRounds.jpg and /dev/null differ diff --git a/Skins/Deluxe/[button]alt.jpg b/Skins/Deluxe/[button]alt.jpg new file mode 100644 index 00000000..193b8415 Binary files /dev/null and b/Skins/Deluxe/[button]alt.jpg differ diff --git a/Skins/Deluxe/[button]az.jpg b/Skins/Deluxe/[button]az.jpg new file mode 100644 index 00000000..d2c80a87 Binary files /dev/null and b/Skins/Deluxe/[button]az.jpg differ diff --git a/Skins/Deluxe/[button]enter.jpg b/Skins/Deluxe/[button]enter.jpg new file mode 100644 index 00000000..5de8decd Binary files /dev/null and b/Skins/Deluxe/[button]enter.jpg differ diff --git a/Skins/Deluxe/[button]j.jpg b/Skins/Deluxe/[button]j.jpg new file mode 100644 index 00000000..7a1d5122 Binary files /dev/null and b/Skins/Deluxe/[button]j.jpg differ diff --git a/Skins/Deluxe/[button]m.jpg b/Skins/Deluxe/[button]m.jpg new file mode 100644 index 00000000..186ec4e8 Binary files /dev/null and b/Skins/Deluxe/[button]m.jpg differ diff --git a/Skins/Deluxe/[button]navi.jpg b/Skins/Deluxe/[button]navi.jpg new file mode 100644 index 00000000..92e420c2 Binary files /dev/null and b/Skins/Deluxe/[button]navi.jpg differ diff --git a/Skins/Deluxe/[button]p.jpg b/Skins/Deluxe/[button]p.jpg new file mode 100644 index 00000000..c5da3d9e Binary files /dev/null and b/Skins/Deluxe/[button]p.jpg differ diff --git a/Skins/Deluxe/[helper]buttonFade.jpg b/Skins/Deluxe/[helper]buttonFade.jpg new file mode 100644 index 00000000..6de293f7 Binary files /dev/null and b/Skins/Deluxe/[helper]buttonFade.jpg differ diff --git a/Skins/Deluxe/[helper]rectangle.jpg b/Skins/Deluxe/[helper]rectangle.jpg new file mode 100644 index 00000000..e03f98fc Binary files /dev/null and b/Skins/Deluxe/[helper]rectangle.jpg differ diff --git a/Skins/Deluxe/[main]button.jpg b/Skins/Deluxe/[main]button.jpg new file mode 100644 index 00000000..15a34c66 Binary files /dev/null and b/Skins/Deluxe/[main]button.jpg differ diff --git a/Skins/Deluxe/[main]buttonf.jpg b/Skins/Deluxe/[main]buttonf.jpg new file mode 100644 index 00000000..d844add5 Binary files /dev/null and b/Skins/Deluxe/[main]buttonf.jpg differ diff --git a/Skins/Deluxe/[main]mainBar.jpg b/Skins/Deluxe/[main]mainBar.jpg new file mode 100644 index 00000000..fa4cbd78 Binary files /dev/null and b/Skins/Deluxe/[main]mainBar.jpg differ diff --git a/Skins/Deluxe/[main]scoreLine.jpg b/Skins/Deluxe/[main]scoreLine.jpg deleted file mode 100644 index 61cf33f5..00000000 Binary files a/Skins/Deluxe/[main]scoreLine.jpg and /dev/null differ diff --git a/Skins/Deluxe/[party]Joker.jpg b/Skins/Deluxe/[party]Joker.jpg new file mode 100644 index 00000000..e2a18684 Binary files /dev/null and b/Skins/Deluxe/[party]Joker.jpg differ diff --git a/Skins/Deluxe/[party]pointer.bmp b/Skins/Deluxe/[party]pointer.bmp new file mode 100644 index 00000000..88bbcc3d Binary files /dev/null and b/Skins/Deluxe/[party]pointer.bmp differ diff --git a/Skins/Deluxe/[score]Line.jpg b/Skins/Deluxe/[score]Line.jpg new file mode 100644 index 00000000..61cf33f5 Binary files /dev/null and b/Skins/Deluxe/[score]Line.jpg differ diff --git a/Skins/Deluxe/[score]box.jpg b/Skins/Deluxe/[score]box.jpg new file mode 100644 index 00000000..b37f7e46 Binary files /dev/null and b/Skins/Deluxe/[score]box.jpg differ diff --git a/Skins/Deluxe/[score]level.jpg b/Skins/Deluxe/[score]level.jpg new file mode 100644 index 00000000..9e9c4086 Binary files /dev/null and b/Skins/Deluxe/[score]level.jpg differ diff --git a/Skins/Deluxe/[score]levelRound.jpg b/Skins/Deluxe/[score]levelRound.jpg new file mode 100644 index 00000000..38cfddea Binary files /dev/null and b/Skins/Deluxe/[score]levelRound.jpg differ diff --git a/Skins/Deluxe/[sing]LyricsBall.bmp b/Skins/Deluxe/[sing]LyricsBall.bmp new file mode 100644 index 00000000..5b7d7943 Binary files /dev/null and b/Skins/Deluxe/[sing]LyricsBall.bmp differ diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp deleted file mode 100644 index 5c5a85f6..00000000 Binary files a/Skins/Deluxe/[sing]lyricsHelpBar.bak.bmp and /dev/null differ diff --git a/Skins/Deluxe/[sing]timeBar.jpg b/Skins/Deluxe/[sing]timeBar.jpg new file mode 100644 index 00000000..e6191a95 Binary files /dev/null and b/Skins/Deluxe/[sing]timeBar.jpg differ diff --git a/Skins/Deluxe/[special]bar1.jpg b/Skins/Deluxe/[special]bar1.jpg index e73fdb54..e264440a 100644 Binary files a/Skins/Deluxe/[special]bar1.jpg and b/Skins/Deluxe/[special]bar1.jpg differ diff --git a/Skins/Deluxe/button_alt.jpg b/Skins/Deluxe/button_alt.jpg deleted file mode 100644 index 193b8415..00000000 Binary files a/Skins/Deluxe/button_alt.jpg and /dev/null differ diff --git a/Skins/Deluxe/button_az.jpg b/Skins/Deluxe/button_az.jpg deleted file mode 100644 index d2c80a87..00000000 Binary files a/Skins/Deluxe/button_az.jpg and /dev/null differ diff --git a/Skins/Deluxe/button_enter.jpg b/Skins/Deluxe/button_enter.jpg deleted file mode 100644 index 5de8decd..00000000 Binary files a/Skins/Deluxe/button_enter.jpg and /dev/null differ diff --git a/Skins/Deluxe/button_j.jpg b/Skins/Deluxe/button_j.jpg deleted file mode 100644 index 7a1d5122..00000000 Binary files a/Skins/Deluxe/button_j.jpg and /dev/null differ diff --git a/Skins/Deluxe/button_m.jpg b/Skins/Deluxe/button_m.jpg deleted file mode 100644 index 186ec4e8..00000000 Binary files a/Skins/Deluxe/button_m.jpg and /dev/null differ diff --git a/Skins/Deluxe/button_p.jpg b/Skins/Deluxe/button_p.jpg deleted file mode 100644 index c5da3d9e..00000000 Binary files a/Skins/Deluxe/button_p.jpg and /dev/null differ diff --git a/Skins/Deluxe/rectangle.jpg b/Skins/Deluxe/rectangle.jpg deleted file mode 100644 index e03f98fc..00000000 Binary files a/Skins/Deluxe/rectangle.jpg and /dev/null differ diff --git a/Skins/Deluxe/x_W&C-Autum.ini b/Skins/Deluxe/x_W&C-Autum.ini new file mode 100644 index 00000000..eba30c44 --- /dev/null +++ b/Skins/Deluxe/x_W&C-Autum.ini @@ -0,0 +1,125 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=W&C-Autum +Color=Orange + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = x_[bg-load]autum.jpg +MainBG = x_[bg-main]autum.jpg +SongBG = x_[bg-main]autum.jpg +ScoreScreenBG = x_[bg-main]autum.jpg +Top5BG = x_[bg-main]autum.jpg +OptionsBG = x_[bg-main]autum.jpg +PartyBG = x_[bg-main]autum.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#this one resides behind the timer-text +Bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/x_W&C-Winter.ini b/Skins/Deluxe/x_W&C-Winter.ini new file mode 100644 index 00000000..e7800aac --- /dev/null +++ b/Skins/Deluxe/x_W&C-Winter.ini @@ -0,0 +1,125 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=W&C-Winter +Color=Blue + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = x_[bg-load]winter.jpg +MainBG = x_[bg-main]winter.jpg +SongBG = x_[bg-main]winter.jpg +ScoreScreenBG = x_[bg-main]winter.jpg +Top5BG = x_[bg-main]winter.jpg +OptionsBG = x_[bg-main]winter.jpg +PartyBG = x_[bg-main]winter.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#this one resides behind the timer-text +Bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/x_[bg-load]autum.jpg b/Skins/Deluxe/x_[bg-load]autum.jpg new file mode 100644 index 00000000..6ddc97ce Binary files /dev/null and b/Skins/Deluxe/x_[bg-load]autum.jpg differ diff --git a/Skins/Deluxe/x_[bg-load]blue.jpg b/Skins/Deluxe/x_[bg-load]blue.jpg new file mode 100644 index 00000000..b341ea96 Binary files /dev/null and b/Skins/Deluxe/x_[bg-load]blue.jpg differ diff --git a/Skins/Deluxe/x_[bg-load]winter.jpg b/Skins/Deluxe/x_[bg-load]winter.jpg new file mode 100644 index 00000000..b2dc9b34 Binary files /dev/null and b/Skins/Deluxe/x_[bg-load]winter.jpg differ diff --git a/Skins/Deluxe/x_[bg-main]autum.jpg b/Skins/Deluxe/x_[bg-main]autum.jpg new file mode 100644 index 00000000..60e215e5 Binary files /dev/null and b/Skins/Deluxe/x_[bg-main]autum.jpg differ diff --git a/Skins/Deluxe/x_[bg-main]blue.jpg b/Skins/Deluxe/x_[bg-main]blue.jpg new file mode 100644 index 00000000..856ec781 Binary files /dev/null and b/Skins/Deluxe/x_[bg-main]blue.jpg differ diff --git a/Skins/Deluxe/x_[bg-main]winter.jpg b/Skins/Deluxe/x_[bg-main]winter.jpg new file mode 100644 index 00000000..06f905b6 Binary files /dev/null and b/Skins/Deluxe/x_[bg-main]winter.jpg differ diff --git a/Skins/Deluxe/x_[button]esc.jpg b/Skins/Deluxe/x_[button]esc.jpg new file mode 100644 index 00000000..a27259c2 Binary files /dev/null and b/Skins/Deluxe/x_[button]esc.jpg differ diff --git a/Skins/Deluxe/x_[icon]stats.jpg b/Skins/Deluxe/x_[icon]stats.jpg new file mode 100644 index 00000000..505a6709 Binary files /dev/null and b/Skins/Deluxe/x_[icon]stats.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index a0a6abb9..f278491d 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -54,30 +54,12 @@ Align=0 Text=US_VERSION [Main] -Texts =1 -Statics=2 +Texts =2 +Statics=4 [MainBackground] Tex=MainBG -[MainText1] -X =120 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_MENU - -[MainTextDescriptionLong] -X =300 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text= - [MainStatic1] X =0 Y =549 @@ -101,23 +83,51 @@ Reflection=1 ReflectionSpacing=1 [MainStatic3] -X =600 +X =260 Y =553 -W =22 +W =26 H =22 -Tex=ButtonM +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[MainStatic4] +X =384 +Y =553 +W =26 +H =22 +Tex=ButtonEnter Color =White Type=Plain Style=5 +[MainText1] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_MENU + [MainText2] -X =625 +X =290 Y =552 Color=Black Font =0 Size =7 Align=0 -Text=PARTY_OPTIONS_DESC +Text=SING_LEGEND_NAVIGATE + +[MainTextDescriptionLong] +X =414 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text= [MainButtonSolo] X =180 @@ -324,7 +334,7 @@ PieceW=6 PieceH=6 Space=1 Bands=5 -Length=16 +Length=18 [SongText1] X =70 @@ -354,12 +364,12 @@ Tex =SongCD Type=Font Black [SongText2] -X =120 +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 +Align=2 Text=SING_SONGSELECTION [SongStatic2] @@ -1087,12 +1097,12 @@ Reflection=1 ReflectionSpacing=1 [ScoreText2] -X =120 +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 +Align=2 Text=song score [ScoreStatic4] @@ -2396,12 +2406,12 @@ Reflection=1 ReflectionSpacing=1 [OptionsText2] -X =120 +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 +Align=2 Text=SING_OPTIONS [OptionsText3] @@ -3560,12 +3570,12 @@ Reflection=1 ReflectionSpacing=1 [Top5Text2] -X =120 +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 +Align=2 Text=SING_TOP_5_CHARTS [Top5Static4] @@ -3822,12 +3832,12 @@ Tex =MainIcon Type=Font Black [LevelText3] -X =120 +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 +Align=2 Text=SING_SING_MODE [LevelText4] @@ -3931,12 +3941,12 @@ Reflection=1 ReflectionSpacing=1 [NameText2] -X =120 +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 +Align=2 Text=SING_OPTIONS_GAME_PLAYERS [NameText3] @@ -4094,21 +4104,81 @@ Color=White Text= [PartyNewRound] -Texts =8 +Texts =7 [PartyNewRoundBackground] Tex=MainBG +[PartyNewRoundStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyNewRoundStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyNewRoundStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + [PartyNewRoundText1] X =70 Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 Color =White +Text=PARTY_MODE + +[PartyNewRoundText2] +X =70 +Y =53 +Color=White Font =0 -Size =20 -Text =Party Modus +Size =10 +Align =0 +Text=PARTY_ROUND_DESC + +[PartyNewRoundText3] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=PARTY_ROUND_WHEREAMI + +[PartyNewRoundText4] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=PARTY_ROUND_LEGEND_CONTINUE -[PartyNewRoundText2] +[PartyNewRoundText5] X =460 Y =100 Color =White @@ -4117,7 +4187,7 @@ Size =10 Text =PARTY_ROUND Align=0 -[PartyNewRoundText3] +[PartyNewRoundText6] X =600 Y =100 Color =White @@ -4126,16 +4196,7 @@ Size =10 Text =PARTY_ROUND_WINNER Align=0 -[PartyNewRoundText4] -X =290 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=PARTY_ROUND_DESC - -[PartyNewRoundText5] +[PartyNewRoundText7] X =448 Y =350 Color =White @@ -4171,7 +4232,7 @@ Size =7 Align=0 Text=Dummytext, Player2, Player3, Player4 -[PartyNewRoundStatic1] +[PartyNewRoundStatic4] Tex =PartyRoundBG1 X =450 Y =103 @@ -4181,29 +4242,7 @@ Int=1 Color =DarkBlue Type=Font Black -[PartyNewRoundStatic2] -X =0 -Y =549 -W =252 -H =28 -Tex=Leiste1 -Color =White -Type=Plain -Reflection=1 -ReflectionSpacing=1 - -[PartyNewRoundStatic3] -X =254 -Y =549 -W =548 -H =28 -Tex=Leiste2 -Color =White -Type=Plain -Reflection=1 -ReflectionSpacing=1 - -[PartyNewRoundStatic4] +[PartyNewRoundStatic5] X =260 Y =553 W =26 @@ -4212,15 +4251,6 @@ Tex=ButtonEnter Color =White Type=Plain -[PartyNewRoundStatic5] -X =40 -Y =22 -W =27 -H =27 -Color =White -Tex =PartyIcon -Type=Font Black - [PartyNewRoundStatic6] Tex =PartyRoundBG3 X =250 @@ -4601,11 +4631,89 @@ Align=1 [PartyScore] -Texts=0 +Texts=4 [PartyScoreBackground] Tex=PartyBG +[PartyScoreStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyScoreStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyScoreStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + +[PartyScoreStatic4] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[PartyScoreText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=PARTY_MODE + +[PartyScoreText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=PARTY_SCORE_DESC + +[PartyScoreText3] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=PARTY_SCORE_WHEREAMI + +[PartyScoreText4] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_LEGEND_CONTINUE + [PartyScoreTextWinner] X =150 Y =20 @@ -4700,11 +4808,89 @@ Int = 1 Type=Font Black [PartyWin] -Texts=0 +Texts=4 [PartyWinBackground] Tex=PartyBG +[PartyWinStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyWinStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyWinStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + +[PartyWinStatic4] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[PartyWinText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=PARTY_MODE + +[PartyWinText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=PARTY_WIN_DESC + +[PartyWinText3] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=PARTY_WIN_WHEREAMI + +[PartyWinText4] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_WIN_LEGEND_CONTINUE + [PartyWinTextWinner] X =150 Y =20 @@ -4800,7 +4986,7 @@ Type=Font Black [PartyOptions] -Texts = 3 +Texts = 5 [PartyOptionsBackground] Tex=PartyBG @@ -4836,6 +5022,26 @@ Color =White Tex =PartyIcon Type=Font Black +[PartyOptionsStatic4] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[PartyOptionsStatic5] +X =384 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain +Style=5 + [PartyOptionsText1] X =70 Y =6 @@ -4845,25 +5051,43 @@ ColB = 0.7 Font = 0 Size = 20 Color =White -Text=PARTY_OPTIONS_DESC +Text=PARTY_MODE [PartyOptionsText2] -X =120 +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=PARTY_OPTIONS_DESC + +[PartyOptionsText3] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=PARTY_OPTIONS_WHEREAMI + +[PartyOptionsText4] +X =290 Y =552 Color=Black Font =0 Size =7 Align=0 -Text=PARTY_OPTIONS_OPTIONS +Text=SING_LEGEND_NAVIGATE -[PartyOptionsText3] -X =300 +[PartyOptionsText5] +X =414 Y =552 Color=Black Font =0 Size =7 Align=0 -Text=PARTY_OPTIONS_OPTIONS_DESC +Text=SING_LEGEND_CONTINUE [PartyOptionsSelectLevel] Tex = MainBar @@ -5036,40 +5260,11 @@ STDColor = GrayDark [PartyPlayer] -Texts=3 +Texts=6 [PartyPlayerBackground] Tex=PartyBG -[PartyPlayerText1] -X =70 -Y =6 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 0 -Size = 20 -Color =White -Text=PARTY_OPTIONS_DESC - -[PartyPlayerText2] -X =120 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_OPTIONS_GAME_PLAYERS - -[PartyPlayerText3] -X =300 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=PARTY_SELECT_PLAYER - [PartyPlayerStatic1] X =0 Y =549 @@ -5101,6 +5296,92 @@ Color =White Tex =PartyIcon Type=Font Black +[PartyPlayerStatic4] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[PartyPlayerStatic5] +X =384 +Y =553 +W =26 +H =22 +Tex=ButtonAZ +Color =White +Type=Plain +Style=5 + +[PartyPlayerStatic6] +X =552 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain +Style=5 + +[PartyPlayerText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=PARTY_MODE + +[PartyPlayerText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=PARTY_PLAYER_DESC + +[PartyPlayerText3] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=PARTY_PLAYER_WHEREAMI + +[PartyPlayerText4] +X =290 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[PartyPlayerText5] +X =414 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_PLAYER_ENTER_NAME + +[PartyPlayerText6] +X =582 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_PLAYER_LEGEND_CONTINUE + [PartyPlayerTeam1Name] Tex=PartyTeamButton2 X=85 -- cgit v1.2.3 From 5bf0ebf274fef28811ab952338bd261bd1dd0fa8 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 00:19:52 +0000 Subject: added "popups" to ask for confirmation when leaving party mode or game or to display messages (like minor errors) still ugly, needs some theme work git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@157 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphic.pas | 11 +- Game/Code/Classes/UMain.pas | 9 +- Game/Code/Classes/UThemes.pas | 28 ++++ Game/Code/Menu/UDisplay.pas | 40 +++++- Game/Code/Menu/UMenu.pas | 19 ++- Game/Code/Screens/UScreenMain.pas | 10 +- Game/Code/Screens/UScreenPartyNewRound.pas | 2 +- Game/Code/Screens/UScreenPopup.pas | 204 ++++++++++++++++++++++++----- Game/Code/UltraStar.dpr | 3 +- Languages/English.ini | 6 +- Languages/readme.txt | 7 +- Themes/Deluxe.ini | 163 ++++++++++++++++++++++- 12 files changed, 449 insertions(+), 53 deletions(-) diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 39eea53d..8b17a73d 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -9,7 +9,8 @@ uses UScreenEdit, UScreenEditConvert, UScreenEditHeader, UScreenOpen, UThemes, USkins, UScreenSongMenu, UScreenSongJumpto, {Party Screens} UScreenSingModi, UScreenPartyNewRound, UScreenPartyScore, UScreenPartyOptions, UScreenPartyWin, UScreenPartyPlayer, {Stats Screens} UScreenStatMain, UScreenStatDetail, - {CreditsScreen} UScreenCredits; + {CreditsScreen} UScreenCredits, + {Popup for errors, etc.} UScreenPopup; type TRecR = record @@ -71,6 +72,10 @@ var //CreditsScreen ScreenCredits: TScreenCredits; + //popup mod + ScreenPopupCheck: TScreenPopupCheck; + ScreenPopupError: TScreenPopupError; + //Notes Tex_Left: array[0..6] of TTexture; Tex_Mid: array[0..6] of TTexture; @@ -433,6 +438,10 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen SongMenu', 3); Log.BenchmarkStart(3); ScreenSongJumpto := TScreenSongJumpto.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen SongJumpto', 3); Log.BenchmarkStart(3); + ScreenPopupCheck := TScreenPopupCheck.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Popup (Check)', 3); Log.BenchmarkStart(3); + ScreenPopupError := TScreenPopupError.Create; + Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Popup (Error)', 3); Log.BenchmarkStart(3); ScreenPartyNewRound := TScreenPartyNewRound.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen PartyNewRound', 3); Log.BenchmarkStart(3); ScreenPartyScore := TScreenPartyScore.Create; diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index c9002a36..69eca419 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -2,7 +2,7 @@ unit UMain; interface uses SDL, UGraphic, UMusic, URecord, UTime, SysUtils, UDisplay, UIni, ULog, ULyrics, UScreenSing, - OpenGL12, zlportio {you can disable it and all PortWriteB calls}, ULCD, ULight, UThemes; + OpenGL12, zlportio {you can disable it and all PortWriteB calls}, ULCD, ULight, UThemes{, UScreenPopup}; type TPlayer = record @@ -112,7 +112,7 @@ begin CheckEvents; // display - Display.Draw; + done:=not Display.Draw; SwapBuffers; // light @@ -156,6 +156,11 @@ Begin End; // With} SDL_KEYDOWN: begin + // popup hack... if there is a visible popup then let it handle input instead of underlying screen + // shoud be done in a way to be sure the topmost popup has preference (maybe error, then check) + if ScreenPopupError <> NIL then if ScreenPopupError.Visible then ScreenPopupError.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) else + if ScreenPopupCheck <> NIL then if ScreenPopupCheck.Visible then ScreenPopupCheck.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) else + // end of popup hack if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True)) then // if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.scancode, True)) then done := true; // exit game diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 6004502e..ee88ca9c 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -460,6 +460,19 @@ type ButtonExit: TThemeButton; end; + //Error- and Check-Popup + TThemeError = class(TThemeBasic) + Button1: TThemeButton; + TextError: TThemeText; + end; + + TThemeCheck = class(TThemeBasic) + Button1: TThemeButton; + Button2: TThemeButton; + TextCheck: TThemeText; + end; + + //ScreenSong Menue TThemeSongMenu = class(TThemeBasic) Button1: TThemeButton; @@ -656,6 +669,9 @@ type OptionsThemes: TThemeOptionsThemes; OptionsRecord: TThemeOptionsRecord; OptionsAdvanced: TThemeOptionsAdvanced; + //error and check popup + ErrorPopup: TThemeError; + CheckPopup: TThemeCheck; //ScreenSong extensions SongMenu: TThemeSongMenu; SongJumpto: TThemeSongJumpTo; @@ -750,6 +766,9 @@ begin OptionsRecord := TThemeOptionsRecord.Create; OptionsAdvanced := TThemeOptionsAdvanced.Create; + ErrorPopup := TThemeError.Create; + CheckPopup := TThemeCheck.Create; + SongMenu := TThemeSongMenu.Create; SongJumpto := TThemeSongJumpto.Create; //Party Screens @@ -1157,6 +1176,15 @@ begin ThemeLoadSelect (OptionsAdvanced.SelectAskbeforeDel, 'OptionsAdvancedSelectAskbeforeDel'); ThemeLoadButton (OptionsAdvanced.ButtonExit, 'OptionsAdvancedButtonExit'); + //error and check popup + ThemeLoadBasic (ErrorPopup, 'ErrorPopup'); + ThemeLoadButton(ErrorPopup.Button1, 'ErrorPopupButton1'); + ThemeLoadText (ErrorPopup.TextError,'ErrorPopupText'); + ThemeLoadBasic (CheckPopup, 'CheckPopup'); + ThemeLoadButton(CheckPopup.Button1, 'CheckPopupButton1'); + ThemeLoadButton(CheckPopup.Button2, 'CheckPopupButton2'); + ThemeLoadText(CheckPopup.TextCheck , 'CheckPopupText'); + //Song Menu ThemeLoadBasic (SongMenu, 'SongMenu'); ThemeLoadButton(SongMenu.Button1, 'SongMenuButton1'); diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 19266414..428cc6c7 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -2,12 +2,15 @@ unit UDisplay; interface -uses Windows, SDL, UMenu, OpenGL12, SysUtils, dialogs; +uses Windows, SDL, UMenu, OpenGL12, SysUtils; type TDisplay = class ActualScreen: PMenu; NextScreen: PMenu; + //popup hack + NextScreenWithCheck: Pmenu; + CheckOK: Boolean; h_DC: HDC; h_RC: HGLRC; @@ -45,6 +48,11 @@ var i: integer; begin inherited Create; + //popup hack + CheckOK:=False; + NextScreen:=NIL; + NextScreenWithCheck:=NIL; + // fade mod myfade:=0; @@ -75,10 +83,6 @@ begin canFade:=False; end; FreeMem(pTexData); - if not canFade then begin - showmessage('Fehler beim Initialisieren der Fading-Textur... Fading deaktiviert'); - doFade:=False; - end // end end; @@ -120,9 +124,26 @@ begin if S = 2 then TimeSkip := 0 else; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); + //popup hack + // check was successful... move on + if CheckOK then + if assigned (NextScreenWithCheck)then + begin + NextScreen:=NextScreenWithCheck; + NextScreenWithCheck := NIL; + CheckOk:=False; + end + else + Result:=False; + //end popup hack + // ActualScreen.SetAnimationProgress(1); if not assigned (NextScreen) then begin - Result := ActualScreen.Draw; + ActualScreen.Draw; + //popup mod + if ScreenPopupError <> NIL then if ScreenPopupError.Visible then ScreenPopupError.Draw else + if ScreenPopupCheck <> NIL then if ScreenPopupCheck.Visible then ScreenPopupCheck.Draw; + //popup end // fade mod myfade:=0; if (Ini.ScreenFade=1) and canFade then @@ -133,6 +154,11 @@ begin end else begin + // check if we had an initialization error (canfade=false, dofade=true) + if doFade and not canFade then begin + doFade:=False; //disable fading + ScreenPopupError.ShowPopup(['Error initializing','fade texture','','fading','disabled']); //show error message + end; if doFade and canFade then begin // fade mod @@ -146,7 +172,7 @@ begin if glGetError <> GL_NO_ERROR then begin canFade := False; - showmessage('Fehler beim Kopieren der Fade-Textur... Fading deaktiviert'); + ScreenPopupError.ShowPopup(['Error copying','fade texture','','fading','disabled']); //show error message end; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); NextScreen.onShow; diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index 4ad8270a..c9d3c726 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -12,7 +12,7 @@ type TMenu = class protected ButtonPos: Integer; - + Interactions: array of TInteract; SelInteraction: integer; Button: array of TButton; @@ -29,7 +29,7 @@ type mY: integer; // mouse Y Fade: integer; // fade type - ShowFinish: boolean; // true if there is no fade + ShowFinish: boolean; // true if there is no fade destructor Destroy; override; @@ -47,7 +47,7 @@ type procedure PrepareButtonCollections(const Collections: AThemeButtonCollection); procedure AddButtonCollection(const ThemeCollection: TThemeButtonCollection; Const Num: Byte); - + // background procedure AddBackground(Name: string); @@ -68,7 +68,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 + 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; @@ -107,6 +107,8 @@ type // function AddWidget(X, Y : UInt16; WidgetSrc : PSDL_Surface): Int16; // procedure ClearWidgets(MinNumber : Int16); procedure FadeTo(Screen: PMenu); + //popup hack + procedure CheckFadeTo(Screen: PMenu; msg: String); function DrawBG: boolean; virtual; function DrawFG: boolean; virtual; @@ -873,6 +875,15 @@ begin Display.NextScreen := Screen; end; +//popup hack +procedure TMenu.CheckFadeTo(Screen: PMenu; msg: String); +begin + Display.Fade := 0; + Display.NextScreenWithCheck := Screen; + Display.CheckOK:=False; + ScreenPopupCheck.ShowPopup(msg); +end; + procedure TMenu.AddButtonText(AddX, AddY: real; AddText: string); begin AddButtonText(AddX, AddY, 1, 1, 1, AddText); diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 78c98218..f339fa04 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -55,7 +55,9 @@ begin SDLK_ESCAPE : begin - Result := False; + //popup hack + CheckFadeTo(NIL,'MSG_QUIT_USDX'); +// Result := False; end; SDLK_C: @@ -116,7 +118,7 @@ begin Music.PlayStart; FadeTo(@ScreenStatMain); end; - + //Editor if Interaction = 3 then begin Music.PlayStart; @@ -131,7 +133,9 @@ begin //Exit if Interaction = 5 then begin - Result := false; + //popup hack + CheckFadeTo(NIL,'MSG_QUIT_USDX'); +// Result := false; end; end; // Up and Down could be done at the same time, diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index 22f76218..894e96d2 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -86,7 +86,7 @@ begin SDLK_ESCAPE : begin Music.PlayBack; - FadeTo(@ScreenMain); + CheckFadeTo(@ScreenMain,'MSG_END_PARTY'); end; SDLK_RETURN: diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index 41279197..25f647a2 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -3,10 +3,10 @@ unit UScreenPopup; interface uses - UMenu, SDL, UMusic, UPliki, SysUtils, UThemes, dialogs, Messages; + UMenu, SDL, UMusic, UPliki, SysUtils, UThemes; type - TScreenPopup = class(TMenu) + TScreenPopupCheck = class(TMenu) private CurMenu: Byte; //Num of the cur. Shown Menu public @@ -15,24 +15,35 @@ type constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; - procedure ShowPopup(sPopup: Byte); + procedure ShowPopup(msg: String); function Draw: boolean; override; end; -const - PU_Error = 1; +type + TScreenPopupError = class(TMenu) + private + CurMenu: Byte; //Num of the cur. Shown Menu + public + Visible: Boolean; //Whether the Menu should be Drawn + constructor Create; override; + function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; + procedure onShow; override; + procedure onHide; override; + procedure ShowPopup(msg: array of String); + function Draw: boolean; override; + end; var - ISelections: Array of String; +// ISelections: Array of String; SelectValue: Integer; implementation -uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist; +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist, UDisplay; -function TScreenPopup.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; +function TScreenPopupCheck.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; function IsVisible: Boolean; begin Result := True; @@ -81,6 +92,15 @@ begin SDLK_RETURN: begin + case Interaction of + 0: begin + Display.CheckOK:=True; + end; + 1: begin + Display.CheckOK:=False; + Display.NextScreenWithCheck:=NIL; + end; + end; Visible:=False; Result := false; end; @@ -100,13 +120,11 @@ begin end; end; -constructor TScreenPopup.Create; +constructor TScreenPopupCheck.Create; var I: integer; begin inherited Create; - SetLength(ISelections, 1); - ISelections[0] := 'Dummy'; AddBackground(Theme.CheckPopup.Background.Tex); @@ -129,37 +147,161 @@ begin Interaction := 0; end; -function TScreenPopup.Draw: boolean; +function TScreenPopupCheck.Draw: boolean; begin inherited Draw; end; -procedure TScreenPopup.onShow; +procedure TScreenPopupCheck.onShow; begin end; -procedure TScreenPopup.ShowPopup(sPopup: Byte); +procedure TScreenPopupCheck.ShowPopup(msg: String); begin Interaction := 0; //Reset Interaction Visible := True; //Set Visible - Case sPopup of - PU_Error: - begin - Text[0].Text := 'Wirklich beenden?';{Language.Translate('SONG_MENU_NAME_MAIN');} - - Button[0].Visible := True; - Button[1].Visible := True; -// Button[2].Visible := True; -// Button[3].Visible := True; -// SelectsS[0].Visible := False; - - Button[0].Text[0].Text := 'JA'; - Button[1].Text[0].Text := 'NEIN'; -// Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_ADD'); -// Button[3].Text[0].Text := Language.Translate('SONG_MENU_EDIT'); - end; + + Text[0].Text := Language.Translate(msg); + + Button[0].Visible := True; + Button[1].Visible := True; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_YES'); + Button[1].Text[0].Text := Language.Translate('SONG_MENU_NO'); +end; + +// error popup + +function TScreenPopupError.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; + function IsVisible: Boolean; + begin + Result := True; + if (Interactions[Interaction].Typ = 0) then + begin + Result := Button[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 1) then + begin + //Result := Selects[Interactions[Interaction].Num].Visible; + end + else if (Interactions[Interaction].Typ = 3) then + begin + Result := SelectsS[Interactions[Interaction].Num].Visible; + end; + end; + + Procedure SelectNext; + begin + repeat + InteractNext; + until IsVisible; + end; + + Procedure SelectPrev; + begin + repeat + InteractPrev; + until IsVisible; end; +begin + Result := true; + If (PressedDown) Then + begin // Key Down + + case PressedKey of + SDLK_Q: + begin + Result := false; + end; + + SDLK_ESCAPE : + begin + Result := false; + end; + + SDLK_RETURN: + begin + Visible:=False; + Result := false; + end; + + SDLK_DOWN: SelectNext; + SDLK_UP: SelectPrev; + + SDLK_RIGHT: SelectNext; + SDLK_LEFT: SelectPrev; + end; + end + else // Key Up + case PressedKey of + SDLK_RETURN : + begin + end; + end; +end; + +constructor TScreenPopupError.Create; +var + I: integer; +begin + inherited Create; + + AddBackground(Theme.CheckPopup.Background.Tex); + + AddButton(Theme.ErrorPopup.Button1); + if (Length(Button[0].Text) = 0) then + AddButtonText(14, 20, 'Button 1'); + + AddText(Theme.ErrorPopup.TextError); + + for I := 0 to High(Theme.ErrorPopup.Static) do + AddStatic(Theme.ErrorPopup.Static[I]); + + for I := 0 to High(Theme.ErrorPopup.Text) do + AddText(Theme.ErrorPopup.Text[I]); + + Interaction := 0; +end; + +function TScreenPopupError.Draw: boolean; +begin + inherited Draw; +end; + +procedure TScreenPopupError.onShow; +begin + +end; + +procedure TScreenPopupError.onHide; +var i: integer; +begin + for i:=0 to high(Text) do + Text[i].Text:=''; +end; + +procedure TScreenPopupError.ShowPopup(msg: array of String); +var i: integer; +begin + Interaction := 0; //Reset Interaction + Visible := True; //Set Visible + + //dirty hack... Text[0] is invisible for some strange reason + for i:=1 to high(Text) do + if i-1 <= high(msg) then + begin + Text[i].Visible:=True; + Text[i].Text := msg[i-1]; + end + else + begin + Text[i].Visible:=False; + end; + + Button[0].Visible := True; + + Button[0].Text[0].Text := 'OK'; end; -end. \ No newline at end of file +end. diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index b7466d84..5f19c1d4 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -82,6 +82,7 @@ uses UScreenStatMain in 'Screens\UScreenStatMain.pas', UScreenStatDetail in 'Screens\UScreenStatDetail.pas', UScreenCredits in 'Screens\UScreenCredits.pas', + UScreenPopup in 'Screens\UScreenPopup.pas', //------------------------------ //Includes - Screens PartyMode @@ -313,4 +314,4 @@ begin if Ini.LPT = 2 then Light.TurnOff; Log.Free; -end. \ No newline at end of file +end. diff --git a/Languages/English.ini b/Languages/English.ini index 972e4ce4..f9ebaa9c 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -151,6 +151,7 @@ SONG_MENU_PLAYLIST_NEW_UNNAMED=Unnamed SONG_MENU_NAME_PLAYLIST_DEL=Really Delete? SONG_MENU_YES=Yes +SONG_MENU_NO=No SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open @@ -223,4 +224,7 @@ STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands -STAT_FORMAT_BANDS=%0:s \n %1:dx Sung \ No newline at end of file +STAT_FORMAT_BANDS=%0:s \n %1:dx Sung + +MSG_QUIT_USDX=Leave UltraStar? +MSG_END_PARTY=End Party Mode? \ No newline at end of file diff --git a/Languages/readme.txt b/Languages/readme.txt index 3c710036..247539bc 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -71,6 +71,7 @@ SONG_MENU_PLAYLIST_NEW_UNNAMED=Unnamed SONG_MENU_NAME_PLAYLIST_DEL=Really Delete? SONG_MENU_YES=Yes +SONG_MENU_NO=No SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open @@ -146,4 +147,8 @@ STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands -STAT_FORMAT_BANDS=%0:s \n %1:dx Sung \ No newline at end of file +STAT_FORMAT_BANDS=%0:s \n %1:dx Sung + +#Messages for Popup Message Boxes +MSG_QUIT_USDX=Leave UltraStar? +MSG_END_PARTY=End Party Mode? \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index f278491d..6e4376aa 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -27,6 +27,8 @@ GrayLight = 191 191 191 Gray = 127 127 127 GrayDark = 63 63 63 Black = 0 0 0 +GrayPopup = 51 51 51 + [Loading] Texts =2 @@ -6272,4 +6274,163 @@ ColG = 0.3 ColB = 0.3 Font = 0 Size = 8 -Text= \ No newline at end of file +Text= + +[CheckPopup] +Texts=1 +Statics=1 + +[CheckPopupButton1] +X = 294 +Y = 280 +W = 100 +H = 25 +Tex =Rectangle +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 1 +Texts=1 + +[CheckPopupButton1Text1] +X =50 +Y =0 +Color=White +Font =0 +Size =8 +Text=JA +Align=1 +Z=1 + +[CheckPopupButton2] +X = 426 +Y = 280 +W = 100 +H = 25 +Tex =Rectangle +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 1 +Texts=1 + +[CheckPopupButton2Text1] +X =50 +Y =0 +Color=White +Font =0 +Size =8 +Text=NEIN +Align=1 +Z=1 + +[CheckPopupText] +X =400 +Y =125 +Color=White +Font =0 +Size =14 +Text=blabla +Align=1 +Z=1 + +[CheckPopupStatic1] +Tex =SongMenuBG +X =250 +Y =120 +W =300 +H =200 +Z =1 +Int=1 +Color =GrayPopup +Type=Font Black + +[ErrorPopup] +Texts=1 +Statics=1 + +[ErrorPopupButton1] +X = 350 +Y = 280 +W = 100 +H = 25 +Tex =Rectangle +Color =LightBlue +DColor = DarkBlue +Type=Font Black +Texts=1 +Z = 1 +Texts=1 + +[ErrorPopupButton1Text1] +X =50 +Y =0 +Color=White +Font =0 +Size =8 +Text=OK +Align=1 +Z=1 + +[ErrorPopupText1] +X =400 +Y =125 +Color=White +Font =0 +Size =14 +Text=error text line 1 +Align=1 +Z=1 + +[ErrorPopupText2] +X =400 +Y =150 +Color=White +Font =0 +Size =14 +Text=error text line 2 +Align=1 +Z=1 + +[ErrorPopupText3] +X =400 +Y =175 +Color=White +Font =0 +Size =14 +Text=error text line 3 +Align=1 +Z=1 + +[ErrorPopupText4] +X =400 +Y =200 +Color=White +Font =0 +Size =14 +Text=error text line 4 +Align=1 +Z=1 + +[ErrorPopupText5] +X =400 +Y =225 +Color=White +Font =0 +Size =14 +Text=error text line 5 +Align=1 +Z=1 + +[ErrorPopupStatic1] +Tex =SongMenuBG +X =250 +Y =120 +W =300 +H =200 +Z =0.98 +Int=1 +Color =GrayPopup +Type=Font Black \ No newline at end of file -- cgit v1.2.3 From dd66b485bac2217191624efbae322a4efe81fc1a Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 00:22:00 +0000 Subject: forgot this file... git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@158 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Languages/German.ini b/Languages/German.ini index 6459dbdd..cced3eec 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -154,6 +154,7 @@ SONG_MENU_PLAYLIST_NEW_UNNAMED=Unbenannt SONG_MENU_NAME_PLAYLIST_DEL=Wirklich löschen? SONG_MENU_YES=Ja +SONG_MENU_NO=Nein SONG_MENU_NAME_PLAYLIST_LOAD=Playlist öffnen SONG_MENU_PLAYLIST_LOAD=Öffnen @@ -252,4 +253,7 @@ STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx gesungen STAT_DESC_BANDS=Beliebteste Bands STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands -STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d \ No newline at end of file +STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d + +MSG_QUIT_USDX=UltraStar verlassen? +MSG_END_PARTY=Party Modus beenden? \ No newline at end of file -- cgit v1.2.3 From 7ddd1afb9bec5dca80a272a50ea02f6c3cfbc2b7 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 3 May 2007 01:15:41 +0000 Subject: Esc in Popup escapes the Popup. Higher usability. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@159 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenPopup.pas | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index 25f647a2..a6e8ccca 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -87,6 +87,9 @@ begin SDLK_ESCAPE : begin + Display.CheckOK:=False; + Display.NextScreenWithCheck:=NIL; + Visible:=False; Result := false; end; -- cgit v1.2.3 From c7db744c1dcbafb38f25a5cb005219faf16134b8 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 15:34:36 +0000 Subject: minor changes to PopUp code and to related parts of themes git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@160 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 6 +-- Game/Code/Screens/UScreenPopup.pas | 14 +++---- Languages/English.ini | 4 +- Languages/German.ini | 2 +- Skins/Deluxe/Blue.ini | 1 + Skins/Deluxe/W&C-Summer.ini | 1 + Skins/Deluxe/[menu]PopUpBg.JPG | Bin 0 -> 2012 bytes Skins/Deluxe/x_W&C-Autum.ini | 1 + Skins/Deluxe/x_W&C-Winter.ini | 2 +- Themes/Deluxe.ini | 78 +++++++++---------------------------- 10 files changed, 35 insertions(+), 74 deletions(-) create mode 100644 Skins/Deluxe/[menu]PopUpBg.JPG diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 428cc6c7..e6c0c4f0 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -157,7 +157,7 @@ begin // check if we had an initialization error (canfade=false, dofade=true) if doFade and not canFade then begin doFade:=False; //disable fading - ScreenPopupError.ShowPopup(['Error initializing','fade texture','','fading','disabled']); //show error message + ScreenPopupError.ShowPopup('Error initializing\nfade texture\n\nfading\ndisabled'); //show error message end; if doFade and canFade then begin @@ -169,10 +169,10 @@ begin ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex[S]); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 512, 512, 0); - if glGetError <> GL_NO_ERROR then + if glGetError = GL_NO_ERROR then begin canFade := False; - ScreenPopupError.ShowPopup(['Error copying','fade texture','','fading','disabled']); //show error message + ScreenPopupError.ShowPopup('Error copying\nfade texture\nfading\ndisabled'); //show error message end; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); NextScreen.onShow; diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index a6e8ccca..019632ff 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -7,8 +7,6 @@ uses type TScreenPopupCheck = class(TMenu) - private - CurMenu: Byte; //Num of the cur. Shown Menu public Visible: Boolean; //Whether the Menu should be Drawn @@ -30,7 +28,7 @@ type function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; procedure onHide; override; - procedure ShowPopup(msg: array of String); + procedure ShowPopup(msg: String); function Draw: boolean; override; end; @@ -220,6 +218,7 @@ begin SDLK_ESCAPE : begin + Visible:=False; Result := false; end; @@ -280,17 +279,15 @@ end; procedure TScreenPopupError.onHide; var i: integer; begin - for i:=0 to high(Text) do - Text[i].Text:=''; end; -procedure TScreenPopupError.ShowPopup(msg: array of String); +procedure TScreenPopupError.ShowPopup(msg: String); var i: integer; begin Interaction := 0; //Reset Interaction Visible := True; //Set Visible - //dirty hack... Text[0] is invisible for some strange reason +{ //dirty hack... Text[0] is invisible for some strange reason for i:=1 to high(Text) do if i-1 <= high(msg) then begin @@ -300,7 +297,8 @@ begin else begin Text[i].Visible:=False; - end; + end;} + Text[0].Text:=msg; Button[0].Visible := True; diff --git a/Languages/English.ini b/Languages/English.ini index f9ebaa9c..0562746d 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -226,5 +226,5 @@ STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung -MSG_QUIT_USDX=Leave UltraStar? -MSG_END_PARTY=End Party Mode? \ No newline at end of file +MSG_QUIT_USDX=Really Leave\n\nUltraStar? +MSG_END_PARTY=Really End\n\nParty Mode? \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index cced3eec..ee39b3c1 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -255,5 +255,5 @@ STAT_DESC_BANDS=Beliebteste Bands STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d -MSG_QUIT_USDX=UltraStar verlassen? +MSG_QUIT_USDX=UltraStar\n\nwirklich\n\nverlassen? MSG_END_PARTY=Party Modus beenden? \ No newline at end of file diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index bab91903..8717926e 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -104,6 +104,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/W&C-Summer.ini b/Skins/Deluxe/W&C-Summer.ini index 4fc5533f..739cd983 100644 --- a/Skins/Deluxe/W&C-Summer.ini +++ b/Skins/Deluxe/W&C-Summer.ini @@ -104,6 +104,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/[menu]PopUpBg.JPG b/Skins/Deluxe/[menu]PopUpBg.JPG new file mode 100644 index 00000000..79808600 Binary files /dev/null and b/Skins/Deluxe/[menu]PopUpBg.JPG differ diff --git a/Skins/Deluxe/x_W&C-Autum.ini b/Skins/Deluxe/x_W&C-Autum.ini index eba30c44..c3d0e379 100644 --- a/Skins/Deluxe/x_W&C-Autum.ini +++ b/Skins/Deluxe/x_W&C-Autum.ini @@ -104,6 +104,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/x_W&C-Winter.ini b/Skins/Deluxe/x_W&C-Winter.ini index e7800aac..ed481e06 100644 --- a/Skins/Deluxe/x_W&C-Winter.ini +++ b/Skins/Deluxe/x_W&C-Winter.ini @@ -104,7 +104,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg - +PopUpBG = [menu]popUpBG.jpg # # # N O T E S # # # GrayLeft = [sing]notesLeft.bmp diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 6e4376aa..bc2fbe61 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -6281,13 +6281,13 @@ Texts=1 Statics=1 [CheckPopupButton1] -X = 294 -Y = 280 +X = 285 +Y = 310 W = 100 H = 25 Tex =Rectangle -Color =LightBlue -DColor = DarkBlue +Color = GrayLight +DColor = Gray Type=Font Black Texts=1 Z = 1 @@ -6304,13 +6304,13 @@ Align=1 Z=1 [CheckPopupButton2] -X = 426 -Y = 280 +X = 415 +Y = 310 W = 100 H = 25 Tex =Rectangle -Color =LightBlue -DColor = DarkBlue +Color = GrayLight +DColor = Gray Type=Font Black Texts=1 Z = 1 @@ -6328,7 +6328,7 @@ Z=1 [CheckPopupText] X =400 -Y =125 +Y =165 Color=White Font =0 Size =14 @@ -6337,9 +6337,9 @@ Align=1 Z=1 [CheckPopupStatic1] -Tex =SongMenuBG +Tex =PopUpBG X =250 -Y =120 +Y =150 W =300 H =200 Z =1 @@ -6353,12 +6353,12 @@ Statics=1 [ErrorPopupButton1] X = 350 -Y = 280 +Y = 310 W = 100 H = 25 Tex =Rectangle -Color =LightBlue -DColor = DarkBlue +Color = GrayLight +DColor = Gray Type=Font Black Texts=1 Z = 1 @@ -6374,60 +6374,20 @@ Text=OK Align=1 Z=1 -[ErrorPopupText1] +[ErrorPopupText] X =400 -Y =125 +Y =155 Color=White Font =0 Size =14 -Text=error text line 1 -Align=1 -Z=1 - -[ErrorPopupText2] -X =400 -Y =150 -Color=White -Font =0 -Size =14 -Text=error text line 2 -Align=1 -Z=1 - -[ErrorPopupText3] -X =400 -Y =175 -Color=White -Font =0 -Size =14 -Text=error text line 3 -Align=1 -Z=1 - -[ErrorPopupText4] -X =400 -Y =200 -Color=White -Font =0 -Size =14 -Text=error text line 4 -Align=1 -Z=1 - -[ErrorPopupText5] -X =400 -Y =225 -Color=White -Font =0 -Size =14 -Text=error text line 5 +Text=error text Align=1 Z=1 [ErrorPopupStatic1] -Tex =SongMenuBG +Tex =PopUpBG X =250 -Y =120 +Y =150 W =300 H =200 Z =0.98 -- cgit v1.2.3 From 0ef472e08a64e5f9b8c33d6b0206a559a56c71ba Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 16:14:05 +0000 Subject: screen fades to black at game end, when fading is enabled git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@161 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index e6c0c4f0..ae7f901d 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -8,6 +8,9 @@ type TDisplay = class ActualScreen: PMenu; NextScreen: PMenu; + + //fade-to-black-hack + BlackScreen: Boolean; //popup hack NextScreenWithCheck: Pmenu; CheckOK: Boolean; @@ -36,8 +39,6 @@ type var Display: TDisplay; -// ActualScreen: PMenu; -// NextScreen: PMenu; implementation @@ -52,6 +53,7 @@ begin CheckOK:=False; NextScreen:=NIL; NextScreenWithCheck:=NIL; + BlackScreen:=False; // fade mod myfade:=0; @@ -134,11 +136,11 @@ begin CheckOk:=False; end else - Result:=False; + BlackScreen:=True; // end of game - fade to black before exit //end popup hack // ActualScreen.SetAnimationProgress(1); - if not assigned (NextScreen) then begin + if (not assigned (NextScreen)) and (not BlackScreen) then begin ActualScreen.Draw; //popup mod if ScreenPopupError <> NIL then if ScreenPopupError.Visible then ScreenPopupError.Draw else @@ -169,13 +171,15 @@ begin ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex[S]); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 512, 512, 0); - if glGetError = GL_NO_ERROR then + if glGetError <> GL_NO_ERROR then begin canFade := False; ScreenPopupError.ShowPopup('Error copying\nfade texture\nfading\ndisabled'); //show error message end; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); - NextScreen.onShow; + // blackscreen-hack + if not BlackScreen then + NextScreen.onShow; lastTime:=GetTickCount; if (S=2) or (Screens = 1) then myfade:=myfade+1; @@ -197,7 +201,13 @@ begin // ActualScreen.SetAnimationProgress(Fade-1); // nop? - NextScreen.Draw; // draw next screen + // blackscreen-hack + if not BlackScreen then + NextScreen.Draw // draw next screen + else begin + glClearColor(0, 0, 0 , 0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + end; // and draw old screen over it... slowly fading out myfade2:=(myfade*myfade)/10000; @@ -215,7 +225,11 @@ begin glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); end - else NextScreen.OnShow; + else + // blackscreen hack + if not BlackScreen then + NextScreen.OnShow; + if (myfade > 40) or (not doFade) or (not canFade) then begin // fade out complete... @@ -224,8 +238,13 @@ begin ActualScreen.ShowFinish:=False; ActualScreen:=NextScreen; NextScreen := nil; - ActualScreen.onShowFinish; - ActualScreen.ShowFinish := true; + if not blackscreen then + begin + ActualScreen.onShowFinish; + ActualScreen.ShowFinish := true; + end + else + Result:=False; // end of fade mod end; end; // if -- cgit v1.2.3 From f38292d6da93cf20c075e4ed74c377819af88091 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 20:05:07 +0000 Subject: more explanatory error message in case copying the fade texture fails git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@162 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index ae7f901d..d1d3038d 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -104,6 +104,8 @@ var // fade mod myFade2: Real; currentTime: Cardinal; + glError: glEnum; + glErrorStr: String; // end begin Result := True; @@ -171,10 +173,20 @@ begin ActualScreen.Draw; glBindTexture(GL_TEXTURE_2D, pTex[S]); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 512, 512, 0); - if glGetError <> GL_NO_ERROR then + glError:=glGetError; + if glError <> GL_NO_ERROR then begin canFade := False; - ScreenPopupError.ShowPopup('Error copying\nfade texture\nfading\ndisabled'); //show error message + case glError of + GL_INVALID_ENUM: glErrorStr:='INVALID_ENUM'; + GL_INVALID_VALUE: glErrorStr:='INVALID_VALUE'; + GL_INVALID_OPERATION: glErrorStr:='INVALID_OPERATION'; + GL_STACK_OVERFLOW: glErrorStr:='STACK_OVERFLOW'; + GL_STACK_UNDERFLOW: glErrorStr:='STACK_UNDERFLOW'; + GL_OUT_OF_MEMORY: glErrorStr:='OUT_OF_MEMORY'; + else glErrorStr:='unknown error'; + end; + ScreenPopupError.ShowPopup('Error copying\nfade texture\n('+glErrorStr+')\nfading\ndisabled'); //show error message end; glViewPort((S-1) * ScreenW div Screens, 0, ScreenW div Screens, ScreenH); // blackscreen-hack -- cgit v1.2.3 From 3114977b5509c775c93d5ba3d5220a1ff9d363a7 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 20:12:20 +0000 Subject: slight changes to positions of song covers (in SetScroll5) ReflectionSpacing now varies with the size of the cover -- the further back a cover, the smaller it is... as should be the reflection spacing git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@163 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 1f3c7c8f..e0714c2d 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1104,24 +1104,26 @@ begin Pos := Pos + VS else if (Pos > VS/2) then Pos := Pos - VS; - + if (Abs(Pos) < 2.5) then {fixed Positions} begin Angle := Pi * (Pos / 5); //Button[B].Visible := False; - Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle));//Power(Z2, 3); + Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle*0.8));//Power(Z2, 3); + + Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; Button[B].Z := 0.95 - Abs(Pos) * 0.01; - Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); + Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Abs(Theme.Song.Cover.H * cos(Angle))) * 0.7); Button[B].W := Button[B].H; Diff := (Button[B].H - Theme.Song.Cover.H)/2; - X := Sin(Angle); + X := Sin(Angle*1.3)*0.9; Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * X - Diff; -- cgit v1.2.3 From 0f327cf133373168d94538686b57c22ba364f2a8 Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 3 May 2007 21:09:24 +0000 Subject: Feature: It's now possible to move/skin the time progress thing (no fix positions anymore) (affected: UDraw.pas, UGraphic.pas, UThemes.pas, UScreenSing.pas, UScreenSingModi.pas) Theme/Skin: Added the time stuff beneath the lyrics (as "the others" did too) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@164 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 65 ++++++++++++++++++------------- Game/Code/Classes/UGraphic.pas | 6 ++- Game/Code/Classes/UThemes.pas | 18 ++++++++- Game/Code/Screens/UScreenSing.pas | 24 ++++++++---- Game/Code/Screens/UScreenSingModi.pas | 10 ++--- Skins/Deluxe/Blue.ini | 7 +++- Skins/Deluxe/W&C-Summer.ini | 7 +++- Skins/Deluxe/[sing]timeBar.jpg | Bin 1377 -> 540 bytes Skins/Deluxe/x_W&C-Autum.ini | 7 +++- Skins/Deluxe/x_W&C-Winter.ini | 7 +++- Themes/Deluxe.ini | 70 ++++++++++++++++++---------------- 11 files changed, 141 insertions(+), 80 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index f5722175..41225c0d 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -12,6 +12,11 @@ procedure SingDrawBeatDelimeters(Left, Top, Right: real; NrCzesci: integer); procedure SingDrawCzesc(Left, Top, Right: real; NrCzesci: integer; Space: integer); procedure SingDrawPlayerCzesc(X, Y, W: real; NrGracza: integer; Space: integer); procedure SingDrawPlayerBGCzesc(Left, Top, Right: real; NrCzesci, NrGracza: integer; Space: integer); + +// TimeBar mod +procedure SingDrawTimeBar(); +// eoa TimeBar mod + { for no use since we have UGraphicClasses procedure SingDrawStar(X, Y, A: real); procedure SingGoldenStar(X, Y, A: real); @@ -615,20 +620,9 @@ begin // background //BG Fullsize Mod //SingDrawBackground; - // time bar -// Log.LogStatus('Time Bar', 'SingDraw'); - glBegin(GL_QUADS); - glColor3f(0.9, 0.9, 0.9); - glVertex2f(140 + 10*ScreenX, 21); - glVertex2f(140 + 10*ScreenX, 29); - glVertex2f(330 + 10*ScreenX, 29); - glVertex2f(330 + 10*ScreenX, 21); - glColor3f(Skin_TimeR, Skin_TimeG, Skin_TimeB); - glVertex2f(140 + 10*ScreenX, 21); - glVertex2f(140 + 10*ScreenX, 29); - glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 29); - glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 21); - glEnd; + //TimeBar mod + SingDrawTimeBar(); + //eoa TimeBar mod // rysuje paski pod nutami if PlayersPlay = 1 then @@ -1020,18 +1014,7 @@ begin // time bar // Log.LogStatus('Time Bar', 'SingDraw'); - glBegin(GL_QUADS); - glColor3f(0.9, 0.9, 0.9); - glVertex2f(140 + 10*ScreenX, 21); - glVertex2f(140 + 10*ScreenX, 29); - glVertex2f(330 + 10*ScreenX, 29); - glVertex2f(330 + 10*ScreenX, 21); - glColor3f(Skin_TimeR, Skin_TimeG, Skin_TimeB); - glVertex2f(140 + 10*ScreenX, 21); - glVertex2f(140 + 10*ScreenX, 29); - glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 29); - glVertex2f(140 + 10*ScreenX+(330-140)*(Czas.Teraz/Czas.Razem), 21); - glEnd; + SingDrawTimeBar(); if DLLMan.Selected.ShowNotes then begin @@ -1652,5 +1635,35 @@ begin glDisable(GL_TEXTURE_2D); end; +procedure SingDrawTimeBar(); +var x,y: real; + width, height: real; +begin + x := Theme.Sing.StaticTimeProgress.x; + y := Theme.Sing.StaticTimeProgress.y; + width:= Theme.Sing.StaticTimeProgress.w; + height:= Theme.Sing.StaticTimeProgress.h; + + glColor4f(Theme.Sing.StaticTimeProgress.ColR, + Theme.Sing.StaticTimeProgress.ColG, + Theme.Sing.StaticTimeProgress.ColB, 1); //Set Color + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + + glBindTexture(GL_TEXTURE_2D, Tex_TimeProgress.TexNum); + + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(x,y); + glTexCoord2f(0, 1); glVertex2f(x+width*(Czas.Teraz/Czas.Razem), y); + glTexCoord2f(1, 1); glVertex2f(x+width*(Czas.Teraz/Czas.Razem), y+height); + glTexCoord2f(1, 0); glVertex2f(x, y+height); + glEnd; + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glcolor4f(1,1,1,1); +end; + end. diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 8b17a73d..7fd159f7 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -93,7 +93,7 @@ var Tex_Lyric_Help_Bar: TTexture; FullScreen: boolean; - + Tex_TimeProgress: TTexture; //Sing Bar Mod Tex_SingBar_Back: TTexture; @@ -211,6 +211,10 @@ begin Tex_Lyric_Help_Bar := Texture.LoadTexture(pchar(Skin.GetTextureFileName('LyricHelpBar')), 'BMP', 'Transparent', $FF00FF); + //TimeBar mod + Tex_TimeProgress := Texture.LoadTexture(pchar(Skin.GetTextureFileName('TimeBar'))); + //eoa TimeBar mod + //SingBar Mod Tex_SingBar_Back := Texture.LoadTexture(pchar(Skin.GetTextureFileName('SingBarBack')), 'JPG', 'Plain', 0); Tex_SingBar_Bar := Texture.LoadTexture(pchar(Skin.GetTextureFileName('SingBarBar')), 'JPG', 'Plain', 0); diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index ee88ca9c..7f4763c3 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -296,9 +296,15 @@ type end; TThemeSing = class(TThemeBasic) + + //TimeBar mod + StaticTimeProgress: TThemeStatic; + TextTimeText : TThemeText; + //eoa TimeBar mod + StaticP1: TThemeStatic; - StaticP1ScoreBG: TThemeStatic; //Static for ScoreBG TextP1: TThemeText; + StaticP1ScoreBG: TThemeStatic; //Static for ScoreBG TextP1Score: TThemeText; //moveable singbar mod @@ -988,6 +994,11 @@ begin // Sing ThemeLoadBasic(Sing, 'Sing'); + //TimeBar mod + ThemeLoadStatic(Sing.StaticTimeProgress, 'SingTimeProgress'); + ThemeLoadText(Sing.TextTimeText, 'SingTimeText'); + //eoa TimeBar mod + //moveable singbar mod ThemeLoadStatic(Sing.StaticP1SingBar, 'SingP1SingBar'); ThemeLoadStatic(Sing.StaticP1TwoPSingBar, 'SingP1TwoPSingBar'); @@ -1973,6 +1984,11 @@ begin ThemeSaveBasic(Sing, 'Sing'); + //TimeBar mod + ThemeSaveStatic(Sing.StaticTimeProgress, 'SingTimeProgress'); + ThemeSaveText(Sing.TextTimeText, 'SingTimeText'); + //eoa TimeBar mod + ThemeSaveStatic(Sing.StaticP1, 'SingP1Static'); ThemeSaveText(Sing.TextP1, 'SingP1Text'); ThemeSaveStatic(Sing.StaticP1ScoreBG, 'SingP1Static2'); diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 93c3ac48..3e66b197 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -12,7 +12,12 @@ type PauseTime: Real; NumEmptySentences: integer; public - TextTime: integer; + //TextTime: integer; + + //TimeBar mod + StaticTimeProgress: integer; + TextTimeText: integer; + //eoa TimeBar mod StaticP1: integer; StaticP1ScoreBG: integer; @@ -166,7 +171,12 @@ begin LoadFromTheme(Theme.Sing); // time - TextTime := AddText(75, 14, 1, 8, 0.25, 0.25, 0.25, '00:00'); + //TextTime := AddText(75, 14, 1, 8, 0.25, 0.25, 0.25, '00:00'); + + //TimeBar mod + StaticTimeProgress := AddStatic(Theme.Sing.StaticTimeProgress); + TextTimeText := AddText(Theme.Sing.TextTimeText); + //eoa TimeBar mod StaticP1 := AddStatic(Theme.Sing.StaticP1); StaticP1ScoreBG := AddStatic(Theme.Sing.StaticP1ScoreBG); @@ -908,11 +918,11 @@ begin // update static menu with time ... Min := Round(Czas.Teraz) div 60; Sec := Round(Czas.Teraz) mod 60; - Text[TextTime].Text := ''; - if Min < 10 then Text[TextTime].Text := '0'; - Text[TextTime].Text := Text[TextTime].Text + IntToStr(Min) + ':'; - if Sec < 10 then Text[TextTime].Text := Text[TextTime].Text + '0'; - Text[TextTime].Text := Text[TextTime].Text + IntToStr(Sec); + Text[TextTimeText].Text := ''; + if Min < 10 then Text[TextTimeText].Text := '0'; + Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Min) + ':'; + if Sec < 10 then Text[TextTimeText].Text := Text[TextTimeText].Text + '0'; + Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Sec); // .. and scores if PlayersPlay = 1 then begin diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index 86613152..484d7d56 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -927,11 +927,11 @@ begin // update static menu with time ... Min := Round(Czas.Teraz) div 60; Sec := Round(Czas.Teraz) mod 60; - Text[TextTime].Text := ''; - if Min < 10 then Text[TextTime].Text := '0'; - Text[TextTime].Text := Text[TextTime].Text + IntToStr(Min) + ':'; - if Sec < 10 then Text[TextTime].Text := Text[TextTime].Text + '0'; - Text[TextTime].Text := Text[TextTime].Text + IntToStr(Sec); + Text[TextTimeText].Text := ''; + if Min < 10 then Text[TextTimeText].Text := '0'; + Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Min) + ':'; + if Sec < 10 then Text[TextTimeText].Text := Text[TextTimeText].Text + '0'; + Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Sec); end; // draw static menu (BG) diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 8717926e..535e4123 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -48,8 +48,11 @@ LyricBar = [sing]textBar.jpg #this one slides in, to tell you that singing starts immediately LyricHelpBar = [sing]lyricsHelpBar.bmp -#this one resides behind the timer-text -Bar = [sing]timeBar.jpg +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg diff --git a/Skins/Deluxe/W&C-Summer.ini b/Skins/Deluxe/W&C-Summer.ini index 739cd983..175f062e 100644 --- a/Skins/Deluxe/W&C-Summer.ini +++ b/Skins/Deluxe/W&C-Summer.ini @@ -48,8 +48,11 @@ LyricBar = [sing]textBar.jpg #this one slides in, to tell you that singing starts immediately LyricHelpBar = [sing]lyricsHelpBar.bmp -#this one resides behind the timer-text -Bar = [sing]timeBar.jpg +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg diff --git a/Skins/Deluxe/[sing]timeBar.jpg b/Skins/Deluxe/[sing]timeBar.jpg index e6191a95..e33352d5 100644 Binary files a/Skins/Deluxe/[sing]timeBar.jpg and b/Skins/Deluxe/[sing]timeBar.jpg differ diff --git a/Skins/Deluxe/x_W&C-Autum.ini b/Skins/Deluxe/x_W&C-Autum.ini index c3d0e379..f8062c3c 100644 --- a/Skins/Deluxe/x_W&C-Autum.ini +++ b/Skins/Deluxe/x_W&C-Autum.ini @@ -48,8 +48,11 @@ LyricBar = [sing]textBar.jpg #this one slides in, to tell you that singing starts immediately LyricHelpBar = [sing]lyricsHelpBar.bmp -#this one resides behind the timer-text -Bar = [sing]timeBar.jpg +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg diff --git a/Skins/Deluxe/x_W&C-Winter.ini b/Skins/Deluxe/x_W&C-Winter.ini index ed481e06..160f3663 100644 --- a/Skins/Deluxe/x_W&C-Winter.ini +++ b/Skins/Deluxe/x_W&C-Winter.ini @@ -48,8 +48,11 @@ LyricBar = [sing]textBar.jpg #this one slides in, to tell you that singing starts immediately LyricHelpBar = [sing]lyricsHelpBar.bmp -#this one resides behind the timer-text -Bar = [sing]timeBar.jpg +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index bc2fbe61..0b3e324b 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -732,14 +732,15 @@ TexY2=1 [Sing] Texts =1 -[SingText1] -Text =SING_TIME -X =43 -Y =17 -Font =1 -Size =6 -Color =White -Align=1 +;not used for this skin +;[SingText1] +;Text =SING_TIME +;X =90 +;Y =200 +;Font =1 +;Size =6 +;Color =White +;Align=1 [SingStatic1] ;TextBG @@ -750,37 +751,42 @@ W =780 H =105 Color =GrayLightest Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [SingStatic2] -;Time BG -Tex =LyricBar -X =12 -Y =5 -W =328 -H =42 -Color =GrayLightest +;TimeBar +Tex =bar +X =10 +Y =580 +W =780 +H =16 +Color =Black Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 + +[SingTimeProgress] +X =20 +Y =584 +W =700 +H =7 +Color=White [SingStatic3] -Tex =Bar +;the thing behind the time progress +Tex =bar X =20 -Y =10 -W =46 -H =30 -Color =Black +Y =584 +W =700 +H =7 +Color=GrayLightest Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 + +[SingTimeText] +Text =SING_TIME +X =750 +Y =579 +Font =1 +Size =6 +Color =White +Align=1 # O N E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # # #PlayerOne -- cgit v1.2.3 From 5aeca78d297ab2a86da4470b24a09ee595e0927a Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 3 May 2007 21:48:11 +0000 Subject: Theme/Skin: Minor changes to the legend buttons ([button]enter.jpg,[button]navi.jpg) (still not perfect :\) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@165 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[button]enter.jpg | Bin 3281 -> 3530 bytes Skins/Deluxe/[button]navi.jpg | Bin 4304 -> 4305 bytes Themes/Deluxe.ini | 19 ++++++++++--------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Skins/Deluxe/[button]enter.jpg b/Skins/Deluxe/[button]enter.jpg index 5de8decd..0a23d003 100644 Binary files a/Skins/Deluxe/[button]enter.jpg and b/Skins/Deluxe/[button]enter.jpg differ diff --git a/Skins/Deluxe/[button]navi.jpg b/Skins/Deluxe/[button]navi.jpg index 92e420c2..ff02f447 100644 Binary files a/Skins/Deluxe/[button]navi.jpg and b/Skins/Deluxe/[button]navi.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 0b3e324b..0fa75228 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -87,13 +87,22 @@ ReflectionSpacing=1 [MainStatic3] X =260 Y =553 -W =26 +W =30 H =22 Tex=ButtonNavi Color =White Type=Plain Style=5 +[MainText2] +X =295 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + [MainStatic4] X =384 Y =553 @@ -113,14 +122,6 @@ Size =7 Align=2 Text=SING_MENU -[MainText2] -X =290 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_LEGEND_NAVIGATE [MainTextDescriptionLong] X =414 -- cgit v1.2.3 From a1624a62face0dc4edb0908ba09b6bcd2f43d065 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 22:45:08 +0000 Subject: re-enabled covers behind the 5 front-covers in songselection fiddled with position-calculations until it looked not too bad git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@166 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index e0714c2d..738eb01e 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1116,7 +1116,7 @@ begin Button[B].Z := 0.95 - Abs(Pos) * 0.01; - Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Abs(Theme.Song.Cover.H * cos(Angle))) * 0.7); + Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Abs(Theme.Song.Cover.H * cos(Angle))) * 0.5); Button[B].W := Button[B].H; @@ -1130,31 +1130,34 @@ begin end else begin {Behind the Front Covers} - Button[B].Visible := False; +// Button[B].Visible := False; +// if VS/2-abs(Pos)>VS*0.4 then Button[B].Visible := False; if Pos < 0 then Pos := (Pos - VS/2) /VS else Pos := (Pos + VS/2) /VS; - Angle := 2 * pi * Pos; + Angle := 2 * pi * Pos*1.2; - Button[B].Z := (0.5 - Abs(Pos/4)) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers + Button[B].Z := (0.4 - Abs(Pos/4)) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers - Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle));//Power(Z2, 3); + Button[B].H :=0.6*(Theme.Song.Cover.H-Abs(Theme.Song.Cover.H * cos(Angle/2)*0.8));//Power(Z2, 3); Button[B].W := Button[B].H; - Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); + Button[B].Y := Theme.Song.Cover.Y - (Button[B].H - Theme.Song.Cover.H)*0.75; - Diff := (Button[B].H - Theme.Song.Cover.H)/2;; + Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; - Button[B].X := Theme.Song.Cover.X + (Theme.Song.Cover.W + Theme.Song.Cover.H*VS*0.185)* Sin(Angle) - Diff + Diff := (Button[B].H - Theme.Song.Cover.H)/2; + + Button[B].X := Theme.Song.Cover.X+Theme.Song.Cover.H/2-Button[b].H/2 + (Theme.Song.Cover.H)*sin(Angle/2)*1.52; end; //Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H)/1.5); //Cover at down border of the change field - Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); +// Button[B].Y := (Theme.Song.Cover.Y + (Theme.Song.Cover.H - Button[B].H) * 0.7); end; end; -- cgit v1.2.3 From 4c6e44e0c1fced2b2d2edf8640fe0652b94f2811 Mon Sep 17 00:00:00 2001 From: b1indy Date: Thu, 3 May 2007 23:42:02 +0000 Subject: reflections of buttoncollection nur fade out more realisticly (need your opinion on that) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@167 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuButton.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index fde808e2..87ebbb89 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -434,7 +434,7 @@ begin //Draw glBegin(GL_QUADS);//Top Left - glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); + glColor4f(ColR * Int, ColG * Int, ColB * Int, (Alpha-0.3)*FadeProgress*FadeProgress*FadeProgress); glTexCoord2f(TexX1*TexW, TexY2*TexH); glVertex3f(x, y+h*scaleH+ Spacing, z); @@ -450,7 +450,7 @@ begin glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Spacing, z); //Top Right - glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); + glColor4f(ColR * Int, ColG * Int, ColB * Int, (Alpha-0.3)*FadeProgress*FadeProgress*FadeProgress); glTexCoord2f(TexX2*TexW, TexY2*TexH); glVertex3f(x+w*scaleW, y+h*scaleH + Spacing, z); glEnd; -- cgit v1.2.3 From 73347d4f77edb7e79709b7af9f23e0faa2b38f8b Mon Sep 17 00:00:00 2001 From: b1indy Date: Fri, 4 May 2007 00:12:38 +0000 Subject: reflections were gone after my last hack in UMenuButton... should be back now git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@168 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 738eb01e..b32571c8 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1112,7 +1112,7 @@ begin Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle*0.8));//Power(Z2, 3); - Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; + Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; Button[B].Z := 0.95 - Abs(Pos) * 0.01; @@ -1148,7 +1148,7 @@ begin Button[B].Y := Theme.Song.Cover.Y - (Button[B].H - Theme.Song.Cover.H)*0.75; - Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; + Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; Diff := (Button[B].H - Theme.Song.Cover.H)/2; -- cgit v1.2.3 From aa9137bb4a0c4345d3a9403e8411672b1652ca5c Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 4 May 2007 01:48:09 +0000 Subject: Some Themework done. To do: Party-Mode: 2 screens, Navigation-Bar about 30%, Statistic cleanup of engl. language file. Graphics marked with "x_" in filename are temp. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@169 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 99 ++++-- Languages/German.ini | 42 +-- Themes/Deluxe.ini | 865 ++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 813 insertions(+), 193 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index 0562746d..040d4b3a 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -19,8 +19,13 @@ SING_EDITOR_DESC=create your own songs SING_GAME_OPTIONS=game options SING_GAME_OPTIONS_DESC=change game settings +SING_EXIT=quit SING_EXIT_DESC=quit game +SING_OPTIONS=options +SING_OPTIONS_DESC=change settings +SING_OPTIONS_WHEREAMI=options + SING_OPTIONS_GAME=game SING_OPTIONS_GRAPHICS=graphics SING_OPTIONS_SOUND=sound @@ -28,9 +33,10 @@ SING_OPTIONS_LYRICS=lyrics SING_OPTIONS_THEMES=themes SING_OPTIONS_RECORD=record SING_OPTIONS_ADVANCED=advanced -SING_OPTIONS_EXIT=exit +SING_OPTIONS_EXIT=back -SING_OPTIONS_GAME_DESC=game options +SING_OPTIONS_GAME_WHEREAMI=options game +SING_OPTIONS_GAME_DESC=general game settings SING_OPTIONS_GAME_PLAYERS=Players SING_OPTIONS_GAME_DIFFICULTY=Difficulty SING_OPTIONS_GAME_LANGUAGE=Language @@ -38,7 +44,8 @@ SING_OPTIONS_GAME_TABS=Tabs SING_OPTIONS_GAME_SORTING=Sorting SING_OPTIONS_GAME_DEBUG=Debug -SING_OPTIONS_GRAPHICS_DESC=graphics options +SING_OPTIONS_GRAPHICS_WHEREAMI=options graphics +SING_OPTIONS_GRAPHICS_DESC=graphic settings SING_OPTIONS_GRAPHICS_RESOLUTION=Resolution SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullscreen SING_OPTIONS_GRAPHICS_DEPTH=Depth @@ -46,66 +53,70 @@ SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope SING_OPTIONS_GRAPHICS_LINEBONUS=Line Bonus SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Movie size -SING_OPTIONS_SOUND_DESC=sound options +SING_OPTIONS_SOUND_WHEREAMI=options sound +SING_OPTIONS_SOUND_DESC=sound settings SING_OPTIONS_SOUND_MIC_BOOST=Mic boost SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist SING_OPTIONS_SOUND_BEAT_CLICK=Beat click SING_OPTIONS_SOUND_THRESHOLD=Threshold SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Two players mode -SING_OPTIONS_LYRICS_DESC=lyrics options +SING_OPTIONS_LYRICS_WHEREAMI=options lyrics +SING_OPTIONS_LYRICS_DESC=lyrics settings SING_OPTIONS_LYRICS_FONT=Font SING_OPTIONS_LYRICS_EFFECT=Effect SING_OPTIONS_LYRICS_SOLMIZATION=Solmization -SING_OPTIONS_THEMES_DESC=themes options +SING_OPTIONS_THEMES_WHEREAMI=options themes +SING_OPTIONS_THEMES_DESC=theme and skin settings SING_OPTIONS_THEMES_THEME=Theme SING_OPTIONS_THEMES_SKIN=Skin SING_OPTIONS_THEMES_COLOR=Color -SING_OPTIONS_RECORD_DESC=record options +SING_OPTIONS_RECORD_WHEREAMI=options record +SING_OPTIONS_RECORD_DESC=microphone settings SING_OPTIONS_RECORD_CARD=Soundcard SING_OPTIONS_RECORD_INPUT=Input SING_OPTIONS_RECORD_CHANNELL=Left channel SING_OPTIONS_RECORD_CHANNELR=Right channel -SING_OPTIONS_ADVANCED_DESC=advanced options +SING_OPTIONS_ADVANCED_WHEREAMI=options advanced +SING_OPTIONS_ADVANCED_DESC=advanced settings SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effects SING_OPTIONS_ADVANCED_SCREENFADE=Screen Fading SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= SING_OPTIONS_ADVANCED_ONSONGCLICK=after SongSelection -SING_LEGEND_SELECT=SELECT -SING_LEGEND_NAVIGATE=NAVIGATE -SING_LEGEND_CONTINUE=Continue - -SING_OPTIONS=options +SING_LEGEND_SELECT=select +SING_LEGEND_NAVIGATE=navigate +SING_LEGEND_CONTINUE=continue +SING_LEGEND_ESC=back SING_DIFFICULTY=select difficulty SING_EASY=easy SING_MEDIUM=medium SING_HARD=hard -SING_TIME=TIME -SING_TOTAL=total +SING_ENTER_PLAYER_NAME=enter player name + +SING_SONGSELECTION=Song Selection SING_SONG_SELECTION=song selection SING_SONGS_IN_CAT=Songs SING_CHOOSE_SONG=choose your song + +SING_TIME=TIME +SING_TOTAL=total SING_SING_MODE=sing solo SING_NOTES=notes SING_GOLDEN_NOTES=golden notes SING_PHRASE_BONUS=line bonus -SING_EXIT=exit -EVENT_NOISE_DETECT Noise detect.(0=on,3=off) SING_TOP_5_CHARTS=top 5 charts -SING_ENTER_PLAYER_NAME=enter player name - SING_MENU=Main Menu -SING_SONGSELECTION=Song Selection SING_SCORE_TONE_DEAF=Tone Deaf SING_SCORE_AMATEUR=Amateur @@ -127,19 +138,15 @@ IMPLODE_GLUE2= and SONG_MENU_NAME_MAIN=Song Menu SONG_MENU_PLAY=Sing +SONG_MENU_CHANGEPLAYERS=Change Players SONG_MENU_EDIT=Edit SONG_MENU_MODI=Sing a Modi -SONG_MENU_CHANGEPLAYERS=Change Players SONG_MENU_CANCEL=Cancel SONG_MENU_NAME_PLAYLIST=Song Menu SONG_MENU_PLAYLIST_ADD=Add Song SONG_MENU_PLAYLIST_DEL=Delete Song -SONG_MENU_NAME_PLAYLIST=Song Menu -SONG_MENU_PLAYLIST_ADD=Add Song -SONG_MENU_PLAYLIST_DEL=Delete Song - SONG_MENU_NAME_PLAYLIST_ADD=Add Song SONG_MENU_PLAYLIST_ADD_NEW=to new playlist SONG_MENU_PLAYLIST_ADD_EXISTING=to exiting playlist @@ -161,7 +168,6 @@ SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=take Joker - SONG_JUMPTO_DESC=Jump to Song SONG_JUMPTO_TYPE_DESC=Search for: SONG_JUMPTO_TYPE1=All @@ -172,30 +178,57 @@ SONG_JUMPTO_NOSONGSFOUND=No Song found SONG_JUMPTO_HELP=Type Text to Search for SONG_JUMPTO_CATTEXT=Search for: %s -PARTY_ROUND=Round -PARTY_ROUND_WINNER=Winner - -PARTY_SCORE_WINS=%s wins! -PARTY_OPTIONS_DESC=Party Mode +PARTY_MODE=Party mode PARTY_DIFFICULTY=Difficulty PARTY_PLAYLIST=Playlist Mode +PARTY_PLAYLIST_ALL=All songs +PARTY_PLAYLIST_CATEGORY=Folder +PARTY_PLAYLIST_PLAYLIST=Playlist PARTY_ROUNDS=Rounds PARTY_TEAMS=Teams PARTY_TEAMS_PLAYER1=Player Team1 PARTY_TEAMS_PLAYER2=Player Team2 PARTY_TEAMS_PLAYER3=Player Team3 -PARTY_SELECT_PLAYER=Enter Playernames! -PARTY_DISMISSED=Dismissed! +PARTY_LEGEND_CONTINUE=continue + +PARTY_OPTIONS_DESC=Settings for the party-game +PARTY_OPTIONS_WHEREAMI=party options + +PARTY_PLAYER_DESC=Enter Player- an Teamnames! +PARTY_PLAYER_WHEREAMI=party names +PARTY_PLAYER_ENTER_NAME=enter names +PARTY_PLAYER_LEGEND_CONTINUE=start party-game + +PARTY_ROUND_DESC=next players to the mics +PARTY_ROUND_WHEREAMI=party next round +PARTY_ROUND_LEGEND_CONTINUE=start round + +PARTY_SCORE_DESC=score of the last round +PARTY_SCORE_WHEREAMI=party points + +PARTY_WIN_DESC=winner of the party-game +PARTY_WIN_WHEREAMI=party winner +PARTY_WIN_LEGEND_CONTINUE=back to main-menue + +PARTY_ROUND=round +PARTY_ROUND_WINNER=Winner PARTY_NOTPLAYEDYET=Not played yet PARTY_NOBODY=Nobody +NEXT_ROUND=Next round: + +PARTY_DISMISSED=Dismissed! +PARTY_SCORE_WINS=%s wins! PLUGIN_HDL_NAME=Hold the Line PLUGIN_HDL_DESC=Don't get worse than the Pointer at the Rating bar shows you. + PLUGIN_UNTIL5000_NAME=Until 5000 PLUGIN_UNTIL5000_DESC=Who gets 5000 Points first wins the match + PLUGIN_DUELL_NAME=Duell PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points + PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Duell without seeing the Notes diff --git a/Languages/German.ini b/Languages/German.ini index ee39b3c1..741fd84f 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -2,7 +2,6 @@ SING_LOADING=Lade... SING_CHOOSE_MODE=Modus wählen - SING_SING=Singen SING_SING_DESC=Singen @@ -23,6 +22,10 @@ SING_GAME_OPTIONS_DESC=Ver SING_EXIT=Beenden SING_EXIT_DESC=Spiel verlassen +SING_OPTIONS=Optionen +SING_OPTIONS_DESC=Einstellungen verändern +SING_OPTIONS_WHEREAMI=Optionen + SING_OPTIONS_GAME=Spiel SING_OPTIONS_GRAPHICS=Grafik SING_OPTIONS_SOUND=Sound @@ -32,7 +35,8 @@ SING_OPTIONS_RECORD=Aufnahme SING_OPTIONS_ADVANCED=Erweitert SING_OPTIONS_EXIT=zurück -SING_OPTIONS_GAME_DESC=Spiel Optionen +SING_OPTIONS_GAME_WHEREAMI=Optionen Spiel +SING_OPTIONS_GAME_DESC=Allgemeine Spiel Einstellungen SING_OPTIONS_GAME_PLAYERS=Spieler SING_OPTIONS_GAME_DIFFICULTY=Schwierigkeit SING_OPTIONS_GAME_LANGUAGE=Sprache @@ -40,7 +44,8 @@ SING_OPTIONS_GAME_TABS=Tabs SING_OPTIONS_GAME_SORTING=Sortierung SING_OPTIONS_GAME_DEBUG=Debug -SING_OPTIONS_GRAPHICS_DESC=Grafik Optionen +SING_OPTIONS_GRAPHICS_WHEREAMI=Optionen Grafik +SING_OPTIONS_GRAPHICS_DESC=Einstellungen für die Grafik SING_OPTIONS_GRAPHICS_RESOLUTION=Auflösung SING_OPTIONS_GRAPHICS_FULLSCREEN=Vollbild SING_OPTIONS_GRAPHICS_DEPTH=Farbtiefe @@ -48,30 +53,35 @@ SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oszilloskop SING_OPTIONS_GRAPHICS_LINEBONUS=Phrasen Bonus SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Video Größe -SING_OPTIONS_SOUND_DESC=Sound Optionen +SING_OPTIONS_SOUND_WHEREAMI=Optionen Sound +SING_OPTIONS_SOUND_DESC=Einstellungen für den Sound SING_OPTIONS_SOUND_MIC_BOOST=Mic Anhebung SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdrückung SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spieler-Modus -SING_OPTIONS_LYRICS_DESC=Lyrics Optionen +SING_OPTIONS_LYRICS_WHEREAMI=Optionen Lyrics +SING_OPTIONS_LYRICS_DESC=Einstellungen für die Lyrics SING_OPTIONS_LYRICS_FONT=Schriftart SING_OPTIONS_LYRICS_EFFECT=Effekt SING_OPTIONS_LYRICS_SOLMIZATION=Solmization -SING_OPTIONS_THEMES_DESC=Themes Optionen +SING_OPTIONS_THEMES_WHEREAMI=Optionen Themes +SING_OPTIONS_THEMES_DESC=Einstellungen für die Themes und Skins SING_OPTIONS_THEMES_THEME=Theme SING_OPTIONS_THEMES_SKIN=Skin SING_OPTIONS_THEMES_COLOR=Farbe -SING_OPTIONS_RECORD_DESC=Aufnahme Optionen +SING_OPTIONS_RECORD_WHEREAMI=Optionen Aufnahme +SING_OPTIONS_RECORD_DESC=Einstellungen für die Microfone SING_OPTIONS_RECORD_CARD=Soundkarte SING_OPTIONS_RECORD_INPUT=Eingang SING_OPTIONS_RECORD_CHANNELL=Linker Kanal SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal -SING_OPTIONS_ADVANCED_DESC=Erweiterte Optionen +SING_OPTIONS_ADVANCED_WHEREAMI=Optionen Erweitert +SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effekte SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm Fade SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation @@ -80,12 +90,10 @@ SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Songauswahl -SING_LEGEND_SELECT=AUSWÄHLEN +SING_LEGEND_SELECT=Auswählen SING_LEGEND_NAVIGATE=Navigieren - SING_LEGEND_CONTINUE=weiter - -SING_OPTIONS=Optionen +SING_LEGEND_ESC=Zurück SING_DIFFICULTY=Schwierigkeitsgrad auswählen SING_EASY=Einfach @@ -94,7 +102,8 @@ SING_HARD=Schwierig SING_ENTER_PLAYER_NAME=Spielernamen eingeben -SING_SONG_SELECTION=Song-Auswahl +SING_SONGSELECTION=Song-Auswahl +SING_SONG_SELECTION=Song-Auswahl SING_SONGS_IN_CAT=Songs SING_CHOOSE_SONG=Wähle deinen Song @@ -107,12 +116,7 @@ SING_PHRASE_BONUS=Phrasenbonus SING_TOP_5_CHARTS=Top-5-Charts -EVENT_PRESET Voreinstellung (0 = zu Hause,1 - 2 = Club) -EVENT_NOISE_DETECT Geräuscherkennung (0 = an, 3 = aus) -EVENT_REVERB Hall (0 = hoch, 1 = niedrig, 2 = aus) - SING_MENU=Hauptmenü -SING_SONGSELECTION=Songauswahl SING_SCORE_TONE_DEAF=Anti Talent SING_SCORE_AMATEUR=Amateur @@ -158,6 +162,7 @@ SONG_MENU_NO=Nein SONG_MENU_NAME_PLAYLIST_LOAD=Playlist öffnen SONG_MENU_PLAYLIST_LOAD=Öffnen + SONG_MENU_NAME_PARTY=Menü SONG_MENU_JOKER=Joker @@ -173,7 +178,6 @@ SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden SONG_JUMPTO_HELP=Text eingeben um zu suchen SONG_JUMPTO_CATTEXT=Suche nach: %s - PARTY_MODE=Party Modus PARTY_DIFFICULTY=Schwierigkeit PARTY_PLAYLIST=Playlist Modus diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 0fa75228..0082b0ac 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -104,7 +104,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [MainStatic4] -X =384 +X =388 Y =553 W =26 H =22 @@ -122,9 +122,8 @@ Size =7 Align=2 Text=SING_MENU - [MainTextDescriptionLong] -X =414 +X =418 Y =552 Color=Black Font =0 @@ -2360,29 +2359,12 @@ Type=Font Black Color=White [Options] -#Texts = 4 +Texts = 6 Fade = 2 [OptionsBackground] Tex=OptionsBG -[OptionsText1] -X =70 -Y =6 -Color=White -Font =0 -Size =20 -Text=SING_OPTIONS -Align=0 - -[OptionsTextDescription] -X =70 -Y =53 -Color=White -Font =0 -Size =10 -Align =0 - [OptionsStatic1] X =40 Y =22 @@ -2414,6 +2396,44 @@ Type=Plain Reflection=1 ReflectionSpacing=1 +[OptionsStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsStatic5] +X =388 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain +Style=5 + +[OptionsStatic6] +X =512 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[OptionsText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS +Align=0 + [OptionsText2] X =238 Y =552 @@ -2421,16 +2441,43 @@ Color=Black Font =0 Size =7 Align=2 -Text=SING_OPTIONS +Text=SING_OPTIONS_WHEREAMI [OptionsText3] -X =300 +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=SING_OPTIONS_DESC + +[OptionsText4] +X =294 Y =552 Color=Black Font =0 Size =7 Align=0 -Text=SING_OPTIONS_GAME_DESC +Text=SING_LEGEND_NAVIGATE + +[OptionsText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_SELECT + +[OptionsText6] +X =538 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsButtonGame] X =100 @@ -2600,21 +2647,11 @@ Text=SING_OPTIONS_EXIT Color=White [OptionsGame] -Texts = 1 -Fade = 2 +Texts = 5 [OptionsGameBackground] Tex=OptionsBG -[OptionsGameText1] -X =70 -Y =6 -Color=White -Font =0 -Size =20 -Text=SING_OPTIONS_GAME -Align=0 - [OptionsGameStatic1] X =40 Y =22 @@ -2624,12 +2661,98 @@ Color =White Tex =IconOption Type=Font Black +[OptionsGameStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsGameStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsGameStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsGameStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[OptionsGameText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsGameText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_GAME_WHEREAMI + +[OptionsGameText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=SING_OPTIONS_GAME_DESC + +[OptionsGameText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsGameText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + [OptionsGameSelectPlayers] Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_GAME_PLAYERS X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2649,7 +2772,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_GAME_DIFFICULTY X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2670,7 +2793,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_GAME_LANGUAGE X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2690,7 +2813,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GAME_TABS X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -2710,7 +2833,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GAME_SORTING X = 40 -Y = 380 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -2730,7 +2853,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GAME_DEBUG X = 40 -Y = 450 +Y = 360 W = 230 H = 70 SkipX = 50 @@ -2747,7 +2870,7 @@ STDColor = GrayDark [OptionsGameButtonExit] X = 40 -Y = 520 +Y = 415 W = 230 H = 70 Tex =MainBar @@ -2756,35 +2879,112 @@ DColor = Gray Type = Font Black [OptionsGraphics] -Texts = 1 +Texts = 5 [OptionsGraphicsBackground] Tex=OptionsBG +[OptionsGraphicsStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black + +[OptionsGraphicsStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsGraphicsStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsGraphicsStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsGraphicsStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsGraphicsText1] X =70 Y =6 Color=White Font =0 Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsGraphicsText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_GRAPHICS_WHEREAMI + +[OptionsGraphicsText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 Text=SING_OPTIONS_GRAPHICS_DESC + +[OptionsGraphicsText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=SING_LEGEND_NAVIGATE -[OptionsGraphicsStatic1] -X =40 -Y =22 -W =27 -H =27 -Color =White -Tex =IconOption -Type=Font Black +[OptionsGraphicsText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsGraphicsSelectSlideResolution] Tex =MainBar TexSBG =MainBar Text=SING_OPTIONS_GRAPHICS_RESOLUTION X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2804,7 +3004,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_FULLSCREEN X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2824,7 +3024,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_DEPTH X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2844,7 +3044,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_OSCILLOSCOPE X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -2864,7 +3064,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_LINEBONUS X = 40 -Y = 380 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -2884,7 +3084,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE X = 40 -Y = 450 +Y = 360 W = 230 H = 70 SkipX = 50 @@ -2901,7 +3101,7 @@ STDColor = GrayDark [OptionsGraphicsButtonExit] X = 40 -Y = 520 +Y = 415 W = 230 H = 70 Tex =MainBar @@ -2910,20 +3110,11 @@ DColor = Gray Type = Font Black [OptionsSound] -Texts = 1 +Texts = 5 [OptionsSoundBackground] Tex=OptionsBG -[OptionsSoundText1] -X =70 -Y =6 -Color=White -Font =0 -Size =20 -Text=SING_OPTIONS_SOUND_DESC -Align=0 - [OptionsSoundStatic1] X =40 Y =22 @@ -2933,12 +3124,98 @@ Color =White Tex =IconOption Type=Font Black +[OptionsSoundStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsSoundStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsSoundStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsSoundStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[OptionsSoundText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsSoundText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_SOUND_WHEREAMI + +[OptionsSoundText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=SING_OPTIONS_SOUND_DESC + +[OptionsSoundText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsSoundText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + [OptionsSoundSelectMicBoost] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_MIC_BOOST X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2958,7 +3235,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_CLICK_ASSIST X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2978,7 +3255,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_BEAT_CLICK X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2998,7 +3275,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_THRESHOLD X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -3018,7 +3295,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_TWO_PLAYERS_MODE X = 40 -Y = 380 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -3035,7 +3312,7 @@ STDColor = GrayDark [OptionsSoundButtonExit] X = 40 -Y = 460 +Y = 360 W = 230 H = 70 Tex =MainBar @@ -3049,30 +3326,107 @@ Texts = 1 [OptionsLyricsBackground] Tex=OptionsBG +[OptionsLyricsStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black + +[OptionsLyricsStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsLyricsStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsLyricsStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsLyricsStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsLyricsText1] X =70 Y =6 Color=White Font =0 Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsLyricsText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_LYRICS_WHEREAMI + +[OptionsLyricsText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 Text=SING_OPTIONS_LYRICS_DESC + +[OptionsLyricsText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=SING_LEGEND_NAVIGATE -[OptionsLyricsStatic1] -X =40 -Y =22 -W =27 -H =27 -Color =White -Tex =IconOption -Type=Font Black +[OptionsLyricsText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsLyricsSelectLyricsFont] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_LYRICS_FONT X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -3092,7 +3446,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_LYRICS_EFFECT X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -3112,7 +3466,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_LYRICS_SOLMIZATION X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -3129,7 +3483,7 @@ STDColor = GrayDark [OptionsLyricsButtonExit] X = 40 -Y = 450 +Y = 250 W = 230 H = 70 Tex =MainBar @@ -3138,35 +3492,112 @@ DColor = Gray Type = Font Black [OptionsThemes] -Texts = 1 +Texts = 5 [OptionsThemesBackground] Tex=OptionsBG +[OptionsThemesStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black + +[OptionsThemesStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsThemesStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsThemesStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsThemesStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsThemesText1] X =70 Y =6 Color=White Font =0 Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsThemesText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_THEMES_WHEREAMI + +[OptionsThemesText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 Text=SING_OPTIONS_THEMES_DESC + +[OptionsThemesText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=SING_LEGEND_NAVIGATE -[OptionsThemesStatic1] -X =40 -Y =22 -W =27 -H =27 -Color =White -Tex =IconOption -Type=Font Black +[OptionsThemesText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsThemesSelectTheme] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_THEMES_THEME X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -3186,7 +3617,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_THEMES_SKIN X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -3206,7 +3637,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_THEMES_COLOR X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -3223,7 +3654,7 @@ STDColor = GrayDark [OptionsThemesButtonExit] X = 40 -Y = 450 +Y = 250 W = 230 H = 70 Tex =MainBar @@ -3232,35 +3663,112 @@ DColor = Gray Type = Font Black [OptionsRecord] -Texts = 1 +Texts = 5 [OptionsRecordBackground] Tex=OptionsBG +[OptionsRecordStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black + +[OptionsRecordStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsRecordStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsRecordStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsRecordStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsRecordText1] X =70 Y =6 Color=White Font =0 Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsRecordText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_RECORD_WHEREAMI + +[OptionsRecordText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 Text=SING_OPTIONS_RECORD_DESC + +[OptionsRecordText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=SING_LEGEND_NAVIGATE -[OptionsRecordStatic1] -X =40 -Y =22 -W =27 -H =27 -Color =White -Tex =IconOption -Type=Font Black +[OptionsRecordText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsRecordSelectSlideCard] Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_CARD X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -3281,7 +3789,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_INPUT X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -3302,7 +3810,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_CHANNELL X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -3323,7 +3831,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_CHANNELR X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -3341,7 +3849,7 @@ STDColor = GrayDark [OptionsRecordButtonExit] X = 40 -Y = 380 +Y = 305 W = 230 H = 70 Tex = MainBar @@ -3350,37 +3858,112 @@ DColor = Gray Type = Font Black [OptionsAdvanced] -Texts = 1 -Statics=1 +Texts = 5 [OptionsAdvancedBackground] Tex=OptionsBG +[OptionsAdvancedStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =IconOption +Type=Font Black + +[OptionsAdvancedStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsAdvancedStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[OptionsAdvancedStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsAdvancedStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsAdvancedText1] X =70 Y =6 Color=White Font =0 Size =20 +Text=SING_OPTIONS +Align=0 + +[OptionsAdvancedText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_OPTIONS_ADVANCED_WHEREAMI + +[OptionsAdvancedText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 Text=SING_OPTIONS_ADVANCED_DESC + +[OptionsAdvancedText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 Align=0 +Text=SING_LEGEND_NAVIGATE -[OptionsAdvancedStatic1] -X =40 -Y =22 -W =27 -H =27 -Color =White -Tex =IconOption -Type=Font Black -Texts = 1 +[OptionsAdvancedText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsAdvancedSelectLoadAnimation] Tex =MainBar TexSBG =MainBar Text=SING_OPTIONS_ADVANCED_LOADANIMATION X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -3400,7 +3983,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_ADVANCED_SCREENFADE X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -3420,7 +4003,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_ADVANCED_EFFECTSING X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -3440,7 +4023,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_LINEBONUS X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -3460,7 +4043,7 @@ Tex =MainBar TexSBG =MainBar Text=SING_OPTIONS_ADVANCED_ONSONGCLICK X = 40 -Y = 380 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -3480,7 +4063,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL X = 40 -Y = 450 +Y = 360 W = 230 H = 70 SkipX = 50 @@ -3497,7 +4080,7 @@ STDColor = GrayDark [OptionsAdvancedButtonExit] X = 40 -Y = 520 +Y = 415 W = 230 H = 70 Tex =MainBar @@ -5034,7 +5617,7 @@ Type=Font Black [PartyOptionsStatic4] X =260 Y =553 -W =26 +W =30 H =22 Tex=ButtonNavi Color =White @@ -5042,7 +5625,7 @@ Type=Plain Style=5 [PartyOptionsStatic5] -X =384 +X =388 Y =553 W =26 H =22 @@ -5081,7 +5664,7 @@ Align=2 Text=PARTY_OPTIONS_WHEREAMI [PartyOptionsText4] -X =290 +X =294 Y =552 Color=Black Font =0 @@ -5090,7 +5673,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [PartyOptionsText5] -X =414 +X =418 Y =552 Color=Black Font =0 @@ -5308,7 +5891,7 @@ Type=Font Black [PartyPlayerStatic4] X =260 Y =553 -W =26 +W =30 H =22 Tex=ButtonNavi Color =White @@ -5316,7 +5899,7 @@ Type=Plain Style=5 [PartyPlayerStatic5] -X =384 +X =388 Y =553 W =26 H =22 @@ -5326,7 +5909,7 @@ Type=Plain Style=5 [PartyPlayerStatic6] -X =552 +X =556 Y =553 W =26 H =22 @@ -5365,7 +5948,7 @@ Align=2 Text=PARTY_PLAYER_WHEREAMI [PartyPlayerText4] -X =290 +X =294 Y =552 Color=Black Font =0 @@ -5374,7 +5957,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [PartyPlayerText5] -X =414 +X =418 Y =552 Color=Black Font =0 @@ -5383,7 +5966,7 @@ Align=0 Text=PARTY_PLAYER_ENTER_NAME [PartyPlayerText6] -X =582 +X =586 Y =552 Color=Black Font =0 -- cgit v1.2.3 From 3f0ab80a64316edaccf6492c6313a6a10fac435b Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 4 May 2007 01:52:25 +0000 Subject: forgot to rename the button :) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@170 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[button]esc.jpg | Bin 0 -> 3403 bytes Skins/Deluxe/x_[button]esc.jpg | Bin 3403 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Deluxe/[button]esc.jpg delete mode 100644 Skins/Deluxe/x_[button]esc.jpg diff --git a/Skins/Deluxe/[button]esc.jpg b/Skins/Deluxe/[button]esc.jpg new file mode 100644 index 00000000..a27259c2 Binary files /dev/null and b/Skins/Deluxe/[button]esc.jpg differ diff --git a/Skins/Deluxe/x_[button]esc.jpg b/Skins/Deluxe/x_[button]esc.jpg deleted file mode 100644 index a27259c2..00000000 Binary files a/Skins/Deluxe/x_[button]esc.jpg and /dev/null differ -- cgit v1.2.3 From f1a6004ea15b05a2550cdc4d141c59d7f499dbeb Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 4 May 2007 12:36:59 +0000 Subject: redrawn bg's: blue and winter. still searching for spring and autum pics. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@171 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Blue.ini | 15 +++-- Skins/Deluxe/W&C-Summer.ini | 1 + Skins/Deluxe/W&C-Winter.ini | 129 +++++++++++++++++++++++++++++++++++++ Skins/Deluxe/[bg-load]blue.jpg | Bin 0 -> 94799 bytes Skins/Deluxe/[bg-load]winter.jpg | Bin 0 -> 102377 bytes Skins/Deluxe/[bg-main]blue.jpg | Bin 0 -> 84543 bytes Skins/Deluxe/[bg-main]winter.jpg | Bin 0 -> 101942 bytes Skins/Deluxe/x_W&C-Winter.ini | 128 ------------------------------------ Skins/Deluxe/x_[bg-load]blue.jpg | Bin 94649 -> 0 bytes Skins/Deluxe/x_[bg-load]winter.jpg | Bin 104401 -> 0 bytes Skins/Deluxe/x_[bg-main]blue.jpg | Bin 84321 -> 0 bytes Skins/Deluxe/x_[bg-main]winter.jpg | Bin 100174 -> 0 bytes 12 files changed, 138 insertions(+), 135 deletions(-) create mode 100644 Skins/Deluxe/W&C-Winter.ini create mode 100644 Skins/Deluxe/[bg-load]blue.jpg create mode 100644 Skins/Deluxe/[bg-load]winter.jpg create mode 100644 Skins/Deluxe/[bg-main]blue.jpg create mode 100644 Skins/Deluxe/[bg-main]winter.jpg delete mode 100644 Skins/Deluxe/x_W&C-Winter.ini delete mode 100644 Skins/Deluxe/x_[bg-load]blue.jpg delete mode 100644 Skins/Deluxe/x_[bg-load]winter.jpg delete mode 100644 Skins/Deluxe/x_[bg-main]blue.jpg delete mode 100644 Skins/Deluxe/x_[bg-main]winter.jpg diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 535e4123..b2d26e05 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -17,13 +17,13 @@ ButtonF = [main]buttonf.jpg MainBar = [main]mainBar.jpg #Backgrounds -LoadingBG = x_[bg-load]blue.jpg -MainBG = x_[bg-main]blue.jpg -SongBG = x_[bg-main]blue.jpg -ScoreScreenBG = x_[bg-main]blue.jpg -Top5BG = x_[bg-main]blue.jpg -OptionsBG = x_[bg-main]blue.jpg -PartyBG = x_[bg-main]blue.jpg +LoadingBG = [bg-load]blue.jpg +MainBG = [bg-main]blue.jpg +SongBG = [bg-main]blue.jpg +ScoreScreenBG = [bg-main]blue.jpg +Top5BG = [bg-main]blue.jpg +OptionsBG = [bg-main]blue.jpg +PartyBG = [bg-main]blue.jpg #Icons on screen SongCD = [icon]cd.jpg @@ -101,6 +101,7 @@ ButtonAlt = [button]alt.jpg ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/W&C-Summer.ini b/Skins/Deluxe/W&C-Summer.ini index 175f062e..3251ff8e 100644 --- a/Skins/Deluxe/W&C-Summer.ini +++ b/Skins/Deluxe/W&C-Summer.ini @@ -101,6 +101,7 @@ ButtonAlt = [button]alt.jpg ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/W&C-Winter.ini b/Skins/Deluxe/W&C-Winter.ini new file mode 100644 index 00000000..5fb65c28 --- /dev/null +++ b/Skins/Deluxe/W&C-Winter.ini @@ -0,0 +1,129 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=W&C-Winter +Color=Blue + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = [bg-load]winter.jpg +MainBG = [bg-main]winter.jpg +SongBG = [bg-main]winter.jpg +ScoreScreenBG = [bg-main]winter.jpg +Top5BG = [bg-main]winter.jpg +OptionsBG = [bg-main]winter.jpg +PartyBG = [bg-main]winter.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[bg-load]blue.jpg b/Skins/Deluxe/[bg-load]blue.jpg new file mode 100644 index 00000000..8e36cf6b Binary files /dev/null and b/Skins/Deluxe/[bg-load]blue.jpg differ diff --git a/Skins/Deluxe/[bg-load]winter.jpg b/Skins/Deluxe/[bg-load]winter.jpg new file mode 100644 index 00000000..cf11eec4 Binary files /dev/null and b/Skins/Deluxe/[bg-load]winter.jpg differ diff --git a/Skins/Deluxe/[bg-main]blue.jpg b/Skins/Deluxe/[bg-main]blue.jpg new file mode 100644 index 00000000..2831a2de Binary files /dev/null and b/Skins/Deluxe/[bg-main]blue.jpg differ diff --git a/Skins/Deluxe/[bg-main]winter.jpg b/Skins/Deluxe/[bg-main]winter.jpg new file mode 100644 index 00000000..6b2667f7 Binary files /dev/null and b/Skins/Deluxe/[bg-main]winter.jpg differ diff --git a/Skins/Deluxe/x_W&C-Winter.ini b/Skins/Deluxe/x_W&C-Winter.ini deleted file mode 100644 index 160f3663..00000000 --- a/Skins/Deluxe/x_W&C-Winter.ini +++ /dev/null @@ -1,128 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=W&C-Winter -Color=Blue - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg - -#Backgrounds -LoadingBG = x_[bg-load]winter.jpg -MainBG = x_[bg-main]winter.jpg -SongBG = x_[bg-main]winter.jpg -ScoreScreenBG = x_[bg-main]winter.jpg -Top5BG = x_[bg-main]winter.jpg -OptionsBG = x_[bg-main]winter.jpg -PartyBG = x_[bg-main]winter.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar = - -#the bar behind the timestuff -bar = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp - - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -PopUpBG = [menu]popUpBG.jpg - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/x_[bg-load]blue.jpg b/Skins/Deluxe/x_[bg-load]blue.jpg deleted file mode 100644 index b341ea96..00000000 Binary files a/Skins/Deluxe/x_[bg-load]blue.jpg and /dev/null differ diff --git a/Skins/Deluxe/x_[bg-load]winter.jpg b/Skins/Deluxe/x_[bg-load]winter.jpg deleted file mode 100644 index b2dc9b34..00000000 Binary files a/Skins/Deluxe/x_[bg-load]winter.jpg and /dev/null differ diff --git a/Skins/Deluxe/x_[bg-main]blue.jpg b/Skins/Deluxe/x_[bg-main]blue.jpg deleted file mode 100644 index 856ec781..00000000 Binary files a/Skins/Deluxe/x_[bg-main]blue.jpg and /dev/null differ diff --git a/Skins/Deluxe/x_[bg-main]winter.jpg b/Skins/Deluxe/x_[bg-main]winter.jpg deleted file mode 100644 index 06f905b6..00000000 Binary files a/Skins/Deluxe/x_[bg-main]winter.jpg and /dev/null differ -- cgit v1.2.3 From 511765fbffe9a793c042a1bd7d00e28285dc4947 Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 4 May 2007 13:16:30 +0000 Subject: some work done in english and german language. still not perfect git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@172 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 72 +++++++++++++++++++++++++-------------------------- Languages/German.ini | 4 +-- Themes/Deluxe.ini | 2 +- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index 040d4b3a..9d311b41 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -6,12 +6,12 @@ SING_SING=sing SING_SING_DESC=quick game: sing solo or duet SING_MULTI=party -SING_MULTI_DESC=Sing in PartyMode +SING_MULTI_DESC=sing in party-mode -SING_TOOLS=Tools +SING_TOOLS=tools SING_STATS=stats -SING_STATS_DESC=View the Statistics +SING_STATS_DESC=view the statistics SING_EDITOR=editor SING_EDITOR_DESC=create your own songs @@ -24,7 +24,7 @@ SING_EXIT_DESC=quit game SING_OPTIONS=options SING_OPTIONS_DESC=change settings -SING_OPTIONS_WHEREAMI=options +SING_OPTIONS_WHEREAMI=Options SING_OPTIONS_GAME=game SING_OPTIONS_GRAPHICS=graphics @@ -35,7 +35,7 @@ SING_OPTIONS_RECORD=record SING_OPTIONS_ADVANCED=advanced SING_OPTIONS_EXIT=back -SING_OPTIONS_GAME_WHEREAMI=options game +SING_OPTIONS_GAME_WHEREAMI=Options Game SING_OPTIONS_GAME_DESC=general game settings SING_OPTIONS_GAME_PLAYERS=Players SING_OPTIONS_GAME_DIFFICULTY=Difficulty @@ -44,7 +44,7 @@ SING_OPTIONS_GAME_TABS=Tabs SING_OPTIONS_GAME_SORTING=Sorting SING_OPTIONS_GAME_DEBUG=Debug -SING_OPTIONS_GRAPHICS_WHEREAMI=options graphics +SING_OPTIONS_GRAPHICS_WHEREAMI=Options Graphics SING_OPTIONS_GRAPHICS_DESC=graphic settings SING_OPTIONS_GRAPHICS_RESOLUTION=Resolution SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullscreen @@ -53,7 +53,7 @@ SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope SING_OPTIONS_GRAPHICS_LINEBONUS=Line Bonus SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Movie size -SING_OPTIONS_SOUND_WHEREAMI=options sound +SING_OPTIONS_SOUND_WHEREAMI=Options Sound SING_OPTIONS_SOUND_DESC=sound settings SING_OPTIONS_SOUND_MIC_BOOST=Mic boost SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist @@ -61,26 +61,26 @@ SING_OPTIONS_SOUND_BEAT_CLICK=Beat click SING_OPTIONS_SOUND_THRESHOLD=Threshold SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Two players mode -SING_OPTIONS_LYRICS_WHEREAMI=options lyrics +SING_OPTIONS_LYRICS_WHEREAMI=Options Lyrics SING_OPTIONS_LYRICS_DESC=lyrics settings SING_OPTIONS_LYRICS_FONT=Font SING_OPTIONS_LYRICS_EFFECT=Effect SING_OPTIONS_LYRICS_SOLMIZATION=Solmization -SING_OPTIONS_THEMES_WHEREAMI=options themes +SING_OPTIONS_THEMES_WHEREAMI=Options Themes SING_OPTIONS_THEMES_DESC=theme and skin settings SING_OPTIONS_THEMES_THEME=Theme SING_OPTIONS_THEMES_SKIN=Skin SING_OPTIONS_THEMES_COLOR=Color -SING_OPTIONS_RECORD_WHEREAMI=options record +SING_OPTIONS_RECORD_WHEREAMI=Options Record SING_OPTIONS_RECORD_DESC=microphone settings SING_OPTIONS_RECORD_CARD=Soundcard SING_OPTIONS_RECORD_INPUT=Input SING_OPTIONS_RECORD_CHANNELL=Left channel SING_OPTIONS_RECORD_CHANNELR=Right channel -SING_OPTIONS_ADVANCED_WHEREAMI=options advanced +SING_OPTIONS_ADVANCED_WHEREAMI=Options Advanced SING_OPTIONS_ADVANCED_DESC=advanced settings SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effects SING_OPTIONS_ADVANCED_SCREENFADE=Screen Fading @@ -88,7 +88,7 @@ SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= -SING_OPTIONS_ADVANCED_ONSONGCLICK=after SongSelection +SING_OPTIONS_ADVANCED_ONSONGCLICK=after Song Select SING_LEGEND_SELECT=select SING_LEGEND_NAVIGATE=navigate @@ -96,13 +96,13 @@ SING_LEGEND_CONTINUE=continue SING_LEGEND_ESC=back SING_DIFFICULTY=select difficulty -SING_EASY=easy -SING_MEDIUM=medium -SING_HARD=hard +SING_EASY=Easy +SING_MEDIUM=Medium +SING_HARD=Hard SING_ENTER_PLAYER_NAME=enter player name -SING_SONGSELECTION=Song Selection +SING_SONG_SELECTION_WHEREAMI=Song Selection SING_SONG_SELECTION=song selection SING_SONGS_IN_CAT=Songs SING_CHOOSE_SONG=choose your song @@ -136,7 +136,7 @@ LINEBONUS_WORST=Ghastly! IMPLODE_GLUE1=, IMPLODE_GLUE2= and -SONG_MENU_NAME_MAIN=Song Menu +SONG_MENU_NAME_MAIN=song menu SONG_MENU_PLAY=Sing SONG_MENU_CHANGEPLAYERS=Change Players SONG_MENU_EDIT=Edit @@ -166,7 +166,7 @@ SONG_MENU_PLAYLIST_LOAD=open SONG_MENU_NAME_PARTY=Menu SONG_MENU_JOKER=Joker -SONG_MENU_NAME_PARTY_JOKER=take Joker +SONG_MENU_NAME_PARTY_JOKER=take joker SONG_JUMPTO_DESC=Jump to Song SONG_JUMPTO_TYPE_DESC=Search for: @@ -178,7 +178,7 @@ SONG_JUMPTO_NOSONGSFOUND=No Song found SONG_JUMPTO_HELP=Type Text to Search for SONG_JUMPTO_CATTEXT=Search for: %s -PARTY_MODE=Party mode +PARTY_MODE=party mode PARTY_DIFFICULTY=Difficulty PARTY_PLAYLIST=Playlist Mode PARTY_PLAYLIST_ALL=All songs @@ -192,45 +192,45 @@ PARTY_TEAMS_PLAYER3=Player Team3 PARTY_LEGEND_CONTINUE=continue -PARTY_OPTIONS_DESC=Settings for the party-game -PARTY_OPTIONS_WHEREAMI=party options +PARTY_OPTIONS_DESC=settings for the party-game +PARTY_OPTIONS_WHEREAMI=Party Options -PARTY_PLAYER_DESC=Enter Player- an Teamnames! -PARTY_PLAYER_WHEREAMI=party names +PARTY_PLAYER_DESC=enter player- and teamnames! +PARTY_PLAYER_WHEREAMI=Party Names PARTY_PLAYER_ENTER_NAME=enter names PARTY_PLAYER_LEGEND_CONTINUE=start party-game PARTY_ROUND_DESC=next players to the mics -PARTY_ROUND_WHEREAMI=party next round +PARTY_ROUND_WHEREAMI=Party Next Round PARTY_ROUND_LEGEND_CONTINUE=start round PARTY_SCORE_DESC=score of the last round -PARTY_SCORE_WHEREAMI=party points +PARTY_SCORE_WHEREAMI=Party Points PARTY_WIN_DESC=winner of the party-game -PARTY_WIN_WHEREAMI=party winner -PARTY_WIN_LEGEND_CONTINUE=back to main-menue +PARTY_WIN_WHEREAMI=Party Winner +PARTY_WIN_LEGEND_CONTINUE=back to main-menu -PARTY_ROUND=round +PARTY_ROUND=Round PARTY_ROUND_WINNER=Winner -PARTY_NOTPLAYEDYET=Not played yet -PARTY_NOBODY=Nobody +PARTY_NOTPLAYEDYET=not played yet +PARTY_NOBODY=nobody NEXT_ROUND=Next round: PARTY_DISMISSED=Dismissed! PARTY_SCORE_WINS=%s wins! PLUGIN_HDL_NAME=Hold the Line -PLUGIN_HDL_DESC=Don't get worse than the Pointer at the Rating bar shows you. +PLUGIN_HDL_DESC=Don't get worse than the pointer at the rating bar shows you. PLUGIN_UNTIL5000_NAME=Until 5000 -PLUGIN_UNTIL5000_DESC=Who gets 5000 Points first wins the match +PLUGIN_UNTIL5000_DESC=Who gets 5000 points first wins the match. PLUGIN_DUELL_NAME=Duell -PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points +PLUGIN_DUELL_DESC=Sing a duell until 10000 points. PLUGIN_BLIND_NAME=Blind Mode -PLUGIN_BLIND_DESC=Duell without seeing the Notes +PLUGIN_BLIND_DESC=Duell without seeing the notes. STAT_MAIN_DESC=Statistics @@ -259,5 +259,5 @@ STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung -MSG_QUIT_USDX=Really Leave\n\nUltraStar? -MSG_END_PARTY=Really End\n\nParty Mode? \ No newline at end of file +MSG_QUIT_USDX=Really leave\n\nUltraStar? +MSG_END_PARTY=Really end\n\nParty Mode? \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index 741fd84f..1990180a 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -102,7 +102,7 @@ SING_HARD=Schwierig SING_ENTER_PLAYER_NAME=Spielernamen eingeben -SING_SONGSELECTION=Song-Auswahl +SING_SONG_SELECTION_WHEREAMI=Song-Auswahl SING_SONG_SELECTION=Song-Auswahl SING_SONGS_IN_CAT=Songs SING_CHOOSE_SONG=Wähle deinen Song @@ -260,4 +260,4 @@ STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d MSG_QUIT_USDX=UltraStar\n\nwirklich\n\nverlassen? -MSG_END_PARTY=Party Modus beenden? \ No newline at end of file +MSG_END_PARTY=Party Modus\n\nbeenden? \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 0082b0ac..3380ea33 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -372,7 +372,7 @@ Color=Black Font =0 Size =7 Align=2 -Text=SING_SONGSELECTION +Text=SING_SONG_SELECTION_WHEREAMI [SongStatic2] X =248 -- cgit v1.2.3 From 188929aca69791bc755db6562582acfcf10df2e5 Mon Sep 17 00:00:00 2001 From: b1indy Date: Fri, 4 May 2007 16:21:40 +0000 Subject: well... changed Button Reflections back to old behavior git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@173 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuButton.pas | 4 ++-- Game/Code/Screens/UScreenSong.pas | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index 87ebbb89..fde808e2 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -434,7 +434,7 @@ begin //Draw glBegin(GL_QUADS);//Top Left - glColor4f(ColR * Int, ColG * Int, ColB * Int, (Alpha-0.3)*FadeProgress*FadeProgress*FadeProgress); + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); glTexCoord2f(TexX1*TexW, TexY2*TexH); glVertex3f(x, y+h*scaleH+ Spacing, z); @@ -450,7 +450,7 @@ begin glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Spacing, z); //Top Right - glColor4f(ColR * Int, ColG * Int, ColB * Int, (Alpha-0.3)*FadeProgress*FadeProgress*FadeProgress); + glColor4f(ColR * Int, ColG * Int, ColB * Int, Alpha-0.3); glTexCoord2f(TexX2*TexW, TexY2*TexH); glVertex3f(x+w*scaleW, y+h*scaleH + Spacing, z); glEnd; diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index b32571c8..e4ab8854 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1112,7 +1112,8 @@ begin Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle*0.8));//Power(Z2, 3); - Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; +// Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; + Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; Button[B].Z := 0.95 - Abs(Pos) * 0.01; @@ -1148,7 +1149,8 @@ begin Button[B].Y := Theme.Song.Cover.Y - (Button[B].H - Theme.Song.Cover.H)*0.75; - Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; +// Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; + Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H; Diff := (Button[B].H - Theme.Song.Cover.H)/2; -- cgit v1.2.3 From 89551b7ff38df0714e6a55f2651686a313d03e62 Mon Sep 17 00:00:00 2001 From: mota23 Date: Fri, 4 May 2007 16:23:12 +0000 Subject: redrawn(again): bg winter git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@174 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[bg-load]winter.jpg | Bin 102377 -> 105706 bytes Skins/Deluxe/[bg-main]winter.jpg | Bin 101942 -> 102981 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[bg-load]winter.jpg b/Skins/Deluxe/[bg-load]winter.jpg index cf11eec4..b3072edb 100644 Binary files a/Skins/Deluxe/[bg-load]winter.jpg and b/Skins/Deluxe/[bg-load]winter.jpg differ diff --git a/Skins/Deluxe/[bg-main]winter.jpg b/Skins/Deluxe/[bg-main]winter.jpg index 6b2667f7..7e9dbd40 100644 Binary files a/Skins/Deluxe/[bg-main]winter.jpg and b/Skins/Deluxe/[bg-main]winter.jpg differ -- cgit v1.2.3 From b65d8165869cbaa7ca1913f3d2389617e9252b6b Mon Sep 17 00:00:00 2001 From: mota23 Date: Sat, 5 May 2007 01:34:58 +0000 Subject: Some Themework done. Added Buttonfade to [Options] and [Level]. Navigation-Bar done. To do: 2 Screens in Party-Mode, Statistic, SingScreen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@175 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 31 ++++-- Languages/German.ini | 34 +++++-- Themes/Deluxe.ini | 277 ++++++++++++++++++++++++++++++++++++++------------ 3 files changed, 257 insertions(+), 85 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index 9d311b41..74862e3a 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -95,29 +95,38 @@ SING_LEGEND_NAVIGATE=navigate SING_LEGEND_CONTINUE=continue SING_LEGEND_ESC=back -SING_DIFFICULTY=select difficulty +SING_PLAYER_DESC=enter player name/s +SING_PLAYER_WHEREAMI=Playernames +SING_PLAYER_ENTER_NAME=enter name + +SING_DIFFICULTY_DESC=select difficulty +SING_DIFFICULTY_WHEREAMI=Difficulty +SING_DIFFICULTY_CONTINUE=to song selection SING_EASY=Easy SING_MEDIUM=Medium SING_HARD=Hard -SING_ENTER_PLAYER_NAME=enter player name - +SING_SONG_SELECTION_DESC=choose your song SING_SONG_SELECTION_WHEREAMI=Song Selection +SING_SONG_SELECTION_GOTO=go to .. SING_SONG_SELECTION=song selection +SING_SONG_SELECTION_MENU=menu +SING_SONG_SELECTION_PLAYLIST=playlist SING_SONGS_IN_CAT=Songs -SING_CHOOSE_SONG=choose your song + SING_TIME=TIME SING_TOTAL=total -SING_SING_MODE=sing solo +SING_MODE=sing solo SING_NOTES=notes SING_GOLDEN_NOTES=golden notes SING_PHRASE_BONUS=line bonus -SING_TOP_5_CHARTS=top 5 charts - SING_MENU=Main Menu +SONG_SCORE=song score +SONG_SCORE_WHEREAMI=Score + SING_SCORE_TONE_DEAF=Tone Deaf SING_SCORE_AMATEUR=Amateur SING_SCORE_RISING_STAR=Rising Star @@ -126,6 +135,10 @@ SING_SCORE_HIT_ARTIST=Hit Artist SING_SCORE_SUPERSTAR=Superstar SING_SCORE_ULTRASTAR=Ultrastar +SING_TOP_5_CHARTS=top 5 Players +SING_TOP_5_CHARTS_WHEREAMI=top 5 +SING_TOP_5_CHARTS_CONTINUE=to song selection + LINEBONUS_PERFECT=Perfect! LINEBONUS_BETTER=Cool! LINEBONUS_GOOD=Good! @@ -163,12 +176,12 @@ SONG_MENU_NO=No SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open -SONG_MENU_NAME_PARTY=Menu +SONG_MENU_NAME_PARTY=Party Menu SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=take joker -SONG_JUMPTO_DESC=Jump to Song +SONG_JUMPTO_DESC=search song SONG_JUMPTO_TYPE_DESC=Search for: SONG_JUMPTO_TYPE1=All SONG_JUMPTO_TYPE2=Title diff --git a/Languages/German.ini b/Languages/German.ini index 1990180a..758e2d86 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -88,36 +88,44 @@ SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfragen SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen -SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Songauswahl +SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Auswahl SING_LEGEND_SELECT=Auswählen SING_LEGEND_NAVIGATE=Navigieren -SING_LEGEND_CONTINUE=weiter +SING_LEGEND_CONTINUE=Weiter SING_LEGEND_ESC=Zurück -SING_DIFFICULTY=Schwierigkeitsgrad auswählen +SING_PLAYER_DESC=Spielernamen eingeben. +SING_PLAYER_WHEREAMI=Spielernamen +SING_PLAYER_ENTER_NAME=Namen eingeben + +SING_DIFFICULTY_DESC=Schwierigkeitsgrad auswählen +SING_DIFFICULTY_WHEREAMI=Schwierigkeitsgrad +SING_DIFFICULTY_CONTINUE=zur Song-Auswahl SING_EASY=Einfach SING_MEDIUM=Mittel SING_HARD=Schwierig -SING_ENTER_PLAYER_NAME=Spielernamen eingeben - +SING_SONG_SELECTION_DESC=Wähle deinen Song SING_SONG_SELECTION_WHEREAMI=Song-Auswahl +SING_SONG_SELECTION_GOTO=Gehe zu .. SING_SONG_SELECTION=Song-Auswahl +SING_SONG_SELECTION_MENU=Menü +SING_SONG_SELECTION_PLAYLIST=Playliste SING_SONGS_IN_CAT=Songs -SING_CHOOSE_SONG=Wähle deinen Song SING_TIME=ZEIT SING_TOTAL=Gesamt -SING_SING_MODE=Singmodus +SING_MODE=Singmodus SING_NOTES=Noten SING_GOLDEN_NOTES=Goldener Ton SING_PHRASE_BONUS=Phrasenbonus -SING_TOP_5_CHARTS=Top-5-Charts - SING_MENU=Hauptmenü +SONG_SCORE=Song Punkte +SONG_SCORE_WHEREAMI=Punkte + SING_SCORE_TONE_DEAF=Anti Talent SING_SCORE_AMATEUR=Amateur SING_SCORE_RISING_STAR=Möchtegern @@ -126,6 +134,10 @@ SING_SCORE_HIT_ARTIST=Hit K SING_SCORE_SUPERSTAR=Superstar SING_SCORE_ULTRASTAR=UltraStar +SING_TOP_5_CHARTS=Top-5-Spieler +SING_TOP_5_CHARTS_WHEREAMI=Top-5 +SING_TOP_5_CHARTS_CONTINUE=zur Song-Auswahl + LINEBONUS_PERFECT=Perfekt! LINEBONUS_BETTER=Cool! LINEBONUS_GOOD=Gut! @@ -163,12 +175,12 @@ SONG_MENU_NO=Nein SONG_MENU_NAME_PLAYLIST_LOAD=Playlist öffnen SONG_MENU_PLAYLIST_LOAD=Öffnen -SONG_MENU_NAME_PARTY=Menü +SONG_MENU_NAME_PARTY=Party-Menü SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=Joker spielen -SONG_JUMPTO_DESC=Jump to Song +SONG_JUMPTO_DESC=Song suchen SONG_JUMPTO_TYPE_DESC=Suchen in: SONG_JUMPTO_TYPE1=Allem SONG_JUMPTO_TYPE2=Titel diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 3380ea33..1320f2a2 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -440,7 +440,7 @@ Color=Black Font =0 Size =7 Align=0 -Text=Jump to .. +Text=SING_SONG_SELECTION_GOTO [SongStatic6] X =425 @@ -458,7 +458,7 @@ Color=Black Font =0 Size =7 Align=0 -Text=SONG_MENU_NAME_MAIN +Text=SING_SONG_SELECTION_MENU [SongStatic7] X =515 @@ -494,7 +494,7 @@ Color=Black Font =0 Size =7 Align=0 -Text=Playlist +Text=SING_SONG_SELECTION_PLAYLIST [SongStatic5] X =200 @@ -1061,7 +1061,7 @@ Y =6 Color=White Font =0 Size =20 -Text=song score +Text=SONG_SCORE Align=0 [ScoreTextArtistTitle] @@ -1111,7 +1111,7 @@ Color=Black Font =0 Size =7 Align=2 -Text=song score +Text=SONG_SCORE_WHEREAMI [ScoreStatic4] X =260 @@ -2481,7 +2481,7 @@ Text=SING_LEGEND_ESC [OptionsButtonGame] X =100 -Y =270 +Y =215 W =150 H =50 Tex =Button @@ -2489,6 +2489,11 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonGameText1] X =75 @@ -2501,7 +2506,7 @@ Color=White [OptionsButtonGraphics] X =255 -Y =270 +Y =215 W =150 H =50 Tex =Button @@ -2509,6 +2514,11 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonGraphicsText1] X =75 @@ -2521,7 +2531,7 @@ Color=White [OptionsButtonSound] X =410 -Y =270 +Y =215 W =150 H =50 Tex =Button @@ -2529,6 +2539,11 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonSoundText1] X =75 @@ -2541,7 +2556,7 @@ Color=White [OptionsButtonLyrics] X =565 -Y =270 +Y =215 W =150 H =50 Tex =Button @@ -2550,6 +2565,11 @@ DColor = LightBlue Type=Font Black Align=0 Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonLyricsText1] X =75 @@ -2562,7 +2582,7 @@ Color=White [OptionsButtonThemes] X =100 -Y =340 +Y =335 W =150 H =50 Tex =Button @@ -2571,6 +2591,11 @@ DColor = LightBlue Type=Font Black Align=0 Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonThemesText1] X =75 @@ -2583,7 +2608,7 @@ Color=White [OptionsButtonRecord] X =255 -Y =340 +Y =335 W =150 H =50 Tex =Button @@ -2592,6 +2617,11 @@ DColor = LightBlue Type=Font Black Align=0 Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonRecordText1] X =75 @@ -2605,7 +2635,7 @@ Texts=1 [OptionsButtonAdvanced] X =410 -Y =340 +Y =335 W =150 H =50 Tex =Button @@ -2614,6 +2644,11 @@ DColor = LightBlue Type=Font Black Align=0 Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonAdvancedText1] X =75 @@ -2627,7 +2662,7 @@ Texts=1 [OptionsButtonExit] X =565 -Y =340 +Y =335 W =150 H =50 Tex =Button @@ -2636,6 +2671,11 @@ DColor = LightBlue Type=Font Black Align=0 Texts=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [OptionsButtonExitText1] X =75 @@ -4168,7 +4208,7 @@ Color=Black Font =0 Size =7 Align=2 -Text=SING_TOP_5_CHARTS +Text=SING_TOP_5_CHARTS_WHEREAMI [Top5Static4] X =260 @@ -4186,7 +4226,7 @@ Color=Black Font =0 Size =7 Align=0 -Text=SING_LEGEND_CONTINUE +Text=SING_TOP_5_CHARTS_CONTINUE [Top5TextName1] X =150 @@ -4369,29 +4409,11 @@ Color=P1Dark Type=Font Black [Level] -Texts=4 +Texts=5 [LevelBackground] Tex=MainBG -[LevelText1] -X =70 -Y =6 -Color=White -Font =0 -Size =20 -Text=SING_SING_MODE -Color=White - -[LevelText2] -X =70 -Y =53 -Color=White -Font =0 -Size =10 -Align =0 -Text=SING_DIFFICULTY - [LevelStatic1] X =0 Y =549 @@ -4423,6 +4445,46 @@ Color =White Tex =MainIcon Type=Font Black +[LevelStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[LevelStatic5] +X =388 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain +Style=5 + +[LevelText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=SING_MODE + +[LevelText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=SING_DIFFICULTY_DESC + [LevelText3] X =238 Y =552 @@ -4430,16 +4492,25 @@ Color=Black Font =0 Size =7 Align=2 -Text=SING_SING_MODE +Text=SING_DIFFICULTY_WHEREAMI [LevelText4] -X =300 +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[LevelText5] +X =418 Y =552 Color=Black Font =0 Size =7 Align=0 -Text=SING_DIFFICULTY +Text=SING_DIFFICULTY_CONTINUE [LevelButtonEasy] X =180 @@ -4451,7 +4522,11 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Texts=1 -Reflection=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [LevelButtonMedium] X =335 @@ -4463,7 +4538,11 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Texts=1 -Reflection=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [LevelButtonHard] X =490 @@ -4475,7 +4554,11 @@ Color =DarkBlue DColor = LightBlue Type=Font Black Texts=1 -Reflection=1 +Fade=1 +FadeText=1 +SelectH=100 +FadeTex=ButtonFade +FadeTexPos=0 [LevelButtonEasyText1] X =75 @@ -4532,41 +4615,100 @@ Type=Plain Reflection=1 ReflectionSpacing=1 +[NameStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =MainIcon +Type=Font Black + +[NameText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=SING_MODE + [NameText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=SING_PLAYER_DESC + +[NameText3] X =238 Y =552 Color=Black Font =0 Size =7 Align=2 -Text=SING_OPTIONS_GAME_PLAYERS +Text=SING_PLAYER_WHEREAMI -[NameText3] -X =300 +[NameStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[NameText4] +X =294 Y =552 Color=Black Font =0 Size =7 Align=0 -Text=SING_ENTER_PLAYER_NAME +Text=SING_LEGEND_NAVIGATE -[NameStatic3] -X =40 -Y =22 -W =27 -H =27 +[NameStatic5] +X =388 +Y =553 +W =26 +H =22 +Tex=ButtonAZ Color =White -Tex =MainIcon -Type=Font Black +Type=Plain +Style=5 -[NameText1] -X =70 -Y =6 -Color=White +[NameText5] +X =418 +Y =552 +Color=Black Font =0 -Size =20 -Text=SING_ENTER_PLAYER_NAME -Color=White +Size =7 +Align=0 +Text=SING_PLAYER_ENTER_NAME + +[NameStatic6] +X =556 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain +Style=5 + +[NameText6] +X =586 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_CONTINUE [NameButtonPlayer1] X =180 @@ -4579,6 +4721,7 @@ DColor = P1Light Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=2 [NameButtonPlayer1Text1] X =75 @@ -4600,7 +4743,7 @@ DColor = P2Light Type=Font Black Texts=1 Reflection=1 - +ReflectionSpacing=2 [NameButtonPlayer2Text1] X =75 @@ -4622,6 +4765,7 @@ DColor = P3Light Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=2 [NameButtonPlayer3Text1] X =75 @@ -4638,11 +4782,12 @@ Y =400 W =150 H =50 Tex =Button -Color =DarkPurple -DColor = LightPurple +Color =P4Dark +DColor = P4Light Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=2 [NameButtonPlayer4Text1] X =75 @@ -4659,11 +4804,12 @@ Y =400 W =150 H =50 Tex =Button -Color =DarkOrange -DColor = LightOrange +Color =P5Dark +DColor = P5Light Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=2 [NameButtonPlayer5Text1] X =75 @@ -4680,11 +4826,12 @@ Y =400 W =150 H =50 Tex =Button -Color =DarkYellow -DColor = LightYellow +Color =P6Dark +DColor = P6Light Type=Font Black Texts=1 Reflection=1 +ReflectionSpacing=2 [NameButtonPlayer6Text1] X =75 -- cgit v1.2.3 From 2a82b607e3f3c25496a9ab15f0c65311bdb3a02c Mon Sep 17 00:00:00 2001 From: mota23 Date: Sat, 5 May 2007 02:00:35 +0000 Subject: Some entries fixed in German.ini git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@176 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Languages/German.ini b/Languages/German.ini index 758e2d86..80b01647 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -58,17 +58,17 @@ SING_OPTIONS_SOUND_DESC=Einstellungen f SING_OPTIONS_SOUND_MIC_BOOST=Mic Anhebung SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click -SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdrückung +SING_OPTIONS_SOUND_THRESHOLD=Rauschsperre SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spieler-Modus SING_OPTIONS_LYRICS_WHEREAMI=Optionen Lyrics SING_OPTIONS_LYRICS_DESC=Einstellungen für die Lyrics SING_OPTIONS_LYRICS_FONT=Schriftart SING_OPTIONS_LYRICS_EFFECT=Effekt -SING_OPTIONS_LYRICS_SOLMIZATION=Solmization +SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation SING_OPTIONS_THEMES_WHEREAMI=Optionen Themes -SING_OPTIONS_THEMES_DESC=Einstellungen für die Themes und Skins +SING_OPTIONS_THEMES_DESC=Einstellungen für Theme und Skin SING_OPTIONS_THEMES_THEME=Theme SING_OPTIONS_THEMES_SKIN=Skin SING_OPTIONS_THEMES_COLOR=Farbe @@ -85,10 +85,10 @@ SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effekte SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm Fade SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation -SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfragen +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr. SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen -SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Auswahl +SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Wahl SING_LEGEND_SELECT=Auswählen SING_LEGEND_NAVIGATE=Navigieren @@ -111,7 +111,7 @@ SING_SONG_SELECTION_WHEREAMI=Song-Auswahl SING_SONG_SELECTION_GOTO=Gehe zu .. SING_SONG_SELECTION=Song-Auswahl SING_SONG_SELECTION_MENU=Menü -SING_SONG_SELECTION_PLAYLIST=Playliste +SING_SONG_SELECTION_PLAYLIST=Playlist SING_SONGS_IN_CAT=Songs SING_TIME=ZEIT @@ -164,7 +164,7 @@ SONG_MENU_PLAYLIST_ADD_NEW=Zu neuer Playlist SONG_MENU_PLAYLIST_ADD_EXISTING=Zu existierender Playlist SONG_MENU_PLAYLIST_NOEXISTING=Keine Playlist vorhanden -SONG_MENU_NAME_PLAYLIST_NEW=Neue Playliste +SONG_MENU_NAME_PLAYLIST_NEW=Neue Playlist SONG_MENU_PLAYLIST_NEW_CREATE=Erstellen SONG_MENU_PLAYLIST_NEW_UNNAMED=Unbenannt -- cgit v1.2.3 From 042a5e57be1ada25cbbc6e7f5f34c0c0ea5e9de2 Mon Sep 17 00:00:00 2001 From: mota23 Date: Mon, 7 May 2007 19:17:25 +0000 Subject: Some Themework done. Added new Statics to ScreenPartyScore. [PartyScoreStaticTeam(n)BG and Deco] To do: 1 Screen in Party-Mode, SingScreen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@177 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 12 ++ Game/Code/Screens/UScreenPartyScore.pas | 29 ++++ Languages/English.ini | 3 +- Languages/German.ini | 5 +- Skins/Deluxe/Blue.ini | 4 + Skins/Deluxe/W&C-Summer.ini | 4 + Skins/Deluxe/W&C-Winter.ini | 4 + Skins/Deluxe/[party]scoreBG1.jpg | Bin 0 -> 1226 bytes Skins/Deluxe/[party]scoreBG2.jpg | Bin 0 -> 653 bytes Skins/Deluxe/[party]teamPoints.jpg | Bin 0 -> 729 bytes Skins/Deluxe/x_W&C-Autum.ini | 6 +- Skins/Deluxe/x_[party]scoreDecoration.jpg | Bin 0 -> 6179 bytes Themes/Deluxe.ini | 214 ++++++++++++++++++++++-------- 13 files changed, 223 insertions(+), 58 deletions(-) create mode 100644 Skins/Deluxe/[party]scoreBG1.jpg create mode 100644 Skins/Deluxe/[party]scoreBG2.jpg create mode 100644 Skins/Deluxe/[party]teamPoints.jpg create mode 100644 Skins/Deluxe/x_[party]scoreDecoration.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 7f4763c3..ea2328f9 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -559,8 +559,14 @@ type TextNameTeam2: TThemeText; TextNameTeam3: TThemeText; StaticTeam1: TThemeStatic; + StaticTeam1BG: TThemeStatic; + StaticTeam1Deco: TThemeStatic; StaticTeam2: TThemeStatic; + StaticTeam2BG: TThemeStatic; + StaticTeam2Deco: TThemeStatic; StaticTeam3: TThemeStatic; + StaticTeam3BG: TThemeStatic; + StaticTeam3Deco: TThemeStatic; TextWinner: TThemeText; end; @@ -1280,8 +1286,14 @@ begin ThemeLoadText (PartyScore.TextNameTeam3, 'PartyScoreTextNameTeam3'); ThemeLoadStatic (PartyScore.StaticTeam1, 'PartyScoreStaticTeam1'); + ThemeLoadStatic (PartyScore.StaticTeam1BG, 'PartyScoreStaticTeam1BG'); + ThemeLoadStatic (PartyScore.StaticTeam1Deco, 'PartyScoreStaticTeam1Deco'); ThemeLoadStatic (PartyScore.StaticTeam2, 'PartyScoreStaticTeam2'); + ThemeLoadStatic (PartyScore.StaticTeam2BG, 'PartyScoreStaticTeam2BG'); + ThemeLoadStatic (PartyScore.StaticTeam2Deco, 'PartyScoreStaticTeam2Deco'); ThemeLoadStatic (PartyScore.StaticTeam3, 'PartyScoreStaticTeam3'); + ThemeLoadStatic (PartyScore.StaticTeam3BG, 'PartyScoreStaticTeam3BG'); + ThemeLoadStatic (PartyScore.StaticTeam3Deco, 'PartyScoreStaticTeam3Deco'); ThemeLoadText (PartyScore.TextWinner, 'PartyScoreTextWinner'); diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index 805525a1..4afaee09 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -15,8 +15,14 @@ type TextNameTeam2: Cardinal; TextNameTeam3: Cardinal; StaticTeam1: Cardinal; + StaticTeam1BG: Cardinal; + StaticTeam1Deco: Cardinal; StaticTeam2: Cardinal; + StaticTeam2BG: Cardinal; + StaticTeam2Deco: Cardinal; StaticTeam3: Cardinal; + StaticTeam3BG: Cardinal; + StaticTeam3Deco: Cardinal; TextWinner: Cardinal; MaxScore: Word; @@ -80,8 +86,14 @@ begin TextNameTeam3 := AddText (Theme.PartyScore.TextNameTeam3); StaticTeam1 := AddStatic (Theme.PartyScore.StaticTeam1); + StaticTeam1BG := AddStatic (Theme.PartyScore.StaticTeam1BG); + StaticTeam1Deco := AddStatic (Theme.PartyScore.StaticTeam1Deco); StaticTeam2 := AddStatic (Theme.PartyScore.StaticTeam2); + StaticTeam2BG := AddStatic (Theme.PartyScore.StaticTeam2BG); + StaticTeam2Deco := AddStatic (Theme.PartyScore.StaticTeam2Deco); StaticTeam3 := AddStatic (Theme.PartyScore.StaticTeam3); + StaticTeam3BG := AddStatic (Theme.PartyScore.StaticTeam3BG); + StaticTeam3Deco := AddStatic (Theme.PartyScore.StaticTeam3Deco); TextWinner := AddText (Theme.PartyScore.TextWinner); @@ -105,6 +117,11 @@ begin Static[StaticTeam2].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[1].Percentage / 100; Static[StaticTeam3].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[2].Percentage / 100; + //fix: prevents static from drawn out of bounds. + if Static[StaticTeam1].Texture.ScaleW > 99 then Static[StaticTeam1].Texture.ScaleW := 99; + if Static[StaticTeam2].Texture.ScaleW > 99 then Static[StaticTeam2].Texture.ScaleW := 99; + if Static[StaticTeam3].Texture.ScaleW > 99 then Static[StaticTeam3].Texture.ScaleW := 99; + //End Last Round PartySession.EndRound; @@ -119,12 +136,16 @@ begin Text[TextScoreTeam1].Visible := True; Text[TextNameTeam1].Visible := True; Static[StaticTeam1].Visible := True; + Static[StaticTeam1BG].Visible := True; + Static[StaticTeam1Deco].Visible := True; end else begin Text[TextScoreTeam1].Visible := False; Text[TextNameTeam1].Visible := False; Static[StaticTeam1].Visible := False; + Static[StaticTeam1BG].Visible := False; + Static[StaticTeam1Deco].Visible := False; end; if (ScreenSingModi.PlayerInfo.NumPlayers >= 2) then @@ -135,12 +156,16 @@ begin Text[TextScoreTeam2].Visible := True; Text[TextNameTeam2].Visible := True; Static[StaticTeam2].Visible := True; + Static[StaticTeam2BG].Visible := True; + Static[StaticTeam2Deco].Visible := True; end else begin Text[TextScoreTeam2].Visible := False; Text[TextNameTeam2].Visible := False; Static[StaticTeam2].Visible := False; + Static[StaticTeam2BG].Visible := False; + Static[StaticTeam2Deco].Visible := False; end; if (ScreenSingModi.PlayerInfo.NumPlayers >= 3) then @@ -151,12 +176,16 @@ begin Text[TextScoreTeam3].Visible := True; Text[TextNameTeam3].Visible := True; Static[StaticTeam3].Visible := True; + Static[StaticTeam3BG].Visible := True; + Static[StaticTeam3Deco].Visible := True; end else begin Text[TextScoreTeam3].Visible := False; Text[TextNameTeam3].Visible := False; Static[StaticTeam3].Visible := False; + Static[StaticTeam3BG].Visible := False; + Static[StaticTeam3Deco].Visible := False; end; diff --git a/Languages/English.ini b/Languages/English.ini index 74862e3a..e23b29b6 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -231,7 +231,8 @@ PARTY_NOBODY=nobody NEXT_ROUND=Next round: PARTY_DISMISSED=Dismissed! -PARTY_SCORE_WINS=%s wins! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=wins! PLUGIN_HDL_NAME=Hold the Line PLUGIN_HDL_DESC=Don't get worse than the pointer at the rating bar shows you. diff --git a/Languages/German.ini b/Languages/German.ini index 80b01647..324a8c9e 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -40,7 +40,7 @@ SING_OPTIONS_GAME_DESC=Allgemeine Spiel Einstellungen SING_OPTIONS_GAME_PLAYERS=Spieler SING_OPTIONS_GAME_DIFFICULTY=Schwierigkeit SING_OPTIONS_GAME_LANGUAGE=Sprache -SING_OPTIONS_GAME_TABS=Tabs +SING_OPTIONS_GAME_TABS=Ordner SING_OPTIONS_GAME_SORTING=Sortierung SING_OPTIONS_GAME_DEBUG=Debug @@ -230,7 +230,8 @@ PARTY_NOBODY=Niemand NEXT_ROUND=Nächste Runde: PARTY_DISMISSED=Ausgeschieden -PARTY_SCORE_WINS=Team %s hat gewonnen! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=hat gewonnen! PLUGIN_HDL_NAME=Balken halten PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index b2d26e05..83784051 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -91,6 +91,10 @@ PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg PartyRoundBG4 =[party]roundBG4.jpg HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg # # # N A V I # # # diff --git a/Skins/Deluxe/W&C-Summer.ini b/Skins/Deluxe/W&C-Summer.ini index 3251ff8e..af9f6147 100644 --- a/Skins/Deluxe/W&C-Summer.ini +++ b/Skins/Deluxe/W&C-Summer.ini @@ -91,6 +91,10 @@ PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg PartyRoundBG4 =[party]roundBG4.jpg HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg # # # N A V I # # # diff --git a/Skins/Deluxe/W&C-Winter.ini b/Skins/Deluxe/W&C-Winter.ini index 5fb65c28..e91b87f7 100644 --- a/Skins/Deluxe/W&C-Winter.ini +++ b/Skins/Deluxe/W&C-Winter.ini @@ -91,6 +91,10 @@ PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg PartyRoundBG4 =[party]roundBG4.jpg HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg # # # N A V I # # # diff --git a/Skins/Deluxe/[party]scoreBG1.jpg b/Skins/Deluxe/[party]scoreBG1.jpg new file mode 100644 index 00000000..f558425d Binary files /dev/null and b/Skins/Deluxe/[party]scoreBG1.jpg differ diff --git a/Skins/Deluxe/[party]scoreBG2.jpg b/Skins/Deluxe/[party]scoreBG2.jpg new file mode 100644 index 00000000..47239d85 Binary files /dev/null and b/Skins/Deluxe/[party]scoreBG2.jpg differ diff --git a/Skins/Deluxe/[party]teamPoints.jpg b/Skins/Deluxe/[party]teamPoints.jpg new file mode 100644 index 00000000..96855bc9 Binary files /dev/null and b/Skins/Deluxe/[party]teamPoints.jpg differ diff --git a/Skins/Deluxe/x_W&C-Autum.ini b/Skins/Deluxe/x_W&C-Autum.ini index f8062c3c..3666fadf 100644 --- a/Skins/Deluxe/x_W&C-Autum.ini +++ b/Skins/Deluxe/x_W&C-Autum.ini @@ -91,7 +91,10 @@ PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg PartyRoundBG4 =[party]roundBG4.jpg HDL_Pointer =[party]pointer.bmp - +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg # # # N A V I # # # ButtonP = [button]p.jpg @@ -101,6 +104,7 @@ ButtonAlt = [button]alt.jpg ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/x_[party]scoreDecoration.jpg b/Skins/Deluxe/x_[party]scoreDecoration.jpg new file mode 100644 index 00000000..49204e19 Binary files /dev/null and b/Skins/Deluxe/x_[party]scoreDecoration.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 1320f2a2..dbdec115 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -28,7 +28,9 @@ Gray = 127 127 127 GrayDark = 63 63 63 Black = 0 0 0 GrayPopup = 51 51 51 - +Gold = 255 223 31 +Silver = 223 223 223 +Bronze = 205 127 50 [Loading] Texts =2 @@ -5370,7 +5372,7 @@ Align=1 [PartyScore] -Texts=4 +Texts=5 [PartyScoreBackground] Tex=PartyBG @@ -5453,98 +5455,202 @@ Size =7 Align=0 Text=PARTY_LEGEND_CONTINUE +[PartyScoreStatic5] +Tex =PartyScoreBG1 +X =50 +Y =100 +W = 700 +H = 80 +Int=1 +Color =DarkBlue +Type=Font Black + +[PartyScoreStatic6] +Tex =PartyScoreBG2 +X =50 +Y =495 +W = 700 +H = 20 +Int=1 +Color =LightBlue +Type=Font Black + +[PartyScoreText5] +X =400 +Y =136 +Color =White +Font =0 +Size =15 +Text =PARTY_SCORE_WINS2 +Align=1 + [PartyScoreTextWinner] -X =150 -Y =20 +X =400 +Y =98 Color =White -Font =1 -Size =14 +Font =0 +Size =18 Text =The Winner is... -Align=0 +Align=1 [PartyScoreTextScoreTeam1] -X =280 -Y =100 +X =568 +Y =198 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =3000 -Align=0 +Align=2 [PartyScoreTextScoreTeam2] -X =280 -Y =250 +X =568 +Y =298 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =2000 -Align=0 +Align=2 [PartyScoreTextScoreTeam3] -X =280 -Y =400 +X =568 +Y =398 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =1000 -Align=0 +Align=2 [PartyScoreTextNameTeam1] -X =80 -Y =100 -Color =White -Font =1 -Size =13 -Text =Team 1 +X =188 +Y =198 +Font=0 +Size=12 Align=0 +Text=Team 1 +Color=White [PartyScoreTextNameTeam2] -X =80 -Y =250 +X =188 +Y =298 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =Team 2 Align=0 [PartyScoreTextNameTeam3] -X =80 -Y =400 +X =188 +Y =398 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =Team 3 Align=0 [PartyScoreStaticTeam1] -X =380 -Y =100 -W =300 -H =30 -Tex=Leiste1 -Color =P1Light +X =188 +Y =230 +W =380 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark Int = 1 Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyScoreStaticTeam1BG] +Tex=PartyTeamButton2 +X=178 +Y=200 +W=400 +H=50 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyScoreStaticTeam1Deco] +Tex =PartyScoreDeco +X = 563 +Y = 191 +W = 64 +H = 64 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=-5 [PartyScoreStaticTeam2] -X =380 -Y =250 -W =300 -H =30 -Tex=Leiste1 -Color =P2Light +X =188 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P2Dark Int = 1 Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyScoreStaticTeam2BG] +Tex=PartyTeamButton2 +X=178 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyScoreStaticTeam2Deco] +Tex =PartyScoreDeco +X = 563 +Y = 291 +W = 64 +H = 64 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=-5 [PartyScoreStaticTeam3] -X =380 -Y =400 -W =300 -H =30 -Tex=Leiste1 -Color =P3Light +X =188 +Y =430 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark Int = 1 Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyScoreStaticTeam3BG] +Tex=PartyTeamButton2 +X=178 +Y=400 +W=400 +H=50 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyScoreStaticTeam3Deco] +Tex =PartyScoreDeco +X = 563 +Y = 391 +W = 64 +H = 64 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=-5 [PartyWin] Texts=4 -- cgit v1.2.3 From fa47047b2cb9ee9f5b0f4a534eb9515274867e7b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 8 May 2007 17:46:39 +0000 Subject: Skinned both Statistic Screens. Position of Text showing cur. Page not perfect yet. Fixed some Language entrys git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@178 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 15 +- Languages/German.ini | 12 +- Languages/readme.txt | 16 ++- Skins/Deluxe/Blue.ini | 5 + Skins/Deluxe/Summer.ini | 139 +++++++++++++++++++ Skins/Deluxe/W&C-Summer.ini | 134 ------------------ Skins/Deluxe/W&C-Winter.ini | 133 ------------------ Skins/Deluxe/Winter.ini | 137 +++++++++++++++++++ Skins/Deluxe/x_Autum.ini | 139 +++++++++++++++++++ Skins/Deluxe/x_W&C-Autum.ini | 133 ------------------ Themes/Deluxe.ini | 316 +++++++++++++++++++++++++++++++++---------- 11 files changed, 694 insertions(+), 485 deletions(-) create mode 100644 Skins/Deluxe/Summer.ini delete mode 100644 Skins/Deluxe/W&C-Summer.ini delete mode 100644 Skins/Deluxe/W&C-Winter.ini create mode 100644 Skins/Deluxe/Winter.ini create mode 100644 Skins/Deluxe/x_Autum.ini delete mode 100644 Skins/Deluxe/x_W&C-Autum.ini diff --git a/Languages/English.ini b/Languages/English.ini index e23b29b6..311d17a4 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -113,7 +113,7 @@ SING_SONG_SELECTION=song selection SING_SONG_SELECTION_MENU=menu SING_SONG_SELECTION_PLAYLIST=playlist SING_SONGS_IN_CAT=Songs - +PLAYLIST_CATTEXT=Playlist: %s SING_TIME=TIME SING_TOTAL=total @@ -246,19 +246,24 @@ PLUGIN_DUELL_DESC=Sing a duell until 10000 points. PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Duell without seeing the notes. -STAT_MAIN_DESC=Statistics +STAT_MAIN=Statistics +STAT_MAIN_DESC=General +STAT_MAIN_WHEREAMI=Statistics STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s. -STAT_OVERVIEW_PLAYER=Since the last Reset ther were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. +STAT_OVERVIEW_PLAYER=Since the last Reset there were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. + +STAT_DETAIL=Statistics +STAT_DETAIL_WHEREAMI=Detail Statistics STAT_NEXT=Next Page STAT_PREV=Previous Page -STAT_REVERSE=Change Order +STAT_REVERSE=Reverse Order STAT_PAGE=Seite %0:d of %1:d Pages\n (%2:d of %3:d Entrys) STAT_DESC_SCORES=HighScores -STAT_DESC_SCORES_REVERSED=LowestScores +STAT_DESC_SCORES_REVERSED=LowScores STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) STAT_DESC_SINGERS=Best Singers diff --git a/Languages/German.ini b/Languages/German.ini index 324a8c9e..75b4afed 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -113,6 +113,7 @@ SING_SONG_SELECTION=Song-Auswahl SING_SONG_SELECTION_MENU=Menü SING_SONG_SELECTION_PLAYLIST=Playlist SING_SONGS_IN_CAT=Songs +PLAYLIST_CATTEXT=Playlist: %s SING_TIME=ZEIT SING_TOTAL=Gesamt @@ -245,19 +246,24 @@ PLUGIN_DUELL_DESC=Normales Spiel. H PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl. -STAT_MAIN_DESC=Statistiken +STAT_MAIN=Statistiken +STAT_MAIN_DESC=Allgemein +STAT_MAIN_WHEREAMI=Statistiken STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d STAT_OVERVIEW_SONG=%0:d Songs(%3:d mit Video), davon wurden %1:d schon einmal gesungen und %2:d noch nicht. \n Der am häufigsten gesungene Song ist %5:s von %4:s. STAT_OVERVIEW_PLAYER=Seit dem letzten Reset haben %0:d verschiedene Spieler gesungen. \n Der Beste Spieler ist %1:s mit einer Score von %2:d Punkten. \n Die höchste Punktzahl, %4:d, wurde von %3:s erreicht. +STAT_DETAIL=Statistiken +STAT_DETAIL_WHEREAMI=Detailierte Statistiken + STAT_NEXT=Nächste Seite STAT_PREV=Vorherige Seite -STAT_REVERSE=Reihenfolge umkehren +STAT_REVERSE=Umkehren STAT_PAGE=Seite %0:d von %1:d \n (%2:d von %3:d Einträgen) STAT_DESC_SCORES=HighScores -STAT_DESC_SCORES_REVERSED=LowestScores +STAT_DESC_SCORES_REVERSED=LowScores STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) STAT_DESC_SINGERS=Beste Sänger diff --git a/Languages/readme.txt b/Languages/readme.txt index 247539bc..29148a94 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -44,6 +44,9 @@ LINEBONUS_WORST=Ghastly! IMPLODE_GLUE1=, IMPLODE_GLUE2= and +#Song Screen Legend +PLAYLIST_CATTEXT=Playlist: %s + #Text for the Legend Bar at the bottom SING_LEGEND_CONTINUE=Continue @@ -121,20 +124,25 @@ PLUGIN_BLIND_DESC=Duell without seeing the Notes #Statistics Screen #For more Info about the Format Strings look at the SorceCode (UScreenStatMain) -STAT_MAIN_DESC=Statistics +STAT_MAIN=Statistics +STAT_MAIN_DESC=General +STAT_MAIN_WHEREAMI=Statistics STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s. -STAT_OVERVIEW_PLAYER=Since the last Reset ther were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. +STAT_OVERVIEW_PLAYER=Since the last Reset there were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. #Stat Detail Screen +STAT_DETAIL=Statistics +STAT_DETAIL_WHEREAMI=Detail Statistics + STAT_NEXT=Next Page STAT_PREV=Previous Page -STAT_REVERSE=Change Order +STAT_REVERSE=Reverse Order STAT_PAGE=Seite %0:d of %1:d Pages\n (%2:d of %3:d Entrys) STAT_DESC_SCORES=HighScores -STAT_DESC_SCORES_REVERSED=LowestScores +STAT_DESC_SCORES_REVERSED=LowScores STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) STAT_DESC_SINGERS=Best Singers diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 83784051..dcbd064b 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -33,6 +33,7 @@ IconOption = [icon]options.jpg IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg # # # S O N G S E L E C E T # # # @@ -96,6 +97,10 @@ PartyScoreDeco =x_[party]scoreDecoration.jpg PartyScoreBG1 =[party]scoreBG1.jpg PartyScoreBG2 =[party]scoreBG2.jpg +# # # S T A T S # # # +StatOverviewBG = [stat]OverviewBG.jpg +StatEntryBG = [stat]EntryBG.jpg + # # # N A V I # # # ButtonP = [button]p.jpg diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini new file mode 100644 index 00000000..f0aca08e --- /dev/null +++ b/Skins/Deluxe/Summer.ini @@ -0,0 +1,139 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Summer +Color=Blue + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = [bg-load]summer.jpg +MainBG = [bg-main]summer.jpg +SongBG = [bg-main]summer.jpg +ScoreScreenBG = [bg-main]summer.jpg +Top5BG = [bg-main]summer.jpg +OptionsBG = [bg-main]summer.jpg +PartyBG = [bg-main]summer.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg + +# # # S T A T S # # # +StatOverviewBG = [stat]OverviewBG.jpg +StatEntryBG = [stat]EntryBG.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/W&C-Summer.ini b/Skins/Deluxe/W&C-Summer.ini deleted file mode 100644 index af9f6147..00000000 --- a/Skins/Deluxe/W&C-Summer.ini +++ /dev/null @@ -1,134 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=W&C-Summer -Color=Blue - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg - -#Backgrounds -LoadingBG = [bg-load]summer.jpg -MainBG = [bg-main]summer.jpg -SongBG = [bg-main]summer.jpg -ScoreScreenBG = [bg-main]summer.jpg -Top5BG = [bg-main]summer.jpg -OptionsBG = [bg-main]summer.jpg -PartyBG = [bg-main]summer.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar = - -#the bar behind the timestuff -bar = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp -PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg -PartyScoreBG1 =[party]scoreBG1.jpg -PartyScoreBG2 =[party]scoreBG2.jpg - - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg -ButtonEsc = [button]esc.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -PopUpBG = [menu]popUpBG.jpg - - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/W&C-Winter.ini b/Skins/Deluxe/W&C-Winter.ini deleted file mode 100644 index e91b87f7..00000000 --- a/Skins/Deluxe/W&C-Winter.ini +++ /dev/null @@ -1,133 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=W&C-Winter -Color=Blue - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg - -#Backgrounds -LoadingBG = [bg-load]winter.jpg -MainBG = [bg-main]winter.jpg -SongBG = [bg-main]winter.jpg -ScoreScreenBG = [bg-main]winter.jpg -Top5BG = [bg-main]winter.jpg -OptionsBG = [bg-main]winter.jpg -PartyBG = [bg-main]winter.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar = - -#the bar behind the timestuff -bar = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp -PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg -PartyScoreBG1 =[party]scoreBG1.jpg -PartyScoreBG2 =[party]scoreBG2.jpg - - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg -ButtonEsc = [button]esc.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -PopUpBG = [menu]popUpBG.jpg - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini new file mode 100644 index 00000000..209ea64f --- /dev/null +++ b/Skins/Deluxe/Winter.ini @@ -0,0 +1,137 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Winter +Color=Blue + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = [bg-load]winter.jpg +MainBG = [bg-main]winter.jpg +SongBG = [bg-main]winter.jpg +ScoreScreenBG = [bg-main]winter.jpg +Top5BG = [bg-main]winter.jpg +OptionsBG = [bg-main]winter.jpg +PartyBG = [bg-main]winter.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg + +# # # S T A T S # # # +StatOverviewBG = [stat]OverviewBG.jpg +StatEntryBG = [stat]EntryBG.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/x_Autum.ini b/Skins/Deluxe/x_Autum.ini new file mode 100644 index 00000000..306023b7 --- /dev/null +++ b/Skins/Deluxe/x_Autum.ini @@ -0,0 +1,139 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Autum +Color=Orange + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = x_[bg-load]autum.jpg +MainBG = x_[bg-main]autum.jpg +SongBG = x_[bg-main]autum.jpg +ScoreScreenBG = x_[bg-main]autum.jpg +Top5BG = x_[bg-main]autum.jpg +OptionsBG = x_[bg-main]autum.jpg +PartyBG = x_[bg-main]autum.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar = + +#the bar behind the timestuff +bar = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg + +# # # S T A T S # # # +StatOverviewBG = [stat]OverviewBG.jpg +StatEntryBG = [stat]EntryBG.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/x_W&C-Autum.ini b/Skins/Deluxe/x_W&C-Autum.ini deleted file mode 100644 index 3666fadf..00000000 --- a/Skins/Deluxe/x_W&C-Autum.ini +++ /dev/null @@ -1,133 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=W&C-Autum -Color=Orange - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg - -#Backgrounds -LoadingBG = x_[bg-load]autum.jpg -MainBG = x_[bg-main]autum.jpg -SongBG = x_[bg-main]autum.jpg -ScoreScreenBG = x_[bg-main]autum.jpg -Top5BG = x_[bg-main]autum.jpg -OptionsBG = x_[bg-main]autum.jpg -PartyBG = x_[bg-main]autum.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar = - -#the bar behind the timestuff -bar = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp -PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg -PartyScoreBG1 =[party]scoreBG1.jpg -PartyScoreBG2 =[party]scoreBG2.jpg - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg -ButtonEsc = [button]esc.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -PopUpBG = [menu]popUpBG.jpg - - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index dbdec115..ebc87403 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -6649,6 +6649,7 @@ Align=0 Z=1 [SongMenuSelectSlide3] +Tex = Rectangle TexSBG = Rectangle Text = X = 460 @@ -6660,13 +6661,13 @@ SkipX = 0 SBGW = 270 -Color = ColorDark -DColor = Gray +Color = LightBlue +DColor = DarkBlue TColor = White TDColor = White -SBGTex = MainBar -SBGColor = ColorDark -SBGDColor = Gray +SBGTex = Rectangle +SBGColor = LightBlue +SBGDColor = DarkBlue STColor = White STDColor = GrayDark @@ -6890,24 +6891,119 @@ Text=SING_OPTIONS_EXIT Color=White [StatMainTextOverview] -X =30 -Y =80 -W =550 -Color=Grey +X =45 +Y =85 +W =510 +Color=White Font =0 -Size =12 +Size =9 Align=0 Text= +[StatMainStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =StatIcon +Type=Font Black + +[StatMainStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[StatMainStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[StatMainStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[StatMainStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[StatMainStatic6] +X =40 +Y =80 +W =520 +H =350 +Tex=StatOverviewBG +Color =ColorDark +Type=Font Black + [StatMainText1] X =70 Y =6 Color=White Font =0 Size =20 +Text=STAT_MAIN Align=0 + +[StatMainText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=STAT_MAIN_WHEREAMI + +[StatMainText3] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 Text=STAT_MAIN_DESC +[StatMainText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[StatMainText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + [StatDetail] Texts=0 Statics=0 @@ -6917,7 +7013,7 @@ Tex=MainBG [StatDetailButtonNext] X =589 -Y =70 +Y =80 W =190 H =50 Tex =Button @@ -6938,7 +7034,7 @@ Color=White [StatDetailButtonPrev] X =589 -Y =130 +Y =140 W =190 H =50 Tex =Button @@ -6959,7 +7055,7 @@ Color=White [StatDetailButtonReverse] X =589 -Y =190 +Y =200 W =190 H =50 Tex =Button @@ -6980,7 +7076,7 @@ Color=White [StatDetailButtonExit] X =589 -Y =250 +Y =260 W =190 H =50 Tex =Button @@ -7001,124 +7097,198 @@ Color=White [StatDetailTextDescription] X =70 -Y =6 +Y =53 Color=White Font =0 -Size =20 -Align=0 +Size =10 +Align =0 Text= [StatDetailTextPage] -X = 795 -Y = 560 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 557 +Y = 80 +Color= Black Font = 0 -Size = 8 +Size = 6 Align=2 Text= [StatDetailTextList1] -X = 30 -Y = 70 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 85 +Color=White Font = 0 Size = 8 Text=Stat1 [StatDetailTextList2] -X = 30 -Y = 117 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 125 +Color=White Font = 0 Size = 8 Text=Stat2 [StatDetailTextList3] -X = 30 -Y = 164 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 165 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList4] -X = 30 -Y = 211 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 205 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList5] -X = 30 -Y = 258 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 245 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList6] -X = 30 -Y = 305 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 285 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList7] -X = 30 -Y = 352 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 325 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList8] -X = 30 -Y = 399 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 365 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList9] -X = 30 -Y = 446 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 405 +Color=White Font = 0 Size = 8 Text= [StatDetailTextList10] -X = 30 -Y = 493 -ColR = 0.3 -ColG = 0.3 -ColB = 0.3 +X = 45 +Y = 445 +Color=White Font = 0 Size = 8 Text= +[StatDetailStatic1] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =StatIcon +Type=Font Black + +[StatDetailStatic2] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[StatDetailStatic3] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[StatDetailStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[StatDetailStatic5] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[StatDetailStatic6] +X =40 +Y =80 +W =520 +H =405 +Tex=StatOverviewBG +Color =ColorDark +Type=Font Black + + +[StatDetailText1] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=STAT_DETAIL +Align=0 + +[StatDetailText2] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=STAT_DETAIL_WHEREAMI + +[StatDetailText3] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[StatDetailText4] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + [CheckPopup] Texts=1 Statics=1 -- cgit v1.2.3 From 67b726eecadbfdc9a02827e8ecab07a5c0762708 Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 8 May 2007 18:17:37 +0000 Subject: Added: Stats-Icon git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@179 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[icon]stats.jpg | Bin 0 -> 1741 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Deluxe/[icon]stats.jpg diff --git a/Skins/Deluxe/[icon]stats.jpg b/Skins/Deluxe/[icon]stats.jpg new file mode 100644 index 00000000..505a6709 Binary files /dev/null and b/Skins/Deluxe/[icon]stats.jpg differ -- cgit v1.2.3 From b61e647b67ac0d449d764b89b117a3ac8b603403 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 8 May 2007 19:00:47 +0000 Subject: Readded Q Shortcut (Exit Application) on all Screens Clean up Popup Code a little bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@180 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMain.pas | 35 ++++++++-- Game/Code/Screens/UScreenEdit.pas | 4 ++ Game/Code/Screens/UScreenEditHeader.pas | 4 ++ Game/Code/Screens/UScreenLevel.pas | 8 +-- Game/Code/Screens/UScreenMain.pas | 8 +-- Game/Code/Screens/UScreenOpen.pas | 4 ++ Game/Code/Screens/UScreenOptionsAdvanced.pas | 4 ++ Game/Code/Screens/UScreenOptionsGame.pas | 4 ++ Game/Code/Screens/UScreenOptionsLyrics.pas | 4 ++ Game/Code/Screens/UScreenOptionsRecord.pas | 4 ++ Game/Code/Screens/UScreenOptionsSound.pas | 4 ++ Game/Code/Screens/UScreenOptionsThemes.pas | 4 ++ Game/Code/Screens/UScreenPartyNewRound.pas | 8 +-- Game/Code/Screens/UScreenPartyOptions.pas | 8 +-- Game/Code/Screens/UScreenPopup.pas | 101 +++++---------------------- Game/Code/Screens/UScreenSing.pas | 25 ++++--- Game/Code/Screens/UScreenSong.pas | 17 ++--- Game/Code/Screens/UScreenSongJumpto.pas | 8 +-- Game/Code/Screens/UScreenSongMenu.pas | 8 +-- Skins/Deluxe/[stat]EntryBG.jpg | Bin 0 -> 4824 bytes Skins/Deluxe/[stat]OverviewBG.jpg | Bin 0 -> 5003 bytes 21 files changed, 108 insertions(+), 154 deletions(-) create mode 100644 Skins/Deluxe/[stat]EntryBG.jpg create mode 100644 Skins/Deluxe/[stat]OverviewBG.jpg diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 69eca419..29ca5fcb 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -112,7 +112,7 @@ begin CheckEvents; // display - done:=not Display.Draw; + done := not Display.Draw; SwapBuffers; // light @@ -158,12 +158,35 @@ Begin begin // popup hack... if there is a visible popup then let it handle input instead of underlying screen // shoud be done in a way to be sure the topmost popup has preference (maybe error, then check) - if ScreenPopupError <> NIL then if ScreenPopupError.Visible then ScreenPopupError.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) else - if ScreenPopupCheck <> NIL then if ScreenPopupCheck.Visible then ScreenPopupCheck.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) else + if (ScreenPopupError <> NIL) and (ScreenPopupError.Visible) then + done := not ScreenPopupError.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) + else if (ScreenPopupCheck <> NIL) AND (ScreenPopupCheck.Visible) then + done := not ScreenPopupCheck.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) + // end of popup hack - if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True)) then -// if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.scancode, True)) then - done := true; // exit game + + else + begin + // check for Screen want to Exit + done := Not Display.ActualScreen^.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True); + + //If Screen wants to Exit + if done then + begin + //If Question Option is enabled then Show Exit Popup + if (Ini.AskbeforeDel = 1) then + begin + Display.ActualScreen^.CheckFadeTo(NIL,'MSG_QUIT_USDX'); + end + else //When asking for exit is disabled then simply exit + begin + Display.Fade := 0; + Display.NextScreenWithCheck := nil; + Display.CheckOK := True; + end; + end; + + end; // if (Not Display.ActualScreen^.ParseInput(Event.key.keysym.scancode, True)) then end; // SDL_JOYAXISMOTION: // begin diff --git a/Game/Code/Screens/UScreenEdit.pas b/Game/Code/Screens/UScreenEdit.pas index 00df0418..ac2964cd 100644 --- a/Game/Code/Screens/UScreenEdit.pas +++ b/Game/Code/Screens/UScreenEdit.pas @@ -28,6 +28,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin Music.PlayBack; diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas index dbdd186c..f3e21fd0 100644 --- a/Game/Code/Screens/UScreenEditHeader.pas +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -53,6 +53,10 @@ begin Result := true; If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin // Music.PlayBack; diff --git a/Game/Code/Screens/UScreenLevel.pas b/Game/Code/Screens/UScreenLevel.pas index 80d42773..a1d8fa33 100644 --- a/Game/Code/Screens/UScreenLevel.pas +++ b/Game/Code/Screens/UScreenLevel.pas @@ -53,13 +53,7 @@ begin SDLK_RIGHT: InteractNext; SDLK_LEFT: InteractPrev; end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; - end; + end; end; constructor TScreenLevel.Create; diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index f339fa04..6fd458d7 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -55,9 +55,7 @@ begin SDLK_ESCAPE : begin - //popup hack - CheckFadeTo(NIL,'MSG_QUIT_USDX'); -// Result := False; + Result := False; end; SDLK_C: @@ -133,9 +131,7 @@ begin //Exit if Interaction = 5 then begin - //popup hack - CheckFadeTo(NIL,'MSG_QUIT_USDX'); -// Result := false; + Result := false; end; end; // Up and Down could be done at the same time, diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index 4f0c32c5..3a78b3e2 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -41,6 +41,10 @@ begin end; case PressedKey of + SDLK_Q: + begin + Result := false; + end; 8: // del begin if Interaction = 0 then diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index 256b02db..3e3f2da7 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -23,6 +23,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin Ini.Save; diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index 88bb34e3..540931af 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -25,6 +25,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin Music.PlayBack; diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index ff03b2ba..f60c9765 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -23,6 +23,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin Ini.Save; diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index af7d2cd6..c474bd7f 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -28,6 +28,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE, SDLK_BACKSPACE: begin Ini.Save; diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index ee53ef02..d4ab27d2 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -23,6 +23,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin Ini.Save; diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index c0bf2e15..580f9c4d 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -26,6 +26,10 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin Ini.Save; diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index 894e96d2..c914ee4b 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -104,13 +104,7 @@ begin end; end; end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; - end; + end; end; constructor TScreenPartyNewRound.Create; diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index f0df9871..7f3b1209 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -139,13 +139,7 @@ begin end; end; end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; - end; + end; end; constructor TScreenPartyOptions.Create; diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index 019632ff..9b71eb9a 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -42,36 +42,6 @@ implementation uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist, UDisplay; function TScreenPopupCheck.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; - function IsVisible: Boolean; - begin - Result := True; - if (Interactions[Interaction].Typ = 0) then - begin - Result := Button[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 1) then - begin - //Result := Selects[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 3) then - begin - Result := SelectsS[Interactions[Interaction].Num].Visible; - end; - end; - - Procedure SelectNext; - begin - repeat - InteractNext; - until IsVisible; - end; - - Procedure SelectPrev; - begin - repeat - InteractPrev; - until IsVisible; - end; begin Result := true; If (PressedDown) Then @@ -95,6 +65,15 @@ begin begin case Interaction of 0: begin + //Hack to Finish Singscreen correct on Exit with Q Shortcut + if (Display.NextScreenWithCheck = NIL) then + begin + if (Display.ActualScreen = @ScreenSing) then + ScreenSing.Finish + else if (Display.ActualScreen = @ScreenSingModi) then + ScreenSingModi.Finish; + end; + Display.CheckOK:=True; end; 1: begin @@ -106,19 +85,13 @@ begin Result := false; end; - SDLK_DOWN: SelectNext; - SDLK_UP: SelectPrev; + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; - SDLK_RIGHT: SelectNext; - SDLK_LEFT: SelectPrev; - end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; end; + end; end; constructor TScreenPopupCheck.Create; @@ -175,36 +148,6 @@ end; // error popup function TScreenPopupError.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; - function IsVisible: Boolean; - begin - Result := True; - if (Interactions[Interaction].Typ = 0) then - begin - Result := Button[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 1) then - begin - //Result := Selects[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 3) then - begin - Result := SelectsS[Interactions[Interaction].Num].Visible; - end; - end; - - Procedure SelectNext; - begin - repeat - InteractNext; - until IsVisible; - end; - - Procedure SelectPrev; - begin - repeat - InteractPrev; - until IsVisible; - end; begin Result := true; If (PressedDown) Then @@ -228,19 +171,13 @@ begin Result := false; end; - SDLK_DOWN: SelectNext; - SDLK_UP: SelectPrev; + SDLK_DOWN: InteractNext; + SDLK_UP: InteractPrev; - SDLK_RIGHT: SelectNext; - SDLK_LEFT: SelectPrev; - end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; + SDLK_RIGHT: InteractNext; + SDLK_LEFT: InteractPrev; end; + end; end; constructor TScreenPopupError.Create; diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 3e66b197..6985672f 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -92,6 +92,17 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of + SDLK_Q: + begin + //When not ask before Exit then Finish now + if (Ini.AskbeforeDel <> 1) then + Finish + //else just Pause and let the Popup make the Work + else if not paused then + Pause; + + Result := false; + end; SDLK_ESCAPE : begin //Record Sound Hack: @@ -102,12 +113,6 @@ begin FadeTo(@ScreenScore); end; - SDLK_Q: - begin - Finish; - Result := false; - end; - SDLK_P://Pause Mod begin Pause; @@ -127,13 +132,7 @@ begin begin end; end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; - end; + end; end; //Pause Mod diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index e4ab8854..139d6984 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -248,6 +248,10 @@ begin end; case PressedKey of + SDLK_Q: + begin + Result := false; + end; SDLK_ESCAPE : begin if (Mode = 0) then @@ -605,19 +609,8 @@ begin SetJoker; end; end; - - SDLK_Q: - begin - Result := false; - end; - end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; end; + end; end; constructor TScreenSong.Create; diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index b90c558b..44c12f51 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -139,13 +139,7 @@ begin end; end; end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; - end; + end; end; constructor TScreenSongJumpto.Create; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index fd875527..73b38a05 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -97,13 +97,7 @@ begin InteractDec; end; end; - end - else // Key Up - case PressedKey of - SDLK_RETURN : - begin - end; - end; + end; end; constructor TScreenSongMenu.Create; diff --git a/Skins/Deluxe/[stat]EntryBG.jpg b/Skins/Deluxe/[stat]EntryBG.jpg new file mode 100644 index 00000000..603c8d58 Binary files /dev/null and b/Skins/Deluxe/[stat]EntryBG.jpg differ diff --git a/Skins/Deluxe/[stat]OverviewBG.jpg b/Skins/Deluxe/[stat]OverviewBG.jpg new file mode 100644 index 00000000..ea1274b4 Binary files /dev/null and b/Skins/Deluxe/[stat]OverviewBG.jpg differ -- cgit v1.2.3 From 5270a02d1dea4f660349f0414d63c3b969def187 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 8 May 2007 19:23:02 +0000 Subject: Added Ability to Leave Song Screen in Party Mode with Popup. Show Menu directly in Songscreen in PartyMode git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@181 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 139d6984..296b6d2f 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -63,6 +63,7 @@ type function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; function Draw: boolean; override; procedure onShow; override; + procedure onHide; override; procedure SelectNext; procedure SelectPrev; procedure UpdateLCD; @@ -298,6 +299,12 @@ begin // Music.Open(Skin.SkinPath + 'Menu Music 3.mp3'); // Music.Play; end; + end + //When in party Mode then Ask before Close + else if (Mode = 1) then + begin + Music.PlayBack; + CheckFadeTo(@ScreenMain,'MSG_END_PARTY'); end; end; SDLK_RETURN: @@ -1198,12 +1205,21 @@ begin //Party Mode else if (Mode = 1) then begin + SelectRandomSong; + //Show Mennu direct in PartyMode + ScreenSongMenu.MenuShow(SM_Party_Main); end; SetJoker; end; +procedure TScreenSong.onHide; +begin + //When hide then Stop Music (For Party Mode Popup on Exit) + Music.Stop; +end; + procedure TScreenSong.DrawExtensions; begin //Draw Song Menu @@ -1631,7 +1647,7 @@ end; procedure TScreenSong.StartSong; begin CatSongs.Selected := Interaction; - Music.Stop; + //Music.Stop; //Party Mode if (Mode = 1) then begin -- cgit v1.2.3 From e452e8c6d60af8e8a8eb957f1ef59d461f48c99a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 8 May 2007 19:55:34 +0000 Subject: Fixed the "one Song too much" Bug Added 2 Error Messages: When Opening Sing or Party: No Songs Loaded When Opening Party: No Plugins loaded Added Messages to Language File git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@182 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/USongs.pas | 2 +- Game/Code/Screens/UScreenMain.pas | 35 ++++++++++++++++++++++++----------- Languages/English.ini | 4 +++- Languages/German.ini | 4 +++- Languages/readme.txt | 4 +++- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index 0a319370..4b49127c 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -110,7 +110,7 @@ begin BrowseDir(SongPath); //Set Correct SongArray Length - SetLength(Song, BrowsePos + 1); + SetLength(Song, BrowsePos); // if Ini.Debug = 1 then BrowseDir('D:\Extract\Songs\'); end; diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 6fd458d7..47a79496 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -93,22 +93,35 @@ begin SDLK_RETURN: begin //Solo - if (Interaction = 0) and (Length(Songs.Song) >= 1) then begin - Music.PlayStart; - if (Ini.Players >= 0) and (Ini.Players <= 3) then PlayersPlay := Ini.Players + 1; - if (Ini.Players = 4) then PlayersPlay := 6; - - ScreenName.Goto_SingScreen := False; - FadeTo(@ScreenName); + if (Interaction = 0) then + begin + if (Length(Songs.Song) >= 1) then + begin + Music.PlayStart; + if (Ini.Players >= 0) and (Ini.Players <= 3) then PlayersPlay := Ini.Players + 1; + if (Ini.Players = 4) then PlayersPlay := 6; + + ScreenName.Goto_SingScreen := False; + FadeTo(@ScreenName); + end + else //show error message + ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS')); end; //Multi if Interaction = 1 then begin - if (Ini.Players >= 1) AND (Length(DLLMan.Plugins)>=1) then + if (Length(Songs.Song) >= 1) then begin - Music.PlayStart; - FadeTo(@ScreenPartyOptions); - end; + if (Length(DLLMan.Plugins)>=1) then + begin + Music.PlayStart; + FadeTo(@ScreenPartyOptions); + end + else //show error message, No Plugins Loaded + ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_PLUGINS')); + end + else //show error message, No Songs Loaded + ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS')); end; //Stats diff --git a/Languages/English.ini b/Languages/English.ini index 311d17a4..9a9c3975 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -279,4 +279,6 @@ STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung MSG_QUIT_USDX=Really leave\n\nUltraStar? -MSG_END_PARTY=Really end\n\nParty Mode? \ No newline at end of file +MSG_END_PARTY=Really end\n\nParty Mode? +ERROR_NO_SONGS=Error: \n No Songs \n loaded +ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index 75b4afed..9e66e276 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -279,4 +279,6 @@ STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d MSG_QUIT_USDX=UltraStar\n\nwirklich\n\nverlassen? -MSG_END_PARTY=Party Modus\n\nbeenden? \ No newline at end of file +MSG_END_PARTY=Party Modus\n\nbeenden? +ERROR_NO_SONGS=Fehler: \n Keine Songs \n vorhanden +ERROR_NO_PLUGINS=Fehler: \n Keine Plugins \n vorhanden \ No newline at end of file diff --git a/Languages/readme.txt b/Languages/readme.txt index 29148a94..52f3f966 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -159,4 +159,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx Sung #Messages for Popup Message Boxes MSG_QUIT_USDX=Leave UltraStar? -MSG_END_PARTY=End Party Mode? \ No newline at end of file +MSG_END_PARTY=End Party Mode? +ERROR_NO_SONGS=Error: \n No Songs \n loaded +ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file -- cgit v1.2.3 From e0b0396acf6101acf2608d9fe4b36fa735196b2a Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 9 May 2007 03:26:41 +0000 Subject: Some Themework done. Added new Statics to PartyWin. [PartyWinStaticTeam(n)BG and Deco] Fix: bug in PartyScore (esc skipped to PartyNewRound where PartyWin should come) Disabled Esc in PartyWin. To do: Sing-Screen, Stats git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@183 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 12 ++ Game/Code/Screens/UScreenPartyScore.pas | 2 +- Game/Code/Screens/UScreenPartyWin.pas | 30 ++++- Languages/readme.txt | 44 ++++++-- Skins/Deluxe/Blue.ini | 6 + Skins/Deluxe/Summer.ini | 6 + Skins/Deluxe/Winter.ini | 6 + Skins/Deluxe/[party]winTeamButton1.jpg | Bin 0 -> 1925 bytes Skins/Deluxe/[party]winTeamButton2.jpg | Bin 0 -> 1783 bytes Skins/Deluxe/[party]winTeamButton3.jpg | Bin 0 -> 1458 bytes Skins/Deluxe/x_Autum.ini | 8 +- Skins/Deluxe/x_[party]winDecoration1.jpg | Bin 0 -> 4331 bytes Themes/Deluxe.ini | 186 +++++++++++++++++++++---------- 13 files changed, 227 insertions(+), 73 deletions(-) create mode 100644 Skins/Deluxe/[party]winTeamButton1.jpg create mode 100644 Skins/Deluxe/[party]winTeamButton2.jpg create mode 100644 Skins/Deluxe/[party]winTeamButton3.jpg create mode 100644 Skins/Deluxe/x_[party]winDecoration1.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index ea2328f9..e8f8eb10 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -579,8 +579,14 @@ type TextNameTeam2: TThemeText; TextNameTeam3: TThemeText; StaticTeam1: TThemeStatic; + StaticTeam1BG: TThemeStatic; + StaticTeam1Deco: TThemeStatic; StaticTeam2: TThemeStatic; + StaticTeam2BG: TThemeStatic; + StaticTeam2Deco: TThemeStatic; StaticTeam3: TThemeStatic; + StaticTeam3BG: TThemeStatic; + StaticTeam3Deco: TThemeStatic; TextWinner: TThemeText; end; @@ -1308,8 +1314,14 @@ begin ThemeLoadText (PartyWin.TextNameTeam3, 'PartyWinTextNameTeam3'); ThemeLoadStatic (PartyWin.StaticTeam1, 'PartyWinStaticTeam1'); + ThemeLoadStatic (PartyWin.StaticTeam1BG, 'PartyWinStaticTeam1BG'); + ThemeLoadStatic (PartyWin.StaticTeam1Deco, 'PartyWinStaticTeam1Deco'); ThemeLoadStatic (PartyWin.StaticTeam2, 'PartyWinStaticTeam2'); + ThemeLoadStatic (PartyWin.StaticTeam2BG, 'PartyWinStaticTeam2BG'); + ThemeLoadStatic (PartyWin.StaticTeam2Deco, 'PartyWinStaticTeam2Deco'); ThemeLoadStatic (PartyWin.StaticTeam3, 'PartyWinStaticTeam3'); + ThemeLoadStatic (PartyWin.StaticTeam3BG, 'PartyWinStaticTeam3BG'); + ThemeLoadStatic (PartyWin.StaticTeam3Deco, 'PartyWinStaticTeam3Deco'); ThemeLoadText (PartyWin.TextWinner, 'PartyWinTextWinner'); diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index 4afaee09..324656c0 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -51,7 +51,7 @@ begin SDLK_ESCAPE : begin Music.PlayStart; - if (PartySession.CurRound <= High(PartySession.Rounds)) then + if (PartySession.CurRound < High(PartySession.Rounds)) then FadeTo(@ScreenPartyNewRound) else begin diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas index ff65e82f..a6486f67 100644 --- a/Game/Code/Screens/UScreenPartyWin.pas +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -15,10 +15,16 @@ type TextNameTeam2: Cardinal; TextNameTeam3: Cardinal; StaticTeam1: Cardinal; + StaticTeam1BG: Cardinal; + StaticTeam1Deco: Cardinal; StaticTeam2: Cardinal; + StaticTeam2BG: Cardinal; + StaticTeam2Deco: Cardinal; StaticTeam3: Cardinal; + StaticTeam3BG: Cardinal; + StaticTeam3Deco: Cardinal; TextWinner: Cardinal; - + constructor Create; override; function ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; override; procedure onShow; override; @@ -40,11 +46,11 @@ begin Result := false; end; - SDLK_ESCAPE : + {SDLK_ESCAPE : begin Music.PlayStart; FadeTo(@ScreenMain); - end; + end;} SDLK_RETURN: begin @@ -69,8 +75,14 @@ begin TextNameTeam3 := AddText (Theme.PartyWin.TextNameTeam3); StaticTeam1 := AddStatic (Theme.PartyWin.StaticTeam1); + StaticTeam1BG := AddStatic (Theme.PartyWin.StaticTeam1BG); + StaticTeam1Deco := AddStatic (Theme.PartyWin.StaticTeam1Deco); StaticTeam2 := AddStatic (Theme.PartyWin.StaticTeam2); + StaticTeam2BG := AddStatic (Theme.PartyWin.StaticTeam2BG); + StaticTeam2Deco := AddStatic (Theme.PartyWin.StaticTeam2Deco); StaticTeam3 := AddStatic (Theme.PartyWin.StaticTeam3); + StaticTeam3BG := AddStatic (Theme.PartyWin.StaticTeam3BG); + StaticTeam3Deco := AddStatic (Theme.PartyWin.StaticTeam3Deco); TextWinner := AddText (Theme.PartyWin.TextWinner); @@ -93,12 +105,16 @@ begin Text[TextScoreTeam1].Visible := True; Text[TextNameTeam1].Visible := True; Static[StaticTeam1].Visible := True; + Static[StaticTeam1BG].Visible := True; + Static[StaticTeam1Deco].Visible := True; end else begin Text[TextScoreTeam1].Visible := False; Text[TextNameTeam1].Visible := False; Static[StaticTeam1].Visible := False; + Static[StaticTeam1BG].Visible := False; + Static[StaticTeam1Deco].Visible := False; end; if (PartySession.Teams.NumTeams >= 2) then @@ -109,12 +125,16 @@ begin Text[TextScoreTeam2].Visible := True; Text[TextNameTeam2].Visible := True; Static[StaticTeam2].Visible := True; + Static[StaticTeam2BG].Visible := True; + Static[StaticTeam2Deco].Visible := True; end else begin Text[TextScoreTeam2].Visible := False; Text[TextNameTeam2].Visible := False; Static[StaticTeam2].Visible := False; + Static[StaticTeam2BG].Visible := False; + Static[StaticTeam2Deco].Visible := False; end; if (PartySession.Teams.NumTeams >= 3) then @@ -125,12 +145,16 @@ begin Text[TextScoreTeam3].Visible := True; Text[TextNameTeam3].Visible := True; Static[StaticTeam3].Visible := True; + Static[StaticTeam3BG].Visible := True; + Static[StaticTeam3Deco].Visible := True; end else begin Text[TextScoreTeam3].Visible := False; Text[TextNameTeam3].Visible := False; Static[StaticTeam3].Visible := False; + Static[StaticTeam3BG].Visible := False; + Static[StaticTeam3Deco].Visible := False; end; diff --git a/Languages/readme.txt b/Languages/readme.txt index 52f3f966..82c5bfb2 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -97,30 +97,50 @@ SONG_JUMPTO_HELP=Type Text to Search for SONG_JUMPTO_CATTEXT=Search for: %s #Texts for Party Mode -PARTY_SCORE_WINS=%s wins! -PARTY_OPTIONS_DESC=Party Mode +PARTY_MODE=party mode PARTY_DIFFICULTY=Difficulty PARTY_PLAYLIST=Playlist Mode +PARTY_PLAYLIST_ALL=All songs +PARTY_PLAYLIST_CATEGORY=Folder +PARTY_PLAYLIST_PLAYLIST=Playlist PARTY_ROUNDS=Rounds PARTY_TEAMS=Teams PARTY_TEAMS_PLAYER1=Player Team1 PARTY_TEAMS_PLAYER2=Player Team2 PARTY_TEAMS_PLAYER3=Player Team3 -PARTY_SELECT_PLAYER=Enter Playernames! - +PARTY_LEGEND_CONTINUE=continue +PARTY_OPTIONS_DESC=settings for the party-game +PARTY_OPTIONS_WHEREAMI=Party Options +PARTY_PLAYER_DESC=enter player- and teamnames! +PARTY_PLAYER_WHEREAMI=Party Names +PARTY_PLAYER_ENTER_NAME=enter names +PARTY_PLAYER_LEGEND_CONTINUE=start party-game +PARTY_ROUND_DESC=next players to the mics +PARTY_ROUND_WHEREAMI=Party Next Round +PARTY_ROUND_LEGEND_CONTINUE=start round +PARTY_SCORE_DESC=score of the last round +PARTY_SCORE_WHEREAMI=Party Points +PARTY_WIN_DESC=winner of the party-game +PARTY_WIN_WHEREAMI=Party Winner +PARTY_WIN_LEGEND_CONTINUE=back to main-menu +PARTY_ROUND=Round +PARTY_ROUND_WINNER=Winner +PARTY_NOTPLAYEDYET=not played yet +PARTY_NOBODY=nobody +NEXT_ROUND=Next round: PARTY_DISMISSED=Dismissed! -PARTY_NOTPLAYEDYET=Not played yet -PARTY_NOBODY=Nobody +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=wins! #Texts that descripts Plugins or Modis PLUGIN_HDL_NAME=Hold the Line -PLUGIN_HDL_DESC=Don't get worse than the Pointer at the Rating bar shows you. +PLUGIN_HDL_DESC=Don't get worse than the pointer at the rating bar shows you. PLUGIN_UNTIL5000_NAME=Until 5000 -PLUGIN_UNTIL5000_DESC=Who gets 5000 Points first wins the match +PLUGIN_UNTIL5000_DESC=Who gets 5000 points first wins the match. PLUGIN_DUELL_NAME=Duell -PLUGIN_DUELL_DESC=Sing a Duell until 10000 Points +PLUGIN_DUELL_DESC=Sing a duell until 10000 points. PLUGIN_BLIND_NAME=Blind Mode -PLUGIN_BLIND_DESC=Duell without seeing the Notes +PLUGIN_BLIND_DESC=Duell without seeing the notes. #Statistics Screen #For more Info about the Format Strings look at the SorceCode (UScreenStatMain) @@ -158,7 +178,7 @@ STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung #Messages for Popup Message Boxes -MSG_QUIT_USDX=Leave UltraStar? -MSG_END_PARTY=End Party Mode? +MSG_QUIT_USDX=Really leave\n\nUltraStar? +MSG_END_PARTY=Really end\n\nParty Mode? ERROR_NO_SONGS=Error: \n No Songs \n loaded ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index dcbd064b..7e416d4c 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -87,6 +87,9 @@ Joker =[party]Joker.jpg PartyPlayerButton =[party]playerButton.jpg PartyTeamButton1 =[party]roundTeamButton.jpg PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg PartyRoundBG1 =[party]roundBG1.jpg PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg @@ -96,6 +99,9 @@ PartyTeamPoints =[party]teamPoints.jpg PartyScoreDeco =x_[party]scoreDecoration.jpg PartyScoreBG1 =[party]scoreBG1.jpg PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # StatOverviewBG = [stat]OverviewBG.jpg diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index f0aca08e..bc3b711b 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -87,6 +87,9 @@ Joker =[party]Joker.jpg PartyPlayerButton =[party]playerButton.jpg PartyTeamButton1 =[party]roundTeamButton.jpg PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg PartyRoundBG1 =[party]roundBG1.jpg PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg @@ -96,6 +99,9 @@ PartyTeamPoints =[party]teamPoints.jpg PartyScoreDeco =x_[party]scoreDecoration.jpg PartyScoreBG1 =[party]scoreBG1.jpg PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # StatOverviewBG = [stat]OverviewBG.jpg diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index 209ea64f..7d8e247b 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -86,6 +86,9 @@ Joker =[party]Joker.jpg PartyPlayerButton =[party]playerButton.jpg PartyTeamButton1 =[party]roundTeamButton.jpg PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg PartyRoundBG1 =[party]roundBG1.jpg PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg @@ -95,6 +98,9 @@ PartyTeamPoints =[party]teamPoints.jpg PartyScoreDeco =x_[party]scoreDecoration.jpg PartyScoreBG1 =[party]scoreBG1.jpg PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # StatOverviewBG = [stat]OverviewBG.jpg diff --git a/Skins/Deluxe/[party]winTeamButton1.jpg b/Skins/Deluxe/[party]winTeamButton1.jpg new file mode 100644 index 00000000..10c8d80f Binary files /dev/null and b/Skins/Deluxe/[party]winTeamButton1.jpg differ diff --git a/Skins/Deluxe/[party]winTeamButton2.jpg b/Skins/Deluxe/[party]winTeamButton2.jpg new file mode 100644 index 00000000..fbd85056 Binary files /dev/null and b/Skins/Deluxe/[party]winTeamButton2.jpg differ diff --git a/Skins/Deluxe/[party]winTeamButton3.jpg b/Skins/Deluxe/[party]winTeamButton3.jpg new file mode 100644 index 00000000..e8dd9566 Binary files /dev/null and b/Skins/Deluxe/[party]winTeamButton3.jpg differ diff --git a/Skins/Deluxe/x_Autum.ini b/Skins/Deluxe/x_Autum.ini index 306023b7..325ef268 100644 --- a/Skins/Deluxe/x_Autum.ini +++ b/Skins/Deluxe/x_Autum.ini @@ -87,6 +87,9 @@ Joker =[party]Joker.jpg PartyPlayerButton =[party]playerButton.jpg PartyTeamButton1 =[party]roundTeamButton.jpg PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg PartyRoundBG1 =[party]roundBG1.jpg PartyRoundBG2 =[party]roundBG2.jpg PartyRoundBG3 =[party]roundBG3.jpg @@ -96,7 +99,10 @@ PartyTeamPoints =[party]teamPoints.jpg PartyScoreDeco =x_[party]scoreDecoration.jpg PartyScoreBG1 =[party]scoreBG1.jpg PartyScoreBG2 =[party]scoreBG2.jpg - +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg + # # # S T A T S # # # StatOverviewBG = [stat]OverviewBG.jpg StatEntryBG = [stat]EntryBG.jpg diff --git a/Skins/Deluxe/x_[party]winDecoration1.jpg b/Skins/Deluxe/x_[party]winDecoration1.jpg new file mode 100644 index 00000000..0277f529 Binary files /dev/null and b/Skins/Deluxe/x_[party]winDecoration1.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index ebc87403..6561661b 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -5736,99 +5736,173 @@ Size =7 Align=0 Text=PARTY_WIN_LEGEND_CONTINUE -[PartyWinTextWinner] -X =150 -Y =20 -Color =White -Font =1 -Size =14 -Text =The Winner is... -Align=0 +#[PartyWinTextWinner] +#X =150 +#Y =120 +#Color =White +#Font =1 +#Size =14 +#Text =The Winner is... +#Align=0 [PartyWinTextScoreTeam1] -X =400 -Y =150 +X =699 +Y =183 Color =White -Font =1 -Size =15 +Font =0 +Size =19 Text =3000 -Align=1 +Align=2 [PartyWinTextScoreTeam2] -X =100 -Y =450 +X =669 +Y =298 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =2000 -Align=0 +Align=2 [PartyWinTextScoreTeam3] -X =400 -Y =450 +X =649 +Y =398 Color =White -Font =1 -Size =13 +Font =0 +Size =9 Text =1000 -Align=0 +Align=2 [PartyWinTextNameTeam1] -X =400 -Y =100 -Color =White -Font =1 -Size =15 -Text =Team 1 -Align=1 +X =169 +Y =183 +Font=0 +Size=19 +Align=0 +Text=Team 1 +Color=White [PartyWinTextNameTeam2] -X =100 -Y =400 +X =289 +Y =298 Color =White -Font =1 -Size =13 +Font =0 +Size =12 Text =Team 2 Align=0 [PartyWinTextNameTeam3] -X =400 -Y =400 +X =369 +Y =398 Color =White -Font =1 -Size =13 +Font =0 +Size =9 Text =Team 3 Align=0 [PartyWinStaticTeam1] -X =380 -Y =100 -W =0 -H =00 -Tex=Leiste1 -Color =AquaLightGreen +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark Int = 1 Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BG] +Tex=PartyTeamButton3 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam1Deco] +Tex =PartyWinDeco1 +X = 91 +Y = 176 +W = 79 +H = 79 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=3 [PartyWinStaticTeam2] -X =380 -Y =250 -W =0 -H =0 -Tex=Leiste1 -Color =AquaLightGreen +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P2Dark Int = 1 Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BG] +Tex=PartyTeamButton4 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Deco] +Tex =PartyWinDeco2 +X = 226 +Y = 291 +W = 64 +H = 64 +Type =Font Black +Color =Silver +Reflection=1 +ReflectionSpacing=3 [PartyWinStaticTeam3] -X =380 -Y =400 -W =0 -H =0 -Tex=Leiste1 -Color =AquaLightGreen +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark Int = 1 Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BG] +Tex=PartyTeamButton5 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 +[PartyWinStaticTeam3Deco] +Tex =PartyWinDeco3 +X = 316 +Y = 391 +W = 54 +H = 54 +Type =Font Black +Color =Bronze +Reflection=1 +ReflectionSpacing=3 [PartyOptions] Texts = 5 -- cgit v1.2.3 From 48e9a9faea54c6fa5b2b98e242444ae4c0183a7a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 9 May 2007 16:45:46 +0000 Subject: Fix: Readded ability to close the Window Fix: Crash when SongScreen is opened in PartyMode when Tabs = On. Caused by SelectRandomSong procedure Upd: M in SongScreen works now in PartyMode, too git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@184 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMain.pas | 6 ++- Game/Code/Screens/UScreenSong.pas | 85 ++++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 42 deletions(-) diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 29ca5fcb..47860198 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -145,7 +145,11 @@ Begin Begin // beep; Case Event.type_ Of - SDL_QUITEV: done := true; + SDL_QUITEV: begin + Display.Fade := 0; + Display.NextScreenWithCheck := nil; + Display.CheckOK := True; + end; { SDL_MOUSEBUTTONDOWN: With Event.button Do Begin diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 296b6d2f..3f733210 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -357,17 +357,20 @@ begin SDLK_M: //Show SongMenu begin - if (Length(Songs.Song) > 0) AND (Mode = 0) then begin - if not CatSongs.Song[Interaction].Main then begin // clicked on Song - if CatSongs.CatNumShow = -3 then - ScreenSongMenu.MenuShow(SM_Playlist) + if (Length(Songs.Song) > 0) then begin + if (Mode = 0) then begin + if not CatSongs.Song[Interaction].Main then begin // clicked on Song + if CatSongs.CatNumShow = -3 then + ScreenSongMenu.MenuShow(SM_Playlist) + else + ScreenSongMenu.MenuShow(SM_Main); + end else - ScreenSongMenu.MenuShow(SM_Main); - end - else - begin - ScreenSongMenu.MenuShow(SM_Playlist_Load); - end; + begin + ScreenSongMenu.MenuShow(SM_Playlist_Load); + end; + end //Party Mode -> Show Party Menu + else ScreenSongMenu.MenuShow(SM_Party_Main); end; end; @@ -1506,32 +1509,37 @@ begin Case PlaylistMan.Mode of 0: //All Songs Just Select Random Song begin - repeat - I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; - until CatSongs.Song[I2].Main = false; - - //Search Cat - for I := I2 downto low(CatSongs.Song) do + //When Tabs are activated then use Tab Method + if (Ini.Tabs_at_startup = 1) then begin - if CatSongs.Song[I].Main then - break; - end; - //In I ist jetzt die Kategorie in I2 der Song + repeat + I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; + until CatSongs.Song[I2].Main = false; - //Choose Cat - CatSongs.ShowCategoryList; + //Search Cat + for I := I2 downto low(CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + break; + end; + //In I ist jetzt die Kategorie in I2 der Song + //I is the CatNum, I2 is the No of the Song within this Cat - //Show Cat in Top Left Mod - ShowCatTL (I); + //Choose Cat + CatSongs.ShowCategoryList; - CatSongs.ClickCategoryButton(I); - SelectNext; + //Show Cat in Top Left Mod + ShowCatTL (I); - //Fix: Not Existing Song selected: - //if (I+1=I2) then Inc(I2); + CatSongs.ClickCategoryButton(I); + SelectNext; - //Choose Song - SkipTo(I2-I); + //Choose Song + SkipTo(I2-I); + end + //When Tabs are deactivated use easy Method + else + SkipTo(Random(CatSongs.VisibleSongs)); end; 1: //One Category Select Category and Select Random Song begin @@ -1540,28 +1548,23 @@ begin ShowCatTL(PlaylistMan.CurPlayList); SelectNext; - FixSelected; + FixSelected2; SkipTo(Random(CatSongs.VisibleSongs)); - Music.PlayChange; - ChangeMusic; - SetScroll4; - UpdateLCD; end; 2: //Playlist: Select Playlist and Select Random Song begin PlaylistMan.SetPlayList(PlaylistMan.CurPlayList); SkipTo(Random(CatSongs.VisibleSongs)); - Music.PlayChange; - ChangeMusic; - SetScroll4; - UpdateLCD; - FixSelected; + FixSelected2; end; end; - ChangeMusic; + Music.PlayChange; + ChangeMusic; + SetScroll; + UpdateLCD; end; procedure TScreenSong.SetJoker; -- cgit v1.2.3 From 00a4cc524dc2d60c95970def337155b7b57fb4ce Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 9 May 2007 17:44:12 +0000 Subject: Fixed a bug in UScreenSong that causes a little gap between lyrics and Singing in UScreenSing git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@185 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 3f733210..114c52a3 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1220,7 +1220,8 @@ end; procedure TScreenSong.onHide; begin //When hide then Stop Music (For Party Mode Popup on Exit) - Music.Stop; + if (Display.NextScreen <> @ScreenSing) and (Display.NextScreen <> @ScreenSingModi) then + Music.Stop; end; procedure TScreenSong.DrawExtensions; @@ -1650,7 +1651,7 @@ end; procedure TScreenSong.StartSong; begin CatSongs.Selected := Interaction; - //Music.Stop; + Music.Stop; //Party Mode if (Mode = 1) then begin -- cgit v1.2.3 From f69d8aee0c6d3855978b6a1c700ab289af705022 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 9 May 2007 20:14:38 +0000 Subject: Added Changelog to Svn Old entrys need to be Translated, not ready yet git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@186 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Changelog.txt | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 Game/Changelog.txt diff --git a/Game/Changelog.txt b/Game/Changelog.txt new file mode 100644 index 00000000..381baa09 --- /dev/null +++ b/Game/Changelog.txt @@ -0,0 +1,176 @@ +UltraStar Deluxe 1.00 (by Ultrastar Deluxe Team) +----------------------------- + +-------------- +Theme System +-------------- +Upd: New Ultrastar 0.5.1 Skin/Theme Sytem +Upd: Add ability to 0.5.1 System to load third party Themes to add usability +Upd: Add ability to change Positions and some other things relating to Covers within the Theme +Upd: Add ability to add reflections to the Covers +Upd: New Method for displaying Covers in a Circle. Looks better with many Songs. (Turn Off On within the Theme) +Upd: Add ability to add reflection to Buttons and Statics (Reflection = 1) +Upd: Add ability to Group Buttons to a Buttonmenu, see Deluxe Theme Main Menu Tools Collection +Upd: Add ability to Hide Buttons within Theme. Useful for example for MAinscreen Exit Button +Upd: Add ability to give Texts a Wdth, so the Text breaks at the given Position + +-------------- +Recording Options +-------------- +Upd: Ultrastar 0.5.2 Recording Options added +Fix: Write Soundcards more then one Time to Ini +Fix: Use of more then one SingStar Mic. adapter now Possible(2 Soundcards with same Name Patch) + +-------------- +Song Screen +-------------- +Upd: Added Playlist Support + +Upd: Song Search (with Screen interface +Upd: Jump to Letter Hotkey +Upd: Menu in Songscreen similar to Singstars + +-------------- +Party Mode +-------------- +Upd: Added Party Mode: + 3 Teams possible with up to 4 Players + => total of 12 Players +Upd: Modi SDK for Create nearly any Modi with some Programming Skill +Upd: 4 Custom Party Modi Plugins: Duell, Hold the Line, Until 5000, Blind Mode + +-------------- +Effects +-------------- +Upd: New Perfect Note Effects +Upd: Add Perfect Sentence Effect +Upd: Golden Notes now with Singstar like Star twinkle Effect, isntead of just Yellow +Upd: Add Effect: Golden notes "Glow" when they are hit +Upd: New Screen Fading Effect: Screen Blurs and "Flys" out of the Screen + looks better with every Background. More possibility for Theme Creators + +-------------- +Other +-------------- +Upd: Added Deluxe Theme: Theme that has a look similiar to PS3 Singstar. +Upd: New Score Saving System (SQLite Based) +Upd: Statistic Screen with general Statistics and some Tables: + Best Scores, Best Singers, Most Popular Songs, Most Popular Bands +Upd: Show real Note in Editor (C, F#, etc.) +Fix: Videosize can now be changed again +Fix: Bug in LineBonus Popub then can end u in Memory Overflow +Fix: Bug in SelectSlide with less then 3 Options, Now Overlapping anymore. Automatic resizing +Fix: Backgrounds can be used now in option Screens, too + + +UltraStar 0.5.0 ultra-star.dl.am Mod X-Mas Edition (by Mota und Whiteshark) +----------------------------- +Upd: Headereinlesefunktion komplett neu geschrieben +Upd: Bewertungs Bar (Singstar Like) +Upd: PhrasenBonus + Popups + +Upd: Skin verschönert + +UltraStar 0.5.0 ultra-star.dl.am Mod r10 (by Mota und Whiteshark) +----------------------------- +Fix: Ein kleiner Bug bei der Pause Funktion wurde gefixt. +Fix: Ein Bug im Theme System wurde behoben. (SelectSlide konnte nicht weniger als 3 Einträge enthalten.) +Fix: Skin, Beschränkung auf 4 Skins aufgehoben +Fix: Noten Texturen werden anders/besser eingelesen + +Upd: Zahlen bei der Songauswahl sind jetzt sinnvoller. +Upd: Anzahl der Songs die eine Kategorie beinhaltet wird in der Übersicht angezeigt +Upd: Neuer Notenskin + +Upd: LanguageTag + Sortierung +Upd: Unterstützung der Covers.ini aus 0.5.1 - Für alle Sortier-Funtionen. Die alte Möglichkeit ohne die Covers.ini ist weiterhin möglich, genauso wie eine Kombination beider Methoden. + +UltraStar 0.5.0 ultra-star.dl.am Mod r9 (Release by Whiteshark) +----------------------------- + +Upd: BPM und VideoGap Angaben mit Punkt werden jetzt auch eingelesen. Es wird aber in diesem Fall in der Error.log eine meldung mit dem Namen des Fehlerhaften Songs ausgegeben. +Upd: Sollte beim Einlesen eines Songs(speziell beim Header) ein Fehler auftreten wird in der Error.log der Songname + Zeile ausgegeben. + +Upd, Beta: Pause. P drücken und der Song wird pausiert, nocheinmal P und es kann wieder gesungen werden. Noch keine Anzeige ob Pause aktiviert wird, und noch kein Pause Menü. + +bekannte Probleme: +Stellt man die Aufnahme Funktion ein, kommt es zu einem extremen CPU-Zeit verbrauch und es fängt an zu Laggen + +UltraStar 0.5.0 ultra-star.dl.am Mod r8b (Release by Whiteshark) +----------------------------- +Fix: Random Funktionen funktionieren alle ohne Fehler +Fix: In der Kategorieauswahl wird jetzt beim Start immer die erste Kategorie angezeigt +Fix: Musik wird nach Kategoriewechsel korrekt abgespielt +Fix: Richtiger Text wird jetzt nicht mehr zu falscher Musik abgespielt +Fix: Nach Beenden eines Songs ist dieser jetzt wieder in der Übersicht angewählt +Fix: Midi-konvertor Bug behoben (Nur Freestyle Noten anstatt Normalen) + +Thx to: dennisthemenace und mota für die super Bug-Reports :P + +Upd: doomhammers Cover sind Integriert: thx to doomhammer + +UltraStar 0.5.0 ultra-star.dl.am Mod r8a (Release by Whiteshark) +----------------------------- +Fix: Theme System konnte nicht ausgewählt werden (workaround: Nur bis zu 4 Themes möglich) +Fix: Richtige Kategorie wird angezeigt nach Druck von Escape + +Upd: Neue Random Funktionen: R + [Strg]: Random in allen Kategorien (Hier wird die Kategorie oben noch falsch angezeigt); R + [Shift]: Zufällige Kategorie +Upd: Gerade gewählte Kategorie wird oben links in der Ecke gezeigt + +UltraStar 0.5.0 ultra-star.dl.am Mod r8 (Release by Whiteshark) +----------------------------- +Fix: Creatorbug behoben +Fix: Wenn Tabs=on kam es manchmal vor das der angewählte Song nicht mit dem Angezeigten übereingestimmt hat + +Upd: Theme System komplett + -Bei Start nach Themes Suchen + -Den ThemeOptions Screen ändern +Upd: Neue Farben für Themes :) +Upd: kleine änderungen am Editor + -Leerzeichen im Header werden automatisch korrigiert + -Header ist nicht mehr Case Sensitive + +Upd: Skin Ordner gesäubert, Es gibt jetzt 2 Skins: Motas und der Original Skin +Upd: Ordner haben ihr eigenes Cover, welches angezeigt wird falls kein spezielles Cover vorhanden ist +Upd: Der BewertungsText (Ultrastar, Singstar, etc.) kann jetzt übersetzt werden + +Upd: Falls eine Sprache nicht komplett ist werden die nicht übersetzten Texte, mit der Englischen Sprachdatei übersetzt. (Falls es zu nicht kompletten Sprachdateien kommt) + +Upd: neues Kategorie System: + -Wenn eine Kategorie angewählt wird, werden nur die enthaltenden Songs angezeigt. + -Mit Escape gehts zurück in die Kategorie Auswahl + -Mit Hoch und Runter kann die Kategorie gewechselt werden. + +UltraStar 0.5.0 mota patch r7 (Release by Mota) +----------------------------- +- Neues Notendesign. +- versch. Neue Grafiken. +- Neue Bewertung "Ultrastar" ab 9810 Punkte. +- Textgröße-Bug im Editor behoben. + +UltraStar 0.5.0 mota patch r6 - 17.11.06 (Release by Mota) +---------------------------------------- +- Editiorfunktionen für Goldene/Freestyle-Noten. (Tasten [G] und [F]) +- Speicherfunktion des Editors angepasst. +- Verändertes Theme "SingStar". + +UltraStar 0.5.0 mota patch r5 - 16.11.06 (Release by Mota) +---------------------------------------- +- Goldene Noten werden dargestellt +- Zufallsauswahl verbessert + +UltraStar 0.5.0 mota patch r4 (Release by Mota) +----------------------------- +- Perfekt-Stern animation + +UltraStar 0.5.0 mota patch r3 (Release by Mota) +----------------------------- +- Sortierung Title2 und Artist2 -> Zahlen in Ordner "#" + +UltraStar 0.5.0 mota patch r2 (Release by Mota) +----------------------------- +- Eigene Cover für alle Sortierungen + +UltraStar 0.5.0 mota patch (Release by Mota) +-------------------------- +- Eigene Cover für Sortierung nach Edition. \ No newline at end of file -- cgit v1.2.3 From dcb6e5d386735b3ced44d7c6d6280343a16ca7db Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 10 May 2007 00:57:17 +0000 Subject: Some Themework in Stats and SingScreen. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@187 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphic.pas | 2 +- Game/Code/Screens/UScreenSing.pas | 14 ++-- Skins/Deluxe/Blue.ini | 10 ++- Skins/Deluxe/Summer.ini | 10 ++- Skins/Deluxe/Winter.ini | 11 +-- Skins/Deluxe/[sing]scoreBg.jpg | Bin 2161 -> 2005 bytes Skins/Deluxe/[sing]textBar.jpg | Bin 928 -> 1558 bytes Skins/Deluxe/[sing]timeBar.jpg | Bin 540 -> 504 bytes Skins/Deluxe/[sing]timeBar1.jpg | Bin 0 -> 483 bytes Skins/Deluxe/[stat]EntryBG.jpg | Bin 4824 -> 0 bytes Skins/Deluxe/[stat]OverviewBG.jpg | Bin 5003 -> 0 bytes Skins/Deluxe/[stat]detailBG1.jpg | Bin 0 -> 653 bytes Skins/Deluxe/[stat]mainBG1.jpg | Bin 0 -> 652 bytes Skins/Deluxe/[stat]mainBG2.jpg | Bin 0 -> 2942 bytes Skins/Deluxe/[stat]mainBG3.jpg | Bin 0 -> 596 bytes Skins/Deluxe/x_Autum.ini | 10 ++- Themes/Deluxe.ini | 154 +++++++++++++++++++++++--------------- 17 files changed, 127 insertions(+), 84 deletions(-) create mode 100644 Skins/Deluxe/[sing]timeBar1.jpg delete mode 100644 Skins/Deluxe/[stat]EntryBG.jpg delete mode 100644 Skins/Deluxe/[stat]OverviewBG.jpg create mode 100644 Skins/Deluxe/[stat]detailBG1.jpg create mode 100644 Skins/Deluxe/[stat]mainBG1.jpg create mode 100644 Skins/Deluxe/[stat]mainBG2.jpg create mode 100644 Skins/Deluxe/[stat]mainBG3.jpg diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 7fd159f7..205fa9fd 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -146,7 +146,7 @@ const Skin_OscG = 0; Skin_OscB = 0; - Skin_LyricsT = 500; // 510 / 400 + Skin_LyricsT = 494; // 500 / 510 / 400 Skin_SpectrumT = 470; Skin_SpectrumBot = 570; Skin_SpectrumH = 100; diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 6985672f..b49e0add 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -368,7 +368,7 @@ begin // sub text LyricSub.Clear; LyricSub.X := 400; - LyricSub.Y := Skin_LyricsT + 42; //40 + LyricSub.Y := Skin_LyricsT + 35; //42 //40 LyricSub.Align := 1; // set custom options @@ -385,13 +385,13 @@ begin {LyricMain.ColSR := Skin_FontHighlightR; LyricMain.ColSG := Skin_FontHighlightG; LyricMain.ColSB := Skin_FontHighlightB;1aa5dc} - LyricMain.ColSR := 26/255; - LyricMain.ColSG := 165/255; - LyricMain.ColSB := 220/255; + LyricMain.ColSR := 96/255; //26 + LyricMain.ColSG := 192/255; //165 + LyricMain.ColSB := 96/255; //220 - LyricSub.ColR := 0.6; - LyricSub.ColG := 0.6; - LyricSub.ColB := 0.6; + LyricSub.ColR := 0.4; //0.6 + LyricSub.ColG := 0.4; //0.6 + LyricSub.ColB := 0.4; //0.6 end; 1: begin diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 7e416d4c..e9cdde00 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -50,10 +50,10 @@ LyricBar = [sing]textBar.jpg LyricHelpBar = [sing]lyricsHelpBar.bmp #the time progress bar (not skinned in this theme :P ) -TimeBar = +TimeBar1 = [sing]timeBarBG.jpg #the bar behind the timestuff -bar = [sing]timeBar.jpg +TimeBar2 = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg @@ -104,8 +104,10 @@ PartyWinDeco2 =x_[party]winDecoration1.jpg PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # -StatOverviewBG = [stat]OverviewBG.jpg -StatEntryBG = [stat]EntryBG.jpg +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg # # # N A V I # # # diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index bc3b711b..22443050 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -50,10 +50,10 @@ LyricBar = [sing]textBar.jpg LyricHelpBar = [sing]lyricsHelpBar.bmp #the time progress bar (not skinned in this theme :P ) -TimeBar = +TimeBar1 = [sing]timeBarBG.jpg #the bar behind the timestuff -bar = [sing]timeBar.jpg +TimeBar2 = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg @@ -104,8 +104,10 @@ PartyWinDeco2 =x_[party]winDecoration1.jpg PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # -StatOverviewBG = [stat]OverviewBG.jpg -StatEntryBG = [stat]EntryBG.jpg +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg # # # N A V I # # # diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index 7d8e247b..518f234c 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -49,10 +49,10 @@ LyricBar = [sing]textBar.jpg LyricHelpBar = [sing]lyricsHelpBar.bmp #the time progress bar (not skinned in this theme :P ) -TimeBar = +TimeBar1 = [sing]timeBarBG.jpg #the bar behind the timestuff -bar = [sing]timeBar.jpg +TimeBar2 = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg @@ -103,9 +103,10 @@ PartyWinDeco2 =x_[party]winDecoration1.jpg PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # -StatOverviewBG = [stat]OverviewBG.jpg -StatEntryBG = [stat]EntryBG.jpg - +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg # # # N A V I # # # ButtonP = [button]p.jpg diff --git a/Skins/Deluxe/[sing]scoreBg.jpg b/Skins/Deluxe/[sing]scoreBg.jpg index 0ad261ae..01d3ca75 100644 Binary files a/Skins/Deluxe/[sing]scoreBg.jpg and b/Skins/Deluxe/[sing]scoreBg.jpg differ diff --git a/Skins/Deluxe/[sing]textBar.jpg b/Skins/Deluxe/[sing]textBar.jpg index 4ad36aa8..e2734bce 100644 Binary files a/Skins/Deluxe/[sing]textBar.jpg and b/Skins/Deluxe/[sing]textBar.jpg differ diff --git a/Skins/Deluxe/[sing]timeBar.jpg b/Skins/Deluxe/[sing]timeBar.jpg index e33352d5..e1cc3bf4 100644 Binary files a/Skins/Deluxe/[sing]timeBar.jpg and b/Skins/Deluxe/[sing]timeBar.jpg differ diff --git a/Skins/Deluxe/[sing]timeBar1.jpg b/Skins/Deluxe/[sing]timeBar1.jpg new file mode 100644 index 00000000..924a2e9b Binary files /dev/null and b/Skins/Deluxe/[sing]timeBar1.jpg differ diff --git a/Skins/Deluxe/[stat]EntryBG.jpg b/Skins/Deluxe/[stat]EntryBG.jpg deleted file mode 100644 index 603c8d58..00000000 Binary files a/Skins/Deluxe/[stat]EntryBG.jpg and /dev/null differ diff --git a/Skins/Deluxe/[stat]OverviewBG.jpg b/Skins/Deluxe/[stat]OverviewBG.jpg deleted file mode 100644 index ea1274b4..00000000 Binary files a/Skins/Deluxe/[stat]OverviewBG.jpg and /dev/null differ diff --git a/Skins/Deluxe/[stat]detailBG1.jpg b/Skins/Deluxe/[stat]detailBG1.jpg new file mode 100644 index 00000000..120dc483 Binary files /dev/null and b/Skins/Deluxe/[stat]detailBG1.jpg differ diff --git a/Skins/Deluxe/[stat]mainBG1.jpg b/Skins/Deluxe/[stat]mainBG1.jpg new file mode 100644 index 00000000..a937b24a Binary files /dev/null and b/Skins/Deluxe/[stat]mainBG1.jpg differ diff --git a/Skins/Deluxe/[stat]mainBG2.jpg b/Skins/Deluxe/[stat]mainBG2.jpg new file mode 100644 index 00000000..201d49b8 Binary files /dev/null and b/Skins/Deluxe/[stat]mainBG2.jpg differ diff --git a/Skins/Deluxe/[stat]mainBG3.jpg b/Skins/Deluxe/[stat]mainBG3.jpg new file mode 100644 index 00000000..4fb6bc06 Binary files /dev/null and b/Skins/Deluxe/[stat]mainBG3.jpg differ diff --git a/Skins/Deluxe/x_Autum.ini b/Skins/Deluxe/x_Autum.ini index 325ef268..d5ea5d6e 100644 --- a/Skins/Deluxe/x_Autum.ini +++ b/Skins/Deluxe/x_Autum.ini @@ -50,10 +50,10 @@ LyricBar = [sing]textBar.jpg LyricHelpBar = [sing]lyricsHelpBar.bmp #the time progress bar (not skinned in this theme :P ) -TimeBar = +TimeBar1 = [sing]timeBarBG.jpg #the bar behind the timestuff -bar = [sing]timeBar.jpg +TimeBar2 = [sing]timeBar.jpg #linebonus, the thing that pop ups at the score LineBonusBack = [sing]lineBonusPopUp.jpg @@ -104,8 +104,10 @@ PartyWinDeco2 =x_[party]winDecoration1.jpg PartyWinDeco3 =x_[party]winDecoration1.jpg # # # S T A T S # # # -StatOverviewBG = [stat]OverviewBG.jpg -StatEntryBG = [stat]EntryBG.jpg +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg # # # N A V I # # # diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 6561661b..cbc6b6dc 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -750,15 +750,15 @@ Tex =LyricBar X =10 Y =490 W =780 -H =105 +H =85 Color =GrayLightest Type=Font Black [SingStatic2] ;TimeBar -Tex =bar +Tex =TimeBar1 X =10 -Y =580 +Y =577 W =780 H =16 Color =Black @@ -766,16 +766,16 @@ Type=Font Black [SingTimeProgress] X =20 -Y =584 +Y =581 W =700 H =7 Color=White [SingStatic3] ;the thing behind the time progress -Tex =bar +Tex =TimeBar2 X =20 -Y =584 +Y =581 W =700 H =7 Color=GrayLightest @@ -784,7 +784,7 @@ Type=Font Black [SingTimeText] Text =SING_TIME X =750 -Y =579 +Y =576 Font =1 Size =6 Color =White @@ -813,16 +813,16 @@ Align=0 [SingP1Static2] Tex =ScoreBG X =680 -Y =276 +Y =282 W =100 -H =40 +H =34 Color =P1Dark Type=Transparent [SingP1TextScore] Text =00000 X =690 -Y =281 +Y =284 Font =0 Size =10 Color =White @@ -857,16 +857,16 @@ Align=0 [SingP1TwoPStatic2] Tex =ScoreBG X =680 -Y =96 +Y =102 W =100 -H =40 +H =34 Color =P1Dark Type=Transparent [SingP1TwoPTextScore] Text =00000 X =690 -Y =101 +Y =104 Font =0 Size =10 Color =White @@ -900,16 +900,16 @@ Align=0 [SingP2RStatic2] Tex =ScoreBG X =680 -Y =276 +Y =282 W =100 -H =40 +H =34 Color =P2Dark Type=Transparent [SingP2RTextScore] Text =00000 X =690 -Y =281 +Y =284 Font =0 Size =10 Color =White @@ -926,7 +926,7 @@ H =8 [SingP1ThreePStatic] Tex =P X =16 -Y =55 +Y =59 W =50 H =54 Color =P1Dark @@ -935,7 +935,7 @@ Type=Transparent [SingP1ThreePText] Text =P1 X =27 -Y =62 +Y =66 Font =1 Size =8 Color =White @@ -944,16 +944,16 @@ Align=0 [SingP1ThreePStatic2] Tex =ScoreBG X =75 -Y =55 +Y =61 W =100 -H =40 +H =34 Color =P1Dark Type=Transparent [SingP1ThreePTextScore] Text =00000 X =85 -Y =60 +Y =63 Font =0 Size =10 Color =White @@ -969,7 +969,7 @@ H =8 [SingP2MStatic] Tex =P X =311 -Y =55 +Y =59 W =50 H =54 Color =P2Dark @@ -978,7 +978,7 @@ Type=Transparent [SingP2MText] Text =P2 X =321 -Y =62 +Y =66 Font =1 Size =8 Color =White @@ -987,16 +987,16 @@ Align=0 [SingP2MStatic2] Tex =ScoreBG X =370 -Y =55 +Y =61 W =100 -H =40 +H =34 Color =P2Dark Type=Transparent [SingP2MTextScore] Text =00000 X =380 -Y =60 +Y =63 Font =0 Size =10 Color =White @@ -1012,7 +1012,7 @@ H =8 [SingP3RStatic] Tex =P X =611 -Y =55 +Y =59 W =50 H =54 Color =P3Dark @@ -1021,7 +1021,7 @@ Type=Transparent [SingP3RText] Text =P3 X =621 -Y =62 +Y =66 Font =1 Size =8 Color =White @@ -1030,16 +1030,16 @@ Align=0 [SingP3RStatic2] Tex =ScoreBG X =670 -Y =55 +Y =61 W =100 -H =40 +H =34 Color =P3Dark Type=Transparent [SingP3RTextScore] Text =00000 X =680 -Y =60 +Y =63 Font =0 Size =10 Color =White @@ -6861,7 +6861,7 @@ Tex=MainBG [StatMainButtonScores] X =589 -Y =80 +Y =100 W =190 H =50 Tex =Button @@ -6882,7 +6882,7 @@ Color=White [StatMainButtonSingers] X =589 -Y =140 +Y =160 W =190 H =50 Tex =Button @@ -6903,7 +6903,7 @@ Color=White [StatMainButtonSongs] X =589 -Y =200 +Y =220 W =190 H =50 Tex =Button @@ -6924,7 +6924,7 @@ Color=White [StatMainButtonBands] X =589 -Y =260 +Y =280 W =190 H =50 Tex =Button @@ -6945,7 +6945,7 @@ Color=White [StatMainButtonExit] X =589 -Y =320 +Y =340 W =190 H =50 Tex =Button @@ -6966,7 +6966,7 @@ Color=White [StatMainTextOverview] X =45 -Y =85 +Y =125 W =510 Color=White Font =0 @@ -7026,13 +7026,31 @@ Type=Plain [StatMainStatic6] X =40 -Y =80 +Y =100 W =520 -H =350 -Tex=StatOverviewBG +H =20 +Tex=StatMainBG1 +Color =ColorLight +Type=Font Black + +[StatMainStatic7] +X =40 +Y =120 +W =520 +H =300 +Tex=StatMainBG2 Color =ColorDark Type=Font Black +[StatMainStatic8] +X =40 +Y =420 +W =520 +H =20 +Tex=StatMainBG3 +Color =ColorLight +Type=Font Black + [StatMainText1] X =70 Y =6 @@ -7087,7 +7105,7 @@ Tex=MainBG [StatDetailButtonNext] X =589 -Y =80 +Y =100 W =190 H =50 Tex =Button @@ -7108,7 +7126,7 @@ Color=White [StatDetailButtonPrev] X =589 -Y =140 +Y =160 W =190 H =50 Tex =Button @@ -7129,7 +7147,7 @@ Color=White [StatDetailButtonReverse] X =589 -Y =200 +Y =220 W =190 H =50 Tex =Button @@ -7150,7 +7168,7 @@ Color=White [StatDetailButtonExit] X =589 -Y =260 +Y =280 W =190 H =50 Tex =Button @@ -7179,8 +7197,8 @@ Align =0 Text= [StatDetailTextPage] -X = 557 -Y = 80 +X = 546 +Y = 98 Color= Black Font = 0 Size = 6 @@ -7189,7 +7207,7 @@ Text= [StatDetailTextList1] X = 45 -Y = 85 +Y = 122 Color=White Font = 0 Size = 8 @@ -7197,7 +7215,7 @@ Text=Stat1 [StatDetailTextList2] X = 45 -Y = 125 +Y = 160 Color=White Font = 0 Size = 8 @@ -7205,7 +7223,7 @@ Text=Stat2 [StatDetailTextList3] X = 45 -Y = 165 +Y = 198 Color=White Font = 0 Size = 8 @@ -7213,7 +7231,7 @@ Text= [StatDetailTextList4] X = 45 -Y = 205 +Y = 236 Color=White Font = 0 Size = 8 @@ -7221,7 +7239,7 @@ Text= [StatDetailTextList5] X = 45 -Y = 245 +Y = 274 Color=White Font = 0 Size = 8 @@ -7229,7 +7247,7 @@ Text= [StatDetailTextList6] X = 45 -Y = 285 +Y = 312 Color=White Font = 0 Size = 8 @@ -7237,7 +7255,7 @@ Text= [StatDetailTextList7] X = 45 -Y = 325 +Y = 350 Color=White Font = 0 Size = 8 @@ -7245,7 +7263,7 @@ Text= [StatDetailTextList8] X = 45 -Y = 365 +Y = 388 Color=White Font = 0 Size = 8 @@ -7253,7 +7271,7 @@ Text= [StatDetailTextList9] X = 45 -Y = 405 +Y = 426 Color=White Font = 0 Size = 8 @@ -7261,7 +7279,7 @@ Text= [StatDetailTextList10] X = 45 -Y = 445 +Y = 464 Color=White Font = 0 Size = 8 @@ -7319,13 +7337,31 @@ Type=Plain [StatDetailStatic6] X =40 -Y =80 +Y =100 +W =520 +H =24 +Tex=StatDetailBG1 +Color =ColorLight +Type=Font Black + +[StatDetailStatic7] +X =40 +Y =124 W =520 -H =405 -Tex=StatOverviewBG +H =376 +Tex=StatMainBG2 Color =ColorDark Type=Font Black +[StatDetailStatic8] +X =40 +Y =500 +W =520 +H =20 +Tex=StatMainBG3 +Color =ColorLight +Type=Font Black + [StatDetailText1] X =70 -- cgit v1.2.3 From 3d3b54f2af774843ea5cfeab77d68a714518105e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 10 May 2007 19:34:09 +0000 Subject: Some Cleanup in Classic Theme MainScreen Done git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@188 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Ball3.bmp | Bin 536 -> 0 bytes Skins/Classic/Bar.jpg | Bin 1377 -> 0 bytes Skins/Classic/Button.jpg | Bin 5112 -> 0 bytes Skins/Classic/Button3.jpg | Bin 39324 -> 0 bytes Skins/Classic/Left gray.bmp | Bin 822 -> 0 bytes Skins/Classic/Line Bonus PopUp.JPG | Bin 1995 -> 0 bytes Skins/Classic/Line.jpg | Bin 1041 -> 0 bytes Skins/Classic/Main Bar.jpg | Bin 2115 -> 0 bytes Skins/Classic/Main Bar2.jpg | Bin 18979 -> 0 bytes Skins/Classic/Main Cursor.jpg | Bin 942 -> 0 bytes Skins/Classic/Main Exit.jpg | Bin 3065 -> 0 bytes Skins/Classic/Main Heart.jpg | Bin 3070 -> 0 bytes Skins/Classic/Main Multi.jpg | Bin 2965 -> 0 bytes Skins/Classic/Main Options.jpg | Bin 2875 -> 0 bytes Skins/Classic/Main Solo.jpg | Bin 3070 -> 0 bytes Skins/Classic/Mid gray.bmp | Bin 3126 -> 0 bytes Skins/Classic/Note BG Left.bmp | Bin 1590 -> 0 bytes Skins/Classic/Note BG Mid.bmp | Bin 1590 -> 0 bytes Skins/Classic/Note BG Right.bmp | Bin 1590 -> 0 bytes Skins/Classic/Note Star.jpg | Bin 22332 -> 0 bytes Skins/Classic/NotePerfectStar.jpg | Bin 27633 -> 0 bytes Skins/Classic/P.jpg | Bin 1487 -> 0 bytes Skins/Classic/Pointer.bmp | Bin 6198 -> 0 bytes Skins/Classic/Right gray.bmp | Bin 822 -> 0 bytes Skins/Classic/Score Box.jpg | Bin 690 -> 0 bytes Skins/Classic/Score Level Round.jpg | Bin 616 -> 0 bytes Skins/Classic/Score Level.jpg | Bin 1245 -> 0 bytes Skins/Classic/Score Line.jpg | Bin 730 -> 0 bytes Skins/Classic/Sing Bar Back.jpg | Bin 1098 -> 0 bytes Skins/Classic/Sing Bar Bar.jpg | Bin 1143 -> 0 bytes Skins/Classic/Sing Bar Front.jpg | Bin 1117 -> 0 bytes Skins/Classic/Sing Score BG.jpg | Bin 3692 -> 0 bytes Skins/Classic/Song Cover.jpg | Bin 11840 -> 0 bytes Skins/Classic/Song Fade.jpg | Bin 2537 -> 0 bytes Skins/Classic/Song Selection.jpg | Bin 3418 -> 0 bytes Skins/Classic/Square.jpg | Bin 1574 -> 0 bytes Skins/Classic/Standard.ini | 61 ----------- Skins/Classic/Star.ini | 153 ++++++++++++++++++++++++++ Skins/Classic/Text Bar.jpg | Bin 8123 -> 0 bytes Skins/Classic/[button]alt.jpg | Bin 0 -> 3752 bytes Skins/Classic/[button]az.jpg | Bin 0 -> 3784 bytes Skins/Classic/[button]e.jpg | Bin 0 -> 2900 bytes Skins/Classic/[button]enter.jpg | Bin 0 -> 1655 bytes Skins/Classic/[button]esc.jpg | Bin 0 -> 1551 bytes Skins/Classic/[button]navi.jpg | Bin 0 -> 1794 bytes Skins/Classic/[button]p.jpg | Bin 0 -> 2900 bytes Skins/Classic/[effect]goldenNoteStar.jpg | Bin 0 -> 24894 bytes Skins/Classic/[effect]perfectNoteStar.jpg | Bin 0 -> 27633 bytes Skins/Classic/[icon]Star.jpg | Bin 0 -> 942 bytes Skins/Classic/[main]Bar.jpg | Bin 0 -> 2115 bytes Skins/Classic/[main]Button.jpg | Bin 0 -> 1377 bytes Skins/Classic/[main]ButtonEditor.jpg | Bin 0 -> 5112 bytes Skins/Classic/[main]Logo.jpg | Bin 0 -> 10023 bytes Skins/Classic/[main]songCover.jpg | Bin 0 -> 30254 bytes Skins/Classic/[main]square.jpg | Bin 0 -> 1574 bytes Skins/Classic/[mainbutton]Exit.jpg | Bin 0 -> 3065 bytes Skins/Classic/[mainbutton]Multi.jpg | Bin 0 -> 2965 bytes Skins/Classic/[mainbutton]Options.jpg | Bin 0 -> 2875 bytes Skins/Classic/[mainbutton]Solo.jpg | Bin 0 -> 3070 bytes Skins/Classic/[mainbutton]Stats.jpg | Bin 0 -> 3246 bytes Skins/Classic/[party]pointer.bmp | Bin 0 -> 6198 bytes Skins/Classic/[score]box.jpg | Bin 0 -> 690 bytes Skins/Classic/[score]level.jpg | Bin 0 -> 1245 bytes Skins/Classic/[score]levelround.jpg | Bin 0 -> 616 bytes Skins/Classic/[score]line.jpg | Bin 0 -> 730 bytes Skins/Classic/[sing]LyricsBall.bmp | Bin 0 -> 536 bytes Skins/Classic/[sing]lineBonusPopUp.jpg | Bin 0 -> 2356 bytes Skins/Classic/[sing]notesBgLeft.bmp | Bin 0 -> 1590 bytes Skins/Classic/[sing]notesBgMid.bmp | Bin 0 -> 1590 bytes Skins/Classic/[sing]notesBgRight.bmp | Bin 0 -> 1590 bytes Skins/Classic/[sing]notesLeft.bmp | Bin 0 -> 822 bytes Skins/Classic/[sing]notesMid.bmp | Bin 0 -> 3126 bytes Skins/Classic/[sing]notesRight.bmp | Bin 0 -> 822 bytes Skins/Classic/[sing]p.jpg | Bin 0 -> 1487 bytes Skins/Classic/[sing]scoreBg.jpg | Bin 0 -> 2005 bytes Skins/Classic/[sing]singBarBack.jpg | Bin 0 -> 388 bytes Skins/Classic/[sing]singBarBar.jpg | Bin 0 -> 371 bytes Skins/Classic/[sing]singBarFront.jpg | Bin 0 -> 549 bytes Skins/Classic/[sing]textBar.jpg | Bin 0 -> 1558 bytes Skins/Classic/[song]BGFade.jpg | Bin 0 -> 2537 bytes Skins/Classic/[song]EqualizerBG.jpg | Bin 0 -> 1169 bytes Skins/Classic/[song]selection.jpg | Bin 0 -> 3418 bytes Themes/Classic.ini | 172 ++++++++++++++++++++++-------- 83 files changed, 279 insertions(+), 107 deletions(-) delete mode 100644 Skins/Classic/Ball3.bmp delete mode 100644 Skins/Classic/Bar.jpg delete mode 100644 Skins/Classic/Button.jpg delete mode 100644 Skins/Classic/Button3.jpg delete mode 100644 Skins/Classic/Left gray.bmp delete mode 100644 Skins/Classic/Line Bonus PopUp.JPG delete mode 100644 Skins/Classic/Line.jpg delete mode 100644 Skins/Classic/Main Bar.jpg delete mode 100644 Skins/Classic/Main Bar2.jpg delete mode 100644 Skins/Classic/Main Cursor.jpg delete mode 100644 Skins/Classic/Main Exit.jpg delete mode 100644 Skins/Classic/Main Heart.jpg delete mode 100644 Skins/Classic/Main Multi.jpg delete mode 100644 Skins/Classic/Main Options.jpg delete mode 100644 Skins/Classic/Main Solo.jpg delete mode 100644 Skins/Classic/Mid gray.bmp delete mode 100644 Skins/Classic/Note BG Left.bmp delete mode 100644 Skins/Classic/Note BG Mid.bmp delete mode 100644 Skins/Classic/Note BG Right.bmp delete mode 100644 Skins/Classic/Note Star.jpg delete mode 100644 Skins/Classic/NotePerfectStar.jpg delete mode 100644 Skins/Classic/P.jpg delete mode 100644 Skins/Classic/Pointer.bmp delete mode 100644 Skins/Classic/Right gray.bmp delete mode 100644 Skins/Classic/Score Box.jpg delete mode 100644 Skins/Classic/Score Level Round.jpg delete mode 100644 Skins/Classic/Score Level.jpg delete mode 100644 Skins/Classic/Score Line.jpg delete mode 100644 Skins/Classic/Sing Bar Back.jpg delete mode 100644 Skins/Classic/Sing Bar Bar.jpg delete mode 100644 Skins/Classic/Sing Bar Front.jpg delete mode 100644 Skins/Classic/Sing Score BG.jpg delete mode 100644 Skins/Classic/Song Cover.jpg delete mode 100644 Skins/Classic/Song Fade.jpg delete mode 100644 Skins/Classic/Song Selection.jpg delete mode 100644 Skins/Classic/Square.jpg delete mode 100644 Skins/Classic/Standard.ini create mode 100644 Skins/Classic/Star.ini delete mode 100644 Skins/Classic/Text Bar.jpg create mode 100644 Skins/Classic/[button]alt.jpg create mode 100644 Skins/Classic/[button]az.jpg create mode 100644 Skins/Classic/[button]e.jpg create mode 100644 Skins/Classic/[button]enter.jpg create mode 100644 Skins/Classic/[button]esc.jpg create mode 100644 Skins/Classic/[button]navi.jpg create mode 100644 Skins/Classic/[button]p.jpg create mode 100644 Skins/Classic/[effect]goldenNoteStar.jpg create mode 100644 Skins/Classic/[effect]perfectNoteStar.jpg create mode 100644 Skins/Classic/[icon]Star.jpg create mode 100644 Skins/Classic/[main]Bar.jpg create mode 100644 Skins/Classic/[main]Button.jpg create mode 100644 Skins/Classic/[main]ButtonEditor.jpg create mode 100644 Skins/Classic/[main]Logo.jpg create mode 100644 Skins/Classic/[main]songCover.jpg create mode 100644 Skins/Classic/[main]square.jpg create mode 100644 Skins/Classic/[mainbutton]Exit.jpg create mode 100644 Skins/Classic/[mainbutton]Multi.jpg create mode 100644 Skins/Classic/[mainbutton]Options.jpg create mode 100644 Skins/Classic/[mainbutton]Solo.jpg create mode 100644 Skins/Classic/[mainbutton]Stats.jpg create mode 100644 Skins/Classic/[party]pointer.bmp create mode 100644 Skins/Classic/[score]box.jpg create mode 100644 Skins/Classic/[score]level.jpg create mode 100644 Skins/Classic/[score]levelround.jpg create mode 100644 Skins/Classic/[score]line.jpg create mode 100644 Skins/Classic/[sing]LyricsBall.bmp create mode 100644 Skins/Classic/[sing]lineBonusPopUp.jpg create mode 100644 Skins/Classic/[sing]notesBgLeft.bmp create mode 100644 Skins/Classic/[sing]notesBgMid.bmp create mode 100644 Skins/Classic/[sing]notesBgRight.bmp create mode 100644 Skins/Classic/[sing]notesLeft.bmp create mode 100644 Skins/Classic/[sing]notesMid.bmp create mode 100644 Skins/Classic/[sing]notesRight.bmp create mode 100644 Skins/Classic/[sing]p.jpg create mode 100644 Skins/Classic/[sing]scoreBg.jpg create mode 100644 Skins/Classic/[sing]singBarBack.jpg create mode 100644 Skins/Classic/[sing]singBarBar.jpg create mode 100644 Skins/Classic/[sing]singBarFront.jpg create mode 100644 Skins/Classic/[sing]textBar.jpg create mode 100644 Skins/Classic/[song]BGFade.jpg create mode 100644 Skins/Classic/[song]EqualizerBG.jpg create mode 100644 Skins/Classic/[song]selection.jpg diff --git a/Skins/Classic/Ball3.bmp b/Skins/Classic/Ball3.bmp deleted file mode 100644 index 5b7d7943..00000000 Binary files a/Skins/Classic/Ball3.bmp and /dev/null differ diff --git a/Skins/Classic/Bar.jpg b/Skins/Classic/Bar.jpg deleted file mode 100644 index e6191a95..00000000 Binary files a/Skins/Classic/Bar.jpg and /dev/null differ diff --git a/Skins/Classic/Button.jpg b/Skins/Classic/Button.jpg deleted file mode 100644 index 32e455ef..00000000 Binary files a/Skins/Classic/Button.jpg and /dev/null differ diff --git a/Skins/Classic/Button3.jpg b/Skins/Classic/Button3.jpg deleted file mode 100644 index bb283c41..00000000 Binary files a/Skins/Classic/Button3.jpg and /dev/null differ diff --git a/Skins/Classic/Left gray.bmp b/Skins/Classic/Left gray.bmp deleted file mode 100644 index 328e0122..00000000 Binary files a/Skins/Classic/Left gray.bmp and /dev/null differ diff --git a/Skins/Classic/Line Bonus PopUp.JPG b/Skins/Classic/Line Bonus PopUp.JPG deleted file mode 100644 index 4b399cb0..00000000 Binary files a/Skins/Classic/Line Bonus PopUp.JPG and /dev/null differ diff --git a/Skins/Classic/Line.jpg b/Skins/Classic/Line.jpg deleted file mode 100644 index b3540a60..00000000 Binary files a/Skins/Classic/Line.jpg and /dev/null differ diff --git a/Skins/Classic/Main Bar.jpg b/Skins/Classic/Main Bar.jpg deleted file mode 100644 index 4e9693e3..00000000 Binary files a/Skins/Classic/Main Bar.jpg and /dev/null differ diff --git a/Skins/Classic/Main Bar2.jpg b/Skins/Classic/Main Bar2.jpg deleted file mode 100644 index f541b90c..00000000 Binary files a/Skins/Classic/Main Bar2.jpg and /dev/null differ diff --git a/Skins/Classic/Main Cursor.jpg b/Skins/Classic/Main Cursor.jpg deleted file mode 100644 index ee98f9d7..00000000 Binary files a/Skins/Classic/Main Cursor.jpg and /dev/null differ diff --git a/Skins/Classic/Main Exit.jpg b/Skins/Classic/Main Exit.jpg deleted file mode 100644 index 55494e65..00000000 Binary files a/Skins/Classic/Main Exit.jpg and /dev/null differ diff --git a/Skins/Classic/Main Heart.jpg b/Skins/Classic/Main Heart.jpg deleted file mode 100644 index a7e3d82a..00000000 Binary files a/Skins/Classic/Main Heart.jpg and /dev/null differ diff --git a/Skins/Classic/Main Multi.jpg b/Skins/Classic/Main Multi.jpg deleted file mode 100644 index ad5980d7..00000000 Binary files a/Skins/Classic/Main Multi.jpg and /dev/null differ diff --git a/Skins/Classic/Main Options.jpg b/Skins/Classic/Main Options.jpg deleted file mode 100644 index 5e1bff71..00000000 Binary files a/Skins/Classic/Main Options.jpg and /dev/null differ diff --git a/Skins/Classic/Main Solo.jpg b/Skins/Classic/Main Solo.jpg deleted file mode 100644 index a7e3d82a..00000000 Binary files a/Skins/Classic/Main Solo.jpg and /dev/null differ diff --git a/Skins/Classic/Mid gray.bmp b/Skins/Classic/Mid gray.bmp deleted file mode 100644 index 90d97860..00000000 Binary files a/Skins/Classic/Mid gray.bmp and /dev/null differ diff --git a/Skins/Classic/Note BG Left.bmp b/Skins/Classic/Note BG Left.bmp deleted file mode 100644 index 83e61525..00000000 Binary files a/Skins/Classic/Note BG Left.bmp and /dev/null differ diff --git a/Skins/Classic/Note BG Mid.bmp b/Skins/Classic/Note BG Mid.bmp deleted file mode 100644 index bc85ede9..00000000 Binary files a/Skins/Classic/Note BG Mid.bmp and /dev/null differ diff --git a/Skins/Classic/Note BG Right.bmp b/Skins/Classic/Note BG Right.bmp deleted file mode 100644 index 62682410..00000000 Binary files a/Skins/Classic/Note BG Right.bmp and /dev/null differ diff --git a/Skins/Classic/Note Star.jpg b/Skins/Classic/Note Star.jpg deleted file mode 100644 index 1ef6243d..00000000 Binary files a/Skins/Classic/Note Star.jpg and /dev/null differ diff --git a/Skins/Classic/NotePerfectStar.jpg b/Skins/Classic/NotePerfectStar.jpg deleted file mode 100644 index 189a22a3..00000000 Binary files a/Skins/Classic/NotePerfectStar.jpg and /dev/null differ diff --git a/Skins/Classic/P.jpg b/Skins/Classic/P.jpg deleted file mode 100644 index 5217c6b1..00000000 Binary files a/Skins/Classic/P.jpg and /dev/null differ diff --git a/Skins/Classic/Pointer.bmp b/Skins/Classic/Pointer.bmp deleted file mode 100644 index 88bbcc3d..00000000 Binary files a/Skins/Classic/Pointer.bmp and /dev/null differ diff --git a/Skins/Classic/Right gray.bmp b/Skins/Classic/Right gray.bmp deleted file mode 100644 index a4cbc1ae..00000000 Binary files a/Skins/Classic/Right gray.bmp and /dev/null differ diff --git a/Skins/Classic/Score Box.jpg b/Skins/Classic/Score Box.jpg deleted file mode 100644 index b37f7e46..00000000 Binary files a/Skins/Classic/Score Box.jpg and /dev/null differ diff --git a/Skins/Classic/Score Level Round.jpg b/Skins/Classic/Score Level Round.jpg deleted file mode 100644 index dbc5b5af..00000000 Binary files a/Skins/Classic/Score Level Round.jpg and /dev/null differ diff --git a/Skins/Classic/Score Level.jpg b/Skins/Classic/Score Level.jpg deleted file mode 100644 index e47280cb..00000000 Binary files a/Skins/Classic/Score Level.jpg and /dev/null differ diff --git a/Skins/Classic/Score Line.jpg b/Skins/Classic/Score Line.jpg deleted file mode 100644 index 2fd951aa..00000000 Binary files a/Skins/Classic/Score Line.jpg and /dev/null differ diff --git a/Skins/Classic/Sing Bar Back.jpg b/Skins/Classic/Sing Bar Back.jpg deleted file mode 100644 index ead02155..00000000 Binary files a/Skins/Classic/Sing Bar Back.jpg and /dev/null differ diff --git a/Skins/Classic/Sing Bar Bar.jpg b/Skins/Classic/Sing Bar Bar.jpg deleted file mode 100644 index a7466084..00000000 Binary files a/Skins/Classic/Sing Bar Bar.jpg and /dev/null differ diff --git a/Skins/Classic/Sing Bar Front.jpg b/Skins/Classic/Sing Bar Front.jpg deleted file mode 100644 index 35b4ff88..00000000 Binary files a/Skins/Classic/Sing Bar Front.jpg and /dev/null differ diff --git a/Skins/Classic/Sing Score BG.jpg b/Skins/Classic/Sing Score BG.jpg deleted file mode 100644 index 9a1cc5e0..00000000 Binary files a/Skins/Classic/Sing Score BG.jpg and /dev/null differ diff --git a/Skins/Classic/Song Cover.jpg b/Skins/Classic/Song Cover.jpg deleted file mode 100644 index ba84359c..00000000 Binary files a/Skins/Classic/Song Cover.jpg and /dev/null differ diff --git a/Skins/Classic/Song Fade.jpg b/Skins/Classic/Song Fade.jpg deleted file mode 100644 index 1d6b80ff..00000000 Binary files a/Skins/Classic/Song Fade.jpg and /dev/null differ diff --git a/Skins/Classic/Song Selection.jpg b/Skins/Classic/Song Selection.jpg deleted file mode 100644 index b6c0065e..00000000 Binary files a/Skins/Classic/Song Selection.jpg and /dev/null differ diff --git a/Skins/Classic/Square.jpg b/Skins/Classic/Square.jpg deleted file mode 100644 index 8af62b71..00000000 Binary files a/Skins/Classic/Square.jpg and /dev/null differ diff --git a/Skins/Classic/Standard.ini b/Skins/Classic/Standard.ini deleted file mode 100644 index 4db43476..00000000 --- a/Skins/Classic/Standard.ini +++ /dev/null @@ -1,61 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Classic -Name=UltraStar -Creator=UltraStar Deluxe Team -Color=Blue - -[Textures] -GrayLeft=Left Gray.bmp -GrayMid=Mid Gray.bmp -GrayRight=Right Gray.bmp -NoteBGLeft=Note BG Left.bmp -NoteBGMid=Note BG Mid.bmp -NoteBGRight=Note BG Right.bmp -NoteStar=Note Star.jpg -NotePerfectStar=NotePerfectStar.jpg -Ball=Ball.bmp -SongCover=Song Cover.jpg - -Button=Button.jpg - -#BGS: -#LoadingBG= -#MainBG= -#SongBG= -#ScoreBG= -#Top5BG= -#OptionsBG= - -MainBar=Main Bar.jpg -Logo=Main Bar2.jpg -MainCursor=Main Cursor.jpg -MainSolo=Main Solo.jpg -MainMulti=Main Multi.jpg -MainOptions=Main Options.jpg -MainExit=Main Exit.jpg -SongFade=Song Fade.jpg -SongSelection=Song Selection.jpg -Bar=Bar.jpg -ButtonF=Button.jpg -P=P.jpg -ScoreLine=Score Line.jpg -ScoreBox=Score Box.jpg -ScoreLevel=Score Level.jpg -ScoreLevelRound=Score Level Round.jpg - -ScoreBG=Sing Score BG.jpg - -LyricBar=Text Bar.jpg - -HDL_Pointer=Pointer.BMP - -SingBarBack=Sing Bar Back.jpg -SingBarBar=Sing Bar Bar.jpg -SingBarFront=Sing Bar Front.jpg - -LineBonusBack=Line Bonus PopUp.jpg \ No newline at end of file diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini new file mode 100644 index 00000000..57ba3994 --- /dev/null +++ b/Skins/Classic/Star.ini @@ -0,0 +1,153 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Classic +Name=Star +Creator=UltraStar Deluxe Team +Color=Blue + +[Textures] + +# # # M A I N # # # +Button = [main]Button.jpg +ButtonF = [main]ButtonEditor.jpg +MainBar = [main]Bar.jpg +Logo = [main]Logo.jpg + +#Backgrounds +LoadingBG = [bg-load]summer.jpg +MainBG = [bg-main]summer.jpg +SongBG = [bg-main]summer.jpg +ScoreScreenBG = [bg-main]summer.jpg +Top5BG = [bg-main]summer.jpg +OptionsBG = [bg-main]summer.jpg +PartyBG = [bg-main]summer.jpg + +#Icons on screen +MainIcon = [icon]Star.jpg +MainSearch = [icon]Search.jpg +IconOption = [icon]Options.jpg +IconSongMenu = [icon]SongMenu.jpg +ScoreIcon = [icon]Score.jpg +PartyIcon = [icon]Party.jpg +StatIcon = [icon]Stats.jpg +SongCD = [icon]cd.jpg + +# # # M A I N S C R E E N # # # +ButtonSolo = [mainbutton]Solo.jpg +ButtonMulti = [mainbutton]Multi.jpg +ButtonEditor = [mainbutton]Solo.jpg +ButtonStats = [mainbutton]Stats.jpg +ButtonOptions = [mainbutton]Options.jpg +ButtonExit = [mainbutton]Exit.jpg + +# # # S O N G S E L E C E T # # # +SongSelection = [song]selection.jpg +SongFade = [song]BGFade.jpg +SongEqualizerBG= [song]EqualizerBG.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar1 = [sing]timeBarBG.jpg + +#the bar behind the timestuff +TimeBar2 = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]Box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg + +# # # S T A T S # # # +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonE = [button]e.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Classic/Text Bar.jpg b/Skins/Classic/Text Bar.jpg deleted file mode 100644 index bf55226d..00000000 Binary files a/Skins/Classic/Text Bar.jpg and /dev/null differ diff --git a/Skins/Classic/[button]alt.jpg b/Skins/Classic/[button]alt.jpg new file mode 100644 index 00000000..193b8415 Binary files /dev/null and b/Skins/Classic/[button]alt.jpg differ diff --git a/Skins/Classic/[button]az.jpg b/Skins/Classic/[button]az.jpg new file mode 100644 index 00000000..d2c80a87 Binary files /dev/null and b/Skins/Classic/[button]az.jpg differ diff --git a/Skins/Classic/[button]e.jpg b/Skins/Classic/[button]e.jpg new file mode 100644 index 00000000..c5da3d9e Binary files /dev/null and b/Skins/Classic/[button]e.jpg differ diff --git a/Skins/Classic/[button]enter.jpg b/Skins/Classic/[button]enter.jpg new file mode 100644 index 00000000..3f6c8feb Binary files /dev/null and b/Skins/Classic/[button]enter.jpg differ diff --git a/Skins/Classic/[button]esc.jpg b/Skins/Classic/[button]esc.jpg new file mode 100644 index 00000000..9f055b6f Binary files /dev/null and b/Skins/Classic/[button]esc.jpg differ diff --git a/Skins/Classic/[button]navi.jpg b/Skins/Classic/[button]navi.jpg new file mode 100644 index 00000000..5640cac1 Binary files /dev/null and b/Skins/Classic/[button]navi.jpg differ diff --git a/Skins/Classic/[button]p.jpg b/Skins/Classic/[button]p.jpg new file mode 100644 index 00000000..c5da3d9e Binary files /dev/null and b/Skins/Classic/[button]p.jpg differ diff --git a/Skins/Classic/[effect]goldenNoteStar.jpg b/Skins/Classic/[effect]goldenNoteStar.jpg new file mode 100644 index 00000000..1b31d267 Binary files /dev/null and b/Skins/Classic/[effect]goldenNoteStar.jpg differ diff --git a/Skins/Classic/[effect]perfectNoteStar.jpg b/Skins/Classic/[effect]perfectNoteStar.jpg new file mode 100644 index 00000000..189a22a3 Binary files /dev/null and b/Skins/Classic/[effect]perfectNoteStar.jpg differ diff --git a/Skins/Classic/[icon]Star.jpg b/Skins/Classic/[icon]Star.jpg new file mode 100644 index 00000000..ee98f9d7 Binary files /dev/null and b/Skins/Classic/[icon]Star.jpg differ diff --git a/Skins/Classic/[main]Bar.jpg b/Skins/Classic/[main]Bar.jpg new file mode 100644 index 00000000..4e9693e3 Binary files /dev/null and b/Skins/Classic/[main]Bar.jpg differ diff --git a/Skins/Classic/[main]Button.jpg b/Skins/Classic/[main]Button.jpg new file mode 100644 index 00000000..e6191a95 Binary files /dev/null and b/Skins/Classic/[main]Button.jpg differ diff --git a/Skins/Classic/[main]ButtonEditor.jpg b/Skins/Classic/[main]ButtonEditor.jpg new file mode 100644 index 00000000..32e455ef Binary files /dev/null and b/Skins/Classic/[main]ButtonEditor.jpg differ diff --git a/Skins/Classic/[main]Logo.jpg b/Skins/Classic/[main]Logo.jpg new file mode 100644 index 00000000..d4d27533 Binary files /dev/null and b/Skins/Classic/[main]Logo.jpg differ diff --git a/Skins/Classic/[main]songCover.jpg b/Skins/Classic/[main]songCover.jpg new file mode 100644 index 00000000..426bf22d Binary files /dev/null and b/Skins/Classic/[main]songCover.jpg differ diff --git a/Skins/Classic/[main]square.jpg b/Skins/Classic/[main]square.jpg new file mode 100644 index 00000000..8af62b71 Binary files /dev/null and b/Skins/Classic/[main]square.jpg differ diff --git a/Skins/Classic/[mainbutton]Exit.jpg b/Skins/Classic/[mainbutton]Exit.jpg new file mode 100644 index 00000000..55494e65 Binary files /dev/null and b/Skins/Classic/[mainbutton]Exit.jpg differ diff --git a/Skins/Classic/[mainbutton]Multi.jpg b/Skins/Classic/[mainbutton]Multi.jpg new file mode 100644 index 00000000..ad5980d7 Binary files /dev/null and b/Skins/Classic/[mainbutton]Multi.jpg differ diff --git a/Skins/Classic/[mainbutton]Options.jpg b/Skins/Classic/[mainbutton]Options.jpg new file mode 100644 index 00000000..5e1bff71 Binary files /dev/null and b/Skins/Classic/[mainbutton]Options.jpg differ diff --git a/Skins/Classic/[mainbutton]Solo.jpg b/Skins/Classic/[mainbutton]Solo.jpg new file mode 100644 index 00000000..a7e3d82a Binary files /dev/null and b/Skins/Classic/[mainbutton]Solo.jpg differ diff --git a/Skins/Classic/[mainbutton]Stats.jpg b/Skins/Classic/[mainbutton]Stats.jpg new file mode 100644 index 00000000..71cc13ad Binary files /dev/null and b/Skins/Classic/[mainbutton]Stats.jpg differ diff --git a/Skins/Classic/[party]pointer.bmp b/Skins/Classic/[party]pointer.bmp new file mode 100644 index 00000000..88bbcc3d Binary files /dev/null and b/Skins/Classic/[party]pointer.bmp differ diff --git a/Skins/Classic/[score]box.jpg b/Skins/Classic/[score]box.jpg new file mode 100644 index 00000000..b37f7e46 Binary files /dev/null and b/Skins/Classic/[score]box.jpg differ diff --git a/Skins/Classic/[score]level.jpg b/Skins/Classic/[score]level.jpg new file mode 100644 index 00000000..e47280cb Binary files /dev/null and b/Skins/Classic/[score]level.jpg differ diff --git a/Skins/Classic/[score]levelround.jpg b/Skins/Classic/[score]levelround.jpg new file mode 100644 index 00000000..dbc5b5af Binary files /dev/null and b/Skins/Classic/[score]levelround.jpg differ diff --git a/Skins/Classic/[score]line.jpg b/Skins/Classic/[score]line.jpg new file mode 100644 index 00000000..2fd951aa Binary files /dev/null and b/Skins/Classic/[score]line.jpg differ diff --git a/Skins/Classic/[sing]LyricsBall.bmp b/Skins/Classic/[sing]LyricsBall.bmp new file mode 100644 index 00000000..5b7d7943 Binary files /dev/null and b/Skins/Classic/[sing]LyricsBall.bmp differ diff --git a/Skins/Classic/[sing]lineBonusPopUp.jpg b/Skins/Classic/[sing]lineBonusPopUp.jpg new file mode 100644 index 00000000..58d93130 Binary files /dev/null and b/Skins/Classic/[sing]lineBonusPopUp.jpg differ diff --git a/Skins/Classic/[sing]notesBgLeft.bmp b/Skins/Classic/[sing]notesBgLeft.bmp new file mode 100644 index 00000000..776e567c Binary files /dev/null and b/Skins/Classic/[sing]notesBgLeft.bmp differ diff --git a/Skins/Classic/[sing]notesBgMid.bmp b/Skins/Classic/[sing]notesBgMid.bmp new file mode 100644 index 00000000..759ac8a3 Binary files /dev/null and b/Skins/Classic/[sing]notesBgMid.bmp differ diff --git a/Skins/Classic/[sing]notesBgRight.bmp b/Skins/Classic/[sing]notesBgRight.bmp new file mode 100644 index 00000000..9b1ffc18 Binary files /dev/null and b/Skins/Classic/[sing]notesBgRight.bmp differ diff --git a/Skins/Classic/[sing]notesLeft.bmp b/Skins/Classic/[sing]notesLeft.bmp new file mode 100644 index 00000000..c819849b Binary files /dev/null and b/Skins/Classic/[sing]notesLeft.bmp differ diff --git a/Skins/Classic/[sing]notesMid.bmp b/Skins/Classic/[sing]notesMid.bmp new file mode 100644 index 00000000..2fdce32d Binary files /dev/null and b/Skins/Classic/[sing]notesMid.bmp differ diff --git a/Skins/Classic/[sing]notesRight.bmp b/Skins/Classic/[sing]notesRight.bmp new file mode 100644 index 00000000..3241beeb Binary files /dev/null and b/Skins/Classic/[sing]notesRight.bmp differ diff --git a/Skins/Classic/[sing]p.jpg b/Skins/Classic/[sing]p.jpg new file mode 100644 index 00000000..5217c6b1 Binary files /dev/null and b/Skins/Classic/[sing]p.jpg differ diff --git a/Skins/Classic/[sing]scoreBg.jpg b/Skins/Classic/[sing]scoreBg.jpg new file mode 100644 index 00000000..01d3ca75 Binary files /dev/null and b/Skins/Classic/[sing]scoreBg.jpg differ diff --git a/Skins/Classic/[sing]singBarBack.jpg b/Skins/Classic/[sing]singBarBack.jpg new file mode 100644 index 00000000..d7dcd791 Binary files /dev/null and b/Skins/Classic/[sing]singBarBack.jpg differ diff --git a/Skins/Classic/[sing]singBarBar.jpg b/Skins/Classic/[sing]singBarBar.jpg new file mode 100644 index 00000000..4fd9bde9 Binary files /dev/null and b/Skins/Classic/[sing]singBarBar.jpg differ diff --git a/Skins/Classic/[sing]singBarFront.jpg b/Skins/Classic/[sing]singBarFront.jpg new file mode 100644 index 00000000..eec27b79 Binary files /dev/null and b/Skins/Classic/[sing]singBarFront.jpg differ diff --git a/Skins/Classic/[sing]textBar.jpg b/Skins/Classic/[sing]textBar.jpg new file mode 100644 index 00000000..e2734bce Binary files /dev/null and b/Skins/Classic/[sing]textBar.jpg differ diff --git a/Skins/Classic/[song]BGFade.jpg b/Skins/Classic/[song]BGFade.jpg new file mode 100644 index 00000000..1d6b80ff Binary files /dev/null and b/Skins/Classic/[song]BGFade.jpg differ diff --git a/Skins/Classic/[song]EqualizerBG.jpg b/Skins/Classic/[song]EqualizerBG.jpg new file mode 100644 index 00000000..54ff27f2 Binary files /dev/null and b/Skins/Classic/[song]EqualizerBG.jpg differ diff --git a/Skins/Classic/[song]selection.jpg b/Skins/Classic/[song]selection.jpg new file mode 100644 index 00000000..b6c0065e Binary files /dev/null and b/Skins/Classic/[song]selection.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index c64da214..2f39d2f4 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -49,7 +49,7 @@ Tex=MainBG [MainText1] X =30 -Y =180 +Y =200 Color=GrayLight Font =1 Size =22 @@ -57,35 +57,44 @@ Text=SING_CHOOSE_MODE Align=0 [MainText2] -X =250 -Y =550 +X =226 +Y =574 Color=Gray Font =1 -Size =8 +Size =7 Text=SING_LEGEND_NAVIGATE Align=0 [MainText3] -X =500 -Y =550 +X =380 +Y =574 Color=Gray Font =1 -Size =8 +Size =7 Text=SING_LEGEND_SELECT Align=0 -[MainTextDescription] -X =50 -Y =248 +[MainText4] +X =535 +Y =574 Color=Gray Font =1 +Size =7 +Text=SING_EDITOR +Align=0 + +[MainTextDescription] +X =63 +Y =263 +Color=GrayDark +Font =1 Size =10 Align=0 Text= [MainTextDescriptionLong] -X =50 -Y =280 +X =63 +Y =295 Color=Black Font =0 Size =10 @@ -106,9 +115,9 @@ TexX2=1 TexY2=1 [MainStatic2] -Tex =MainCursor -X =20 -Y =250 +Tex =MainIcon +X =30 +Y =265 W =32 H =32 Color =ColorDark @@ -118,12 +127,77 @@ TexY1=0 TexX2=1 TexY2=1 +[MainStatic3] +Tex =ButtonNavi +X =190 +Y =570 +W =30 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[MainStatic4] +Tex =ButtonEnter +X =350 +Y =571 +W =26 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[MainStatic5] +Tex =ButtonE +X =510 +Y =570 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + [MainButtonSolo] -X =470 +X =472 +Y =250 +W =58 +H =56 +Tex =ButtonSolo +Color =ColorDark +Int = 1 +DColor = GrayLightest +DInt = 0.5 +Type=Font Black +Texts=0 + +[MainButtonMulti] +X =532 +Y =250 +W =58 +H =56 +Tex =ButtonMulti +Color =ColorDark +Int = 1 +DColor = GrayLightest +DInt = 0.5 +Type=Font Black +Texts=0 + +[MainButtonStats] +X =592 Y =250 W =58 H =56 -Tex =MainSolo +Tex =ButtonStats Color =ColorDark Int = 1 DColor = GrayLightest @@ -132,24 +206,25 @@ Type=Font Black Texts=0 [MainButtonEditor] -X =530 +X =592 Y =250 W =58 H =56 -Tex =MainMulti +Tex =ButtonEditor Color =ColorDark Int = 1 DColor = GrayLightest DInt = 0.5 Type=Font Black Texts=0 +Visible=0 [MainButtonOptions] -X =590 +X =652 Y =250 W =58 H =56 -Tex =MainOptions +Tex =ButtonOptions Color =ColorDark Int = 1 DColor = White @@ -158,11 +233,11 @@ Type=Font Black Texts=0 [MainButtonExit] -X =650 +X =712 Y =250 W =58 H =56 -Tex =MainExit +Tex =ButtonExit Color =ColorDark Int = 1 DColor = White @@ -189,14 +264,14 @@ Visible=1 Direction=1 Color =Grey Alpha=1 -X=245 -Y=400 +X=320 +Y=488 Z=1 -PieceW=6 -PieceH=2 +PieceW=8 +PieceH=3 Space=1 -Bands=5 -Length=15 +Bands=4 +Length=7 [SongText1] X =30 @@ -210,19 +285,10 @@ Align=0 [SongText2] X =50 Y =500 -Color=Gray -Font =1 -Size =10 -Text=SING_CHOOSE_SONG -Align=0 - -[SongText3] -X =380 -Y =570 Color=Black -Font =0 +Font =1 Size =8 -Text =US_VERSION +Text=SING_SONG_SELECTION_DESC Align=0 [SongStatic1] @@ -244,7 +310,7 @@ Y =500 W =32 H =32 Color =ColorDark -Tex =MainCursor +Tex =MainIcon Type=Font Black TexX1=0 TexY1=0 @@ -265,6 +331,20 @@ TexY1=0 TexX2=1 TexY2=1 +[SongStatic4] +X =320 +Y =463 +Z = 0.8 +W =44 +H =28 +Color =Black +Tex =SongEqualizerBG +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + [SongTextArtist] X =400 Y =360 @@ -299,10 +379,10 @@ Color=Gray Font =1 Size =7 Align =0 -Text=Moin Moin Maus Fans +Text= [SongStaticCat] -Tex =Button +Tex = X =12 Y =7 W =85 @@ -1886,7 +1966,7 @@ Size = 8 Text=SING_LEGEND_SELECT [OptionsStatic1] -Tex=MainCursor +Tex=MainIcon X=40 Y=250 W=32 @@ -2953,7 +3033,7 @@ X=20 Y=250 W=32 H=32 -Tex=MainCursor +Tex=MainIcon Type=Font Black Color=ColorDark TexX1=0 @@ -3057,7 +3137,7 @@ X=20 Y=250 W=32 H=32 -Tex=MainCursor +Tex=MainIcon Type=Font Black Color=ColorDark TexX1=0 -- cgit v1.2.3 From 8c0e834e1e8715d4b9357b42fb11e9b5a2da5c7a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 10 May 2007 20:26:50 +0000 Subject: Changelog updated git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@189 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Changelog.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Game/Changelog.txt b/Game/Changelog.txt index 381baa09..839b8edb 100644 --- a/Game/Changelog.txt +++ b/Game/Changelog.txt @@ -9,6 +9,7 @@ Upd: Add ability to 0.5.1 System to load third party Themes to add usability Upd: Add ability to change Positions and some other things relating to Covers within the Theme Upd: Add ability to add reflections to the Covers Upd: New Method for displaying Covers in a Circle. Looks better with many Songs. (Turn Off On within the Theme) +Upd: Add Equalizer Object to SongScreen Upd: Add ability to add reflection to Buttons and Statics (Reflection = 1) Upd: Add ability to Group Buttons to a Buttonmenu, see Deluxe Theme Main Menu Tools Collection Upd: Add ability to Hide Buttons within Theme. Useful for example for MAinscreen Exit Button @@ -26,7 +27,7 @@ Song Screen -------------- Upd: Added Playlist Support -Upd: Song Search (with Screen interface +Upd: Song Search (with Screen interface) Upd: Jump to Letter Hotkey Upd: Menu in Songscreen similar to Singstars @@ -36,7 +37,7 @@ Party Mode Upd: Added Party Mode: 3 Teams possible with up to 4 Players => total of 12 Players -Upd: Modi SDK for Create nearly any Modi with some Programming Skill +Upd: Modi SDK to create nearly any Modi with some Programming Skill Upd: 4 Custom Party Modi Plugins: Duell, Hold the Line, Until 5000, Blind Mode -------------- @@ -44,7 +45,7 @@ Effects -------------- Upd: New Perfect Note Effects Upd: Add Perfect Sentence Effect -Upd: Golden Notes now with Singstar like Star twinkle Effect, isntead of just Yellow +Upd: Golden Notes now with Singstar like Star Twinkle Effect, instead of just Yellow coloring Upd: Add Effect: Golden notes "Glow" when they are hit Upd: New Screen Fading Effect: Screen Blurs and "Flys" out of the Screen looks better with every Background. More possibility for Theme Creators @@ -56,10 +57,13 @@ Upd: Added Deluxe Theme: Theme that has a look similiar to PS3 Singstar. Upd: New Score Saving System (SQLite Based) Upd: Statistic Screen with general Statistics and some Tables: Best Scores, Best Singers, Most Popular Songs, Most Popular Bands +Upd: Add some on Screen Error Messages helping new Peoples +Upd: Add Advanced Screen with some new Options. +Upd: Add a Question PopUp before exiting Upd: Show real Note in Editor (C, F#, etc.) Fix: Videosize can now be changed again -Fix: Bug in LineBonus Popub then can end u in Memory Overflow -Fix: Bug in SelectSlide with less then 3 Options, Now Overlapping anymore. Automatic resizing +Fix: Bug in LineBonus Popup that can end up in a Memory Overflow +Fix: Bug in SelectSlide with less then 3 Options, No Overlapping anymore. Automatic resizing Fix: Backgrounds can be used now in option Screens, too -- cgit v1.2.3 From 4036ca0937c05444b23018a19d69d1aef90495db Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 12 May 2007 09:17:15 +0000 Subject: Party Win Screen now works the way it should. The Statics are sorted by Score git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@190 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UParty.pas | 36 ++++++++++++++++++++++++++++++++--- Game/Code/Screens/UScreenPartyWin.pas | 23 ++++++++++++---------- 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas index b07ad5ad..7bf3dd1b 100644 --- a/Game/Code/Classes/UParty.pas +++ b/Game/Code/Classes/UParty.pas @@ -10,6 +10,13 @@ type Winner: Byte; end; + TeamOrderEntry = record + Teamnum: Byte; + Score: Byte; + end; + + TeamOrderArray = Array[0..5] of Byte; + TParty_Session = class private function GetRandomPlayer(Team: Byte): Byte; @@ -25,7 +32,7 @@ type procedure StartNewParty(NumRounds: Byte); procedure StartRound; procedure EndRound; - function GetWinner: Byte; + function GetTeamOrder: TeamOrderArray; function GetWinnerString(Round: Byte): String; end; @@ -334,11 +341,34 @@ begin end; //---------- -//Get Winner - Gives back the Number of the total Winner +//GetTeamOrder - Gives back the Placing of eacb Team [First Position of Array is Teamnum of first placed Team, ...] //---------- -function TParty_Session.GetWinner: Byte; +function TParty_Session.GetTeamOrder: TeamOrderArray; +var + I, J: Integer; + ATeams: array [0..5] of TeamOrderEntry; + TempTeam: TeamOrderEntry; begin + //Fill Team Array + For I := 0 to Teams.NumTeams-1 do + begin + ATeams[I].Teamnum := I; + ATeams[I].Score := Teams.Teaminfo[I].Score; + end; + //Sort Teams + for J := 0 to Teams.NumTeams-1 do + for I := 1 to Teams.NumTeams-1 do + if ATeams[I].Score > ATeams[I-1].Score then + begin + TempTeam := ATeams[I-1]; + ATeams[I-1] := ATeams[I]; + ATeams[I] := TempTeam; + end; + + //Copy to Result + For I := 0 to Teams.NumTeams-1 do + Result[I] := ATeams[I].TeamNum; end; end. diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas index a6486f67..1c4549a4 100644 --- a/Game/Code/Screens/UScreenPartyWin.pas +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -46,11 +46,11 @@ begin Result := false; end; - {SDLK_ESCAPE : + SDLK_ESCAPE : begin Music.PlayStart; FadeTo(@ScreenMain); - end;} + end; SDLK_RETURN: begin @@ -92,15 +92,18 @@ end; procedure TScreenPartyWin.onShow; var I: Integer; + Placing: TeamOrderArray; begin - + //Get Team Placing + Placing := PartySession.GetTeamOrder; + //Set Winnertext - Text[TextWinner].Text := Format(Language.Translate('PARTY_SCORE_WINS'), [PartySession.GetWinnerString(255)]); + Text[TextWinner].Text := Format(Language.Translate('PARTY_SCORE_WINS'), [PartySession.Teams.Teaminfo[Placing[0]].Name]); if (PartySession.Teams.NumTeams >= 1) then begin - Text[TextScoreTeam1].Text := InttoStr(PartySession.Teams.TeamInfo[0].Score); - Text[TextNameTeam1].Text := String(PartySession.Teams.TeamInfo[0].Name); + Text[TextScoreTeam1].Text := InttoStr(PartySession.Teams.TeamInfo[Placing[0]].Score); + Text[TextNameTeam1].Text := String(PartySession.Teams.TeamInfo[Placing[0]].Name); Text[TextScoreTeam1].Visible := True; Text[TextNameTeam1].Visible := True; @@ -119,8 +122,8 @@ begin if (PartySession.Teams.NumTeams >= 2) then begin - Text[TextScoreTeam2].Text := InttoStr(PartySession.Teams.TeamInfo[1].Score); - Text[TextNameTeam2].Text := String(PartySession.Teams.TeamInfo[1].Name); + Text[TextScoreTeam2].Text := InttoStr(PartySession.Teams.TeamInfo[Placing[1]].Score); + Text[TextNameTeam2].Text := String(PartySession.Teams.TeamInfo[Placing[1]].Name); Text[TextScoreTeam2].Visible := True; Text[TextNameTeam2].Visible := True; @@ -139,8 +142,8 @@ begin if (PartySession.Teams.NumTeams >= 3) then begin - Text[TextScoreTeam3].Text := InttoStr(PartySession.Teams.TeamInfo[2].Score); - Text[TextNameTeam3].Text := String(PartySession.Teams.TeamInfo[2].Name); + Text[TextScoreTeam3].Text := InttoStr(PartySession.Teams.TeamInfo[Placing[2]].Score); + Text[TextNameTeam3].Text := String(PartySession.Teams.TeamInfo[Placing[2]].Name); Text[TextScoreTeam3].Visible := True; Text[TextNameTeam3].Visible := True; -- cgit v1.2.3 From 3d11b9a0a30438bb61df88a91dc7318cdf45a4a8 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 12 May 2007 09:20:21 +0000 Subject: Changed Standard Position for Covers and Equalizer, so that, if no Cover Positions are specified in Team, it looks like the Covers in X-Mas Mod git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@191 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index e8f8eb10..b92ef4fb 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -953,9 +953,8 @@ begin ThemeLoadText(Song.TextCat, 'SongTextCat'); //Load Cover Pos and Size from Theme Mod - Song.Cover.X := ThemeIni.ReadInteger('SongCover', 'X', 400); + Song.Cover.X := ThemeIni.ReadInteger('SongCover', 'X', 300); Song.Cover.Y := ThemeIni.ReadInteger('SongCover', 'Y', 140); - Song.Cover.Z := ThemeIni.ReadInteger('SongCover', 'Z', 250); Song.Cover.W := ThemeIni.ReadInteger('SongCover', 'W', 300); Song.Cover.H := ThemeIni.ReadInteger('SongCover', 'H', 200); Song.Cover.Style := ThemeIni.ReadInteger('SongCover', 'Style', 4); @@ -967,8 +966,8 @@ begin Song.Equalizer.Direction := (ThemeIni.ReadInteger('SongEqualizer', 'Direction', 0) = 1); Song.Equalizer.Alpha := ThemeIni.ReadInteger('SongEqualizer', 'Alpha', 1); Song.Equalizer.Space := ThemeIni.ReadInteger('SongEqualizer', 'Space', 1); - Song.Equalizer.X := ThemeIni.ReadInteger('SongEqualizer', 'X', 650); - Song.Equalizer.Y := ThemeIni.ReadInteger('SongEqualizer', 'Y', 430); + Song.Equalizer.X := ThemeIni.ReadInteger('SongEqualizer', 'X', 0); + Song.Equalizer.Y := ThemeIni.ReadInteger('SongEqualizer', 'Y', 0); Song.Equalizer.Z := ThemeIni.ReadInteger('SongEqualizer', 'Z', 1); Song.Equalizer.W := ThemeIni.ReadInteger('SongEqualizer', 'PieceW', 8); Song.Equalizer.H := ThemeIni.ReadInteger('SongEqualizer', 'PieceH', 8); -- cgit v1.2.3 From 552ecdfe2256ce2c9bd2162bead5b77736fc410b Mon Sep 17 00:00:00 2001 From: mota23 Date: Sun, 13 May 2007 11:47:23 +0000 Subject: Fixed missing Texture. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@192 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[sing]timeBarBG.jpg | Bin 0 -> 540 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Deluxe/[sing]timeBarBG.jpg diff --git a/Skins/Deluxe/[sing]timeBarBG.jpg b/Skins/Deluxe/[sing]timeBarBG.jpg new file mode 100644 index 00000000..e33352d5 Binary files /dev/null and b/Skins/Deluxe/[sing]timeBarBG.jpg differ -- cgit v1.2.3 From 78ddfd6d20e419716dfa5085e01b059d40dd61ed Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 15 May 2007 17:49:27 +0000 Subject: fixed angle calculation of covers in the background git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@193 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 114c52a3..9fcb7ee8 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1142,7 +1142,7 @@ begin else Pos := (Pos + VS/2) /VS; - Angle := 2 * pi * Pos*1.2; + Angle := pi * Pos*2; Button[B].Z := (0.4 - Abs(Pos/4)) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers -- cgit v1.2.3 From 66f4c5511f1cc61b68e75d874ea6a1dc88f9e75a Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 15 May 2007 18:04:42 +0000 Subject: Added: Keys 1.2.3 to use Joker in Popup-Party-Menu Added: 2 sets of Statics for Song-Screen. (need work, just startet) Some Fixes in Deluxe Theme. (missing texts, fixed positions etc.) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@194 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 10 ++ Game/Code/Screens/UScreenSong.pas | 26 +++- Game/Code/Screens/UScreenSongMenu.pas | 33 +++++ Languages/English.ini | 2 +- Languages/German.ini | 2 +- Languages/readme.txt | 2 +- Themes/Deluxe.ini | 234 +++++++++++++++++++++++++++++++++- 7 files changed, 297 insertions(+), 12 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index b92ef4fb..d3358440 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -293,6 +293,13 @@ type StaticTeam3Joker3: TThemeStatic; StaticTeam3Joker4: TThemeStatic; StaticTeam3Joker5: TThemeStatic; + + + + StaticKeys1 : TThemeStatic; + TextKeys1 : TThemeText; + + end; TThemeSing = class(TThemeBasic) @@ -1002,6 +1009,9 @@ begin ThemeLoadStatic(Song.StaticTeam3Joker4, 'SongStaticTeam3Joker4'); ThemeLoadStatic(Song.StaticTeam3Joker5, 'SongStaticTeam3Joker5'); + ThemeLoadStatic(Song.StaticKeys1, 'SongStaticKeys1'); + ThemeLoadText(Song.TextKeys1, 'SongStaticKeys1Text'); + // Sing ThemeLoadBasic(Sing, 'Sing'); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 9fcb7ee8..2ce6b6df 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -52,7 +52,9 @@ type StaticTeam3Joker3: Cardinal; StaticTeam3Joker4: Cardinal; StaticTeam3Joker5: Cardinal; - + StaticKeys1: Cardinal; + TextKeys1: integer; + constructor Create; override; procedure SetScroll; procedure SetScroll1; @@ -79,7 +81,7 @@ type //Party Mode procedure SelectRandomSong; procedure SetJoker; - + procedure SetStatics; //procedures for Menu procedure StartSong; procedure OpenEditor; @@ -662,6 +664,10 @@ begin StaticTeam3Joker4 := AddStatic(Theme.Song.StaticTeam3Joker4); StaticTeam3Joker5 := AddStatic(Theme.Song.StaticTeam3Joker5); + StaticKeys1 := AddStatic(Theme.Song.StaticKeys1); + + TextKeys1 := AddText(Theme.Song.TextKeys1); + // Song List // Songs.LoadSongList; // moved to the UltraStar unit CatSongs.Refresh; @@ -1215,6 +1221,7 @@ begin end; SetJoker; + SetStatics; end; procedure TScreenSong.onHide; @@ -1646,6 +1653,21 @@ begin end; end; +procedure TScreenSong.SetStatics; +begin + //If Party Mode + if Mode = 1 then //Use Statics for Party-Song-Selection + begin + Static[StaticKeys1].Visible := false; + Text[TextKeys1].Visible := false; + end + else //Use regular Statics for Song-Selection + begin //Hide all + Static[StaticKeys1].Visible := true; + Text[TextKeys1].Visible := true; + end; +end; + //Procedures for Menu procedure TScreenSong.StartSong; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 73b38a05..537536bb 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -96,6 +96,39 @@ begin if (Interaction=3) then InteractDec; end; + + SDLK_1: + begin //Jocker + //Joker spielen + case CurMenu of + SM_Party_Main: + begin + ScreenSong.DoJoker(0) + end; + end; + end; + SDLK_2: + begin //Jocker + //Joker spielen + case CurMenu of + SM_Party_Main: + begin + ScreenSong.DoJoker(1) + end; + end; + end; + SDLK_3: + begin //Jocker + //Joker spielen + case CurMenu of + SM_Party_Main: + begin + ScreenSong.DoJoker(2) + end; + end; + end; + + end; end; end; diff --git a/Languages/English.ini b/Languages/English.ini index 9a9c3975..f373ce7e 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -176,7 +176,7 @@ SONG_MENU_NO=No SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open -SONG_MENU_NAME_PARTY=Party Menu +SONG_MENU_NAME_PARTY_MAIN=Party Menu SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=take joker diff --git a/Languages/German.ini b/Languages/German.ini index 9e66e276..b26b82ba 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -176,7 +176,7 @@ SONG_MENU_NO=Nein SONG_MENU_NAME_PLAYLIST_LOAD=Playlist öffnen SONG_MENU_PLAYLIST_LOAD=Öffnen -SONG_MENU_NAME_PARTY=Party-Menü +SONG_MENU_NAME_PARTY_MAIN=Party-Menü SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=Joker spielen diff --git a/Languages/readme.txt b/Languages/readme.txt index 82c5bfb2..eebc9521 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -80,7 +80,7 @@ SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open #Menu Party Modus -SONG_MENU_NAME_PARTY=Menu +SONG_MENU_NAME_PARTY_MAIN=Menu SONG_MENU_JOKER=Joker SONG_MENU_NAME_PARTY_JOKER=take Joker diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index cbc6b6dc..ed92ae3c 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -480,7 +480,7 @@ Size =7 Align=0 Text=SONG_JUMPTO_DESC -[SongStatic10] +[SongStaticKeys1] X =679 Y =553 W =22 @@ -488,8 +488,9 @@ H =22 Tex=ButtonP Color =White Type=Plain +Texts=1 -[SongText7] +[SongStaticKeys1Text] X =705 Y =552 Color=Black @@ -528,12 +529,12 @@ Align =1 Text= [SongTextNumber] -X =350 -Y =430 +X =440 +Y =495 Color=White Font =0 Size =8 -Align =1 +Align =2 Text= [SongStaticTeam1Joker1] @@ -4164,7 +4165,7 @@ Align=0 Text =SING_OPTIONS_GAME_DIFFICULTY [Top5TextLevel] -X =250 +X =270 Y =73 Color =White Font =0 @@ -5823,6 +5824,79 @@ Color =P1Dark Reflection=1 ReflectionSpacing=2 +[PartyWinStaticTeam1Rank1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BGRank1] +Tex=PartyTeamButton3 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam1Rank2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BGRank2] +Tex=PartyTeamButton3 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam1Rank3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BGRank3] +Tex=PartyTeamButton3 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + + [PartyWinStaticTeam1Deco] Tex =PartyWinDeco1 X = 91 @@ -5858,6 +5932,78 @@ Color =P2Dark Reflection=1 ReflectionSpacing=2 +[PartyWinStaticTeam2Rank1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamButton3 +Color =P2Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BGRank1] +Tex=PartyTeamButton4 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Rank2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P2Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BGRank2] +Tex=PartyTeamButton4 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Rank3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P2Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BGRank3] +Tex=PartyTeamButton4 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + [PartyWinStaticTeam2Deco] Tex =PartyWinDeco2 X = 226 @@ -5893,6 +6039,78 @@ Color =P3Dark Reflection=1 ReflectionSpacing=2 +[PartyWinStaticTeam3Rank1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BGRank1] +Tex=PartyTeamButton3 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam3Rank2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BGRank2] +Tex=PartyTeamButton5 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam3Rank3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BGRank3] +Tex=PartyTeamButton5 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + [PartyWinStaticTeam3Deco] Tex =PartyWinDeco3 X = 316 @@ -6725,9 +6943,11 @@ Z=1 [SongMenuSelectSlide3] Tex = Rectangle TexSBG = Rectangle +Color =LightBlue +DColor = DarkBlue Text = X = 460 -Y = 225 +Y = 195 Z = 0.99 W = 0 H = 25 -- cgit v1.2.3 From cabc484d29e9406ea55b043d2802f9a3771dfee3 Mon Sep 17 00:00:00 2001 From: mota23 Date: Wed, 16 May 2007 17:56:10 +0000 Subject: Changed Autum-BG. The new one is provided by Kathaan git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@195 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Autum.ini | 147 ++++++++++++++++++++++++++++++++++++++ Skins/Deluxe/[bg-load]autum.jpg | Bin 0 -> 138204 bytes Skins/Deluxe/[bg-main]autum.jpg | Bin 0 -> 157407 bytes Skins/Deluxe/x_Autum.ini | 147 -------------------------------------- Skins/Deluxe/x_[bg-load]autum.jpg | Bin 102278 -> 0 bytes Skins/Deluxe/x_[bg-main]autum.jpg | Bin 99750 -> 0 bytes 6 files changed, 147 insertions(+), 147 deletions(-) create mode 100644 Skins/Deluxe/Autum.ini create mode 100644 Skins/Deluxe/[bg-load]autum.jpg create mode 100644 Skins/Deluxe/[bg-main]autum.jpg delete mode 100644 Skins/Deluxe/x_Autum.ini delete mode 100644 Skins/Deluxe/x_[bg-load]autum.jpg delete mode 100644 Skins/Deluxe/x_[bg-main]autum.jpg diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini new file mode 100644 index 00000000..a43c15db --- /dev/null +++ b/Skins/Deluxe/Autum.ini @@ -0,0 +1,147 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Autum +Color=Orange + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg + +#Backgrounds +LoadingBG = [bg-load]autum.jpg +MainBG = [bg-main]autum.jpg +SongBG = [bg-main]autum.jpg +ScoreScreenBG = [bg-main]autum.jpg +Top5BG = [bg-main]autum.jpg +OptionsBG = [bg-main]autum.jpg +PartyBG = [bg-main]autum.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar1 = [sing]timeBarBG.jpg + +#the bar behind the timestuff +TimeBar2 = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg + +# # # S T A T S # # # +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +PopUpBG = [menu]popUpBG.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[bg-load]autum.jpg b/Skins/Deluxe/[bg-load]autum.jpg new file mode 100644 index 00000000..51ee048c Binary files /dev/null and b/Skins/Deluxe/[bg-load]autum.jpg differ diff --git a/Skins/Deluxe/[bg-main]autum.jpg b/Skins/Deluxe/[bg-main]autum.jpg new file mode 100644 index 00000000..ae29b9bd Binary files /dev/null and b/Skins/Deluxe/[bg-main]autum.jpg differ diff --git a/Skins/Deluxe/x_Autum.ini b/Skins/Deluxe/x_Autum.ini deleted file mode 100644 index d5ea5d6e..00000000 --- a/Skins/Deluxe/x_Autum.ini +++ /dev/null @@ -1,147 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=Autum -Color=Orange - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg - -#Backgrounds -LoadingBG = x_[bg-load]autum.jpg -MainBG = x_[bg-main]autum.jpg -SongBG = x_[bg-main]autum.jpg -ScoreScreenBG = x_[bg-main]autum.jpg -Top5BG = x_[bg-main]autum.jpg -OptionsBG = x_[bg-main]autum.jpg -PartyBG = x_[bg-main]autum.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg -StatIcon = [icon]stats.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar1 = [sing]timeBarBG.jpg - -#the bar behind the timestuff -TimeBar2 = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyTeamButton3 =[party]winTeamButton1.jpg -PartyTeamButton4 =[party]winTeamButton2.jpg -PartyTeamButton5 =[party]winTeamButton3.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp -PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg -PartyScoreBG1 =[party]scoreBG1.jpg -PartyScoreBG2 =[party]scoreBG2.jpg -PartyWinDeco1 =x_[party]winDecoration1.jpg -PartyWinDeco2 =x_[party]winDecoration1.jpg -PartyWinDeco3 =x_[party]winDecoration1.jpg - -# # # S T A T S # # # -StatMainBG1 = [stat]mainBG1.jpg -StatMainBG2 = [stat]mainBG2.jpg -StatMainBG3 = [stat]mainBG3.jpg -StatDetailBG1 = [stat]detailBG1.jpg - - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg -ButtonEsc = [button]esc.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -PopUpBG = [menu]popUpBG.jpg - - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/x_[bg-load]autum.jpg b/Skins/Deluxe/x_[bg-load]autum.jpg deleted file mode 100644 index 6ddc97ce..00000000 Binary files a/Skins/Deluxe/x_[bg-load]autum.jpg and /dev/null differ diff --git a/Skins/Deluxe/x_[bg-main]autum.jpg b/Skins/Deluxe/x_[bg-main]autum.jpg deleted file mode 100644 index 60e215e5..00000000 Binary files a/Skins/Deluxe/x_[bg-main]autum.jpg and /dev/null differ -- cgit v1.2.3 From 9b29c5321e423fbe6ba29f32bdcf8f2c83828e92 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 16 May 2007 18:18:37 +0000 Subject: Fixed text position of SelectSlide when High is not 70 Added ability to change Z and Textsize from SelectSlide Use new abilitys to finish SongMenu Screen in Deluxe Theme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@196 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 8 ++++++++ Game/Code/Menu/UMenu.pas | 7 ++++++- Game/Code/Menu/UMenuSelectSlide.pas | 4 ++-- Skins/Deluxe/Autum.ini | 1 + Skins/Deluxe/Blue.ini | 1 + Skins/Deluxe/Summer.ini | 1 + Skins/Deluxe/Winter.ini | 1 + Skins/Deluxe/[menu]songMenuSelectBg.jpg | Bin 0 -> 1674 bytes Themes/Deluxe.ini | 13 ++++++------- 9 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 Skins/Deluxe/[menu]songMenuSelectBg.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index d3358440..b9183740 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -186,6 +186,9 @@ type Y: integer; W: integer; H: integer; + Z: real; + + TextSize: integer; //SBGW Mod SBGW: integer; @@ -1717,6 +1720,11 @@ begin ThemeSelectS.Y := ThemeIni.ReadInteger(Name, 'Y', 0); ThemeSelectS.W := ThemeIni.ReadInteger(Name, 'W', 0); ThemeSelectS.H := ThemeIni.ReadInteger(Name, 'H', 0); + + ThemeSelectS.Z := ThemeIni.ReadFloat(Name, 'Z', 0); + + ThemeSelectS.TextSize := ThemeIni.ReadInteger(Name, 'TextSize', 10); + ThemeSelectS.SkipX := ThemeIni.ReadInteger(Name, 'SkipX', 0); ThemeSelectS.SBGW := ThemeIni.ReadInteger(Name, 'SBGW', 450); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index c9d3c726..d7c919ee 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -1102,6 +1102,11 @@ begin for SO := 0 to High(Values) do AddSelectSlideOption(Values[SO]); + SelectsS[High(SelectsS)].Text.Size := ThemeSelectS.TextSize; + + SelectsS[High(SelectsS)].Texture.Z := ThemeSelectS.Z; + SelectsS[High(SelectsS)].TextureSBG.Z := ThemeSelectS.Z; + //Generate Lines SelectsS[High(SelectsS)].GenLines; @@ -1153,7 +1158,7 @@ begin SelectsS[S].SBGDInt := SBGDInt; SelectsS[S].Text.X := X + 20; - SelectsS[S].Text.Y := Y + 20; + SelectsS[S].Text.Y := Y + (SelectsS[S].TextureSBG.H / 2) - 15; SelectsS[S].Text.Text := Caption; SelectsS[S].Text.Size := 10; SelectsS[S].Text.Visible := true; diff --git a/Game/Code/Menu/UMenuSelectSlide.pas b/Game/Code/Menu/UMenuSelectSlide.pas index 9885acc0..0149ea2b 100644 --- a/Game/Code/Menu/UMenuSelectSlide.pas +++ b/Game/Code/Menu/UMenuSelectSlide.pas @@ -315,7 +315,7 @@ begin //TextOpt[I] := TextOpt[0]; TextOpt[I] := TText.Create; - TextOpt[I].Size := 10; + TextOpt[I].Size := Text.Size; //TextOpt[I].Align := 1; TextOpt[I].Align := 0; TextOpt[I].Visible := True; @@ -328,7 +328,7 @@ begin //Generate Positions //TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * (I + 0.5); TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * I; - TextOpt[I].Y := TextureSBG.Y + 20; + TextOpt[I].Y := TextureSBG.Y + (TextureSBG.H / 2) - 1.5 * Text.Size{20}; //Better Look with 2 Options if (Lines=2) AND (Length(TextOptT)= 2) then diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini index a43c15db..e225c612 100644 --- a/Skins/Deluxe/Autum.ini +++ b/Skins/Deluxe/Autum.ini @@ -125,6 +125,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index e9cdde00..1dc9f2c5 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -125,6 +125,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index 22443050..3ad90e12 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -125,6 +125,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index 518f234c..2404f889 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -123,6 +123,7 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/[menu]songMenuSelectBg.jpg b/Skins/Deluxe/[menu]songMenuSelectBg.jpg new file mode 100644 index 00000000..79966f3b Binary files /dev/null and b/Skins/Deluxe/[menu]songMenuSelectBg.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index ed92ae3c..a355fa86 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -6942,24 +6942,23 @@ Z=1 [SongMenuSelectSlide3] Tex = Rectangle -TexSBG = Rectangle -Color =LightBlue -DColor = DarkBlue +TexSBG = SongMenuSelectBG Text = X = 460 -Y = 195 -Z = 0.99 +Y = 225 W = 0 H = 25 +Z = 0.99 SkipX = 0 +SBGW=270 -SBGW = 270 +TextSize=8 Color = LightBlue DColor = DarkBlue TColor = White TDColor = White -SBGTex = Rectangle +SBGTex = MainBar SBGColor = LightBlue SBGDColor = DarkBlue STColor = White -- cgit v1.2.3 From 4a731514163a14bd3a9222d99707880b56772663 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 16 May 2007 19:19:35 +0000 Subject: all SongFile Loading and Saving procedures moved to UFiles. Added Some Tolerance in Song File Loading and Song Header Loading. Fix: Programm doesn't Crash anymore when a coruppted Song is loaded for Singing or Editing. Now Jump back to SongScreen and show an Error Message. Also Party Mode is not Interupted, a new Song will be selected automatically. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@197 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UCatCovers.pas | 2 +- Game/Code/Classes/UCovers.pas | 2 +- Game/Code/Classes/UDLLManager.pas | 2 +- Game/Code/Classes/UFiles.pas | 494 +++++++++++++++++++++++++-- Game/Code/Classes/UIni.pas | 2 +- Game/Code/Classes/ULanguage.pas | 2 +- Game/Code/Classes/ULog.pas | 2 +- Game/Code/Classes/UMusic.pas | 2 +- Game/Code/Classes/UPlaylist.pas | 2 +- Game/Code/Classes/USongs.pas | 2 +- Game/Code/Menu/UDisplay.pas | 6 +- Game/Code/Screens/UScreenCredits.pas | 2 +- Game/Code/Screens/UScreenEditConvert.pas | 2 +- Game/Code/Screens/UScreenEditHeader.pas | 2 +- Game/Code/Screens/UScreenEditSub.pas | 79 +++-- Game/Code/Screens/UScreenLevel.pas | 2 +- Game/Code/Screens/UScreenMain.pas | 2 +- Game/Code/Screens/UScreenName.pas | 2 +- Game/Code/Screens/UScreenOpen.pas | 2 +- Game/Code/Screens/UScreenOptions.pas | 2 +- Game/Code/Screens/UScreenOptionsAdvanced.pas | 2 +- Game/Code/Screens/UScreenOptionsGame.pas | 2 +- Game/Code/Screens/UScreenOptionsGraphics.pas | 2 +- Game/Code/Screens/UScreenOptionsLyrics.pas | 2 +- Game/Code/Screens/UScreenOptionsRecord.pas | 2 +- Game/Code/Screens/UScreenOptionsSound.pas | 2 +- Game/Code/Screens/UScreenOptionsThemes.pas | 2 +- Game/Code/Screens/UScreenPartyNewRound.pas | 2 +- Game/Code/Screens/UScreenPartyOptions.pas | 2 +- Game/Code/Screens/UScreenPartyPlayer.pas | 2 +- Game/Code/Screens/UScreenPopup.pas | 2 +- Game/Code/Screens/UScreenSing.pas | 26 +- Game/Code/Screens/UScreenSingModi.pas | 2 +- Game/Code/Screens/UScreenSong.pas | 4 +- Game/Code/Screens/UScreenSongJumpto.pas | 2 +- Game/Code/Screens/UScreenSongMenu.pas | 2 +- Game/Code/UltraStar.dpr | 4 +- Themes/Classic.ini | 24 +- 38 files changed, 589 insertions(+), 110 deletions(-) diff --git a/Game/Code/Classes/UCatCovers.pas b/Game/Code/Classes/UCatCovers.pas index 00a758c8..34742902 100644 --- a/Game/Code/Classes/UCatCovers.pas +++ b/Game/Code/Classes/UCatCovers.pas @@ -24,7 +24,7 @@ var CatCovers: TCatCovers; implementation -uses IniFiles, SysUtils, Classes, UPliki, ULog; +uses IniFiles, SysUtils, Classes, UFiles, ULog; constructor TCatCovers.Create; begin diff --git a/Game/Code/Classes/UCovers.pas b/Game/Code/Classes/UCovers.pas index 55329fd2..5b0a06d4 100644 --- a/Game/Code/Classes/UCovers.pas +++ b/Game/Code/Classes/UCovers.pas @@ -34,7 +34,7 @@ var Covers: TCovers; implementation -uses UPliki, ULog, DateUtils; +uses UFiles, ULog, DateUtils; constructor TCovers.Create; begin diff --git a/Game/Code/Classes/UDLLManager.pas b/Game/Code/Classes/UDLLManager.pas index 151f0617..59c75d5b 100644 --- a/Game/Code/Classes/UDLLManager.pas +++ b/Game/Code/Classes/UDLLManager.pas @@ -1,7 +1,7 @@ unit UDLLManager; interface -uses ModiSDK, UPliki; +uses ModiSDK, UFiles; type TDLLMan = class diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index fed9b7f1..912a476d 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -4,43 +4,54 @@ interface uses USongs, SysUtils, ULog, UMusic; -//procedure InitializePaths; //Function sets All Absolute Paths eg. for Songs +procedure InitializePaths; //Function sets All Absolute Paths eg. for Songs function ReadTXTHeader(var Song: TSong): boolean; //Reads Standard TXT Header function AnalyseFile(var Song: TSong): boolean; //Analyse Song File and Read Header procedure ClearSong(var Song: TSong); //Clears Song Header values -//procedure CzyscNuty; -//function WczytajCzesci(Name: string): boolean; -//function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; -//function SaveSongDebug(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; +//Methodes Loading and Saving Songfiles +procedure ResetSingTemp; +procedure ParseNote(NrCzesci: integer; TypeP: char; StartP, DurationP, NoteP: integer; LyricS: string); +procedure NewSentence(NrCzesciP: integer; Param1, Param2: integer); +function LoadSong(Name: string): boolean; +function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; + + var - {//Absolute Paths - GamePath: string; - SoundPath: string; - SongPath: string; - LogPath: string; - ThemePath: string; + //Absolute Paths + GamePath: string; + SoundPath: string; + SongPath: string; + LogPath: string; + ThemePath: string; ScreenshotsPath: string; CoversPath: string; - LanguagesPath: string; //} + LanguagesPath: string; + PluginPath: string; + PlayListPath: string; SongFile: TextFile; // all procedures in this unit operates on this file FileLineNo: integer; //Line which is readed at Last, for error reporting - {// variables available for all procedures + // variables available for all procedures Base: array[0..1] of integer; - Rel: array[0..1] of integer;//} + Rel: array[0..1] of integer; Mult: integer = 1; MultBPM: integer = 4; implementation -uses TextGL, UIni, UMain, UPliki; +uses TextGL, UIni, UMain; - //Function sets All Absolute Paths eg. for Songs -{procedure InitializePaths; +//-------------------- +// Function sets all Absolute Paths e.g. Song Path and makes sure the Directorys exist +//-------------------- +procedure InitializePaths; +var + Writeable: Boolean; begin GamePath := ExtractFilePath(ParamStr(0)); + SoundPath := GamePath + 'Sounds\'; SongPath := GamePath + 'Songs\'; LogPath := GamePath; @@ -48,11 +59,43 @@ begin ScreenshotsPath := GamePath + 'Screenshots\'; CoversPath := GamePath + 'Covers\'; LanguagesPath := GamePath + 'Languages\'; + PluginPath := GamePath + 'Plugins\'; + PlaylistPath := GamePath + 'Playlists\'; + + //After Setting Paths, make sure that Paths exist + If not DirectoryExists(SoundPath) then + Writeable := ForceDirectories(SoundPath); + + If Writeable And (not DirectoryExists(SongPath)) then + Writeable := ForceDirectories(SongPath); + + If Writeable And (not DirectoryExists(ThemePath)) then + Writeable := ForceDirectories(ThemePath); + + If Writeable And (not DirectoryExists(ScreenshotsPath)) then + Writeable := ForceDirectories(ScreenshotsPath); + + If Writeable And (not DirectoryExists(CoversPath)) then + Writeable := ForceDirectories(CoversPath); + + If Writeable And (not DirectoryExists(LanguagesPath)) then + Writeable := ForceDirectories(LanguagesPath); + + If Writeable And (not DirectoryExists(PluginPath)) then + Writeable := ForceDirectories(PluginPath); + + If Writeable And (not DirectoryExists(PlaylistPath)) then + Writeable := ForceDirectories(PlaylistPath); + + if not Writeable then + Log.LogError('Error: Dir is Readonly'); DecimalSeparator := ','; -end;} +end; - //Clears Song Header values +//-------------------- +// Clears Song Header values +//-------------------- procedure ClearSong(var Song: TSong); begin //Main Information @@ -80,7 +123,9 @@ begin Song.Creator := ''; end; - //Reads Standard TXT Header +//-------------------- +// Reads Standard TXT Header +//-------------------- function ReadTXTHeader(var Song: TSong): boolean; var Line, Identifier, Value: String; @@ -100,7 +145,7 @@ begin end; //Read Lines while Line starts with # - While (Line[1] = '#') do + While (Length(Line) = 0) OR (Line[1] = '#') do begin //Increase Line Number Inc (FileLineNo); @@ -279,9 +324,9 @@ begin break; end; - //End on first empty Line + {//End on first empty Line if (Length(Line) = 0) then - break; + break;} end; //Check if all Required Values are given @@ -302,7 +347,9 @@ begin end; - //Analyse Song File and Read Header +//-------------------- +// Analyse Song File and Read Header +//-------------------- function AnalyseFile(var Song: TSong): boolean; begin Result := False; @@ -331,6 +378,405 @@ Result := False; end;} end; +//-------------------- +// Resets the temporary Sentence Arrays for each Player and some other Variables +//-------------------- +procedure ResetSingTemp; +var + Pet: integer; +begin + SetLength(Czesci, Length(Player)); + SetLength(AktSong.BPM, 0); + for Pet := 0 to High(Player) do begin + SetLength(Czesci[Pet].Czesc, 1); + SetLength(Czesci[Pet].Czesc[0].Nuta, 0); + Czesci[Pet].Czesc[0].Lyric := ''; + Czesci[Pet].Czesc[0].LyricWidth := 0; + Player[pet].Score := 0; + Player[pet].IlNut := 0; + Player[pet].HighNut := -1; + end; + //Reset Path and Filename Values to Prevent Errors in Editor + AktSong.Path := ''; + AktSong.FileName := ''; +end; + +//-------------------- +// Parses Note Infos and save them to Array +//-------------------- +procedure ParseNote(NrCzesci: integer; TypeP: char; StartP, DurationP, NoteP: integer; LyricS: string); +var + Space: boolean; +begin + case Ini.Solmization of + 1: // european + begin + case (NoteP mod 12) of + 0..1: LyricS := ' do '; + 2..3: LyricS := ' re '; + 4: LyricS := ' mi '; + 5..6: LyricS := ' fa '; + 7..8: LyricS := ' sol '; + 9..10: LyricS := ' la '; + 11: LyricS := ' si '; + end; + end; + 2: // japanese + begin + case (NoteP mod 12) of + 0..1: LyricS := ' do '; + 2..3: LyricS := ' re '; + 4: LyricS := ' mi '; + 5..6: LyricS := ' fa '; + 7..8: LyricS := ' so '; + 9..10: LyricS := ' la '; + 11: LyricS := ' shi '; + end; + end; + 3: // american + begin + case (NoteP mod 12) of + 0..1: LyricS := ' do '; + 2..3: LyricS := ' re '; + 4: LyricS := ' mi '; + 5..6: LyricS := ' fa '; + 7..8: LyricS := ' sol '; + 9..10: LyricS := ' la '; + 11: LyricS := ' ti '; + end; + end; + end; // case + + with Czesci[NrCzesci].Czesc[Czesci[NrCzesci].High] do begin + SetLength(Nuta, Length(Nuta) + 1); + IlNut := IlNut + 1; + HighNut := HighNut + 1; + Muzyka.IlNut := Muzyka.IlNut + 1; + + Nuta[HighNut].Start := StartP; + if IlNut = 1 then begin + StartNote := Nuta[HighNut].Start; + if Czesci[NrCzesci].Ilosc = 1 then + Start := -100; +// Start := Nuta[HighNut].Start; + end; + + Nuta[HighNut].Dlugosc := DurationP; + Muzyka.DlugoscNut := Muzyka.DlugoscNut + Nuta[HighNut].Dlugosc; + + // back to the normal system with normal, golden and now freestyle notes + case TypeP of + 'F': Nuta[HighNut].Wartosc := 0; + ':': Nuta[HighNut].Wartosc := 1; + '*': Nuta[HighNut].Wartosc := 2; + end; + + Czesci[NrCzesci].Wartosc := Czesci[NrCzesci].Wartosc + Nuta[HighNut].Dlugosc * Nuta[HighNut].Wartosc; + + Nuta[HighNut].Ton := NoteP; + if Nuta[HighNut].Ton < Base[NrCzesci] then Base[NrCzesci] := Nuta[HighNut].Ton; + Nuta[HighNut].TonGamy := Nuta[HighNut].TonGamy mod 12; + + Nuta[HighNut].Tekst := Copy(LyricS, 2, 100); + Lyric := Lyric + Nuta[HighNut].Tekst; + + if TypeP = 'F' then + Nuta[HighNut].FreeStyle := true; + + Koniec := Nuta[HighNut].Start + Nuta[HighNut].Dlugosc; + end; // with +end; + +//-------------------- +// Called when a new Sentence is found in the TXT File +//-------------------- +procedure NewSentence(NrCzesciP: integer; Param1, Param2: integer); +var +I: Integer; +begin + + // stara czesc //Alter Satz //Update Old Part + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].BaseNote := Base[NrCzesciP]; + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].LyricWidth := glTextWidth(PChar(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Lyric)); + + //Total Notes Patch + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes := 0; + for I := low(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta) to high(Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta) do + begin + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes := Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].TotalNotes + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta[I].Dlugosc * Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Nuta[I].Wartosc; + end; + //Total Notes Patch End + + + // nowa czesc //Neuer Satz //Update New Part + SetLength(Czesci[NrCzesciP].Czesc, Czesci[NrCzesciP].Ilosc + 1); + Czesci[NrCzesciP].High := Czesci[NrCzesciP].High + 1; + Czesci[NrCzesciP].Ilosc := Czesci[NrCzesciP].Ilosc + 1; + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].HighNut := -1; + + if not AktSong.Relative then + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Start := Param1; + + if AktSong.Relative then begin + Czesci[NrCzesciP].Czesc[Czesci[NrCzesciP].High].Start := Param1; + Rel[NrCzesciP] := Rel[NrCzesciP] + Param2; + end; + + Base[NrCzesciP] := 100; // high number +end; +//-------------------- +// Load a Song +//-------------------- +function LoadSong(Name: string): boolean; +var + TempC: char; + Tekst: string; + CP: integer; // Current Player (0 or 1) + Pet: integer; + Both: boolean; + Param1: integer; + Param2: integer; + Param3: integer; + ParamS: string; + I: Integer; +begin + Result := false; + + if not FileExists(Name) then begin + Log.LogError('File not found: "' + Name + '"', 'WczytajCzesci'); + exit; + end; + + try + MultBPM := 4; // 4 - mnoznik dla czasu nut + Mult := 1; // 4 - dokladnosc pomiaru nut + Base[0] := 100; // high number +// Base[1] := 100; // high number + Czesci[0].Wartosc := 0; +// Czesci[1].Wartosc := 0; // here was the error in 0.3.2 + AktSong.Relative := false; + + Rel[0] := 0; +// Rel[1] := 0; + CP := 0; + Both := false; + if Length(Player) = 2 then Both := true; + + FileMode := fmOpenRead; + AssignFile(SongFile, Name); + Reset(SongFile); + + //Clear old Song Header + ClearSong(AktSong); + + if (AktSong.Path = '') then + AktSong.Path := ExtractFilePath(Name); + + if (AktSong.FileName = '') then + AktSong.Filename := ExtractFileName(Name); + //Read Header + Result := ReadTxTHeader(AktSong); + if not Result then + begin + Log.LogError('Error Loading SongHeader, abort Song Loading'); + Exit; + end; + + Result := False; + + Reset(SongFile); + FileLineNo := 0; + //Search for Note Begining + repeat + ReadLn(SongFile, Tekst); + Inc(FileLineNo); + + if (EoF(SongFile)) then + begin //Song File Corrupted - No Notes + Log.LogError('Could not load txt File, no Notes found: ' + Name); + Result := False; + Exit; + end; + Read(SongFile, TempC); + until ((TempC = ':') or (TempC = 'F') or (TempC = '*')); + + SetLength(Czesci, 2); + for Pet := 0 to High(Czesci) do begin + SetLength(Czesci[Pet].Czesc, 1); + Czesci[Pet].High := 0; + Czesci[Pet].Ilosc := 1; + Czesci[Pet].Akt := 0; + Czesci[Pet].Resolution := AktSong.Resolution; + Czesci[Pet].NotesGAP := AktSong.NotesGAP; + Czesci[Pet].Czesc[0].IlNut := 0; + Czesci[Pet].Czesc[0].HighNut := -1; + end; + +// TempC := ':'; +// TempC := Tekst[1]; // read from backup variable, don't use default ':' value + + while (TempC <> 'E') AND (not EOF(SongFile)) do begin + Inc(FileLineNo); + if (TempC = ':') or (TempC = '*') or (TempC = 'F') then begin + // wczytuje nute + Read(SongFile, Param1); + Read(SongFile, Param2); + Read(SongFile, Param3); + Read(SongFile, ParamS); + + // dodaje nute + if not Both then + // P1 + ParseNote(0, TempC, (Param1+Rel[0]) * Mult, Param2 * Mult, Param3, ParamS) + else begin + // P1 + P2 + ParseNote(0, TempC, (Param1+Rel[0]) * Mult, Param2 * Mult, Param3, ParamS); + ParseNote(1, TempC, (Param1+Rel[1]) * Mult, Param2 * Mult, Param3, ParamS); + end; + end; // if + if TempC = '-' then begin + // reads sentence + Read(SongFile, Param1); + if AktSong.Relative then Read(SongFile, Param2); // read one more data for relative system + + // new sentence + if not Both then + // P1 + NewSentence(0, (Param1 + Rel[0]) * Mult, Param2) + else begin + // P1 + P2 + NewSentence(0, (Param1 + Rel[0]) * Mult, Param2); + NewSentence(1, (Param1 + Rel[1]) * Mult, Param2); + end; + + end; // if + + if TempC = 'B' then begin + SetLength(AktSong.BPM, Length(AktSong.BPM) + 1); + Read(SongFile, AktSong.BPM[High(AktSong.BPM)].StartBeat); + AktSong.BPM[High(AktSong.BPM)].StartBeat := AktSong.BPM[High(AktSong.BPM)].StartBeat + Rel[0]; + + Read(SongFile, Tekst); + AktSong.BPM[High(AktSong.BPM)].BPM := StrToFloat(Tekst); + AktSong.BPM[High(AktSong.BPM)].BPM := AktSong.BPM[High(AktSong.BPM)].BPM * Mult * MultBPM; + end; + + + if not Both then begin + Czesci[CP].Czesc[Czesci[CP].High].BaseNote := Base[CP]; + Czesci[CP].Czesc[Czesci[CP].High].LyricWidth := glTextWidth(PChar(Czesci[CP].Czesc[Czesci[CP].High].Lyric)); + //Total Notes Patch + Czesci[CP].Czesc[Czesci[CP].High].TotalNotes := 0; + for I := low(Czesci[CP].Czesc[Czesci[CP].High].Nuta) to high(Czesci[CP].Czesc[Czesci[CP].High].Nuta) do + begin + Czesci[CP].Czesc[Czesci[CP].High].TotalNotes := Czesci[CP].Czesc[Czesci[CP].High].TotalNotes + Czesci[CP].Czesc[Czesci[CP].High].Nuta[I].Dlugosc * Czesci[CP].Czesc[Czesci[CP].High].Nuta[I].Wartosc; + end; + //Total Notes Patch End + end else begin + for Pet := 0 to High(Czesci) do begin + Czesci[Pet].Czesc[Czesci[Pet].High].BaseNote := Base[Pet]; + Czesci[Pet].Czesc[Czesci[Pet].High].LyricWidth := glTextWidth(PChar(Czesci[Pet].Czesc[Czesci[Pet].High].Lyric)); + //Total Notes Patch + Czesci[Pet].Czesc[Czesci[Pet].High].TotalNotes := 0; + for I := low(Czesci[Pet].Czesc[Czesci[Pet].High].Nuta) to high(Czesci[Pet].Czesc[Czesci[Pet].High].Nuta) do + begin + Czesci[Pet].Czesc[Czesci[Pet].High].TotalNotes := Czesci[Pet].Czesc[Czesci[Pet].High].TotalNotes + Czesci[Pet].Czesc[Czesci[Pet].High].Nuta[I].Dlugosc * Czesci[Pet].Czesc[Czesci[Pet].High].Nuta[I].Wartosc; + end; + //Total Notes Patch End + end; + end; + + Read(SongFile, TempC); + end; // while} + + CloseFile(SongFile); + except + Log.LogError('Error Loading File: "' + Name + '" in Line ' + inttostr(FileLineNo)); + exit; + end; + + Result := true; +end; + +//-------------------- +// Saves a Song +//-------------------- +function SaveSong(Song: TSong; Czesc: TCzesci; Name: string; Relative: boolean): boolean; +var + C: integer; + N: integer; + S: string; + B: integer; + RelativeSubTime: integer; + NoteState: String; + +begin +// Relative := true; // override (idea - use shift+S to save with relative) + AssignFile(SongFile, Name); + Rewrite(SongFile); + + WriteLn(SongFile, '#TITLE:' + Song.Title + ''); + WriteLn(SongFile, '#ARTIST:' + Song.Artist); + + if Song.Creator <> '' then WriteLn(SongFile, '#CREATOR:' + Song.Creator); + if Song.Edition <> 'Unknown' then WriteLn(SongFile, '#EDITION:' + Song.Edition); + if Song.Genre <> 'Unknown' then WriteLn(SongFile, '#GENRE:' + Song.Genre); + if Song.Language <> 'Unknown' then WriteLn(SongFile, '#LANGUAGE:' + Song.Language); + if Song.Cover <> '' then WriteLn(SongFile, '#COVER:' + Song.Cover); + + WriteLn(SongFile, '#MP3:' + Song.Mp3); + + if Song.Background <> '' then WriteLn(SongFile, '#BACKGROUND:' + Song.Background); + if Song.Video <> '' then WriteLn(SongFile, '#VIDEO:' + Song.Video); + if Song.VideoGAP <> 0 then WriteLn(SongFile, '#VIDEOGAP:' + FloatToStr(Song.VideoGAP)); + if Song.Resolution <> 4 then WriteLn(SongFile, '#RESOLUTION:' + IntToStr(Song.Resolution)); + if Song.NotesGAP <> 0 then WriteLn(SongFile, '#NOTESGAP:' + IntToStr(Song.NotesGAP)); + if Song.Start <> 0 then WriteLn(SongFile, '#START:' + FloatToStr(Song.Start)); + if Song.Finish <> 0 then WriteLn(SongFile, '#END:' + IntToStr(Song.Finish)); + if Relative then WriteLn(SongFile, '#RELATIVE:yes'); + + WriteLn(SongFile, '#BPM:' + FloatToStr(Song.BPM[0].BPM / 4)); + WriteLn(SongFile, '#GAP:' + FloatToStr(Song.GAP)); + + RelativeSubTime := 0; + for B := 1 to High(AktSong.BPM) do + WriteLn(SongFile, 'B ' + FloatToStr(AktSong.BPM[B].StartBeat) + ' ' + FloatToStr(AktSong.BPM[B].BPM/4)); + + for C := 0 to Czesc.High do begin + for N := 0 to Czesc.Czesc[C].HighNut do begin + with Czesc.Czesc[C].Nuta[N] do begin + + + //Golden + Freestyle Note Patch + case Czesc.Czesc[C].Nuta[N].Wartosc of + 0: NoteState := 'F '; + 1: NoteState := ': '; + 2: NoteState := '* '; + end; // case + S := NoteState + IntToStr(Start-RelativeSubTime) + ' ' + IntToStr(Dlugosc) + ' ' + IntToStr(Ton) + ' ' + Tekst; + + + WriteLn(SongFile, S); + end; // with + end; // N + + if C < Czesc.High then begin // don't write end of last sentence + if not Relative then + S := '- ' + IntToStr(Czesc.Czesc[C+1].Start) + else begin + S := '- ' + IntToStr(Czesc.Czesc[C+1].Start - RelativeSubTime) + + ' ' + IntToStr(Czesc.Czesc[C+1].Start - RelativeSubTime); + RelativeSubTime := Czesc.Czesc[C+1].Start; + end; + WriteLn(SongFile, S); + end; + + end; // C + + + WriteLn(SongFile, 'E'); + CloseFile(SongFile); +end; end. \ No newline at end of file diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index cafbc912..f12e3832 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -147,7 +147,7 @@ const IChannel: array[0..6] of string = ('0', '1', '2', '3', '4', '5', '6'); implementation -uses UPliki, SDL, ULanguage, USkins, URecord; +uses UFiles, SDL, ULanguage, USkins, URecord; procedure TIni.Load; var diff --git a/Game/Code/Classes/ULanguage.pas b/Game/Code/Classes/ULanguage.pas index b911b90a..4649c089 100644 --- a/Game/Code/Classes/ULanguage.pas +++ b/Game/Code/Classes/ULanguage.pas @@ -36,7 +36,7 @@ var implementation -uses UPliki, UIni, IniFiles, Classes, SysUtils, Windows, ULog; +uses UFiles, UIni, IniFiles, Classes, SysUtils, Windows, ULog; //---------- //Create - Construct Class then LoadList + Standard Language + Set Standard Implode Glues diff --git a/Game/Code/Classes/ULog.pas b/Game/Code/Classes/ULog.pas index 0b492cb3..59e25954 100644 --- a/Game/Code/Classes/ULog.pas +++ b/Game/Code/Classes/ULog.pas @@ -47,7 +47,7 @@ var Log: TLog; implementation -uses UPliki, SysUtils, DateUtils, URecord, UTime, UIni, Windows; +uses UFiles, SysUtils, DateUtils, URecord, UTime, UIni, Windows; destructor TLog.Free; begin diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index 0e4e4ddd..6e997c11 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -199,7 +199,7 @@ const ModeStr: array[TMPModes] of string = ('Not ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open'); implementation -uses UGraphic, URecord, UPliki, UIni, UMain, UThemes; +uses UGraphic, URecord, UFiles, UIni, UMain, UThemes; procedure InitializeSound; begin diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas index 15e17047..67460ed7 100644 --- a/Game/Code/Classes/UPlaylist.pas +++ b/Game/Code/Classes/UPlaylist.pas @@ -58,7 +58,7 @@ type implementation -uses USongs, ULog, UPliki, UGraphic, UThemes, SysUtils; +uses USongs, ULog, UFiles, UGraphic, UThemes, SysUtils; //---------- //Create - Construct Class - Dummy for now diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index 4b49127c..edf5b6df 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -96,7 +96,7 @@ var implementation -uses UPliki, UIni, UFiles, StrUtils; +uses UFiles, UIni, StrUtils; procedure TSongs.LoadSongList; begin diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index d1d3038d..abaedfa8 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -42,7 +42,7 @@ var implementation -uses UGraphic, UTime, Graphics, Jpeg, UPliki, UTexture, UIni; +uses UGraphic, UTime, Graphics, Jpeg, UFiles, UTexture, UIni; constructor TDisplay.Create; var i: integer; @@ -137,8 +137,8 @@ begin NextScreenWithCheck := NIL; CheckOk:=False; end - else - BlackScreen:=True; // end of game - fade to black before exit + else + BlackScreen:=True; // end of game - fade to black before exit //end popup hack // ActualScreen.SetAnimationProgress(1); diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index 0411c7b6..98cdc417 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -3,7 +3,7 @@ unit UScreenCredits; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes, ULCD, ULight; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes, ULCD, ULight; type TScreenCredits = class(TMenu) diff --git a/Game/Code/Screens/UScreenEditConvert.pas b/Game/Code/Screens/UScreenEditConvert.pas index 62a50b3e..92e8544c 100644 --- a/Game/Code/Screens/UScreenEditConvert.pas +++ b/Game/Code/Screens/UScreenEditConvert.pas @@ -66,7 +66,7 @@ type end; implementation -uses UGraphic, SysUtils, UDrawTexture, TextGL, UPliki, UMain, UIni, OpenGL, USkins; +uses UGraphic, SysUtils, UDrawTexture, TextGL, UFiles, UMain, UIni, OpenGL, USkins; function TScreenEditConvert.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; var diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas index f3e21fd0..35d7840f 100644 --- a/Game/Code/Screens/UScreenEditHeader.pas +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -44,7 +44,7 @@ type implementation -uses UGraphic, UMusic, SysUtils, UPliki, USkins; +uses UGraphic, UMusic, SysUtils, UFiles, USkins; function TScreenEditHeader.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; var diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index a665ba1c..a0adef2c 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -2,12 +2,15 @@ unit UScreenEditSub; interface -uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, UMenuText, +uses UMenu, UMusic, SDL, SysUtils, UFiles, UTime, USongs, UIni, ULog, USmpeg, UTexture, UMenuText, ULyrics, Math, OpenGL12, UThemes, MidiOut; type TScreenEditSub = class(TMenu) private + //Variable is True if no SOng is loaded + Error: Boolean; + TextNote: integer; TextSentence: integer; TextTitle: integer; @@ -71,7 +74,7 @@ type end; implementation -uses UGraphic, UDraw, UMain, USkins; +uses UGraphic, UDraw, UMain, USkins, ULanguage; // Method for input parsing. If False is returned, GetNextWindow // should be checked to know the next window to load; @@ -190,17 +193,15 @@ begin SDLK_S: begin - if SDL_ModState = 0 then - // Save Song - SaveSong(AktSong, Czesci[0], Path + FileName, false); - + // Save Song if SDL_ModState = KMOD_LSHIFT then - // Save Song - SaveSong(AktSong, Czesci[0], Path + FileName, true); + SaveSong(AktSong, Czesci[0], Path + FileName, true) + else + SaveSong(AktSong, Czesci[0], Path + FileName, false); - if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL + KMOD_LALT then + {if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL + KMOD_LALT then // Save Song - SaveSongDebug(AktSong, Czesci[0], 'C:\song.asm', false); + SaveSongDebug(AktSong, Czesci[0], 'C:\song.asm', false);} end; @@ -1091,20 +1092,26 @@ procedure TScreenEditSub.onShow; begin Log.LogStatus('Initializing', 'TEditScreen.onShow'); - MidiOut := TMidiOutput.Create(nil); - if Ini.Debug = 1 then - MidiOut.ProductName := 'Microsoft GS Wavetable SW Synth'; // for my kxproject without midi table - MidiOut.Open; - - //MidiOut.SetVolume(65535, 65535); - - + try + ResetSingTemp; + Error := not LoadSong(Path + FileName); + except + Error := True; + end; - CzyscNuty; - if WczytajCzesci(Path + FileName) = false then -// if WczytajCzesci(SongPath + 'Zapis.txt') = false then - Text[TextTitle].Text := 'Error loading file' + if Error then + begin + //Error Loading Song -> Go back to Song Screen and Show some Error Message + FadeTo(@ScreenSong); + ScreenPopupError.ShowPopup (Language.Translate('ERROR_CORRUPT_SONG')); + Exit; + end else begin + MidiOut := TMidiOutput.Create(nil); + if Ini.Debug = 1 then + MidiOut.ProductName := 'Microsoft GS Wavetable SW Synth'; // for my kxproject without midi table + MidiOut.Open; + Text[TextTitle].Text := AktSong.Title; Text[TextArtist].Text := AktSong.Artist; Text[TextMp3].Text := AktSong.Mp3; @@ -1201,7 +1208,7 @@ begin end; end; // click end; // if PlaySentence - + Text[TextSentence].Text := IntToStr(Czesci[0].Akt + 1) + ' / ' + IntToStr(Czesci[0].Ilosc); Text[TextNote].Text := IntToStr(AktNuta + 1) + ' / ' + IntToStr(Czesci[0].Czesc[Czesci[0].Akt].IlNut); @@ -1210,23 +1217,31 @@ begin Text[TextBPM].Text := FloatToStr(AktSong.BPM[0].BPM / 4); Text[TextGAP].Text := FloatToStr(AktSong.GAP); - // Note info - Text[TextNStart].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); - Text[TextNDlugosc].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); - Text[TextNTon].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton) + ' ( ' + GetNoteName(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton) + ' )'; - Text[TextNText].Text := Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst; + //Error reading Variables when no Song is loaded + if not Error then + begin + // Note info + Text[TextNStart].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Start); + Text[TextNDlugosc].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Dlugosc); + Text[TextNTon].Text := IntToStr(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton) + ' ( ' + GetNoteName(Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Ton) + ' )'; + Text[TextNText].Text := Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Tekst; + end; // Text Edit Mode if TextEditMode then - Text[TextNText].Text := Text[TextNText].Text + '|'; + Text[TextNText].Text := Text[TextNText].Text + '|'; // draw static menu inherited Draw; // draw notes SingDrawNoteLines(20, 300, 780, 15); - SingDrawBeatDelimeters(40, 300, 760, 0); - EditDrawCzesc(40, 405, 760, 0, 15); + //Error Drawing when no Song is loaded + if not Error then + begin + SingDrawBeatDelimeters(40, 300, 760, 0); + EditDrawCzesc(40, 405, 760, 0, 15); + end; // draw text Lyric.Draw; @@ -1237,7 +1252,7 @@ procedure TScreenEditSub.onHide; begin MidiOut.Close; MidiOut.Free; - Music.SetVolume(100); + //Music.SetVolume(100); end; function TScreenEditSub.GetNoteName(Note: Integer): String; diff --git a/Game/Code/Screens/UScreenLevel.pas b/Game/Code/Screens/UScreenLevel.pas index a1d8fa33..fc343042 100644 --- a/Game/Code/Screens/UScreenLevel.pas +++ b/Game/Code/Screens/UScreenLevel.pas @@ -3,7 +3,7 @@ unit UScreenLevel; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenLevel = class(TMenu) diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 47a79496..085f253d 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -3,7 +3,7 @@ unit UScreenMain; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes, ULCD, ULight; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes, ULCD, ULight; type TScreenMain = class(TMenu) diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index 9db7947c..e2a80687 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -3,7 +3,7 @@ unit UScreenName; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenName = class(TMenu) diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index 3a78b3e2..f5e121f9 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -2,7 +2,7 @@ unit UScreenOpen; interface -uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, UMenuText, +uses UMenu, UMusic, SDL, SysUtils, UFiles, UTime, USongs, UIni, ULog, USmpeg, UTexture, UMenuText, ULyrics, Math, OpenGL12, UThemes; type diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index f0229d8c..02d42568 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -3,7 +3,7 @@ unit UScreenOptions; interface uses - UMenu, SDL, SysUtils, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, SysUtils, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptions = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index 3e3f2da7..a28945c1 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -3,7 +3,7 @@ unit UScreenOptionsAdvanced; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptionsAdvanced = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index 540931af..8712decc 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -3,7 +3,7 @@ unit UScreenOptionsGame; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes, USongs; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes, USongs; type TScreenOptionsGame = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index b36bb7d3..c0641fc2 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -3,7 +3,7 @@ unit UScreenOptionsGraphics; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptionsGraphics = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index f60c9765..f4044933 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -3,7 +3,7 @@ unit UScreenOptionsLyrics; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptionsLyrics = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index c474bd7f..b005492a 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -3,7 +3,7 @@ unit UScreenOptionsRecord; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptionsRecord = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index d4ab27d2..c99f1ef6 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -3,7 +3,7 @@ unit UScreenOptionsSound; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptionsSound = class(TMenu) diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index 580f9c4d..b73693c1 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -3,7 +3,7 @@ unit UScreenOptionsThemes; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, UIni, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; type TScreenOptionsThemes = class(TMenu) diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index c914ee4b..f084ee10 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -3,7 +3,7 @@ unit UScreenPartyNewRound; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenPartyNewRound = class(TMenu) diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index 7f3b1209..aa8681d0 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -3,7 +3,7 @@ unit UScreenPartyOptions; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenPartyOptions = class(TMenu) diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index d6e13d65..f6bcb0b7 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -3,7 +3,7 @@ unit UScreenPartyPlayer; Interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenPartyPlayer = class(TMenu) diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index 9b71eb9a..2a789e42 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -3,7 +3,7 @@ unit UScreenPopup; interface uses - UMenu, SDL, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UMusic, UFiles, SysUtils, UThemes; type TScreenPopupCheck = class(TMenu) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index b49e0add..cdce5984 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -2,7 +2,7 @@ unit UScreenSing; interface -uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, +uses UMenu, UMusic, SDL, SysUtils, UFiles, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, TextGL, OpenGL12, BASS, UThemes, ULCD, UGraphicClasses; type @@ -321,11 +321,29 @@ begin Text[TextP3RScore].Visible := V3R; // load notes - CzyscNuty; + ResetSingTemp; // Log.LogWarning(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName, '!!!'); AktSong := CatSongs.Song[CatSongs.Selected]; - - WczytajCzesci(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName); + try + if not LoadSong(CatSongs.Song[CatSongs.Selected].Path + CatSongs.Song[CatSongs.Selected].FileName) then + begin + //Error Loading Song -> Go back to Song Screen and Show some Error Message + FadeTo(@ScreenSong); + //Select New Song in Party Mode + if ScreenSong.Mode = 1 then + ScreenSong.SelectRandomSong; + ScreenPopupError.ShowPopup (Language.Translate('ERROR_CORRUPT_SONG')); + Exit; + end; + except + //Error Loading Song -> Go back to Song Screen and Show some Error Message + FadeTo(@ScreenSong); + //Select New Song in Party Mode + if ScreenSong.Mode = 1 then + ScreenSong.SelectRandomSong; + ScreenPopupError.ShowPopup (Language.Translate('ERROR_CORRUPT_SONG')); + Exit; + end; AktSong.Path := CatSongs.Song[CatSongs.Selected].Path; // AktSong.GAP := AktSong.GAP + 40 {4096 = 100ms for buffer} + 20 {microphone} + 60000 / AktSong.BPM[0].BPM / 2; // temporary until UMain will be fixed diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index 484d7d56..93ede980 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -2,7 +2,7 @@ unit UScreenSingModi; interface -uses UMenu, UMusic, SDL, SysUtils, UPliki, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, +uses UMenu, UMusic, SDL, SysUtils, UFiles, UTime, USongs, UIni, ULog, USmpeg, UTexture, ULyrics, TextGL, OpenGL12, BASS, UThemes, ULCD, UScreenSing, ModiSDK; type diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 2ce6b6df..33a6752d 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -3,7 +3,7 @@ unit UScreenSong; interface uses - UMenu, SDL, UMusic, UPliki, UTime, UDisplay, USongs, SysUtils, ULog, UThemes, UTexture, ULanguage, + UMenu, SDL, UMusic, UFiles, UTime, UDisplay, USongs, SysUtils, ULog, UThemes, UTexture, ULanguage, ULCD, ULight, UIni; type @@ -1227,7 +1227,7 @@ end; procedure TScreenSong.onHide; begin //When hide then Stop Music (For Party Mode Popup on Exit) - if (Display.NextScreen <> @ScreenSing) and (Display.NextScreen <> @ScreenSingModi) then + if (Display.NextScreen <> @ScreenSing) and (Display.NextScreen <> @ScreenSingModi) and (Music <> nil) then Music.Stop; end; diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 44c12f51..79e851ab 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -3,7 +3,7 @@ unit UScreenSongJumpto; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenSongJumpto = class(TMenu) diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 537536bb..2469240f 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -3,7 +3,7 @@ unit UScreenSongMenu; interface uses - UMenu, SDL, UDisplay, UMusic, UPliki, SysUtils, UThemes; + UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; type TScreenSongMenu = class(TMenu) diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 5f19c1d4..b9687292 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -26,7 +26,7 @@ uses UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', - UPliki in 'Classes\UPliki.pas', + //UPliki in 'Classes\UPliki.pas', ULanguage in 'Classes\ULanguage.pas', UMain in 'Classes\UMain.pas', UDraw in 'Classes\UDraw.pas', @@ -107,7 +107,7 @@ uses SysUtils; const - Version = 'UltraStar Deluxe V 0.96 Beta'; + Version = 'UltraStar Deluxe V 0.98 Beta'; var WndTitle: string; diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 2f39d2f4..c392edc0 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -381,18 +381,18 @@ Size =7 Align =0 Text= -[SongStaticCat] -Tex = -X =12 -Y =7 -W =85 -H =85 -Color=White -Type=Plain -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 +#[SongStaticCat] +#Tex = +#X =12 +#Y =7 +#W =85 +#H =85 +#Color=White +#Type=Plain +#TexX1=0 +#TexY1=0 +#TexX2=1 +#TexY2=1 [Sing] Texts =1 -- cgit v1.2.3 From 76e40d7c681510c5f8995eae239c807a17f42f82 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 16 May 2007 20:27:03 +0000 Subject: New Style for Error and Check Popup Maybe this looks better then the old one git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@198 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Autum.ini | 4 ++ Skins/Deluxe/Blue.ini | 3 ++ Skins/Deluxe/Summer.ini | 3 ++ Skins/Deluxe/Winter.ini | 5 +++ Skins/Deluxe/[icon]error.jpg | Bin 0 -> 819 bytes Skins/Deluxe/[icon]question.jpg | Bin 0 -> 824 bytes Themes/Deluxe.ini | 90 ++++++++++++++++++++++++++++++++++------ 7 files changed, 93 insertions(+), 12 deletions(-) create mode 100644 Skins/Deluxe/[icon]error.jpg create mode 100644 Skins/Deluxe/[icon]question.jpg diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini index e225c612..d7d8c7b9 100644 --- a/Skins/Deluxe/Autum.ini +++ b/Skins/Deluxe/Autum.ini @@ -35,6 +35,9 @@ ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +IconError = [icon]error.jpg +IconQuestion = [icon]question.jpg + # # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg @@ -127,6 +130,7 @@ JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 1dc9f2c5..d024bd8c 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -35,6 +35,8 @@ ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +IconError = [icon]error.jpg +IconQuestion = [icon]question.jpg # # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg @@ -127,6 +129,7 @@ JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index 3ad90e12..343f015d 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -35,6 +35,8 @@ ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +IconError = [icon]error.jpg +IconQuestion = [icon]question.jpg # # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg @@ -127,6 +129,7 @@ JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg # # # N O T E S # # # diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index 2404f889..b1999218 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -35,6 +35,9 @@ ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +IconError = [icon]error.jpg +IconQuestion = [icon]question.jpg + # # # S O N G S E L E C E T # # # SongSelection1 = [main]songSelection1.jpg SongSelection2 = [main]songSelection2.jpg @@ -125,6 +128,8 @@ JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg + # # # N O T E S # # # GrayLeft = [sing]notesLeft.bmp diff --git a/Skins/Deluxe/[icon]error.jpg b/Skins/Deluxe/[icon]error.jpg new file mode 100644 index 00000000..8abddff9 Binary files /dev/null and b/Skins/Deluxe/[icon]error.jpg differ diff --git a/Skins/Deluxe/[icon]question.jpg b/Skins/Deluxe/[icon]question.jpg new file mode 100644 index 00000000..43471452 Binary files /dev/null and b/Skins/Deluxe/[icon]question.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index a355fa86..987bf070 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -7628,8 +7628,8 @@ Y = 310 W = 100 H = 25 Tex =Rectangle -Color = GrayLight -DColor = Gray +Color = Gray +DColor = GrayPopup Type=Font Black Texts=1 Z = 1 @@ -7651,8 +7651,8 @@ Y = 310 W = 100 H = 25 Tex =Rectangle -Color = GrayLight -DColor = Gray +Color = Gray +DColor = GrayPopup Type=Font Black Texts=1 Z = 1 @@ -7670,25 +7670,58 @@ Z=1 [CheckPopupText] X =400 -Y =165 +Y =180 +W =300 Color=White Font =0 -Size =14 -Text=blabla +Size =12 +Text=error text Align=1 Z=1 +[CheckPopupText1] +X =282 +Y =147 +Color=White +Font =0 +Size =10 +Text=MSG_QUESTION_TITLE +Align=0 +Z=1 + [CheckPopupStatic1] Tex =PopUpBG X =250 Y =150 W =300 H =200 -Z =1 +Z =0.98 Int=1 Color =GrayPopup Type=Font Black +[CheckPopupStatic2] +Tex =PopUpFG +X =250 +Y =150 +W =300 +H =200 +Z =0.99 +Int=1 +Color =White +Type=Font Black + +[CheckPopupStatic3] +Tex =IconQuestion +X =255 +Y =151 +W =23 +H =23 +Z =0.99 +Int=1 +Color =White +Type=Font Black + [ErrorPopup] Texts=1 Statics=1 @@ -7699,8 +7732,8 @@ Y = 310 W = 100 H = 25 Tex =Rectangle -Color = GrayLight -DColor = Gray +Color = Gray +DColor = GrayPopup Type=Font Black Texts=1 Z = 1 @@ -7718,14 +7751,25 @@ Z=1 [ErrorPopupText] X =400 -Y =155 +Y =180 +W =300 Color=White Font =0 -Size =14 +Size =12 Text=error text Align=1 Z=1 +[ErrorPopupText1] +X =282 +Y =148 +Color=White +Font =0 +Size =10 +Text=MSG_ERROR_TITLE +Align=0 +Z=1 + [ErrorPopupStatic1] Tex =PopUpBG X =250 @@ -7735,4 +7779,26 @@ H =200 Z =0.98 Int=1 Color =GrayPopup +Type=Font Black + +[ErrorPopupStatic2] +Tex =PopUpFG +X =250 +Y =150 +W =300 +H =200 +Z =0.99 +Int=1 +Color =White +Type=Font Black + +[ErrorPopupStatic3] +Tex =IconError +X =255 +Y =151 +W =23 +H =23 +Z =0.99 +Int=1 +Color =White Type=Font Black \ No newline at end of file -- cgit v1.2.3 From 61ea2e22eb108000801b60f2daaf9095fa894d2e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 16 May 2007 20:28:33 +0000 Subject: Some missing Files from last commit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@199 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[menu]PopUpBg.JPG | Bin 2012 -> 2676 bytes Skins/Deluxe/[menu]PopUpFg.JPG | Bin 0 -> 3241 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Deluxe/[menu]PopUpFg.JPG diff --git a/Skins/Deluxe/[menu]PopUpBg.JPG b/Skins/Deluxe/[menu]PopUpBg.JPG index 79808600..141d740a 100644 Binary files a/Skins/Deluxe/[menu]PopUpBg.JPG and b/Skins/Deluxe/[menu]PopUpBg.JPG differ diff --git a/Skins/Deluxe/[menu]PopUpFg.JPG b/Skins/Deluxe/[menu]PopUpFg.JPG new file mode 100644 index 00000000..1bea7390 Binary files /dev/null and b/Skins/Deluxe/[menu]PopUpFg.JPG differ -- cgit v1.2.3 From daec13789113637bd806cc2a00d8c97d5b38c7ef Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 16 May 2007 20:32:01 +0000 Subject: New Language Entrys for changed Popup Messages added git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@200 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 11 +++++++---- Languages/German.ini | 11 +++++++---- Languages/readme.txt | 11 +++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index f373ce7e..f0c5bc4d 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -278,7 +278,10 @@ STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung -MSG_QUIT_USDX=Really leave\n\nUltraStar? -MSG_END_PARTY=Really end\n\nParty Mode? -ERROR_NO_SONGS=Error: \n No Songs \n loaded -ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Question +MSG_QUIT_USDX=Really leave \n\n UltraStar? +MSG_END_PARTY=Really end \n\n Party Mode? +ERROR_NO_SONGS=No Songs \n\n loaded +ERROR_NO_PLUGINS=No Plugins \n\n loaded +ERROR_CORRUPT_SONG=Song could not be \n\n loaded. \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index b26b82ba..5ec57e48 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -278,7 +278,10 @@ STAT_DESC_BANDS=Beliebteste Bands STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d -MSG_QUIT_USDX=UltraStar\n\nwirklich\n\nverlassen? -MSG_END_PARTY=Party Modus\n\nbeenden? -ERROR_NO_SONGS=Fehler: \n Keine Songs \n vorhanden -ERROR_NO_PLUGINS=Fehler: \n Keine Plugins \n vorhanden \ No newline at end of file +MSG_ERROR_TITLE=Fehler +MSG_QUESTION_TITLE=Frage +MSG_QUIT_USDX=UltraStar \n\n wirklich\n\nverlassen? +MSG_END_PARTY=Party Modus \n\n beenden? +ERROR_NO_SONGS=Keine Songs \n\n vorhanden. +ERROR_NO_PLUGINS=Keine Plugins \n\n vorhanden. +ERROR_CORRUPT_SONG=Song konnte nicht \n\n geladen werden. \ No newline at end of file diff --git a/Languages/readme.txt b/Languages/readme.txt index eebc9521..37787c2f 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -178,7 +178,10 @@ STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung #Messages for Popup Message Boxes -MSG_QUIT_USDX=Really leave\n\nUltraStar? -MSG_END_PARTY=Really end\n\nParty Mode? -ERROR_NO_SONGS=Error: \n No Songs \n loaded -ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Question +MSG_QUIT_USDX=Really leave \n\n UltraStar? +MSG_END_PARTY=Really end \n\n Party Mode? +ERROR_NO_SONGS=No Songs \n\n loaded +ERROR_NO_PLUGINS=No Plugins \n\n loaded +ERROR_CORRUPT_SONG=Song could not be \n\n loaded. \ No newline at end of file -- cgit v1.2.3 From 955e54f098cf8c282fdf72f3bca5f87c1db79df6 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 16 May 2007 20:59:37 +0000 Subject: Fixed a Bug in SongScreen that causes Playlist and Search is unclosable when Tabs=Off git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@201 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 33a6752d..48c6597a 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -292,14 +292,31 @@ begin end else begin - //On Escape goto Cat-List Hack End - Music.Stop; - Music.PlayBack; -// FadeTo(@ScreenLevel); - FadeTo(@ScreenMain); + //On Escape goto Cat-List Hack End + //Tabs off and in Search or Playlist -> Go back to Song view + if (CatSongs.CatNumShow < -1) then + begin + //Atm: Set Empty Filter + CatSongs.SetFilter('', 0); + + //Show Cat in Top Left Mod + HideCatTL; + Interaction := 0; + + //Show Wrong Song when Tabs on Fix + SelectNext; + FixSelected; + + ChangeMusic; + end + else + begin + Music.Stop; + Music.PlayBack; + + FadeTo(@ScreenMain); + end; -// Music.Open(Skin.SkinPath + 'Menu Music 3.mp3'); -// Music.Play; end; end //When in party Mode then Ask before Close -- cgit v1.2.3 From fb785ffee0bc3e1db1022a2c8286f5b9f8944b37 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 17 May 2007 01:10:39 +0000 Subject: Added: New Options/Advanced item "auto party-menu": Switches automatic popup-menu in party-mode on/off. "on" is better usability for joypad, "off" for keyboard. Changed: Keys in Party Song Selection, "m" is popup-menu and "enter" direkt to singscreen. Added: new Statics and Texts to UScreenSong, 2 sets, one for "normal" the other for party-mode. Added: dismissed sound for party-mode. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@202 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UIni.pas | 9 + Game/Code/Classes/UThemes.pas | 71 ++++- Game/Code/Screens/UScreenOptionsAdvanced.pas | 7 +- Game/Code/Screens/UScreenSong.pas | 178 ++++++++++- Game/Sounds/dismissed.mp3 | Bin 0 -> 5433 bytes Languages/English.ini | 17 +- Languages/German.ini | 17 +- Languages/readme.txt | 14 +- Skins/Deluxe/Autum.ini | 1 + Skins/Deluxe/Blue.ini | 1 + Skins/Deluxe/Summer.ini | 1 + Skins/Deluxe/Winter.ini | 1 + Skins/Deluxe/[button]13.jpg | Bin 0 -> 4923 bytes Skins/Deluxe/x_[icon]stats.jpg | Bin 1741 -> 0 bytes Themes/Deluxe.ini | 452 ++++++++++++++++++++------- 15 files changed, 616 insertions(+), 153 deletions(-) create mode 100644 Game/Sounds/dismissed.mp3 create mode 100644 Skins/Deluxe/[button]13.jpg delete mode 100644 Skins/Deluxe/x_[icon]stats.jpg diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index f12e3832..ca7afe9a 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -63,6 +63,7 @@ type AskbeforeDel: integer; OnSongClick: integer; LineBonus: integer; + PartyPopup: integer; // Controller Joypad: integer; @@ -140,6 +141,7 @@ const 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'); IJoypad: array[0..1] of string = ('Off', 'On'); ILPT: array[0..2] of string = ('Off', 'LCD', 'Lights'); @@ -455,6 +457,10 @@ begin for Pet := 0 to High(ILineBonus) do if Tekst = ILineBonus[Pet] then Ini.LineBonus := Pet; + // PartyPopup + Tekst := IniFile.ReadString('Advanced', 'PartyPopup', 'On'); + for Pet := 0 to High(IPartyPopup) do + if Tekst = IPartyPopup[Pet] then Ini.PartyPopup := Pet; // Joypad @@ -638,6 +644,9 @@ begin Tekst := ILineBonus[Ini.LineBonus]; IniFile.WriteString('Advanced', 'LineBonus', Tekst); + //Party Popup + Tekst := IPartyPopup[Ini.PartyPopup]; + IniFile.WriteString('Advanced', 'PartyPopup', Tekst); // Joypad Tekst := IJoypad[Ini.Joypad]; diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index b9183740..24ac0eaa 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -297,10 +297,38 @@ type StaticTeam3Joker4: TThemeStatic; StaticTeam3Joker5: TThemeStatic; - - StaticKeys1 : TThemeStatic; TextKeys1 : TThemeText; + StaticKeys1Party : TThemeStatic; + TextKeys1Party : TThemeText; + StaticKeys2 : TThemeStatic; + TextKeys2 : TThemeText; + StaticKeys2Party : TThemeStatic; + TextKeys2Party : TThemeText; + StaticKeys3 : TThemeStatic; + TextKeys3 : TThemeText; + StaticKeys3Party : TThemeStatic; + TextKeys3Party : TThemeText; + StaticKeys4 : TThemeStatic; + TextKeys4 : TThemeText; + StaticKeys4Party : TThemeStatic; + TextKeys4Party : TThemeText; + StaticKeys5 : TThemeStatic; + TextKeys5 : TThemeText; + StaticKeys5Party : TThemeStatic; + TextKeys5Party : TThemeText; + StaticKeys6 : TThemeStatic; + TextKeys6 : TThemeText; + StaticKeys6Party : TThemeStatic; + TextKeys6Party : TThemeText; + StaticKeys7 : TThemeStatic; + TextKeys7 : TThemeText; + StaticKeys7Party : TThemeStatic; + TextKeys7Party : TThemeText; + StaticKeys8 : TThemeStatic; + TextKeys8 : TThemeText; + StaticKeys8Party : TThemeStatic; + TextKeys8Party : TThemeText; end; @@ -473,6 +501,7 @@ type SelectLineBonus: TThemeSelect; SelectAskbeforeDel: TThemeSelect; SelectOnSongClick: TThemeSelectSlide; + SelectPartyPopup: TThemeSelect; ButtonExit: TThemeButton; end; @@ -1014,6 +1043,43 @@ begin ThemeLoadStatic(Song.StaticKeys1, 'SongStaticKeys1'); ThemeLoadText(Song.TextKeys1, 'SongStaticKeys1Text'); + ThemeLoadStatic(Song.StaticKeys1Party, 'SongStaticKeys1Party'); + ThemeLoadText(Song.TextKeys1Party, 'SongStaticKeys1TextParty'); + + ThemeLoadStatic(Song.StaticKeys2, 'SongStaticKeys2'); + ThemeLoadText(Song.TextKeys2, 'SongStaticKeys2Text'); + ThemeLoadStatic(Song.StaticKeys2Party, 'SongStaticKeys2Party'); + ThemeLoadText(Song.TextKeys2Party, 'SongStaticKeys2TextParty'); + + ThemeLoadStatic(Song.StaticKeys3, 'SongStaticKeys3'); + ThemeLoadText(Song.TextKeys3, 'SongStaticKeys3Text'); + ThemeLoadStatic(Song.StaticKeys3Party, 'SongStaticKeys3Party'); + ThemeLoadText(Song.TextKeys3Party, 'SongStaticKeys3TextParty'); + + ThemeLoadStatic(Song.StaticKeys4, 'SongStaticKeys4'); + ThemeLoadText(Song.TextKeys4, 'SongStaticKeys4Text'); + ThemeLoadStatic(Song.StaticKeys4Party, 'SongStaticKeys4Party'); + ThemeLoadText(Song.TextKeys4Party, 'SongStaticKeys4TextParty'); + + ThemeLoadStatic(Song.StaticKeys5, 'SongStaticKeys5'); + ThemeLoadText(Song.TextKeys5, 'SongStaticKeys5Text'); + ThemeLoadStatic(Song.StaticKeys5Party, 'SongStaticKeys5Party'); + ThemeLoadText(Song.TextKeys5Party, 'SongStaticKeys5TextParty'); + + ThemeLoadStatic(Song.StaticKeys6, 'SongStaticKeys6'); + ThemeLoadText(Song.TextKeys6, 'SongStaticKeys6Text'); + ThemeLoadStatic(Song.StaticKeys6Party, 'SongStaticKeys6Party'); + ThemeLoadText(Song.TextKeys6Party, 'SongStaticKeys6TextParty'); + + ThemeLoadStatic(Song.StaticKeys7, 'SongStaticKeys7'); + ThemeLoadText(Song.TextKeys7, 'SongStaticKeys7Text'); + ThemeLoadStatic(Song.StaticKeys7Party, 'SongStaticKeys7Party'); + ThemeLoadText(Song.TextKeys7Party, 'SongStaticKeys7TextParty'); + + ThemeLoadStatic(Song.StaticKeys8, 'SongStaticKeys8'); + ThemeLoadText(Song.TextKeys8, 'SongStaticKeys8Text'); + ThemeLoadStatic(Song.StaticKeys8Party, 'SongStaticKeys8Party'); + ThemeLoadText(Song.TextKeys8Party, 'SongStaticKeys8TextParty'); // Sing ThemeLoadBasic(Sing, 'Sing'); @@ -1209,6 +1275,7 @@ begin ThemeLoadSelect (OptionsAdvanced.SelectLineBonus, 'OptionsAdvancedSelectLineBonus'); ThemeLoadSelectSlide (OptionsAdvanced.SelectOnSongClick, 'OptionsAdvancedSelectSlideOnSongClick'); ThemeLoadSelect (OptionsAdvanced.SelectAskbeforeDel, 'OptionsAdvancedSelectAskbeforeDel'); + ThemeLoadSelect (OptionsAdvanced.SelectPartyPopup, 'OptionsAdvancedSelectPartyPopup'); ThemeLoadButton (OptionsAdvanced.ButtonExit, 'OptionsAdvancedButtonExit'); //error and check popup diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index a28945c1..4c3356d0 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -35,7 +35,7 @@ begin end; SDLK_RETURN: begin - if SelInteraction = 6 then begin + if SelInteraction = 7 then begin Ini.Save; Music.PlayBack; FadeTo(@ScreenOptions); @@ -47,14 +47,14 @@ begin InteractPrev; SDLK_RIGHT: begin - if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + if (SelInteraction >= 0) and (SelInteraction <= 6) then begin Music.PlayOption; InteractInc; end; end; SDLK_LEFT: begin - if (SelInteraction >= 0) and (SelInteraction <= 5) then begin + if (SelInteraction >= 0) and (SelInteraction <= 6) then begin Music.PlayOption; InteractDec; end; @@ -77,6 +77,7 @@ begin AddSelect(Theme.OptionsAdvanced.SelectLineBonus, Ini.LineBonus, ILineBonus); AddSelectSlide(Theme.OptionsAdvanced.SelectOnSongClick, Ini.OnSongClick, IOnSongClick); AddSelect(Theme.OptionsAdvanced.SelectAskbeforeDel, Ini.AskbeforeDel, IAskbeforeDel); + AddSelect(Theme.OptionsAdvanced.SelectPartyPopup, Ini.PartyPopup, IPartyPopup); AddButton(Theme.OptionsAdvanced.ButtonExit); if (Length(Button[0].Text)=0) then diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 48c6597a..26fcba2e 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -52,8 +52,46 @@ type StaticTeam3Joker3: Cardinal; StaticTeam3Joker4: Cardinal; StaticTeam3Joker5: Cardinal; + StaticKeys1: Cardinal; TextKeys1: integer; + StaticKeys1Party: Cardinal; + TextKeys1Party: integer; + + StaticKeys2: Cardinal; + TextKeys2: integer; + StaticKeys2Party: Cardinal; + TextKeys2Party: integer; + + StaticKeys3: Cardinal; + TextKeys3: integer; + StaticKeys3Party: Cardinal; + TextKeys3Party: integer; + + StaticKeys4: Cardinal; + TextKeys4: integer; + StaticKeys4Party: Cardinal; + TextKeys4Party: integer; + + StaticKeys5: Cardinal; + TextKeys5: integer; + StaticKeys5Party: Cardinal; + TextKeys5Party: integer; + + StaticKeys6: Cardinal; + TextKeys6: integer; + StaticKeys6Party: Cardinal; + TextKeys6Party: integer; + + StaticKeys7: Cardinal; + TextKeys7: integer; + StaticKeys7Party: Cardinal; + TextKeys7Party: integer; + + StaticKeys8: Cardinal; + TextKeys8: integer; + StaticKeys8Party: Cardinal; + TextKeys8Party: integer; constructor Create; override; procedure SetScroll; @@ -163,6 +201,7 @@ var I, I2: Integer; Text[TextCat].Visible := true; Static[StaticCat].Visible := True; end; + procedure TScreenSong.HideCatTL; begin //Hide @@ -368,7 +407,9 @@ begin end else if (Mode = 1) then //PartyMode -> Show Menu begin - ScreenSongMenu.MenuShow(SM_Party_Main); + //Is this Right? + ScreenSong.StartSong; + //ScreenSongMenu.MenuShow(SM_Party_Main); end; end; end; @@ -682,8 +723,44 @@ begin StaticTeam3Joker5 := AddStatic(Theme.Song.StaticTeam3Joker5); StaticKeys1 := AddStatic(Theme.Song.StaticKeys1); - TextKeys1 := AddText(Theme.Song.TextKeys1); + StaticKeys1Party := AddStatic(Theme.Song.StaticKeys1Party); + TextKeys1Party := AddText(Theme.Song.TextKeys1Party); + + StaticKeys2 := AddStatic(Theme.Song.StaticKeys2); + TextKeys2 := AddText(Theme.Song.TextKeys2); + StaticKeys2Party := AddStatic(Theme.Song.StaticKeys2Party); + TextKeys2Party := AddText(Theme.Song.TextKeys2Party); + + StaticKeys3 := AddStatic(Theme.Song.StaticKeys3); + TextKeys3 := AddText(Theme.Song.TextKeys3); + StaticKeys3Party := AddStatic(Theme.Song.StaticKeys3Party); + TextKeys3Party := AddText(Theme.Song.TextKeys3Party); + + StaticKeys4 := AddStatic(Theme.Song.StaticKeys4); + TextKeys4 := AddText(Theme.Song.TextKeys4); + StaticKeys4Party := AddStatic(Theme.Song.StaticKeys4Party); + TextKeys4Party := AddText(Theme.Song.TextKeys4Party); + + StaticKeys5 := AddStatic(Theme.Song.StaticKeys5); + TextKeys5 := AddText(Theme.Song.TextKeys5); + StaticKeys5Party := AddStatic(Theme.Song.StaticKeys5Party); + TextKeys5Party := AddText(Theme.Song.TextKeys5Party); + + StaticKeys6 := AddStatic(Theme.Song.StaticKeys6); + TextKeys6 := AddText(Theme.Song.TextKeys6); + StaticKeys6Party := AddStatic(Theme.Song.StaticKeys6Party); + TextKeys6Party := AddText(Theme.Song.TextKeys6Party); + + StaticKeys7 := AddStatic(Theme.Song.StaticKeys7); + TextKeys7 := AddText(Theme.Song.TextKeys7); + StaticKeys7Party := AddStatic(Theme.Song.StaticKeys7Party); + TextKeys7Party := AddText(Theme.Song.TextKeys7Party); + + StaticKeys8 := AddStatic(Theme.Song.StaticKeys8); + TextKeys8 := AddText(Theme.Song.TextKeys8); + StaticKeys8Party := AddStatic(Theme.Song.StaticKeys8Party); + TextKeys8Party := AddText(Theme.Song.TextKeys8Party); // Song List // Songs.LoadSongList; // moved to the UltraStar unit @@ -1234,7 +1311,13 @@ begin SelectRandomSong; //Show Mennu direct in PartyMode - ScreenSongMenu.MenuShow(SM_Party_Main); + //But only if selected in Options + if (Ini.PartyPopup = 1) then + begin + ScreenSongMenu.MenuShow(SM_Party_Main); + end; + + end; SetJoker; @@ -1675,13 +1758,92 @@ begin //If Party Mode if Mode = 1 then //Use Statics for Party-Song-Selection begin - Static[StaticKeys1].Visible := false; - Text[TextKeys1].Visible := false; + Static[StaticKeys1].Visible := False; + Text[TextKeys1].Visible := False; + Static[StaticKeys1Party].Visible := True; + Text[TextKeys1Party].Visible := True; + + Static[StaticKeys2].Visible := False; + Text[TextKeys2].Visible := False; + Static[StaticKeys2Party].Visible := True; + Text[TextKeys2Party].Visible := True; + + Static[StaticKeys3].Visible := False; + Text[TextKeys3].Visible := False; + Static[StaticKeys3Party].Visible := True; + Text[TextKeys3Party].Visible := True; + + Static[StaticKeys4].Visible := False; + Text[TextKeys4].Visible := False; + Static[StaticKeys4Party].Visible := True; + Text[TextKeys4Party].Visible := True; + + Static[StaticKeys5].Visible := False; + Text[TextKeys5].Visible := False; + Static[StaticKeys5Party].Visible := True; + Text[TextKeys5Party].Visible := True; + + Static[StaticKeys6].Visible := False; + Text[TextKeys6].Visible := False; + Static[StaticKeys6Party].Visible := True; + Text[TextKeys6Party].Visible := True; + + Static[StaticKeys7].Visible := False; + Text[TextKeys7].Visible := False; + Static[StaticKeys7Party].Visible := True; + Text[TextKeys7Party].Visible := True; + + Static[StaticKeys8].Visible := False; + Text[TextKeys8].Visible := False; + Static[StaticKeys8Party].Visible := True; + Text[TextKeys8Party].Visible := True; end else //Use regular Statics for Song-Selection - begin //Hide all - Static[StaticKeys1].Visible := true; - Text[TextKeys1].Visible := true; + begin + Static[StaticKeys1].Visible := True; + Text[TextKeys1].Visible := True; + Static[StaticKeys1Party].Visible := False; + Text[TextKeys1Party].Visible := False; + + Static[StaticKeys2].Visible := True; + Text[TextKeys2].Visible := True; + Static[StaticKeys2Party].Visible := False; + Text[TextKeys2Party].Visible := False; + + Static[StaticKeys2].Visible := True; + Text[TextKeys2].Visible := True; + Static[StaticKeys2Party].Visible := False; + Text[TextKeys2Party].Visible := False; + + Static[StaticKeys3].Visible := True; + Text[TextKeys3].Visible := True; + Static[StaticKeys3Party].Visible := False; + Text[TextKeys3Party].Visible := False; + + Static[StaticKeys4].Visible := True; + Text[TextKeys4].Visible := True; + Static[StaticKeys4Party].Visible := False; + Text[TextKeys4Party].Visible := False; + + Static[StaticKeys5].Visible := True; + Text[TextKeys5].Visible := True; + Static[StaticKeys5Party].Visible := False; + Text[TextKeys5Party].Visible := False; + + Static[StaticKeys6].Visible := True; + Text[TextKeys6].Visible := True; + Static[StaticKeys6Party].Visible := False; + Text[TextKeys6Party].Visible := False; + + Static[StaticKeys7].Visible := True; + Text[TextKeys7].Visible := True; + Static[StaticKeys7Party].Visible := False; + Text[TextKeys7Party].Visible := False; + + Static[StaticKeys8].Visible := True; + Text[TextKeys8].Visible := True; + Static[StaticKeys8Party].Visible := False; + Text[TextKeys8Party].Visible := False; end; end; diff --git a/Game/Sounds/dismissed.mp3 b/Game/Sounds/dismissed.mp3 new file mode 100644 index 00000000..f478e7a3 Binary files /dev/null and b/Game/Sounds/dismissed.mp3 differ diff --git a/Languages/English.ini b/Languages/English.ini index f0c5bc4d..13696195 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -89,6 +89,7 @@ SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= SING_OPTIONS_ADVANCED_ONSONGCLICK=after Song Select +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menue SING_LEGEND_SELECT=select SING_LEGEND_NAVIGATE=navigate @@ -217,6 +218,10 @@ PARTY_ROUND_DESC=next players to the mics PARTY_ROUND_WHEREAMI=Party Next Round PARTY_ROUND_LEGEND_CONTINUE=start round +PARTY_SONG_WHEREAMI=Party Song-Selection +PARTY_SONG_LEGEND_CONTINUE=sing +PARTY_SONG_MENU=party menu + PARTY_SCORE_DESC=score of the last round PARTY_SCORE_WHEREAMI=Party Points @@ -278,10 +283,8 @@ STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung -MSG_ERROR_TITLE=Error -MSG_QUESTION_TITLE=Question -MSG_QUIT_USDX=Really leave \n\n UltraStar? -MSG_END_PARTY=Really end \n\n Party Mode? -ERROR_NO_SONGS=No Songs \n\n loaded -ERROR_NO_PLUGINS=No Plugins \n\n loaded -ERROR_CORRUPT_SONG=Song could not be \n\n loaded. \ No newline at end of file +MSG_QUESTION_TITLE=Chicken Out +MSG_QUIT_USDX=Really leave\n\nUltraStar? +MSG_END_PARTY=Really end\n\nParty Mode? +ERROR_NO_SONGS=Error: \n No Songs \n loaded +ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index 5ec57e48..8a9b42ea 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -89,6 +89,7 @@ SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr. SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Wahl +SING_OPTIONS_ADVANCED_PARTYPOPUP=Autom. Party-Menue SING_LEGEND_SELECT=Auswählen SING_LEGEND_NAVIGATE=Navigieren @@ -217,6 +218,10 @@ PARTY_ROUND_DESC=Die n PARTY_ROUND_WHEREAMI=Party nächste Runde PARTY_ROUND_LEGEND_CONTINUE=Runde starten +PARTY_SONG_WHEREAMI=Party Song-Auswahl +PARTY_SONG_LEGEND_CONTINUE=Singen +PARTY_SONG_MENU=Party-Menü + PARTY_SCORE_DESC=Punkte der letzten Runde. PARTY_SCORE_WHEREAMI=Party Punkte @@ -278,10 +283,8 @@ STAT_DESC_BANDS=Beliebteste Bands STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d -MSG_ERROR_TITLE=Fehler -MSG_QUESTION_TITLE=Frage -MSG_QUIT_USDX=UltraStar \n\n wirklich\n\nverlassen? -MSG_END_PARTY=Party Modus \n\n beenden? -ERROR_NO_SONGS=Keine Songs \n\n vorhanden. -ERROR_NO_PLUGINS=Keine Plugins \n\n vorhanden. -ERROR_CORRUPT_SONG=Song konnte nicht \n\n geladen werden. \ No newline at end of file +MSG_QUESTION_TITLE=Chicken Out +MSG_QUIT_USDX=UltraStar\n\nwirklich\n\nverlassen? +MSG_END_PARTY=Party Modus\n\nbeenden? +ERROR_NO_SONGS=Fehler: \n Keine Songs \n vorhanden +ERROR_NO_PLUGINS=Fehler: \n Keine Plugins \n vorhanden \ No newline at end of file diff --git a/Languages/readme.txt b/Languages/readme.txt index 37787c2f..f4f781a0 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -131,6 +131,8 @@ NEXT_ROUND=Next round: PARTY_DISMISSED=Dismissed! PARTY_SCORE_WINS=%s PARTY_SCORE_WINS2=wins! +PARTY_SONG_WHEREAMI=Party Song-Selection +PARTY_SONG_LEGEND_CONTINUE=Party-Menu #Texts that descripts Plugins or Modis PLUGIN_HDL_NAME=Hold the Line @@ -178,10 +180,8 @@ STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung #Messages for Popup Message Boxes -MSG_ERROR_TITLE=Error -MSG_QUESTION_TITLE=Question -MSG_QUIT_USDX=Really leave \n\n UltraStar? -MSG_END_PARTY=Really end \n\n Party Mode? -ERROR_NO_SONGS=No Songs \n\n loaded -ERROR_NO_PLUGINS=No Plugins \n\n loaded -ERROR_CORRUPT_SONG=Song could not be \n\n loaded. \ No newline at end of file +MSG_QUESTION_TITLE=Chicken Out +MSG_QUIT_USDX=Really leave\n\nUltraStar? +MSG_END_PARTY=Really end\n\nParty Mode? +ERROR_NO_SONGS=Error: \n No Songs \n loaded +ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini index d7d8c7b9..ad9dbdbe 100644 --- a/Skins/Deluxe/Autum.ini +++ b/Skins/Deluxe/Autum.ini @@ -122,6 +122,7 @@ ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index d024bd8c..6c45cfcc 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -121,6 +121,7 @@ ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index 343f015d..4e830766 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -121,6 +121,7 @@ ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index b1999218..93f95b88 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -120,6 +120,7 @@ ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg Leiste1 = [special]bar1.jpg Leiste2 = [special]bar2.jpg diff --git a/Skins/Deluxe/[button]13.jpg b/Skins/Deluxe/[button]13.jpg new file mode 100644 index 00000000..c732dba9 Binary files /dev/null and b/Skins/Deluxe/[button]13.jpg differ diff --git a/Skins/Deluxe/x_[icon]stats.jpg b/Skins/Deluxe/x_[icon]stats.jpg deleted file mode 100644 index 505a6709..00000000 Binary files a/Skins/Deluxe/x_[icon]stats.jpg and /dev/null differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 987bf070..582a4f8f 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -340,14 +340,46 @@ Space=1 Bands=5 Length=18 -[SongText1] -X =70 -Y =6 -Color=White -Font =0 -Size =20 -Text=SING_SONG_SELECTION -Align=0 +[SongStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[SongStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[SongStatic3] +X =200 +Y =120 +W =300 +H =200 +Color =LightBlue +Tex =SongSelection1 +Type=Font Black + +[SongStatic4] +X =248 +Y =320 +W =200 +H =200 +Z=0.98 +Color =LightBlue +Tex =SongSelection2 +Type=Font Black [SongTextCat] X =70 @@ -358,7 +390,43 @@ Size =10 Align =0 Text=SING_CHOOSE_SONG -[SongStatic1] +[SongTextArtist] +X =350 +Y =320 +W = 190 +Color=White +Font =1 +Size =9 +Align =1 +Text= + +[SongTextTitle] +X =350 +Y =380 +W = 190 +Color=White +Font =0 +Size =9 +Align =1 +Text= + +[SongTextNumber] +X =440 +Y =495 +Color=White +Font =0 +Size =8 +Align =2 +Text= + + +#Variable statics and texts for song-screen in sing- and partymode +#Each static or text comes in 2 versions now. E.g SongStaticKeys8Text and SongStaticKeys8TextParty. (Doh, i have to alter the names) +#There are 8 statics and 8 texts for each mode. 32 items alltogether. + +#Here are the ones for singmode + +[SongStaticKeys1] X =40 Y =22 W =27 @@ -367,57 +435,90 @@ Color =White Tex =SongCD Type=Font Black -[SongText2] -X =238 -Y =552 -Color=Black -Font =0 -Size =7 -Align=2 -Text=SING_SONG_SELECTION_WHEREAMI +[SongStaticKeys2] +X =260 +Y =553 +W =26 +H =22 +Tex=ButtonAlt +Color =White +Type=Plain -[SongStatic2] -X =248 -Y =320 -W =200 -H =200 -Z=0.98 -Color =LightBlue -Tex =SongSelection2 -Type=Font Black +[SongStaticKeys3] +X =300 +Y =553 +W =26 +H =22 +Tex=ButtonAZ +Color =White +Type=Plain -[SongStatic3] -X =0 -Y =549 -W =252 -H =28 -Tex=Leiste1 +[SongStaticKeys4] +X =425 +Y =553 +W =22 +H =22 +Tex=ButtonM Color =White Type=Plain -Reflection=1 -ReflectionSpacing=1 -[SongStatic4] -X =254 -Y =549 -W =548 -H =28 -Tex=Leiste2 +[SongStaticKeys5] +X =515 +Y =553 +W =22 +H =22 +Tex=ButtonJ Color =White Type=Plain -Reflection=1 -ReflectionSpacing=1 -[SongStatic8] -X =260 +[SongStaticKeys6] +X =679 Y =553 -W =26 +W =22 H =22 -Tex=ButtonAlt +Tex=ButtonP Color =White Type=Plain -[SongText5] +#Not used in this theme +#[SongStaticKeys7] +#X = +#Y = +#W = +#H = +#Tex= +#Color = +#Type= + +#Not used in this theme +#[SongStaticKeys8] +#X = +#Y = +#W = +#H = +#Tex= +#Color = +#Type= + +[SongStaticKeys1Text] +X =70 +Y =6 +Color=White +Font =0 +Size =20 +Text=SING_SONG_SELECTION +Align=0 + +[SongStaticKeys2Text] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=SING_SONG_SELECTION_WHEREAMI + +[SongStaticKeys3Text] X =288 Y =556 Color=Black @@ -426,16 +527,7 @@ Size =5 Align=0 Text=+ -[SongStatic9] -X =300 -Y =553 -W =26 -H =22 -Tex=ButtonAZ -Color =White -Type=Plain - -[SongText6] +[SongStaticKeys4Text] X =330 Y =552 Color=Black @@ -444,16 +536,7 @@ Size =7 Align=0 Text=SING_SONG_SELECTION_GOTO -[SongStatic6] -X =425 -Y =553 -W =22 -H =22 -Tex=ButtonM -Color =White -Type=Plain - -[SongText3] +[SongStaticKeys5Text] X =450 Y =552 Color=Black @@ -462,16 +545,7 @@ Size =7 Align=0 Text=SING_SONG_SELECTION_MENU -[SongStatic7] -X =515 -Y =553 -W =22 -H =22 -Tex=ButtonJ -Color =White -Type=Plain - -[SongText4] +[SongStaticKeys6Text] X =540 Y =552 Color=Black @@ -480,62 +554,182 @@ Size =7 Align=0 Text=SONG_JUMPTO_DESC -[SongStaticKeys1] -X =679 +[SongStaticKeys7Text] +X =705 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_SONG_SELECTION_PLAYLIST + +#Not used in this Theme +#[SongStaticKeys8Text] +#X = +#Y = +#Color= +#Font =0 +#Size =0 +#Align=0 +#Text= + +#and theese are the ones for partymode + +[SongStaticKeys1Party] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + +[SongStaticKeys2Party] +X =260 +Y =553 +W =26 +H =22 +Tex=Button13 +Color =White +Type=Plain + +[SongStaticKeys3Party] +X =400 Y =553 W =22 H =22 -Tex=ButtonP +Tex=ButtonM Color =White Type=Plain -Texts=1 -[SongStaticKeys1Text] -X =705 +[SongStaticKeys4Party] +X =540 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +#Not used in this theme +#[SongStaticKeys5Party] +#X = +#Y = +#W = +#H = +#Tex= +#Color = +#Type= + +#Not used in this theme +#[SongStaticKeys6Party] +#X = +#Y = +#W = +#H = +#Tex= +#Color = +#Type= + +#Not used in this theme +#[SongStaticKeys7Party] +#X = +#Y = +#W = +#H = +#Tex= +#Color = +#Type= + +#Not used in this theme +#[SongStaticKeys8Party] +#X = +#Y = +#W = +#H = +#Tex= +#Color = +#Type= + +[SongStaticKeys1TextParty] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=PARTY_MODE + +[SongStaticKeys2TextParty] +X =238 Y =552 Color=Black Font =0 Size =7 -Align=0 -Text=SING_SONG_SELECTION_PLAYLIST - -[SongStatic5] -X =200 -Y =120 -W =300 -H =200 -Color =LightBlue -Tex =SongSelection1 -Type=Font Black +Align=2 +Text=PARTY_SONG_WHEREAMI -[SongTextArtist] -X =350 -Y =320 -W = 190 -Color=White -Font =1 -Size =9 -Align =1 -Text= +[SongStaticKeys3TextParty] +X =288 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SONG_MENU_NAME_PARTY_JOKER -[SongTextTitle] -X =350 -Y =380 -W = 190 -Color=White +[SongStaticKeys4TextParty] +X =426 +Y =552 +Color=Black Font =0 -Size =9 -Align =1 -Text= +Size =7 +Align=0 +Text=PARTY_SONG_MENU -[SongTextNumber] -X =440 -Y =495 -Color=White +[SongStaticKeys5TextParty] +X =570 +Y =552 +Color=Black Font =0 -Size =8 -Align =2 -Text= +Size =7 +Align=0 +Text=PARTY_SONG_LEGEND_CONTINUE + +#Not used in this Theme +#[SongStaticKeys6TextParty] +#X = +#Y = +#Color= +#Font =0 +#Size =0 +#Align=0 +#Text= + +#Not used in this Theme +#[SongStaticKeys7TextParty] +#X = +#Y = +#Color= +#Font =0 +#Size =0 +#Align=0 +#Text= + +#Not used in this Theme +#[SongStaticKeys8TextParty] +#X = +#Y = +#Color= +#Font =0 +#Size =0 +#Align=0 +#Text= + +#variable statics end + [SongStaticTeam1Joker1] Tex =Joker @@ -4121,11 +4315,31 @@ SBGDColor = Gray STColor = White STDColor = GrayDark -[OptionsAdvancedButtonExit] +[OptionsAdvancedSelectPartyPopup] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_PARTYPOPUP X = 40 Y = 415 W = 230 H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedButtonExit] +X = 40 +Y = 470 +W = 230 +H = 70 Tex =MainBar Color = ColorDark DColor = Gray -- cgit v1.2.3 From caf813fd12cd964f72f19f7455fff902ca3adfee Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 17 May 2007 01:21:03 +0000 Subject: Fix for previous commit. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@203 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Languages/German.ini b/Languages/German.ini index 8a9b42ea..effdd04a 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -89,7 +89,7 @@ SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr. SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Wahl -SING_OPTIONS_ADVANCED_PARTYPOPUP=Autom. Party-Menue +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menü SING_LEGEND_SELECT=Auswählen SING_LEGEND_NAVIGATE=Navigieren -- cgit v1.2.3 From 6fa77c016ad823cf4ed0c808a0decebb859b32c2 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 17 May 2007 02:20:22 +0000 Subject: Fix in deluxe theme. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@204 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 582a4f8f..cecd32b0 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -388,7 +388,7 @@ Color=White Font =0 Size =10 Align =0 -Text=SING_CHOOSE_SONG +Text=SING_SONG_SELECTION_DESC [SongTextArtist] X =350 -- cgit v1.2.3 From c07c700247d4c70f79d2f7fb9c5b368196d1cf53 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 09:47:02 +0000 Subject: Added functionality to Cancel Button in ScreenOpen Pressing ESC in ScreenOpen now causes last Screen to be displayed git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@205 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenOpen.pas | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index f5e121f9..af984a21 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -35,7 +35,6 @@ begin begin if Interaction = 0 then begin Text[TextN].Text := Text[TextN].Text + chr(ScanCode); - FileName := Text[TextN].Text; end; end; end; @@ -50,18 +49,29 @@ begin if Interaction = 0 then begin Text[TextN].DeleteLastL; - FileName := Text[TextN].Text; end; end; SDLK_ESCAPE: begin - result := false; + //Empty Filename and go to last Screen + FileName := ''; + Music.PlayBack; + FadeTo(BackScreen); end; SDLK_RETURN: begin - if Interaction = 2 then begin + if (Interaction = 2) then begin + //Update Filename and go to last Screen + FileName := Text[TextN].Text; + Music.PlayBack; + FadeTo(BackScreen); + end + else if (Interaction = 1) then + begin + //Empty Filename and go to last Screen + FileName := ''; Music.PlayBack; FadeTo(BackScreen); end; -- cgit v1.2.3 From f11d9806f4623dc4dbf14e521624109b7a69b86b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 10:33:27 +0000 Subject: Deleted Motas Methods to display variable Statics and Texts in Party Mode. Added a new, more extendable and easier in Code Method for displaying Statics in Party Mode or in Normal Mode only Enter in Songscreen in Party Mode Opens now SongMenu again when PartyPopup=1 Changed Theme to Fit these changes git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@206 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 89 +++------------ Game/Code/Screens/UScreenSong.pas | 222 +++++++++----------------------------- Themes/Deluxe.ini | 160 +++++++-------------------- 3 files changed, 98 insertions(+), 373 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 24ac0eaa..0fe207e9 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -280,6 +280,13 @@ type ColR, ColG, ColB: Real; end; + //Party and Non Party specific Statics and Texts + StaticParty: AThemeStatic; + TextParty: AThemeText; + + StaticNonParty: AThemeStatic; + TextNonParty: AThemeText; + //Party Mode StaticTeam1Joker1: TThemeStatic; StaticTeam1Joker2: TThemeStatic; @@ -296,41 +303,6 @@ type StaticTeam3Joker3: TThemeStatic; StaticTeam3Joker4: TThemeStatic; StaticTeam3Joker5: TThemeStatic; - - StaticKeys1 : TThemeStatic; - TextKeys1 : TThemeText; - StaticKeys1Party : TThemeStatic; - TextKeys1Party : TThemeText; - StaticKeys2 : TThemeStatic; - TextKeys2 : TThemeText; - StaticKeys2Party : TThemeStatic; - TextKeys2Party : TThemeText; - StaticKeys3 : TThemeStatic; - TextKeys3 : TThemeText; - StaticKeys3Party : TThemeStatic; - TextKeys3Party : TThemeText; - StaticKeys4 : TThemeStatic; - TextKeys4 : TThemeText; - StaticKeys4Party : TThemeStatic; - TextKeys4Party : TThemeText; - StaticKeys5 : TThemeStatic; - TextKeys5 : TThemeText; - StaticKeys5Party : TThemeStatic; - TextKeys5Party : TThemeText; - StaticKeys6 : TThemeStatic; - TextKeys6 : TThemeText; - StaticKeys6Party : TThemeStatic; - TextKeys6Party : TThemeText; - StaticKeys7 : TThemeStatic; - TextKeys7 : TThemeText; - StaticKeys7Party : TThemeStatic; - TextKeys7Party : TThemeText; - StaticKeys8 : TThemeStatic; - TextKeys8 : TThemeText; - StaticKeys8Party : TThemeStatic; - TextKeys8Party : TThemeText; - - end; TThemeSing = class(TThemeBasic) @@ -1022,6 +994,13 @@ begin end; //Load Equalizer Pos and Size from Theme Mod End + //Party and Non Party specific Statics and Texts + ThemeLoadStatics (Song.StaticParty, 'SongStaticParty'); + ThemeLoadTexts (Song.TextParty, 'SongTextParty'); + + ThemeLoadStatics (Song.StaticNonParty, 'SongStaticNonParty'); + ThemeLoadTexts (Song.TextNonParty, 'SongTextNonParty'); + //Party Mode ThemeLoadStatic(Song.StaticTeam1Joker1, 'SongStaticTeam1Joker1'); ThemeLoadStatic(Song.StaticTeam1Joker2, 'SongStaticTeam1Joker2'); @@ -1041,46 +1020,6 @@ begin ThemeLoadStatic(Song.StaticTeam3Joker4, 'SongStaticTeam3Joker4'); ThemeLoadStatic(Song.StaticTeam3Joker5, 'SongStaticTeam3Joker5'); - ThemeLoadStatic(Song.StaticKeys1, 'SongStaticKeys1'); - ThemeLoadText(Song.TextKeys1, 'SongStaticKeys1Text'); - ThemeLoadStatic(Song.StaticKeys1Party, 'SongStaticKeys1Party'); - ThemeLoadText(Song.TextKeys1Party, 'SongStaticKeys1TextParty'); - - ThemeLoadStatic(Song.StaticKeys2, 'SongStaticKeys2'); - ThemeLoadText(Song.TextKeys2, 'SongStaticKeys2Text'); - ThemeLoadStatic(Song.StaticKeys2Party, 'SongStaticKeys2Party'); - ThemeLoadText(Song.TextKeys2Party, 'SongStaticKeys2TextParty'); - - ThemeLoadStatic(Song.StaticKeys3, 'SongStaticKeys3'); - ThemeLoadText(Song.TextKeys3, 'SongStaticKeys3Text'); - ThemeLoadStatic(Song.StaticKeys3Party, 'SongStaticKeys3Party'); - ThemeLoadText(Song.TextKeys3Party, 'SongStaticKeys3TextParty'); - - ThemeLoadStatic(Song.StaticKeys4, 'SongStaticKeys4'); - ThemeLoadText(Song.TextKeys4, 'SongStaticKeys4Text'); - ThemeLoadStatic(Song.StaticKeys4Party, 'SongStaticKeys4Party'); - ThemeLoadText(Song.TextKeys4Party, 'SongStaticKeys4TextParty'); - - ThemeLoadStatic(Song.StaticKeys5, 'SongStaticKeys5'); - ThemeLoadText(Song.TextKeys5, 'SongStaticKeys5Text'); - ThemeLoadStatic(Song.StaticKeys5Party, 'SongStaticKeys5Party'); - ThemeLoadText(Song.TextKeys5Party, 'SongStaticKeys5TextParty'); - - ThemeLoadStatic(Song.StaticKeys6, 'SongStaticKeys6'); - ThemeLoadText(Song.TextKeys6, 'SongStaticKeys6Text'); - ThemeLoadStatic(Song.StaticKeys6Party, 'SongStaticKeys6Party'); - ThemeLoadText(Song.TextKeys6Party, 'SongStaticKeys6TextParty'); - - ThemeLoadStatic(Song.StaticKeys7, 'SongStaticKeys7'); - ThemeLoadText(Song.TextKeys7, 'SongStaticKeys7Text'); - ThemeLoadStatic(Song.StaticKeys7Party, 'SongStaticKeys7Party'); - ThemeLoadText(Song.TextKeys7Party, 'SongStaticKeys7TextParty'); - - ThemeLoadStatic(Song.StaticKeys8, 'SongStaticKeys8'); - ThemeLoadText(Song.TextKeys8, 'SongStaticKeys8Text'); - ThemeLoadStatic(Song.StaticKeys8Party, 'SongStaticKeys8Party'); - ThemeLoadText(Song.TextKeys8Party, 'SongStaticKeys8TextParty'); - // Sing ThemeLoadBasic(Sing, 'Sing'); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 26fcba2e..95550a32 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -53,45 +53,10 @@ type StaticTeam3Joker4: Cardinal; StaticTeam3Joker5: Cardinal; - StaticKeys1: Cardinal; - TextKeys1: integer; - StaticKeys1Party: Cardinal; - TextKeys1Party: integer; - - StaticKeys2: Cardinal; - TextKeys2: integer; - StaticKeys2Party: Cardinal; - TextKeys2Party: integer; - - StaticKeys3: Cardinal; - TextKeys3: integer; - StaticKeys3Party: Cardinal; - TextKeys3Party: integer; - - StaticKeys4: Cardinal; - TextKeys4: integer; - StaticKeys4Party: Cardinal; - TextKeys4Party: integer; - - StaticKeys5: Cardinal; - TextKeys5: integer; - StaticKeys5Party: Cardinal; - TextKeys5Party: integer; - - StaticKeys6: Cardinal; - TextKeys6: integer; - StaticKeys6Party: Cardinal; - TextKeys6Party: integer; - - StaticKeys7: Cardinal; - TextKeys7: integer; - StaticKeys7Party: Cardinal; - TextKeys7Party: integer; - - StaticKeys8: Cardinal; - TextKeys8: integer; - StaticKeys8Party: Cardinal; - TextKeys8Party: integer; + StaticParty: Array of Cardinal; + TextParty: Array of Cardinal; + StaticNonParty: Array of Cardinal; + TextNonParty: Array of Cardinal; constructor Create; override; procedure SetScroll; @@ -407,9 +372,11 @@ begin end else if (Mode = 1) then //PartyMode -> Show Menu begin - //Is this Right? - ScreenSong.StartSong; - //ScreenSongMenu.MenuShow(SM_Party_Main); + //Is this Right? + if (Ini.PartyPopup = 1) then + ScreenSongMenu.MenuShow(SM_Party_Main) + else + ScreenSong.StartSong; end; end; end; @@ -722,45 +689,22 @@ begin StaticTeam3Joker4 := AddStatic(Theme.Song.StaticTeam3Joker4); StaticTeam3Joker5 := AddStatic(Theme.Song.StaticTeam3Joker5); - StaticKeys1 := AddStatic(Theme.Song.StaticKeys1); - TextKeys1 := AddText(Theme.Song.TextKeys1); - StaticKeys1Party := AddStatic(Theme.Song.StaticKeys1Party); - TextKeys1Party := AddText(Theme.Song.TextKeys1Party); - - StaticKeys2 := AddStatic(Theme.Song.StaticKeys2); - TextKeys2 := AddText(Theme.Song.TextKeys2); - StaticKeys2Party := AddStatic(Theme.Song.StaticKeys2Party); - TextKeys2Party := AddText(Theme.Song.TextKeys2Party); - - StaticKeys3 := AddStatic(Theme.Song.StaticKeys3); - TextKeys3 := AddText(Theme.Song.TextKeys3); - StaticKeys3Party := AddStatic(Theme.Song.StaticKeys3Party); - TextKeys3Party := AddText(Theme.Song.TextKeys3Party); - - StaticKeys4 := AddStatic(Theme.Song.StaticKeys4); - TextKeys4 := AddText(Theme.Song.TextKeys4); - StaticKeys4Party := AddStatic(Theme.Song.StaticKeys4Party); - TextKeys4Party := AddText(Theme.Song.TextKeys4Party); - - StaticKeys5 := AddStatic(Theme.Song.StaticKeys5); - TextKeys5 := AddText(Theme.Song.TextKeys5); - StaticKeys5Party := AddStatic(Theme.Song.StaticKeys5Party); - TextKeys5Party := AddText(Theme.Song.TextKeys5Party); - - StaticKeys6 := AddStatic(Theme.Song.StaticKeys6); - TextKeys6 := AddText(Theme.Song.TextKeys6); - StaticKeys6Party := AddStatic(Theme.Song.StaticKeys6Party); - TextKeys6Party := AddText(Theme.Song.TextKeys6Party); - - StaticKeys7 := AddStatic(Theme.Song.StaticKeys7); - TextKeys7 := AddText(Theme.Song.TextKeys7); - StaticKeys7Party := AddStatic(Theme.Song.StaticKeys7Party); - TextKeys7Party := AddText(Theme.Song.TextKeys7Party); - - StaticKeys8 := AddStatic(Theme.Song.StaticKeys8); - TextKeys8 := AddText(Theme.Song.TextKeys8); - StaticKeys8Party := AddStatic(Theme.Song.StaticKeys8Party); - TextKeys8Party := AddText(Theme.Song.TextKeys8Party); + //Load Party or NonParty specific Statics and Texts + SetLength(StaticParty, Length(Theme.Song.StaticParty)); + for I := 0 to High(Theme.Song.StaticParty) do + StaticParty[I] := AddStatic(Theme.Song.StaticParty[I]); + + SetLength(TextParty, Length(Theme.Song.TextParty)); + for I := 0 to High(Theme.Song.TextParty) do + TextParty[I] := AddText(Theme.Song.TextParty[I]); + + SetLength(StaticNonParty, Length(Theme.Song.StaticNonParty)); + for I := 0 to High(Theme.Song.StaticNonParty) do + StaticNonParty[I] := AddStatic(Theme.Song.StaticNonParty[I]); + + SetLength(TextNonParty, Length(Theme.Song.TextNonParty)); + for I := 0 to High(Theme.Song.TextNonParty) do + TextNonParty[I] := AddText(Theme.Song.TextNonParty[I]); // Song List // Songs.LoadSongList; // moved to the UltraStar unit @@ -1310,12 +1254,12 @@ begin begin SelectRandomSong; - //Show Mennu direct in PartyMode + //Show Menu directly in PartyMode //But only if selected in Options if (Ini.PartyPopup = 1) then - begin + begin ScreenSongMenu.MenuShow(SM_Party_Main); - end; + end; end; @@ -1754,97 +1698,27 @@ begin end; procedure TScreenSong.SetStatics; +var + I: Integer; + Visible: Boolean; begin - //If Party Mode - if Mode = 1 then //Use Statics for Party-Song-Selection - begin - Static[StaticKeys1].Visible := False; - Text[TextKeys1].Visible := False; - Static[StaticKeys1Party].Visible := True; - Text[TextKeys1Party].Visible := True; - - Static[StaticKeys2].Visible := False; - Text[TextKeys2].Visible := False; - Static[StaticKeys2Party].Visible := True; - Text[TextKeys2Party].Visible := True; - - Static[StaticKeys3].Visible := False; - Text[TextKeys3].Visible := False; - Static[StaticKeys3Party].Visible := True; - Text[TextKeys3Party].Visible := True; - - Static[StaticKeys4].Visible := False; - Text[TextKeys4].Visible := False; - Static[StaticKeys4Party].Visible := True; - Text[TextKeys4Party].Visible := True; - - Static[StaticKeys5].Visible := False; - Text[TextKeys5].Visible := False; - Static[StaticKeys5Party].Visible := True; - Text[TextKeys5Party].Visible := True; - - Static[StaticKeys6].Visible := False; - Text[TextKeys6].Visible := False; - Static[StaticKeys6Party].Visible := True; - Text[TextKeys6Party].Visible := True; - - Static[StaticKeys7].Visible := False; - Text[TextKeys7].Visible := False; - Static[StaticKeys7Party].Visible := True; - Text[TextKeys7Party].Visible := True; - - Static[StaticKeys8].Visible := False; - Text[TextKeys8].Visible := False; - Static[StaticKeys8Party].Visible := True; - Text[TextKeys8Party].Visible := True; - end - else //Use regular Statics for Song-Selection - begin - Static[StaticKeys1].Visible := True; - Text[TextKeys1].Visible := True; - Static[StaticKeys1Party].Visible := False; - Text[TextKeys1Party].Visible := False; - - Static[StaticKeys2].Visible := True; - Text[TextKeys2].Visible := True; - Static[StaticKeys2Party].Visible := False; - Text[TextKeys2Party].Visible := False; - - Static[StaticKeys2].Visible := True; - Text[TextKeys2].Visible := True; - Static[StaticKeys2Party].Visible := False; - Text[TextKeys2Party].Visible := False; - - Static[StaticKeys3].Visible := True; - Text[TextKeys3].Visible := True; - Static[StaticKeys3Party].Visible := False; - Text[TextKeys3Party].Visible := False; - - Static[StaticKeys4].Visible := True; - Text[TextKeys4].Visible := True; - Static[StaticKeys4Party].Visible := False; - Text[TextKeys4Party].Visible := False; - - Static[StaticKeys5].Visible := True; - Text[TextKeys5].Visible := True; - Static[StaticKeys5Party].Visible := False; - Text[TextKeys5Party].Visible := False; - - Static[StaticKeys6].Visible := True; - Text[TextKeys6].Visible := True; - Static[StaticKeys6Party].Visible := False; - Text[TextKeys6Party].Visible := False; - - Static[StaticKeys7].Visible := True; - Text[TextKeys7].Visible := True; - Static[StaticKeys7Party].Visible := False; - Text[TextKeys7Party].Visible := False; - - Static[StaticKeys8].Visible := True; - Text[TextKeys8].Visible := True; - Static[StaticKeys8Party].Visible := False; - Text[TextKeys8Party].Visible := False; - end; + //Set Visibility of Party Statics and Text + Visible := (Mode = 1); + + For I := 0 to high(StaticParty) do + Static[StaticParty[I]].Visible := Visible; + + For I := 0 to high(TextParty) do + Text[TextParty[I]].Visible := Visible; + + //Set Visibility of Non Party Statics and Text + Visible := not Visible; + + For I := 0 to high(StaticNonParty) do + Static[StaticNonParty[I]].Visible := Visible; + + For I := 0 to high(TextNonParty) do + Text[TextNonParty[I]].Visible := Visible; end; //Procedures for Menu diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index cecd32b0..73fe2102 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -421,12 +421,19 @@ Text= #Variable statics and texts for song-screen in sing- and partymode -#Each static or text comes in 2 versions now. E.g SongStaticKeys8Text and SongStaticKeys8TextParty. (Doh, i have to alter the names) -#There are 8 statics and 8 texts for each mode. 32 items alltogether. - +# There can be an unlimited Number of Statics and Texts, As long +# as the numbers are in order. +# Statics that are shown in PartyMode Only are Named_ +# SongStaticParty[No] +# Texts that are shown in PartyMode Only are Named_ +# SongTextParty[No] +# Statics that are shown in Normal Mode Only are Named_ +# SongStaticNonParty[No] +# Texts that are shown in Normal Mode Only are Named_ +# SongTextNonParty[No] #Here are the ones for singmode -[SongStaticKeys1] +[SongStaticNonParty1] X =40 Y =22 W =27 @@ -435,7 +442,7 @@ Color =White Tex =SongCD Type=Font Black -[SongStaticKeys2] +[SongStaticNonParty2] X =260 Y =553 W =26 @@ -444,7 +451,7 @@ Tex=ButtonAlt Color =White Type=Plain -[SongStaticKeys3] +[SongStaticNonParty3] X =300 Y =553 W =26 @@ -453,7 +460,7 @@ Tex=ButtonAZ Color =White Type=Plain -[SongStaticKeys4] +[SongStaticNonParty4] X =425 Y =553 W =22 @@ -462,7 +469,7 @@ Tex=ButtonM Color =White Type=Plain -[SongStaticKeys5] +[SongStaticNonParty5] X =515 Y =553 W =22 @@ -471,7 +478,7 @@ Tex=ButtonJ Color =White Type=Plain -[SongStaticKeys6] +[SongStaticNonParty6] X =679 Y =553 W =22 @@ -480,27 +487,8 @@ Tex=ButtonP Color =White Type=Plain -#Not used in this theme -#[SongStaticKeys7] -#X = -#Y = -#W = -#H = -#Tex= -#Color = -#Type= - -#Not used in this theme -#[SongStaticKeys8] -#X = -#Y = -#W = -#H = -#Tex= -#Color = -#Type= - -[SongStaticKeys1Text] +#Texts Non Party +[SongTextNonParty1] X =70 Y =6 Color=White @@ -509,7 +497,7 @@ Size =20 Text=SING_SONG_SELECTION Align=0 -[SongStaticKeys2Text] +[SongTextNonParty2] X =238 Y =552 Color=Black @@ -518,7 +506,7 @@ Size =7 Align=2 Text=SING_SONG_SELECTION_WHEREAMI -[SongStaticKeys3Text] +[SongTextNonParty3] X =288 Y =556 Color=Black @@ -527,7 +515,7 @@ Size =5 Align=0 Text=+ -[SongStaticKeys4Text] +[SongTextNonParty4] X =330 Y =552 Color=Black @@ -536,7 +524,7 @@ Size =7 Align=0 Text=SING_SONG_SELECTION_GOTO -[SongStaticKeys5Text] +[SongTextNonParty5] X =450 Y =552 Color=Black @@ -545,7 +533,7 @@ Size =7 Align=0 Text=SING_SONG_SELECTION_MENU -[SongStaticKeys6Text] +[SongTextNonParty6] X =540 Y =552 Color=Black @@ -554,7 +542,7 @@ Size =7 Align=0 Text=SONG_JUMPTO_DESC -[SongStaticKeys7Text] +[SongTextNonParty7] X =705 Y =552 Color=Black @@ -563,19 +551,10 @@ Size =7 Align=0 Text=SING_SONG_SELECTION_PLAYLIST -#Not used in this Theme -#[SongStaticKeys8Text] -#X = -#Y = -#Color= -#Font =0 -#Size =0 -#Align=0 -#Text= #and theese are the ones for partymode -[SongStaticKeys1Party] +[SongStaticParty1] X =40 Y =22 W =27 @@ -584,7 +563,7 @@ Color =White Tex =PartyIcon Type=Font Black -[SongStaticKeys2Party] +[SongStaticParty2] X =260 Y =553 W =26 @@ -593,7 +572,7 @@ Tex=Button13 Color =White Type=Plain -[SongStaticKeys3Party] +[SongStaticParty3] X =400 Y =553 W =22 @@ -602,7 +581,7 @@ Tex=ButtonM Color =White Type=Plain -[SongStaticKeys4Party] +[SongStaticParty4] X =540 Y =553 W =26 @@ -611,47 +590,9 @@ Tex=ButtonEnter Color =White Type=Plain -#Not used in this theme -#[SongStaticKeys5Party] -#X = -#Y = -#W = -#H = -#Tex= -#Color = -#Type= - -#Not used in this theme -#[SongStaticKeys6Party] -#X = -#Y = -#W = -#H = -#Tex= -#Color = -#Type= - -#Not used in this theme -#[SongStaticKeys7Party] -#X = -#Y = -#W = -#H = -#Tex= -#Color = -#Type= - -#Not used in this theme -#[SongStaticKeys8Party] -#X = -#Y = -#W = -#H = -#Tex= -#Color = -#Type= - -[SongStaticKeys1TextParty] +#Texts for Party Mode + +[SongTextParty1] X =70 Y =6 ColR = 0.7 @@ -662,7 +603,7 @@ Size = 20 Color =White Text=PARTY_MODE -[SongStaticKeys2TextParty] +[SongTextParty2] X =238 Y =552 Color=Black @@ -671,7 +612,7 @@ Size =7 Align=2 Text=PARTY_SONG_WHEREAMI -[SongStaticKeys3TextParty] +[SongTextParty3] X =288 Y =552 Color=Black @@ -680,7 +621,7 @@ Size =7 Align=0 Text=SONG_MENU_NAME_PARTY_JOKER -[SongStaticKeys4TextParty] +[SongTextParty4] X =426 Y =552 Color=Black @@ -689,7 +630,7 @@ Size =7 Align=0 Text=PARTY_SONG_MENU -[SongStaticKeys5TextParty] +[SongTextParty5] X =570 Y =552 Color=Black @@ -698,39 +639,10 @@ Size =7 Align=0 Text=PARTY_SONG_LEGEND_CONTINUE -#Not used in this Theme -#[SongStaticKeys6TextParty] -#X = -#Y = -#Color= -#Font =0 -#Size =0 -#Align=0 -#Text= - -#Not used in this Theme -#[SongStaticKeys7TextParty] -#X = -#Y = -#Color= -#Font =0 -#Size =0 -#Align=0 -#Text= - -#Not used in this Theme -#[SongStaticKeys8TextParty] -#X = -#Y = -#Color= -#Font =0 -#Size =0 -#Align=0 -#Text= - #variable statics end +# Jokers, 5 for each team, only shown in party Mode [SongStaticTeam1Joker1] Tex =Joker X =480 -- cgit v1.2.3 From 718855f7191c9d4963da9977ee49d155e376691b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 10:42:45 +0000 Subject: Now when no Cat, Search or Playlist is shown, the Text specified in Theme for TextCat is shown git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@207 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 95550a32..31d05dce 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -170,8 +170,11 @@ var I, I2: Integer; procedure TScreenSong.HideCatTL; begin //Hide - Text[TextCat].Visible := false; + //Text[TextCat].Visible := false; Static[StaticCat].Visible := false; + //New -> Show Text specified in Theme + Text[TextCat].Visible := True; + Text[TextCat].Text := Theme.Song.TextCat.Text; end; //Show Cat in Top Left Mod End -- cgit v1.2.3 From b00fb13d63e4b82a1de662bf3a37814bfd58dc8b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 11:04:54 +0000 Subject: Added ability to use German Umlaute Jump To Song Screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@208 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 79e851ab..60410d91 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -35,7 +35,7 @@ var implementation -uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, USongs, UScreenSong; +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, USongs, UScreenSong, ULog; function TScreenSongJumpto.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; function IsVisible: Boolean; @@ -73,7 +73,7 @@ begin If (PressedDown) Then begin // Key Down case PressedKey of - SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL, SDLK_LEFTBRACKET, SDLK_SEMICOLON: begin if Interaction = 0 then begin -- cgit v1.2.3 From d2f6ecd73457de4ca12603b57e6c5d2e135e5d2d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 11:21:36 +0000 Subject: Fixed a Bug in UScreenSongJumpto that causes a wrong Song is Displayed in Song Selection when Tabs=0 and Search is opened, Search Type is changed and Search is closed. Fixed Position of SelectSlideType in Jump to Song Screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@209 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 2 +- Themes/Deluxe.ini | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 60410d91..42aedf3c 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -214,7 +214,7 @@ begin VisSongs := Count; //Fix SongSelection - ScreenSong.Interaction := 0; + ScreenSong.Interaction := high(CatSongs.Song); ScreenSong.SelectNext; ScreenSong.FixSelected; diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 73fe2102..9b9dea47 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -7160,13 +7160,13 @@ Z=1 Tex = button TexSBG = mainicon #Text = SONG_JUMPTO_TYPE_DESC -Font=10 +Font=1 X = 192 -Y = 185 +Y = 205 Z = 1 W = 0 -H = 0 -SkipX = 0 +H = 30 +SkipX = 4 SBGW= 300 Fields=2 DColor = LightBlue -- cgit v1.2.3 From 04189268afb620a6a0d09a675f771c0df9f1264f Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 11:33:40 +0000 Subject: Fixed a Bug in Jump to Letter: A and Z now Works correctly Fixed a Bug in Skipto funktion that causes a wrong Song is Selected when Tabs=0. This was the Reason for some Bugs in Jump to and Random Functions. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@210 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 31d05dce..6f3bbc63 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -210,7 +210,7 @@ begin + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); //Jump to Artist/Titel - if (SDL_ModState and KMOD_LALT <> 0) AND (Mode = 0) AND (PressedKey > SDLK_A) AND (PressedKey < SDLK_Z) then + if (SDL_ModState and KMOD_LALT <> 0) AND (Mode = 0) AND (PressedKey >= SDLK_A) AND (PressedKey <= SDLK_Z) then begin Letter := UpCase(Chr(ScanCode)); I2 := Length(CatSongs.Song); @@ -1441,7 +1441,7 @@ begin if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then Texture.UnloadTexture(Button[Interaction].Texture.Name, false); - Interaction := 0; + Interaction := High(CatSongs.Song); SongTarget := 0; for I := 1 to Target+1 do -- cgit v1.2.3 From 6c70187a80c2d1096231957cf86410d5786254b2 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 11:44:12 +0000 Subject: Fixed mispositioned Select [VideoSize] in OptionsGraphic Screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@211 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 9b9dea47..a0759ade 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -3208,32 +3208,12 @@ SBGDColor = Gray STColor = White STDColor = GrayDark -[OptionsGraphicsSelectLineBonus] -Tex =MainBar -TexSBG =MainBar -Text =SING_OPTIONS_GRAPHICS_LINEBONUS -X = 40 -Y = 305 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex =MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - [OptionsGraphicsSelectMovieSize] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE X = 40 -Y = 360 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -3250,7 +3230,7 @@ STDColor = GrayDark [OptionsGraphicsButtonExit] X = 40 -Y = 415 +Y = 360 W = 230 H = 70 Tex =MainBar -- cgit v1.2.3 From d52cb874cd39eac4a4aff100c22bf3280eea4275 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 17 May 2007 14:04:07 +0000 Subject: added: Video Icon. Shows if Video is present in Song-Selection. Needs to be fixed. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@212 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 12 +++++++++++- Game/Code/Screens/UScreenSong.pas | 11 +++++++++++ Skins/Deluxe/Autum.ini | 1 + Skins/Deluxe/Blue.ini | 1 + Skins/Deluxe/Summer.ini | 1 + Skins/Deluxe/Winter.ini | 1 + Skins/Deluxe/[icon]video.jpg | Bin 0 -> 2608 bytes Themes/Deluxe.ini | 11 ++++++++++- 8 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 Skins/Deluxe/[icon]video.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 0fe207e9..471e46bf 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -249,7 +249,10 @@ type TextTitle: TThemeText; TextNumber: TThemeText; - //Show Cat in TopLeft Mod + //Video Icon Mod + VideoIcon: TThemeStatic; + + //Show Cat in TopLeft Mod TextCat: TThemeText; StaticCat: TThemeStatic; @@ -280,6 +283,7 @@ type ColR, ColG, ColB: Real; end; + //Party and Non Party specific Statics and Texts StaticParty: AThemeStatic; TextParty: AThemeText; @@ -303,6 +307,8 @@ type StaticTeam3Joker3: TThemeStatic; StaticTeam3Joker4: TThemeStatic; StaticTeam3Joker5: TThemeStatic; + + end; TThemeSing = class(TThemeBasic) @@ -959,6 +965,9 @@ begin ThemeLoadText(Song.TextTitle, 'SongTextTitle'); ThemeLoadText(Song.TextNumber, 'SongTextNumber'); + //Video Icon Mod + ThemeLoadStatic(Song.VideoIcon, 'SongVideoIcon'); + //Show Cat in TopLeft Mod ThemeLoadStatic(Song.StaticCat, 'SongStaticCat'); ThemeLoadText(Song.TextCat, 'SongTextCat'); @@ -1020,6 +1029,7 @@ begin ThemeLoadStatic(Song.StaticTeam3Joker4, 'SongStaticTeam3Joker4'); ThemeLoadStatic(Song.StaticTeam3Joker5, 'SongStaticTeam3Joker5'); + // Sing ThemeLoadBasic(Sing, 'Sing'); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 6f3bbc63..4fe679f7 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -13,6 +13,9 @@ type TextTitle: integer; TextNumber: integer; + //Video Icon Mod + VideoIcon: Cardinal; + TextCat: integer; StaticCat: integer; @@ -58,6 +61,7 @@ type StaticNonParty: Array of Cardinal; TextNonParty: Array of Cardinal; + constructor Create; override; procedure SetScroll; procedure SetScroll1; @@ -1326,6 +1330,13 @@ begin inherited Draw; + //Draw Video Icon if Video is present + if CatSongs.Song[Interaction].Video <> '' then + Static[VideoIcon].Visible := True + else + Static[VideoIcon].Visible := False; + + //Draw Equalizer if Theme.Song.Equalizer.Visible then DrawEqualizer; diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini index ad9dbdbe..4be2a132 100644 --- a/Skins/Deluxe/Autum.ini +++ b/Skins/Deluxe/Autum.ini @@ -34,6 +34,7 @@ IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +VideoIcon = [icon]video.jpg IconError = [icon]error.jpg IconQuestion = [icon]question.jpg diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 6c45cfcc..7ef40741 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -34,6 +34,7 @@ IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +VideoIcon = [icon]video.jpg IconError = [icon]error.jpg IconQuestion = [icon]question.jpg diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index 4e830766..72126d08 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -34,6 +34,7 @@ IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +VideoIcon = [icon]video.jpg IconError = [icon]error.jpg IconQuestion = [icon]question.jpg diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index 93f95b88..00db0467 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -34,6 +34,7 @@ IconSongMenu = [icon]songmenu.jpg ScoreIcon = [icon]score.jpg PartyIcon = [icon]party.jpg StatIcon = [icon]stats.jpg +VideoIcon = [icon]video.jpg IconError = [icon]error.jpg IconQuestion = [icon]question.jpg diff --git a/Skins/Deluxe/[icon]video.jpg b/Skins/Deluxe/[icon]video.jpg new file mode 100644 index 00000000..12d71add Binary files /dev/null and b/Skins/Deluxe/[icon]video.jpg differ diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index a0759ade..e20155c4 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -340,6 +340,15 @@ Space=1 Bands=5 Length=18 +[SongVideoIcon] +X =140 +Y =495 +W =32 +H =32 +Color=White +Tex =VideoIcon +Type=Font Black + [SongStatic1] X =0 Y =549 @@ -419,7 +428,6 @@ Size =8 Align =2 Text= - #Variable statics and texts for song-screen in sing- and partymode # There can be an unlimited Number of Statics and Texts, As long # as the numbers are in order. @@ -838,6 +846,7 @@ TexY1=0 TexX2=1 TexY2=1 + [Sing] Texts =1 -- cgit v1.2.3 From 8c035bb950519a86c90f64aab7c58aa98089569c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 14:15:50 +0000 Subject: Some Code Cleanup in UScreenSong Fixed VideoIcon Display git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@213 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 4fe679f7..82dad1ed 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -664,9 +664,6 @@ var begin inherited Create; -// AddStatic(200, 10, 400, 90, Skin.SelectSong); -// AddStatic(200-10, 140-5, 400+20, 50+10, Skin.Selection, 'JPG', 'Font Gray'); - LoadFromTheme(Theme.Song); TextArtist := AddText(Theme.Song.TextArtist); @@ -677,6 +674,9 @@ begin TextCat := AddText(Theme.Song.TextCat); StaticCat := AddStatic(Theme.Song.StaticCat); + //Show Video Icon Mod + VideoIcon := AddStatic(Theme.Song.VideoIcon); + //Party Mode StaticTeam1Joker1 := AddStatic(Theme.Song.StaticTeam1Joker1); StaticTeam1Joker2 := AddStatic(Theme.Song.StaticTeam1Joker2); @@ -748,21 +748,12 @@ begin AddButton(300 + Pet*250, 140, 200, 200, CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'JPG', 'Plain', Theme.Song.Cover.Reflections); end; Texture.Limit := 1024*1024; - - -// AddButtonText(11, 10, CatSongs.Song[Pet].Title); // new way end; -// Covers.Save; - { if Length(CatSongs.Song) > 0 then // setting to first song - Interaction := 0 - else begin // no song detected - AddButton(400-200, 140, 400, 50, Skin.Button, 'JPG', 'Transparent Range'); - AddButtonText(11, 10, 'No songs detected'); - end;} + // Randomize Patch - Randomize; + Randomize; //Equalizer SetLength(EqualizerBands, Theme.Song.Equalizer.Bands); //ClearArray @@ -788,6 +779,9 @@ begin end; else SetScroll4; end; + //Set Visibility of Video Icon + Static[VideoIcon].Visible := (CatSongs.Song[Interaction].Video <> ''); + //Set Texts: Text[TextArtist].Text := CatSongs.Song[Interaction].Artist; Text[TextTitle].Text := CatSongs.Song[Interaction].Title; @@ -1330,12 +1324,6 @@ begin inherited Draw; - //Draw Video Icon if Video is present - if CatSongs.Song[Interaction].Video <> '' then - Static[VideoIcon].Visible := True - else - Static[VideoIcon].Visible := False; - //Draw Equalizer if Theme.Song.Equalizer.Visible then -- cgit v1.2.3 From 1858dadeadf071bbc3eb16ae835fc9bd95440eab Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 14:23:38 +0000 Subject: Video Tag will now only be read when the VideoFile exists. -> Better usability of VideoIcon git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@214 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UFiles.pas | 2 +- Game/Code/Screens/UScreenStatMain.pas | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index 912a476d..aa336233 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -239,7 +239,7 @@ begin end // Video File - else if (Identifier = 'VIDEO') then + else if (Identifier = 'VIDEO') AND (FileExists(Song.Path + Value)) then begin Song.Video := Value; end diff --git a/Game/Code/Screens/UScreenStatMain.pas b/Game/Code/Screens/UScreenStatMain.pas index 219ccd57..54457a6e 100644 --- a/Game/Code/Screens/UScreenStatMain.pas +++ b/Game/Code/Screens/UScreenStatMain.pas @@ -109,7 +109,7 @@ begin //Set Songs with Vid SongswithVid := 0; For I := 0 to high(Songs.Song) do - if (Songs.Song[I].Video <> '') AND FileExists(Songs.Song[I].Path + Songs.Song[I].Video) then + if (Songs.Song[I].Video <> '') then Inc(SongswithVid); end; -- cgit v1.2.3 From e3b3cbebc51062ce0229ab3d9515d71768ccd8ee Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 17 May 2007 14:53:03 +0000 Subject: Fix: Z-bug in Song-Menu, Video-Icon Position git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@215 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index e20155c4..d1785a3c 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -341,10 +341,11 @@ Bands=5 Length=18 [SongVideoIcon] -X =140 -Y =495 +X =249 +Y =487 W =32 H =32 +Z=1 Color=White Tex =VideoIcon Type=Font Black @@ -6974,7 +6975,7 @@ Color =LightBlue DColor = DarkBlue Type=Font Black Texts=1 -Z = 0.99 +Z = 0.98 Texts=1 [SongMenuButton1Text1] @@ -6985,7 +6986,7 @@ Font =0 Size =8 Text=SONG_MENU_PLAY Align=0 -Z=1 +Z=0.99 [SongMenuButton2] X = 460 @@ -6997,7 +6998,7 @@ Color =LightBlue DColor = DarkBlue Type=Font Black Texts=1 -Z = 0.99 +Z = 0.98 Texts=1 [SongMenuButton2Text1] @@ -7008,7 +7009,7 @@ Font =0 Size =8 Text=SONG_MENU_EDIT Align=0 -Z=1 +Z=0.99 [SongMenuButton3] X = 460 @@ -7020,7 +7021,7 @@ Color =LightBlue DColor = DarkBlue Type=Font Black Texts=1 -Z = 0.99 +Z = 0.98 Texts=1 [SongMenuButton3Text1] @@ -7031,7 +7032,7 @@ Font =0 Size =8 Text=SONG_MENU_MODI Align=0 -Z=1 +Z=0.99 [SongMenuButton4] X = 460 @@ -7043,7 +7044,7 @@ Color =LightBlue DColor = DarkBlue Type=Font Black Texts=1 -Z = 0.99 +Z = 0.98 [SongMenuButton4Text1] X =30 @@ -7053,7 +7054,7 @@ Font =0 Size =8 Text=SONG_MENU_CANCEL Align=0 -Z=1 +Z=0.99 [SongMenuSelectSlide3] Tex = Rectangle @@ -7063,7 +7064,7 @@ X = 460 Y = 225 W = 0 H = 25 -Z = 0.99 +Z = 0.98 SkipX = 0 SBGW=270 @@ -7087,7 +7088,7 @@ Font =0 Size =14 Text=MENU Align=0 -Z=1 +Z=0.99 [SongMenuStatic2] X =463 @@ -7097,7 +7098,7 @@ H =21 Color =White Tex =IconSongMenu Type=Font Black -Z=1 +Z=0.98 [SongMenuStatic1] Tex =SongMenuBG @@ -7105,7 +7106,7 @@ X =448 Y =120 W =300 H =200 -Z =0.95 +Z =0.94 Int=1 Color =DarkBlue Type=Font Black @@ -7120,7 +7121,7 @@ X =171 Y =175 W =355 H =175 -Z =0.99 +Z =0.98 Int=1 Color =DarkBlue Type=Font Black @@ -7133,7 +7134,7 @@ H =21 Color =White Tex =MainSearch Type=Font Black -Z=1 +Z=0.99 [SongJumptoText1] X =210 @@ -7143,7 +7144,7 @@ Font =0 Size =14 Text=SONG_JUMPTO_TYPE_DESC Align=0 -Z=1 +Z=0.99 [SongJumptoSelectSlideType] Tex = button @@ -7152,7 +7153,7 @@ TexSBG = mainicon Font=1 X = 192 Y = 205 -Z = 1 +Z = 0.99 W = 0 H = 30 SkipX = 4 @@ -7169,7 +7170,7 @@ STDColor = LightBlue [SongJumptoButtonSearchText] X = 200 Y = 215 -Z = 1 +Z = 0.99 W = 160 H = 50 Size=14 @@ -7184,7 +7185,7 @@ Font =0 Size =8 Text=SONG_JUMPTO_HELP Align=0 -Z=1 +Z=0.99 [StatMain] Texts=0 -- cgit v1.2.3 From d780f6149e018a7d4f677978d9022503efb20013 Mon Sep 17 00:00:00 2001 From: mota23 Date: Thu, 17 May 2007 15:51:21 +0000 Subject: Fix: Redrawn PopupFG git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@216 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[menu]PopUpFg.JPG | Bin 3241 -> 5993 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[menu]PopUpFg.JPG b/Skins/Deluxe/[menu]PopUpFg.JPG index 1bea7390..9e9c6dea 100644 Binary files a/Skins/Deluxe/[menu]PopUpFg.JPG and b/Skins/Deluxe/[menu]PopUpFg.JPG differ -- cgit v1.2.3 From c6a480ee43bf2e7c5497d918852fb6035dfc0ebc Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 17 May 2007 16:13:58 +0000 Subject: Fixed some Language Entrys git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@217 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 8 +++++--- Languages/German.ini | 12 +++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Languages/English.ini b/Languages/English.ini index 13696195..2a2dcd75 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -283,8 +283,10 @@ STAT_DESC_BANDS=Most popular Bands STAT_DESC_BANDS_REVERSED=Least popular Bands STAT_FORMAT_BANDS=%0:s \n %1:dx Sung -MSG_QUESTION_TITLE=Chicken Out +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Question MSG_QUIT_USDX=Really leave\n\nUltraStar? MSG_END_PARTY=Really end\n\nParty Mode? -ERROR_NO_SONGS=Error: \n No Songs \n loaded -ERROR_NO_PLUGINS=Error: \n No Plugins \n loaded \ No newline at end of file +ERROR_NO_SONGS=No Songs \n\n loaded. +ERROR_NO_PLUGINS=No Plugins \n\n loaded. +ERROR_CORRUPT_SONG=Song could not be \n\n loaded. \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index effdd04a..981be27a 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -283,8 +283,10 @@ STAT_DESC_BANDS=Beliebteste Bands STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d -MSG_QUESTION_TITLE=Chicken Out -MSG_QUIT_USDX=UltraStar\n\nwirklich\n\nverlassen? -MSG_END_PARTY=Party Modus\n\nbeenden? -ERROR_NO_SONGS=Fehler: \n Keine Songs \n vorhanden -ERROR_NO_PLUGINS=Fehler: \n Keine Plugins \n vorhanden \ No newline at end of file +MSG_ERROR_TITLE=Fehler +MSG_QUESTION_TITLE=Frage +MSG_QUIT_USDX=UltraStar \n\n wirklich\n\nverlassen? +MSG_END_PARTY=Party Modus \n\n beenden? +ERROR_NO_SONGS=Keine Songs \n\n vorhanden. +ERROR_NO_PLUGINS=Keine Plugins \n\n vorhanden. +ERROR_CORRUPT_SONG=Song konnte nicht \n\n geladen werden. \ No newline at end of file -- cgit v1.2.3 From 56ce1cf3c09f0ebad019bb1f158d335e41f3d2d6 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 18 May 2007 10:54:33 +0000 Subject: Removed Debug Message from UIni, showing the saved SoundCard Entrys git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@218 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UIni.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index ca7afe9a..f3ea84ac 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -616,7 +616,7 @@ begin IniFile.WriteString('Record', 'ChannelR' + S, Tekst); end; - Log.LogError(InttoStr(Length(CardList)) + ' Cards Saved'); + //Log.LogError(InttoStr(Length(CardList)) + ' Cards Saved'); //Advanced Settings -- cgit v1.2.3 From 4f7f9544e5dbf992599865243aee4c6e2a5b5f8e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 18 May 2007 10:55:28 +0000 Subject: Added ability to take a Screenshot with the Print Key from every Screen in the Game git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@219 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMain.pas | 7 +++++-- Game/Code/Menu/UDisplay.pas | 7 +++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 47860198..3bf7d197 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -160,13 +160,16 @@ Begin End; // With} SDL_KEYDOWN: begin + //ScreenShot hack. If Print is pressed-> Make screenshot and Save to Screenshots Path + if (Event.key.keysym.sym = SDLK_SYSREQ) then + Display.ScreenShot + // popup hack... if there is a visible popup then let it handle input instead of underlying screen // shoud be done in a way to be sure the topmost popup has preference (maybe error, then check) - if (ScreenPopupError <> NIL) and (ScreenPopupError.Visible) then + else if (ScreenPopupError <> NIL) and (ScreenPopupError.Visible) then done := not ScreenPopupError.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) else if (ScreenPopupCheck <> NIL) AND (ScreenPopupCheck.Visible) then done := not ScreenPopupCheck.ParseInput(Event.key.keysym.sym, Event.key.keysym.unicode, True) - // end of popup hack else diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index abaedfa8..f95a73e3 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -300,7 +300,6 @@ begin Jpeg.Assign(Bitmap); Bitmap.Free; Jpeg.CompressionQuality := 95;//90; - ForceDirectories(ScreenshotsPath); Jpeg.SaveToFile(FileName); Jpeg.Free; end; @@ -317,7 +316,7 @@ begin for Num := 1 to 9999 do begin FileName := IntToStr(Num); while Length(FileName) < 4 do FileName := '0' + FileName; - FileName := {ScreenshotsPath + }'screenshot' + FileName + '.BMP'; + FileName := ScreenshotsPath + FileName + '.BMP'; if not FileExists(FileName) then break end; @@ -331,8 +330,8 @@ begin //Schreiben der Bitmap-Informationen FileInfo.biSize := SizeOf(BITMAPINFOHEADER); - FileInfo.biWidth := ScreenH; - FileInfo.biHeight := ScreenW; + FileInfo.biWidth := ScreenW; + FileInfo.biHeight := ScreenH; FileInfo.biPlanes := 1; FileInfo.biBitCount := 32; FileInfo.biSizeImage := FileInfo.biWidth*FileInfo.biHeight*(FileInfo.biBitCount div 8); -- cgit v1.2.3 From 7bf5487faf2b099ced0b2126c2cca164be80acf1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 18 May 2007 10:57:17 +0000 Subject: Some changes mode on ModiSDK and Depending Files(Plugin Loader, Party SingScreen and Plugins) Changes make the Pluginsystem more extendable with backwards compatibility in further Versions. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@220 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDLLManager.pas | 22 ++++++--- Game/Code/Screens/UScreenSingModi.pas | 2 - Modis/5000Points/Until5000.dpr | 6 ++- Modis/Blind/Blind.dpr | 11 +++-- Modis/Don't_Get_Worse/Hold_The_Line.dpr | 20 ++++----- Modis/Duell/Duell.dpr | 8 +++- Modis/SDK/ModiSDK.pas | 80 ++++++++++++++++++--------------- 7 files changed, 87 insertions(+), 62 deletions(-) diff --git a/Game/Code/Classes/UDLLManager.pas b/Game/Code/Classes/UDLLManager.pas index 59c75d5b..4b8838b9 100644 --- a/Game/Code/Classes/UDLLManager.pas +++ b/Game/Code/Classes/UDLLManager.pas @@ -25,7 +25,7 @@ type function LoadPlugin(No: Cardinal): boolean; procedure UnLoadPlugin; - function PluginInit (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; + function PluginInit (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: pModi_PlaySound): boolean; function PluginDraw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; function PluginFinish (var Playerinfo: TPlayerinfo): byte; procedure PluginRData (handle: HSTREAM; buffer: Pointer; len: DWORD; user: DWORD); @@ -75,6 +75,9 @@ end; procedure TDLLMan.ClearPluginInfo(No: Cardinal); begin + //Set to Party Modi Plugin + Plugins[No].Typ := 8; + Plugins[No].Name := 'unknown'; Plugins[No].NumPlayers := 0; @@ -183,12 +186,19 @@ if (hLib <> 0) then @P_RData := nil; end; -function TDLLMan.PluginInit (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; +function TDLLMan.PluginInit (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: pModi_PlaySound): boolean; +var + Methods: TMethodRec; begin -if (@P_Init <> nil) then - Result := P_Init (TeamInfo, PlayerInfo, Sentences, LoadTex, Print, LoadSound, PlaySound) -else - Result := False + Methods.LoadTex := LoadTex; + Methods.Print := Print; + Methods.LoadSound := LoadSound; + Methods.PlaySound := PlaySound; + + if (@P_Init <> nil) then + Result := P_Init (TeamInfo, PlayerInfo, Sentences, Methods) + else + Result := False end; function TDLLMan.PluginDraw (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index 93ede980..0b9ab893 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -1061,8 +1061,6 @@ begin Result.TexNum := Tex.TexNum; Result.W := Tex.W; Result.H := Tex.H; - Result.ScaleW := Tex.ScaleW; - Result.ScaleH := Tex.ScaleH; end; { function Translate (const Name: PChar): PChar; stdcall; diff --git a/Modis/5000Points/Until5000.dpr b/Modis/5000Points/Until5000.dpr index 8d66eb5f..b826d212 100644 --- a/Modis/5000Points/Until5000.dpr +++ b/Modis/5000Points/Until5000.dpr @@ -7,12 +7,14 @@ uses procedure PluginInfo (var Info: TPluginInfo); stdcall; begin Info.Name := 'PLUGIN_UNTIL5000_NAME'; - Info.NumPlayers := 31; Info.Creator := 'Whiteshark'; Info.PluginDesc := 'PLUGIN_UNTIL5000_DESC'; + //Set to Party Modi Plugin + Info.Typ := 8; + Info.NumPlayers := 31; //Options Info.LoadSong := True; //Whether or not a Song should be Loaded //Only When Song is Loaded: @@ -38,7 +40,7 @@ begin end; //Executed on Game Start //If True Game begins, else Failure -function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const Methods: TMethodRec): boolean; stdcall; begin Result := True; end; diff --git a/Modis/Blind/Blind.dpr b/Modis/Blind/Blind.dpr index ab440e67..c806171d 100644 --- a/Modis/Blind/Blind.dpr +++ b/Modis/Blind/Blind.dpr @@ -7,11 +7,14 @@ uses procedure PluginInfo (var Info: TPluginInfo); stdcall; begin Info.Name := 'PLUGIN_BLIND_NAME'; - Info.NumPlayers := 31; Info.Creator := 'Whiteshark'; Info.PluginDesc := 'PLUGIN_BLIND_DESC'; + //Set to Party Modi Plugin + Info.Typ := 8; + + Info.NumPlayers := 31; //Options Info.LoadSong := True; //Whether or not a Song should be Loaded @@ -38,7 +41,7 @@ begin end; //Executed on Game Start //If True Game begins, else Failure -function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const Methods: TMethodRec): boolean; stdcall; begin Result := True; end; @@ -86,7 +89,9 @@ begin end; end; end; - + //If everybody has 0 Points nobody Wins + If (MaxScore = 0) then + Result := 0; end; exports diff --git a/Modis/Don't_Get_Worse/Hold_The_Line.dpr b/Modis/Don't_Get_Worse/Hold_The_Line.dpr index ef7a16f7..de19858b 100644 --- a/Modis/Don't_Get_Worse/Hold_The_Line.dpr +++ b/Modis/Don't_Get_Worse/Hold_The_Line.dpr @@ -10,8 +10,7 @@ var PointerTex: TSmallTexture; CountSentences: Cardinal; Limit: Byte; - fPrint: fModi_Print; - fPlaySound: fModi_PlaySound; + MethodRec: TMethodRec; Frame: Integer; PlayerTimes: array[0..5] of Integer; LastTick: Cardinal; @@ -23,12 +22,14 @@ var procedure PluginInfo (var Info: TPluginInfo); stdcall; begin Info.Name := 'PLUGIN_HDL_NAME'; - Info.NumPlayers := 31; Info.Creator := 'Whiteshark'; Info.PluginDesc := 'PLUGIN_HDL_DESC'; + //Set to Party Modi Plugin + Info.Typ := 8; + Info.NumPlayers := 31; //Options Info.LoadSong := True; //Whether or not a Song should be Loaded //Only When Song is Loaded: @@ -54,28 +55,27 @@ begin end; //Executed on Game Start //If True Game begins, else Failure -function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const Methods: TMethodRec): boolean; stdcall; var I: Integer; Texname, TexType: PChar; begin TexName := CreateStr(PChar('HDL_Pointer')); TexType := CreateStr(PChar('Font Black')); - PointerTex := LoadTex(TexName, TexType); + PointerTex := Methods.LoadTex(TexName, TexType); FreeStr(TexName); FreeStr(TexType); TexName := CreateStr(PChar('dismissed.mp3')); - DismissedSound := LoadSound (TexName); + DismissedSound := Methods.LoadSound (TexName); FreeStr(TexName); CountSentences := Sentences.High; Limit := 0; Frame := 0; - fPrint := Print; - fPlaySound := PlaySound; + MethodRec := Methods; for I := 0 to PlayerInfo.NumPlayers-1 do begin @@ -138,7 +138,7 @@ begin Inc(C); PlayerTimes[I] := CurSentence; //Save Time of Dismission //PlaySound - fPlaySound (DismissedSound); + MethodRec.PlaySound (DismissedSound); end; //Draw Pointer @@ -172,7 +172,7 @@ begin glColor4f (0.8, 0.8, 0.8, 1); - fPrint (1, 6, PlayerInfo.Playerinfo[I].PosX, PlayerInfo.Playerinfo[I].PosY-8, Text); + MethodRec.Print (1, 6, PlayerInfo.Playerinfo[I].PosX, PlayerInfo.Playerinfo[I].PosY-8, Text); FreeStr(Text); end; end; diff --git a/Modis/Duell/Duell.dpr b/Modis/Duell/Duell.dpr index 4a22a5d7..cff9d4ef 100644 --- a/Modis/Duell/Duell.dpr +++ b/Modis/Duell/Duell.dpr @@ -7,12 +7,13 @@ uses procedure PluginInfo (var Info: TPluginInfo); stdcall; begin Info.Name := 'PLUGIN_DUELL_NAME'; - Info.NumPlayers := 31; Info.Creator := 'Whiteshark'; Info.PluginDesc := 'PLUGIN_DUELL_DESC'; + Info.Typ := 8; + Info.NumPlayers := 31; //Options Info.LoadSong := True; //Whether or not a Song should be Loaded //Only When Song is Loaded: @@ -38,7 +39,7 @@ begin end; //Executed on Game Start //If True Game begins, else Failure -function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; +function Init (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const Methods: TMethodRec): boolean; stdcall; begin Result := True; end; @@ -85,6 +86,9 @@ begin end; end; + //When nobody has Points -> Everybody loose + if (MaxScore = 0) then + Result := 0; end; exports diff --git a/Modis/SDK/ModiSDK.pas b/Modis/SDK/ModiSDK.pas index dc3b74c0..d8bad0d2 100644 --- a/Modis/SDK/ModiSDK.pas +++ b/Modis/SDK/ModiSDK.pas @@ -9,37 +9,41 @@ type //PluginInfo, for Init Creator: Array [0..32] of Char; //Name of the Author PluginDesc: Array [0..64] of Char; //Plugin Description - //Options - LoadSong: boolean; //Whether or not a Song should be Loaded - //Only When Song is Loaded: - ShowNotes: boolean; //Whether the Note Lines should be displayed - LoadVideo: boolean; //Should the Video be loaded ? - LoadBack: boolean; //Should the Background be loaded ? - - ShowRateBar: boolean; //Whether the Bar that shows how good the player was sould be displayed - ShowRateBar_O: boolean; //Load from Ini whether the Bar should be Displayed - - EnLineBonus: boolean; //Whether LineBonus Should be enabled - EnLineBonus_O: boolean; //Load from Ini whether LineBonus Should be enabled - - BGShowFull: boolean; //Whether the Background or the Video should be shown Fullsize - BGShowFull_O: boolean; //Whether the Background or the Video should be shown Fullsize - - //Options -> everytime - ShowScore: boolean; //Whether or not the Score should be shown - ShowBars: boolean; //Whether the White Bars on Top and Bottom should be Drawn - TeamModeOnly: boolean; //If True the Plugin can only be Played in Team Mode - GetSoundData: boolean; //If True the RData Procedure is called when new SoundData is available - Dummy: boolean; //Should be Set to False... for Updateing Plugin Interface - - NumPlayers: Byte; //Number of Available Players for Modi - //Set different Bits - //1 -> One Player - //2 -> Two Players - //4 -> Three Players - //8 -> Four Players - //16-> Six Players - //e.g. : 10 -> Playable with 2 and 4 Players + //Plugin Typ, atm: 8 only for PartyMode Modi + Case Typ: byte of + 8: ( + //Options + LoadSong: boolean; //Whether or not a Song should be Loaded + //Only When Song is Loaded: + ShowNotes: boolean; //Whether the Note Lines should be displayed + LoadVideo: boolean; //Should the Video be loaded ? + LoadBack: boolean; //Should the Background be loaded ? + + ShowRateBar: boolean; //Whether the Bar that shows how good the player was sould be displayed + ShowRateBar_O: boolean; //Load from Ini whether the Bar should be Displayed + + EnLineBonus: boolean; //Whether LineBonus Should be enabled + EnLineBonus_O: boolean; //Load from Ini whether LineBonus Should be enabled + + BGShowFull: boolean; //Whether the Background or the Video should be shown Fullsize + BGShowFull_O: boolean; //Whether the Background or the Video should be shown Fullsize + + //Options -> everytime + ShowScore: boolean; //Whether or not the Score should be shown + ShowBars: boolean; //Whether the White Bars on Top and Bottom should be Drawn + TeamModeOnly: boolean; //If True the Plugin can only be Played in Team Mode + GetSoundData: boolean; //If True the RData Procedure is called when new SoundData is available + Dummy: boolean; //Should be Set to False... for Updateing Plugin Interface + + NumPlayers: Byte //Number of Available Players for Modi + //Set different Bits + //1 -> One Player + //2 -> Two Players + //4 -> Three Players + //8 -> Four Players + //16-> Six Players + //e.g. : 10 -> Playable with 2 and 4 Players + ); end; @@ -76,8 +80,6 @@ type //PluginInfo, for Init TexNum: integer; W: real; H: real; - ScaleW: real; // for dynamic scalling while leaving width constant - ScaleH: real; // for dynamic scalling while leaving height constant end; TSentences = record @@ -110,8 +112,6 @@ type //PluginInfo, for Init end; end; - //AChar = array [0..254] of Char; - DWORD = Longword; HSTREAM = DWORD; @@ -120,13 +120,19 @@ type //PluginInfo, for Init //fModi_Translate = function (const Name, Translation: AChar): Integer; stdcall; //Pointer to Translator fModi_Print = procedure (const Style, Size: Byte; const X, Y: Real; const Text: PChar); stdcall; //Procedure to Print Text //Now translated automatically fModi_LoadSound = function (const Name: PChar): Cardinal; stdcall; //Procedure that loads a Custom Sound - fModi_PlaySound = procedure (const Index: Cardinal); stdcall; //Plays a Custom Sound + pModi_PlaySound = procedure (const Index: Cardinal); stdcall; //Plays a Custom Sound + TMethodRec = record + LoadTex: fModi_LoadTex; + Print: fModi_Print; + LoadSound: fModi_LoadSound; + PlaySound: pModi_PlaySound; + end; //DLL Funktionen //Gave the Plugins Info pModi_PluginInfo = procedure (var Info: TPluginInfo); stdcall; //Executed on Game Start //If True Game begins, else Failure - fModi_Init = function (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const LoadTex: fModi_LoadTex; const Print: fModi_Print; LoadSound: fModi_LoadSound; PlaySound: fModi_PlaySound): boolean; stdcall; + fModi_Init = function (const TeamInfo: TTeamInfo; var Playerinfo: TPlayerinfo; const Sentences: TSentences; const Methods: TMethodRec): boolean; stdcall; //Executed everytime the Screen is Drawed //If False The Game finishes fModi_Draw = function (var Playerinfo: TPlayerinfo; const CurSentence: Cardinal): boolean; stdcall; //Is Executed on Finish, Returns the Playernum of the Winner -- cgit v1.2.3 From ab2634e9b83cb44ad7d5a8b54a397b8c22a78778 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 18 May 2007 18:06:54 +0000 Subject: Fixed a Bug in Jump to Menu that causes a Wrong Song is Played, when the first Song is in the Results and Tabs=off. LastPlayed Variable was not set correctly. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@221 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 42aedf3c..cfb897a8 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -187,6 +187,8 @@ begin //Select Input Interaction := 0; Button[0].Text[0].Selected := True; + + LastPlayed := ScreenSong.Interaction; end; function TScreenSongJumpto.Draw: boolean; -- cgit v1.2.3 From f0e4ad452891aec64c777c4bf806fc6f989ee327 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 18 May 2007 19:31:55 +0000 Subject: Some Code Cleanup and Minor Bugfixes in UScreenSongJumpto git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@222 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index cfb897a8..2ea94cdc 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -84,27 +84,23 @@ begin SDLK_BACKSPACE: begin - if Interaction = 0 then + if (Interaction = 0) AND (Length(Button[0].Text[0].Text) > 0) then begin Button[0].Text[0].DeleteLastL; SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); end; end; - SDLK_ESCAPE : - begin - Music.PlayBack; - Visible := False; - if VisSongs = 0 then - CatSongs.SetFilter('', 0); - end; - - SDLK_RETURN: + SDLK_RETURN, SDLK_ESCAPE: begin Visible := False; Music.PlayBack; - if VisSongs = 0 then + if (VisSongs = 0) AND (Length(Button[0].Text[0].Text) > 0) then + begin + Button[0].Text[0].Text := ''; CatSongs.SetFilter('', 0); + SetTextFound(0); + end; end; // Up and Down could be done at the same time, @@ -127,7 +123,8 @@ begin if (Interaction=1) then begin InteractInc; - SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + if (Length(Button[0].Text[0].Text) > 0) then + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); end; end; SDLK_LEFT: @@ -135,7 +132,8 @@ begin if (Interaction=1) then begin InteractDec; - SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + if (Length(Button[0].Text[0].Text) > 0) then + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); end; end; end; @@ -178,7 +176,7 @@ begin //Reset Screen if no Old Search is Displayed if (CatSongs.CatNumShow <> -2) then begin - SelectType := 0; + SelectsS[0].SetSelectOpt(0); Button[0].Text[0].Text := ''; Text[0].Text := Theme.SongJumpto.NoSongsFound; @@ -201,7 +199,10 @@ begin if (Count = 0) then begin Text[0].Text := Theme.SongJumpto.NoSongsFound; - ScreenSong.HideCatTL; + if (Length(Button[0].Text[0].Text) = 0) then + ScreenSong.HideCatTL + else + ScreenSong.ShowCatTLCustom(Format(Theme.SongJumpto.CatText, [Button[0].Text[0].Text])); end else begin -- cgit v1.2.3 From e651ba08275a787932d6463773a4823f1b0ca30c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 20 May 2007 09:33:23 +0000 Subject: Fixed a bug in uSMPEG, that causes much memory is not not freeed, after playing a Video File. (Texture and Surface are created new every Time) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@223 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/SMpeg/USmpeg.pas | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Game/Code/SMpeg/USmpeg.pas b/Game/Code/SMpeg/USmpeg.pas index c7f756db..85f3f988 100644 --- a/Game/Code/SMpeg/USmpeg.pas +++ b/Game/Code/SMpeg/USmpeg.pas @@ -112,8 +112,9 @@ end; procedure CloseSmpeg; begin -// glmovie_quit; SMPEG_delete(mpeg); + //Fixing the Memory Lag in earlyer Versions (X-Mas Mod, all Official Versions) + glmovie_quit; end; function glmovie_init( Width : GLuint; Height : TGLuint ) : TGLenum; @@ -294,6 +295,7 @@ end; procedure glmovie_quit; begin glDeleteTextures(1, @texture_ids); + SDL_FreeSurface(surface); end; end. -- cgit v1.2.3 From 2a172c386d2c69a5a4157d8a6c0d4e64875b7011 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 20 May 2007 09:37:38 +0000 Subject: Fixed a Bug in UScreenSong. Everytime the Category List is shown, the next Song was selected. (Tabs=On) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@224 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 82dad1ed..12929629 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -218,7 +218,7 @@ begin begin Letter := UpCase(Chr(ScanCode)); I2 := Length(CatSongs.Song); - + //Jump To Titel if (SDL_ModState = KMOD_LALT or KMOD_LSHIFT) then begin @@ -252,7 +252,7 @@ begin ChangeMusic; SetScroll4; UpdateLCD; - + //Break and Exit Exit; end; @@ -664,7 +664,7 @@ var begin inherited Create; - LoadFromTheme(Theme.Song); + LoadFromTheme(Theme.Song); TextArtist := AddText(Theme.Song.TextArtist); TextTitle := AddText(Theme.Song.TextTitle); @@ -759,6 +759,9 @@ begin //ClearArray For I := low(EqualizerBands) to high(EqualizerBands) do EqualizerBands[I] := 3; + + if (Length(CatSongs.Song) > 0) then + Interaction := 0; end; procedure TScreenSong.SetScroll; @@ -1222,13 +1225,12 @@ begin //Cat Mod etc if (Ini.Tabs_at_startup = 1) AND (CatSongs.CatNumShow = -1) then - begin + begin CatSongs.ShowCategoryList; - SelectNext; //Workaround <- must be fixed sometime FixSelected; //Show Cat in Top Left Mod - HideCatTL; - end; + HideCatTL; + end; if Length(CatSongs.Song) > 0 then begin @@ -1782,4 +1784,4 @@ FixSelected; } end; -end. +end. \ No newline at end of file -- cgit v1.2.3 From 8d45ef9b08de96a0037ac9e245a84b7730228736 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 20 May 2007 09:40:48 +0000 Subject: An effort to make a workaround for the many Crashes when a Video File ist corrupted. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@225 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSing.pas | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index cdce5984..3899a4ed 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -730,7 +730,23 @@ end; procedure TScreenSing.onShowFinish; begin // play movie (II) - if AktSong.VideoLoaded then PlaySmpeg; + + if AktSong.VideoLoaded then + begin + try + PlaySmpeg; + except + //If an Error occurs Reading Video: prevent Video from being Drawn again and Close Video + AktSong.VideoLoaded := False; + Log.LogError('Error drawing Video, Video has been disabled for this Song/Session.'); + Log.LogError('Corrupted File: ' + AktSong.Video); + try + CloseSmpeg; + except + + end; + end; + end; // play music (II) Music.Play; @@ -1039,7 +1055,19 @@ begin SingDrawBackground; // update and draw movie if ShowFinish and AktSong.VideoLoaded then begin - UpdateSmpeg; // this only draws + try + UpdateSmpeg; // this only draws + except + //If an Error occurs drawing: prevent Video from being Drawn again and Close Video + AktSong.VideoLoaded := False; + log.LogError('Error drawing Video, Video has been disabled for this Song/Session.'); + Log.LogError('Corrupted File: ' + AktSong.Video); + try + CloseSmpeg; + except + + end; + end; end; // draw static menu (FG) -- cgit v1.2.3 From 0df43e29d3d12f93fd4ace638cfb60b65dd32262 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 23 May 2007 17:00:52 +0000 Subject: Fixed a Bug that can cause the application crashes, when Song Data is missing. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@226 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UFiles.pas | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index aa336233..ee1935cd 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -239,9 +239,12 @@ begin end // Video File - else if (Identifier = 'VIDEO') AND (FileExists(Song.Path + Value)) then + else if (Identifier = 'VIDEO') then begin - Song.Video := Value; + if (FileExists(Song.Path + Value)) then + Song.Video := Value + else + Log.LogError('Can''t find Video File in Song: ' + Song.Path + Song.FileName); end // Video Gap @@ -579,6 +582,7 @@ begin Result := ReadTxTHeader(AktSong); if not Result then begin + CloseFile(SongFile); Log.LogError('Error Loading SongHeader, abort Song Loading'); Exit; end; @@ -594,6 +598,7 @@ begin if (EoF(SongFile)) then begin //Song File Corrupted - No Notes + CloseFile(SongFile); Log.LogError('Could not load txt File, no Notes found: ' + Name); Result := False; Exit; @@ -617,7 +622,6 @@ begin // TempC := Tekst[1]; // read from backup variable, don't use default ':' value while (TempC <> 'E') AND (not EOF(SongFile)) do begin - Inc(FileLineNo); if (TempC = ':') or (TempC = '*') or (TempC = 'F') then begin // wczytuje nute Read(SongFile, Param1); @@ -688,10 +692,17 @@ begin end; Read(SongFile, TempC); + Inc(FileLineNo); end; // while} CloseFile(SongFile); except + try + CloseFile(SongFile); + except + + end; + Log.LogError('Error Loading File: "' + Name + '" in Line ' + inttostr(FileLineNo)); exit; end; -- cgit v1.2.3 From e58500643f569b426b4f6e4f9e21a549b007acf7 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 23 May 2007 17:31:40 +0000 Subject: Fixed a Bug in Score Converter, that causes Scores are added 2 Times when Database Scores are coverted back to *.sco Files. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@227 b956fd51-792f-4845-bead-9b4dfca2ff2c --- ScoreConverter/ToDo.txt | 2 - ScoreConverter/Umainform.pas | 126 ++++++++++++++++++++++--------------------- 2 files changed, 64 insertions(+), 64 deletions(-) delete mode 100644 ScoreConverter/ToDo.txt diff --git a/ScoreConverter/ToDo.txt b/ScoreConverter/ToDo.txt deleted file mode 100644 index e8987f87..00000000 --- a/ScoreConverter/ToDo.txt +++ /dev/null @@ -1,2 +0,0 @@ -There is still a Bug when Writing Scores from DB back to SCo files. -Most high entrys are duplicated don't know why... \ No newline at end of file diff --git a/ScoreConverter/Umainform.pas b/ScoreConverter/Umainform.pas index 20c3e494..c5cc5347 100644 --- a/ScoreConverter/Umainform.pas +++ b/ScoreConverter/Umainform.pas @@ -137,92 +137,94 @@ var I, J, K: Integer; LastI: integer; begin - pProgress.Max := high(Songs.Song); - pProgress.Position := 0; - // Go through all Songs - For I := 0 to high(Songs.Song) do + if (Messagebox(0, PChar('If the same directory is added more than one time the Score-File will be useless. Contìnue ?'), PChar(Mainform.Caption), MB_ICONWARNING or MB_YESNO) = IDYes) then begin - try - //Read Scores from .SCO File - ReadScore (Songs.Song[I]); + pProgress.Max := high(Songs.Song); + pProgress.Position := 0; + // Go through all Songs + For I := 0 to high(Songs.Song) do + begin + try + //Read Scores from .SCO File + ReadScore (Songs.Song[I]); - //Go from Easy to Difficult - For J := 0 to 2 do - begin - //Go through all Score Entrys with Difficulty J - For K := 0 to high(Songs.Song[I].Score[J]) do + //Go from Easy to Difficult + For J := 0 to 2 do begin - //Add to DataBase - DataBase.AddScore(Songs.Song[I], J, Songs.Song[I].Score[J][K].Name, Songs.Song[I].Score[J][K].Score); + //Go through all Score Entrys with Difficulty J + For K := 0 to high(Songs.Song[I].Score[J]) do + begin + //Add to DataBase + DataBase.AddScore(Songs.Song[I], J, Songs.Song[I].Score[J][K].Name, Songs.Song[I].Score[J][K].Score); + end; end; + + except + showmessage ('Error Converting Score From Song: ' + Songs.Song[I].Path + Songs.Song[I].FileName); end; - except - showmessage ('Error Converting Score From Song: ' + Songs.Song[I].Path + Songs.Song[I].FileName); + //Update ProgressBar + J := I div 30; + if (LastI <> J) then + begin + LastI := J; + pProgress.Position := I; + lStatus.Caption := 'Adding Songscore: ' + Songs.Song[I].Artist + ' - ' + Songs.Song[I].Title; + Application.ProcessMessages; + end; end; - //Update ProgressBar - if (LastI <> I div 30) then - begin - LastI := I div 30; - pProgress.Position := I; - lStatus.Caption := 'Adding Songscore: ' + Songs.Song[I].Artist + ' - ' + Songs.Song[I].Title; - Application.ProcessMessages; - end; + pProgress.Position := pProgress.Max; + lStatus.Caption := 'Finished'; end; - - pProgress.Position := pProgress.Max; - lStatus.Caption := 'Finished'; end; procedure Tmainform.bFromDBClick(Sender: TObject); var - I, J, K: Integer; + I, J: Integer; LastI: integer; anyScoreinthere: boolean; begin - pProgress.Max := high(Songs.Song); - pProgress.Position := 0; - // Go through all Songs - For I := 0 to high(Songs.Song) do + if (Messagebox(0, PChar('All Score Entrys in the Song Directory having an equivalent will be Overwritten. Contìnue ?'), PChar(Mainform.Caption), MB_ICONWARNING or MB_YESNO) = IDYes) then begin - try - //Not Write ScoreFile when there are no Scores for this File - anyScoreinthere := false; - //Read Scores from DB File - Database.ReadScore (Songs.Song[I]); - - //Go from Easy to Difficult - For J := 0 to 2 do - begin - //Go through all Score Entrys with Difficulty J - For K := 0 to high(Songs.Song[I].Score[J]) do + pProgress.Max := high(Songs.Song); + pProgress.Position := 0; + // Go through all Songs + For I := 0 to high(Songs.Song) do + begin + try + //Not Write ScoreFile when there are no Scores for this File + anyScoreinthere := false; + //Read Scores from DB File + Database.ReadScore (Songs.Song[I]); + + //Go from Easy to Difficult + For J := 0 to 2 do begin - //Add to ScoreFile - AddScore(Songs.Song[I], J, Songs.Song[I].Score[J][K].Name, Songs.Song[I].Score[J][K].Score); - anyScoreinthere := True; + anyScoreinthere := anyScoreinthere or (Length(Songs.Song[I].Score[J]) > 0); end; - end; - if AnyScoreinThere then - WriteScore(Songs.Song[I]); + if AnyScoreinThere then + WriteScore(Songs.Song[I]); - except - showmessage ('Error Converting Score From Song: ' + Songs.Song[I].Path + Songs.Song[I].FileName); - end; + except + showmessage ('Error Converting Score From Song: ' + Songs.Song[I].Path + Songs.Song[I].FileName); + end; - //Update ProgressBar - if (LastI <> I div 30) then - begin - LastI := I div 30; - pProgress.Position := I; - lStatus.Caption := 'Writing ScoreFile: ' + Songs.Song[I].Artist + ' - ' + Songs.Song[I].Title; - Application.ProcessMessages; + //Update ProgressBar + J := I div 30; + if (LastI <> J) then + begin + LastI := J; + pProgress.Position := I; + lStatus.Caption := 'Writing ScoreFile: ' + Songs.Song[I].Artist + ' - ' + Songs.Song[I].Title; + Application.ProcessMessages; + end; end; + + pProgress.Position := pProgress.Max; + lStatus.Caption := 'Finished'; end; - - pProgress.Position := pProgress.Max; - lStatus.Caption := 'Finished'; end; end. -- cgit v1.2.3 From a10097068d1b3f0a0477fceecde29af35a14ab0b Mon Sep 17 00:00:00 2001 From: mota23 Date: Sat, 26 May 2007 15:28:31 +0000 Subject: some Themework in classic-theme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@228 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Star.ini | 6 + Skins/Classic/[main]Bar.jpg | Bin 2115 -> 3689 bytes Themes/Classic.ini | 725 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 644 insertions(+), 87 deletions(-) diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index 57ba3994..d174f2e0 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -128,10 +128,16 @@ ButtonAZ = [button]az.jpg ButtonEnter = [button]enter.jpg ButtonNavi = [button]navi.jpg ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg # # # N O T E S # # # diff --git a/Skins/Classic/[main]Bar.jpg b/Skins/Classic/[main]Bar.jpg index 4e9693e3..2453cc3b 100644 Binary files a/Skins/Classic/[main]Bar.jpg and b/Skins/Classic/[main]Bar.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index c392edc0..8451d6fd 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -1400,6 +1400,7 @@ Size=12 Align=0 Text=P1 Color=P1Dark + [ScoreTextScore4] X=70 Y=110 @@ -1408,6 +1409,7 @@ Size=9 Align=0 Text=Tone Deaf Color=GrayDark + [ScoreTextNotes4] X=55 Y=220 @@ -1416,6 +1418,7 @@ Size=9 Align=0 Text=SING_NOTES Color=GrayDark + [ScoreTextNotesScore4] X=260 Y=220 @@ -1424,6 +1427,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextLineBonus4] X=55 Y=260 @@ -1432,6 +1436,7 @@ Size=9 Align=0 Text=SING_PHRASE_BONUS Color=GrayDark + [ScoreTextLineBonusScore4] X=260 Y=260 @@ -1440,6 +1445,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextGoldenNotes4] X=55 Y=300 @@ -1448,6 +1454,7 @@ Size=9 Align=0 Text=SING_GOLDEN_NOTES Color=GrayDark + [ScoreTextGoldenNotesScore4] X=260 Y=300 @@ -1456,6 +1463,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextTotal4] X=20 Y=370 @@ -1464,6 +1472,7 @@ Size=9 Align=0 Text=SING_TOTAL Color=GrayDark + [ScoreTextTotalScore4] X=260 Y=360 @@ -1472,6 +1481,7 @@ Size=15 Align=2 Text=00000 Color=GrayDark + [ScoreStaticBackLevel4] X=0 Y=0 @@ -1484,6 +1494,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticBackLevelRound4] X=0 Y=0 @@ -1496,6 +1507,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticLevel4] X=0 Y=0 @@ -1508,6 +1520,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticLevelRound4] X=0 Y=0 @@ -1520,6 +1533,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreTextName5] X=280 Y=160 @@ -1528,6 +1542,7 @@ Size=12 Align=0 Text=P2 Color=P2Dark + [ScoreTextScore5] X=330 Y=110 @@ -1536,6 +1551,7 @@ Size=9 Align=0 Text=Tone Deaf Color=GrayDark + [ScoreTextNotes5] X=315 Y=220 @@ -1544,6 +1560,7 @@ Size=9 Align=0 Text=SING_NOTES Color=GrayDark + [ScoreTextNotesScore5] X=520 Y=220 @@ -1552,6 +1569,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextLineBonus5] X=315 Y=260 @@ -1560,6 +1578,7 @@ Size=9 Align=0 Text=SING_PHRASE_BONUS Color=GrayDark + [ScoreTextLineBonusScore5] X=520 Y=260 @@ -1568,6 +1587,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextGoldenNotes5] X=315 Y=300 @@ -1576,6 +1596,7 @@ Size=9 Align=0 Text=SING_GOLDEN_NOTES Color=GrayDark + [ScoreTextGoldenNotesScore5] X=520 Y=300 @@ -1584,6 +1605,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextTotal5] X=280 Y=370 @@ -1592,6 +1614,7 @@ Size=9 Align=0 Text=SING_TOTAL Color=GrayDark + [ScoreTextTotalScore5] X=520 Y=360 @@ -1600,6 +1623,7 @@ Size=15 Align=2 Text=00000 Color=GrayDark + [ScoreStaticBackLevel5] X=0 Y=0 @@ -1612,6 +1636,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticBackLevelRound5] X=0 Y=0 @@ -1624,6 +1649,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticLevel5] X=0 Y=0 @@ -1636,6 +1662,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticLevelRound5] X=0 Y=0 @@ -1648,6 +1675,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreTextName6] X=540 Y=160 @@ -1656,6 +1684,7 @@ Size=12 Align=0 Text=P2 Color=P3Dark + [ScoreTextScore6] X=590 Y=110 @@ -1664,6 +1693,7 @@ Size=9 Align=0 Text=Tone Deaf Color=GrayDark + [ScoreTextNotes6] X=575 Y=220 @@ -1672,6 +1702,7 @@ Size=9 Align=0 Text=SING_NOTES Color=GrayDark + [ScoreTextNotesScore6] X=780 Y=220 @@ -1680,6 +1711,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextLineBonus6] X=575 Y=260 @@ -1688,6 +1720,7 @@ Size=9 Align=0 Text=SING_PHRASE_BONUS Color=GrayDark + [ScoreTextLineBonusScore6] X=780 Y=260 @@ -1696,6 +1729,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextGoldenNotes6] X=575 Y=300 @@ -1704,6 +1738,7 @@ Size=9 Align=0 Text=SING_GOLDEN_NOTES Color=GrayDark + [ScoreTextGoldenNotesScore6] X=780 Y=300 @@ -1712,6 +1747,7 @@ Size=10 Align=2 Text=0000 Color=GrayDark + [ScoreTextTotal6] X=540 Y=370 @@ -1720,6 +1756,7 @@ Size=9 Align=0 Text=SING_TOTAL Color=GrayDark + [ScoreTextTotalScore6] X=780 Y=360 @@ -1728,6 +1765,7 @@ Size=15 Align=2 Text=00000 Color=GrayDark + [ScoreStaticBackLevel6] X=0 Y=0 @@ -1740,6 +1778,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticBackLevelRound6] X=0 Y=0 @@ -1752,6 +1791,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticLevel6] X=0 Y=0 @@ -1764,6 +1804,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScoreStaticLevelRound6] X=0 Y=0 @@ -1776,6 +1817,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScorePlayer5Static1] X=280 Y=205 @@ -1788,6 +1830,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScorePlayer5Static2] X=280 Y=345 @@ -1800,6 +1843,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScorePlayer5Static3] X=280 Y=410 @@ -1864,6 +1908,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScorePlayer6Static2] X=540 Y=345 @@ -1876,6 +1921,7 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [ScorePlayer6Static3] X=540 Y=410 @@ -1978,7 +2024,6 @@ TexY1=0 TexX2=1 TexY2=1 - [OptionsTextDescription] X = 70 Y = 248 @@ -1991,93 +2036,206 @@ Size = 10 [OptionsButtonGame] X = 40 Y = 310 -W = 230 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonGameText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_GAME +Color=White [OptionsButtonGraphics] -X = 270 +X = 220 Y = 310 -W = 230 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonGraphicsText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_GRAPHICS +Color=White [OptionsButtonSound] -X = 500 +X = 400 Y = 310 -W = 230 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonSoundText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_SOUND +Color=White [OptionsButtonLyrics] -X = 40 -Y = 380 -W = 230 +X = 580 +Y = 310 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonLyricsText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_LYRICS +Color=White [OptionsButtonThemes] -X = 270 +X = 40 Y = 380 -W = 230 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonThemesText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_THEMES +Color=White [OptionsButtonRecord] -X = 500 +X = 220 Y = 380 -W = 230 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonRecordText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_RECORD +Color=White +Texts=1 + +[OptionsButtonAdvanced] +X = 400 +Y = 380 +W = 180 +H = 70 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[OptionsButtonAdvancedText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_ADVANCED +Color=White +Texts=1 [OptionsButtonExit] -X = 500 -Y = 450 -W = 230 +X = 580 +Y = 380 +W = 180 H = 70 -Tex = MainBar +Tex = Button Color = ColorDark Int = 1 DColor = White DInt = 0.5 Type = Font Black +Texts=1 + +[OptionsButtonExitText1] +X =16 +Y =15 +Font=0 +Size=13 +Align=0 +Text=SING_OPTIONS_EXIT +Color=White [OptionsGame] -Texts = 1 +Texts = 3 [OptionsGameBackground] Tex=OptionsBG +[OptionsGameStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsGameStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsGameText1] X = 50 Y = 10 @@ -2086,14 +2244,32 @@ ColG = 0.7 ColB = 0.7 Font = 1 Size = 25 -Text=SING_OPTIONS_GAME_DESC +Text=SING_OPTIONS_GAME_WHEREAMI + +[OptionsGameText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsGameText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsGameSelectPlayers] Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_GAME_PLAYERS X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2113,7 +2289,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_GAME_DIFFICULTY X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2134,7 +2310,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_GAME_LANGUAGE X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2154,7 +2330,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GAME_TABS X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -2174,7 +2350,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GAME_SORTING X = 40 -Y = 380 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -2194,7 +2370,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GAME_DEBUG X = 40 -Y = 450 +Y = 360 W = 230 H = 70 SkipX = 50 @@ -2211,7 +2387,7 @@ STDColor = GrayDark [OptionsGameButtonExit] X = 40 -Y = 520 +Y = 415 W = 230 H = 70 Tex =MainBar @@ -2219,12 +2395,32 @@ Color = ColorDark DColor = Gray Type = Font Black + [OptionsGraphics] -Texts = 1 +Texts = 3 [OptionsGraphicsBackground] Tex=OptionsBG +[OptionsGraphicsStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsGraphicsStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsGraphicsText1] X = 50 Y = 10 @@ -2233,14 +2429,32 @@ ColG = 0.7 ColB = 0.7 Font = 1 Size = 25 -Text=SING_OPTIONS_GRAPHICS_DESC +Text=SING_OPTIONS_GRAPHICS_WHEREAMI + +[OptionsGraphicsText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsGraphicsText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsGraphicsSelectSlideResolution] Tex =MainBar TexSBG =MainBar Text=SING_OPTIONS_GRAPHICS_RESOLUTION X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2260,7 +2474,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_FULLSCREEN X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2280,7 +2494,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_DEPTH X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2300,27 +2514,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_OSCILLOSCOPE X = 40 -Y = 310 -W = 230 -H = 70 -SkipX = 50 - -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex =MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark - -[OptionsGraphicsSelectLineBonus] -Tex =MainBar -TexSBG =MainBar -Text =SING_OPTIONS_GRAPHICS_LINEBONUS -X = 40 -Y = 380 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -2340,7 +2534,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE X = 40 -Y = 450 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -2357,7 +2551,7 @@ STDColor = GrayDark [OptionsGraphicsButtonExit] X = 40 -Y = 520 +Y = 360 W = 230 H = 70 Tex =MainBar @@ -2365,12 +2559,32 @@ Color = ColorDark DColor = Gray Type = Font Black + [OptionsSound] -Texts = 1 +Texts = 3 [OptionsSoundBackground] Tex=OptionsBG +[OptionsSoundStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsSoundStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsSoundText1] X = 50 Y = 10 @@ -2379,14 +2593,32 @@ ColG = 0.7 ColB = 0.7 Font = 1 Size = 25 -Text =SING_OPTIONS_SOUND_DESC +Text =SING_OPTIONS_SOUND_WHEREAMI + +[OptionsSoundText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsSoundText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsSoundSelectMicBoost] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_MIC_BOOST X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2406,7 +2638,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_CLICK_ASSIST X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2426,7 +2658,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_BEAT_CLICK X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2446,7 +2678,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_THRESHOLD X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -2466,7 +2698,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_SOUND_TWO_PLAYERS_MODE X = 40 -Y = 380 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -2483,7 +2715,7 @@ STDColor = GrayDark [OptionsSoundButtonExit] X = 40 -Y = 460 +Y = 360 W = 230 H = 70 Tex =MainBar @@ -2491,12 +2723,32 @@ Color = ColorDark DColor = Gray Type = Font Black + [OptionsLyrics] -Texts = 1 +Texts = 3 [OptionsLyricsBackground] Tex=OptionsBG +[OptionsLyricsStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsLyricsStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsLyricsText1] X = 50 Y = 10 @@ -2505,14 +2757,32 @@ ColG = 0.7 ColB = 0.7 Font = 1 Size = 25 -Text =SING_OPTIONS_LYRICS_DESC +Text =SING_OPTIONS_LYRICS_WHEREAMI + +[OptionsLyricsText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsLyricsText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsLyricsSelectLyricsFont] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_LYRICS_FONT X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2532,7 +2802,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_LYRICS_EFFECT X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2552,7 +2822,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_LYRICS_SOLMIZATION X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2569,7 +2839,7 @@ STDColor = GrayDark [OptionsLyricsButtonExit] X = 40 -Y = 450 +Y = 250 W = 230 H = 70 Tex =MainBar @@ -2577,12 +2847,32 @@ Color = ColorDark DColor = Gray Type = Font Black + [OptionsThemes] -Texts = 1 +Texts = 5 [OptionsThemesBackground] Tex=OptionsBG +[OptionsThemesStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsThemesStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsThemesText1] X = 50 Y = 10 @@ -2591,14 +2881,32 @@ ColG = 0.7 ColB = 0.7 Font = 1 Size = 25 -Text =SING_OPTIONS_THEMES_DESC +Text =SING_OPTIONS_THEMES_WHEREAMI + +[OptionsThemesText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsThemesText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsThemesSelectTheme] Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_THEMES_THEME X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2618,7 +2926,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_THEMES_SKIN X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2638,7 +2946,7 @@ Tex =MainBar TexSBG =MainBar Text =SING_OPTIONS_THEMES_COLOR X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2655,7 +2963,7 @@ STDColor = GrayDark [OptionsThemesButtonExit] X = 40 -Y = 450 +Y = 250 W = 230 H = 70 Tex =MainBar @@ -2663,12 +2971,32 @@ Color = ColorDark DColor = Gray Type = Font Black + [OptionsRecord] -Texts = 1 +Texts = 3 [OptionsRecordBackground] Tex=OptionsBG +[OptionsRecordStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsRecordStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + [OptionsRecordText1] X = 50 Y = 10 @@ -2677,14 +3005,32 @@ ColG = 0.7 ColB = 0.7 Font = 1 Size = 25 -Text=SING_OPTIONS_RECORD_DESC +Text=SING_OPTIONS_RECORD_WHEREAMI + +[OptionsRecordText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsRecordText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC [OptionsRecordSelectSlideCard] Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_CARD X = 40 -Y = 100 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -2705,7 +3051,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_INPUT X = 40 -Y = 170 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -2726,7 +3072,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_CHANNELL X = 40 -Y = 240 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -2747,7 +3093,7 @@ Tex = MainBar TexSBG = MainBar Text =SING_OPTIONS_RECORD_CHANNELR X = 40 -Y = 310 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -2765,7 +3111,7 @@ STDColor = GrayDark [OptionsRecordButtonExit] X = 40 -Y = 380 +Y = 305 W = 230 H = 70 Tex = MainBar @@ -2773,6 +3119,211 @@ Color = ColorDark DColor = Gray Type = Font Black + +[OptionsAdvanced] +Texts = 3 + +[OptionsAdvancedBackground] +Tex=OptionsBG + +[OptionsAdvancedStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[OptionsAdvancedStatic2] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[OptionsAdvancedText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_ADVANCED_WHEREAMI + +[OptionsAdvancedText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[OptionsAdvancedText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + +[OptionsAdvancedSelectLoadAnimation] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_ADVANCED_LOADANIMATION +X = 40 +Y = 85 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectScreenFade] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_SCREENFADE +X = 40 +Y = 140 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectEffectSing] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_EFFECTSING +X = 40 +Y = 195 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectLineBonus] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_GRAPHICS_LINEBONUS +X = 40 +Y = 250 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectSlideOnSongClick] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_ADVANCED_ONSONGCLICK +X = 40 +Y = 305 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectAskbeforeDel] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL +X = 40 +Y = 360 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedSelectPartyPopup] +Tex =MainBar +TexSBG =MainBar +Text =SING_OPTIONS_ADVANCED_PARTYPOPUP +X = 40 +Y = 415 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsAdvancedButtonExit] +X = 40 +Y = 470 +W = 230 +H = 70 +Tex =MainBar +Color = ColorDark +DColor = Gray +Type = Font Black + + [Top5] Texts=1 -- cgit v1.2.3 From 10391b4d011dc60f1585643398b772bed3bb4beb Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 26 May 2007 15:30:36 +0000 Subject: Added Workaround and Error Reporting for Errors during Cover loading. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@229 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 75 ++++++++++++++++++++++++++++----------- 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 12929629..db5eb2b2 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -661,6 +661,7 @@ constructor TScreenSong.Create; var Pet: integer; I: integer; +Label CreateSongButtons; begin inherited Create; @@ -719,37 +720,69 @@ begin //Set Length of Button Array one Time Instead of one time for every Song SetButtonLength(Length(CatSongs.Song)); - for Pet := 0 to High(CatSongs.Song) do begin // creating all buttons - // new - Texture.Limit := 512;// 256 0.4.2 value, 512 in 0.5.0 - if not FileExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then - CatSongs.Song[Pet].Cover := ''; // 0.5.0: if cover not found then show 'no cover' + I := 0; + CreateSongButtons: - if CatSongs.Song[Pet].Cover = '' then - AddButton(300 + Pet*250, 140, 200, 200, Skin.GetTextureFileName('SongCover'), 'JPG', 'Plain', Theme.Song.Cover.Reflections) - else begin - // cache texture if there is a need to this - if not Covers.CoverExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then begin - Texture.CreateCacheMipmap := true; - Texture.GetTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'Plain', true); // preloads textures and creates cache mipmap - Texture.CreateCacheMipmap := false; + try + for Pet := I to High(CatSongs.Song) do begin // creating all buttons + // new + Texture.Limit := 512;// 256 0.4.2 value, 512 in 0.5.0 - // puts this texture to the cache file - Covers.AddCover(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover); + if not FileExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then + CatSongs.Song[Pet].Cover := ''; // 0.5.0: if cover not found then show 'no cover' - // unload full size texture - Texture.UnloadTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, false); + if CatSongs.Song[Pet].Cover = '' then + AddButton(300 + Pet*250, 140, 200, 200, Skin.GetTextureFileName('SongCover'), 'JPG', 'Plain', Theme.Song.Cover.Reflections) + else begin + // cache texture if there is a need to this + if not Covers.CoverExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then begin + Texture.CreateCacheMipmap := true; + Texture.GetTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'Plain', true); // preloads textures and creates cache mipmap + Texture.CreateCacheMipmap := false; - // we should also add mipmap texture by calling createtexture and use mipmap cache as data source + // puts this texture to the cache file + Covers.AddCover(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover); + + // unload full size texture + Texture.UnloadTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, false); + + // we should also add mipmap texture by calling createtexture and use mipmap cache as data source + end; + + // and now load it from cache file (small place for the optimization by eliminating reading it from file, but not here) + AddButton(300 + Pet*250, 140, 200, 200, CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'JPG', 'Plain', Theme.Song.Cover.Reflections); end; + Texture.Limit := 1024*1024; + I := -1; + end; + except + //When Error is reported the First time for this Song + if (I <> Pet) then + begin + //Some Error reporting: + Log.LogError('Could not load Cover: ' + CatSongs.Song[Pet].Cover); - // and now load it from cache file (small place for the optimization by eliminating reading it from file, but not here) - AddButton(300 + Pet*250, 140, 200, 200, CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'JPG', 'Plain', Theme.Song.Cover.Reflections); + //Change Cover to NoCover and Continue Loading + CatSongs.Song[Pet].Cover := ''; + I := Pet; + end + else //when Error occurs Multiple Times(NoSong Cover is damaged), then start loading next Song + begin + Log.LogError('NoCover Cover is damaged!'); + try + AddButton(300 + Pet*250, 140, 200, 200, '', 'JPG', 'Plain', Theme.Song.Cover.Reflections); + except + Messagebox(0, PChar('No Cover Image is damage. Could not Workaround Song Loading, Ultrastar will exit now.'), PChar(Language.Translate('US_VERSION')), MB_ICONERROR or MB_OK); + Halt; + end; + I := Pet + 1; end; - Texture.Limit := 1024*1024; end; + if (I <> -1) then + GoTo CreateSongButtons; + // Randomize Patch -- cgit v1.2.3 From c7e2eee2adb177669622a9ee99072ad2b746efe5 Mon Sep 17 00:00:00 2001 From: mota23 Date: Sat, 26 May 2007 15:48:55 +0000 Subject: Changed active lyrics color back to blue. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@230 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSing.pas | 6 +++--- Skins/Deluxe/[sing]lyricsHelpBar.bmp | Bin 3126 -> 3126 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 3899a4ed..ed79bb2f 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -403,9 +403,9 @@ begin {LyricMain.ColSR := Skin_FontHighlightR; LyricMain.ColSG := Skin_FontHighlightG; LyricMain.ColSB := Skin_FontHighlightB;1aa5dc} - LyricMain.ColSR := 96/255; //26 - LyricMain.ColSG := 192/255; //165 - LyricMain.ColSB := 96/255; //220 + LyricMain.ColSR := 5/255; //26 + LyricMain.ColSG := 163/255; //165 + LyricMain.ColSB := 210/255; //220 LyricSub.ColR := 0.4; //0.6 LyricSub.ColG := 0.4; //0.6 diff --git a/Skins/Deluxe/[sing]lyricsHelpBar.bmp b/Skins/Deluxe/[sing]lyricsHelpBar.bmp index 05d54752..87a22b6b 100644 Binary files a/Skins/Deluxe/[sing]lyricsHelpBar.bmp and b/Skins/Deluxe/[sing]lyricsHelpBar.bmp differ -- cgit v1.2.3 From 79bed9be3f06a0ce6026755fbe49bd7437bdf12e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 27 May 2007 09:26:00 +0000 Subject: Added workaround for corrupted background Images git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@231 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Changelog.txt | 15 +++++++++++---- Game/Code/Screens/UScreenSing.pas | 13 +++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Game/Changelog.txt b/Game/Changelog.txt index 839b8edb..b6de6209 100644 --- a/Game/Changelog.txt +++ b/Game/Changelog.txt @@ -12,8 +12,8 @@ Upd: New Method for displaying Covers in a Circle. Looks better with many Songs. Upd: Add Equalizer Object to SongScreen Upd: Add ability to add reflection to Buttons and Statics (Reflection = 1) Upd: Add ability to Group Buttons to a Buttonmenu, see Deluxe Theme Main Menu Tools Collection -Upd: Add ability to Hide Buttons within Theme. Useful for example for MAinscreen Exit Button -Upd: Add ability to give Texts a Wdth, so the Text breaks at the given Position +Upd: Add ability to Hide Buttons within Theme. Useful for example for Mainscreen Exit Button +Upd: Add ability to give Texts a Width, so the Text breaks at the given Position. -------------- Recording Options @@ -37,7 +37,7 @@ Party Mode Upd: Added Party Mode: 3 Teams possible with up to 4 Players => total of 12 Players -Upd: Modi SDK to create nearly any Modi with some Programming Skill +Upd: Modi SDK: Possibility to create nearly any Modi with some Programming Skill Upd: 4 Custom Party Modi Plugins: Duell, Hold the Line, Until 5000, Blind Mode -------------- @@ -61,15 +61,22 @@ Upd: Add some on Screen Error Messages helping new Peoples Upd: Add Advanced Screen with some new Options. Upd: Add a Question PopUp before exiting Upd: Show real Note in Editor (C, F#, etc.) +Fix: No crashes caused by corrupted Textfiles anymore. + Added Errormessage Popup inGame and Jump Back to Songscreen. So even the Party Mode, + isn't interuppted. Fix: Videosize can now be changed again Fix: Bug in LineBonus Popup that can end up in a Memory Overflow Fix: Bug in SelectSlide with less then 3 Options, No Overlapping anymore. Automatic resizing Fix: Backgrounds can be used now in option Screens, too +Fix: useless Memory usement when Song with Video is Played. When a Song with Video is played + there was some Memory that was not freeed at the End of the Song. This could have caused + too much Memory usement when many Songs with Video are Played. +Fix: Some Changes in Memory usement and better Loading speed. UltraStar 0.5.0 ultra-star.dl.am Mod X-Mas Edition (by Mota und Whiteshark) ----------------------------- -Upd: Headereinlesefunktion komplett neu geschrieben +Upd: New faster and Error resistant Header reader Upd: Bewertungs Bar (Singstar Like) Upd: PhrasenBonus + Popups diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index ed79bb2f..2ba7522f 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -8,9 +8,9 @@ uses UMenu, UMusic, SDL, SysUtils, UFiles, UTime, USongs, UIni, ULog, USmpeg, UT type TScreenSing = class(TMenu) protected - paused: boolean; //Pause Mod - PauseTime: Real; - NumEmptySentences: integer; + paused: boolean; //Pause Mod + PauseTime: Real; + NumEmptySentences: integer; public //TextTime: integer; @@ -356,7 +356,12 @@ begin // set background if (AktSong.Background <> '') and (AktSong.VideoLoaded = false) then - Tex_Background := Texture.LoadTexture(AktSong.Path + AktSong.Background) + try + Tex_Background := Texture.LoadTexture(AktSong.Path + AktSong.Background); + except + log.LogError('Background could not be loaded: ' + AktSong.Path + AktSong.Background); + Tex_Background.TexNum := -1; + end else Tex_Background.TexNum := -1; -- cgit v1.2.3 From 7ee656d31524f4820b362a31fc6bc1fe0988c0dc Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 28 May 2007 18:58:08 +0000 Subject: Changed Text Spacing for a better look SelectLoadingAnimation in ScreenAdvanced hidden, because it is useless atm Changed Theme to fit the new Textspacing Fixed some Language entrys git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@232 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 5 +++- Game/Code/Screens/UScreenOptionsAdvanced.pas | 15 ++++++++--- Languages/English.ini | 18 +++++-------- Languages/German.ini | 38 ++++++++++++++-------------- Themes/Deluxe.ini | 34 ++++++++++++------------- 5 files changed, 58 insertions(+), 52 deletions(-) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 4cb48cad..5b035f51 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -276,7 +276,10 @@ begin SetFontPos(X2, Y2); glPrint(PChar(Text2)); - Y2 := Y2 + Size * 1.7; + {if Size >= 10 then + Y2 := Y2 + Size * 2.8 + else} + Y2 := Y2 + Size * 2.15; end; SetFontStyle(0); // reset to default diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index 4c3356d0..9cac8c5e 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -35,7 +35,9 @@ begin end; SDLK_RETURN: begin - if SelInteraction = 7 then begin + //SelectLoadAnimation Hidden because it is useless atm + //if SelInteraction = 7 then begin + if SelInteraction = 6 then begin Ini.Save; Music.PlayBack; FadeTo(@ScreenOptions); @@ -47,14 +49,18 @@ begin InteractPrev; SDLK_RIGHT: begin - if (SelInteraction >= 0) and (SelInteraction <= 6) then begin + //SelectLoadAnimation Hidden because it is useless atm + //if (SelInteraction >= 0) and (SelInteraction <= 6) then begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin Music.PlayOption; InteractInc; end; end; SDLK_LEFT: begin - if (SelInteraction >= 0) and (SelInteraction <= 6) then begin + //SelectLoadAnimation Hidden because it is useless atm + //if (SelInteraction >= 0) and (SelInteraction <= 6) then begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin Music.PlayOption; InteractDec; end; @@ -71,7 +77,8 @@ begin LoadFromTheme(Theme.OptionsAdvanced); - AddSelect(Theme.OptionsAdvanced.SelectLoadAnimation, Ini.LoadAnimation, ILoadAnimation); + //SelectLoadAnimation Hidden because it is useless atm + //AddSelect(Theme.OptionsAdvanced.SelectLoadAnimation, Ini.LoadAnimation, ILoadAnimation); AddSelect(Theme.OptionsAdvanced.SelectScreenFade, Ini.ScreenFade, IScreenFade); AddSelect(Theme.OptionsAdvanced.SelectEffectSing, Ini.EffectSing, IEffectSing); AddSelect(Theme.OptionsAdvanced.SelectLineBonus, Ini.LineBonus, ILineBonus); diff --git a/Languages/English.ini b/Languages/English.ini index 2a2dcd75..01ef2cb2 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -89,7 +89,7 @@ SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= SING_OPTIONS_ADVANCED_ONSONGCLICK=after Song Select -SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menue +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu SING_LEGEND_SELECT=select SING_LEGEND_NAVIGATE=navigate @@ -218,10 +218,6 @@ PARTY_ROUND_DESC=next players to the mics PARTY_ROUND_WHEREAMI=Party Next Round PARTY_ROUND_LEGEND_CONTINUE=start round -PARTY_SONG_WHEREAMI=Party Song-Selection -PARTY_SONG_LEGEND_CONTINUE=sing -PARTY_SONG_MENU=party menu - PARTY_SCORE_DESC=score of the last round PARTY_SCORE_WHEREAMI=Party Points @@ -257,7 +253,7 @@ STAT_MAIN_WHEREAMI=Statistics STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s. -STAT_OVERVIEW_PLAYER=Since the last Reset there were/was %0:d different Player(s).\n The Best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. +STAT_OVERVIEW_PLAYER=Since the last Reset there were/was %0:d different Player(s).\n The best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points. STAT_DETAIL=Statistics STAT_DETAIL_WHEREAMI=Detail Statistics @@ -285,8 +281,8 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx Sung MSG_ERROR_TITLE=Error MSG_QUESTION_TITLE=Question -MSG_QUIT_USDX=Really leave\n\nUltraStar? -MSG_END_PARTY=Really end\n\nParty Mode? -ERROR_NO_SONGS=No Songs \n\n loaded. -ERROR_NO_PLUGINS=No Plugins \n\n loaded. -ERROR_CORRUPT_SONG=Song could not be \n\n loaded. \ No newline at end of file +MSG_QUIT_USDX=Really leave UltraStar? +MSG_END_PARTY=Really end Party Mode? +ERROR_NO_SONGS=No Songs loaded +ERROR_NO_PLUGINS=No Plugins loaded +ERROR_CORRUPT_SONG=Song could not be loaded. \ No newline at end of file diff --git a/Languages/German.ini b/Languages/German.ini index 981be27a..41802135 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -6,12 +6,12 @@ SING_SING=Singen SING_SING_DESC=Singen SING_MULTI=Party -SING_MULTI_DESC=Ein rundenbasierendes Teamspiel spielen +SING_MULTI_DESC=Ein runden basierendes Teamspiel spielen SING_TOOLS=Tools SING_STATS=Statistiken -SING_STATS_DESC=Die Statisiken anschauen +SING_STATS_DESC=Die Statistiken anschauen SING_EDITOR=Editor SING_EDITOR_DESC=Mach deinen eigenen Song @@ -58,7 +58,7 @@ SING_OPTIONS_SOUND_DESC=Einstellungen f SING_OPTIONS_SOUND_MIC_BOOST=Mic Anhebung SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click -SING_OPTIONS_SOUND_THRESHOLD=Rauschsperre +SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdr. SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spieler-Modus SING_OPTIONS_LYRICS_WHEREAMI=Optionen Lyrics @@ -74,7 +74,7 @@ SING_OPTIONS_THEMES_SKIN=Skin SING_OPTIONS_THEMES_COLOR=Farbe SING_OPTIONS_RECORD_WHEREAMI=Optionen Aufnahme -SING_OPTIONS_RECORD_DESC=Einstellungen für die Microfone +SING_OPTIONS_RECORD_DESC=Einstellungen für die Mikrofone SING_OPTIONS_RECORD_CARD=Soundkarte SING_OPTIONS_RECORD_INPUT=Eingang SING_OPTIONS_RECORD_CHANNELL=Linker Kanal @@ -87,7 +87,7 @@ SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm Fade SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr. SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus -SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mit zählen SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Wahl SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menü @@ -214,7 +214,7 @@ PARTY_PLAYER_WHEREAMI=Party Spielernamen PARTY_PLAYER_ENTER_NAME=Namen eingeben PARTY_PLAYER_LEGEND_CONTINUE=Party-Spiel starten -PARTY_ROUND_DESC=Die nächsten Spieler an die Micros! +PARTY_ROUND_DESC=Die nächsten Spieler an die Mikros! PARTY_ROUND_WHEREAMI=Party nächste Runde PARTY_ROUND_LEGEND_CONTINUE=Runde starten @@ -227,7 +227,7 @@ PARTY_SCORE_WHEREAMI=Party Punkte PARTY_WIN_DESC=Gewinner des Partyspiels. PARTY_WIN_WHEREAMI=Party Gewinner -PARTY_WIN_LEGEND_CONTINUE=zurück zum Hauptmenue +PARTY_WIN_LEGEND_CONTINUE=zurück zum Hauptmenü PARTY_ROUND=Runde PARTY_ROUND_WINNER=Sieger @@ -240,13 +240,13 @@ PARTY_SCORE_WINS=%s PARTY_SCORE_WINS2=hat gewonnen! PLUGIN_HDL_NAME=Balken halten -PLUGIN_HDL_DESC=Halte die Bewertugnsanzeige im angezeigten Bereich +PLUGIN_HDL_DESC=Halte die Bewertungsanzeige im angezeigten Bereich PLUGIN_UNTIL5000_NAME=Bis 5000 PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt. PLUGIN_DUELL_NAME=Duell -PLUGIN_DUELL_DESC=Normales Spiel. Höchste Punkzahl gewinnt. +PLUGIN_DUELL_DESC=Normales Spiel. Höchste Punktzahl gewinnt. PLUGIN_BLIND_NAME=Blind Mode PLUGIN_BLIND_DESC=Erreiche Blind die höchste Punktzahl. @@ -257,23 +257,23 @@ STAT_MAIN_WHEREAMI=Statistiken STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d STAT_OVERVIEW_SONG=%0:d Songs(%3:d mit Video), davon wurden %1:d schon einmal gesungen und %2:d noch nicht. \n Der am häufigsten gesungene Song ist %5:s von %4:s. -STAT_OVERVIEW_PLAYER=Seit dem letzten Reset haben %0:d verschiedene Spieler gesungen. \n Der Beste Spieler ist %1:s mit einer Score von %2:d Punkten. \n Die höchste Punktzahl, %4:d, wurde von %3:s erreicht. +STAT_OVERVIEW_PLAYER=Seit dem letzten Reset haben %0:d verschiedene Spieler gesungen. \n Der beste Spieler ist %1:s mit %2:d Punkten. \n Die höchste Punktzahl, %4:d, wurde von %3:s erreicht. STAT_DETAIL=Statistiken -STAT_DETAIL_WHEREAMI=Detailierte Statistiken +STAT_DETAIL_WHEREAMI=Detaillierte Statistiken STAT_NEXT=Nächste Seite STAT_PREV=Vorherige Seite STAT_REVERSE=Umkehren STAT_PAGE=Seite %0:d von %1:d \n (%2:d von %3:d Einträgen) -STAT_DESC_SCORES=HighScores -STAT_DESC_SCORES_REVERSED=LowScores +STAT_DESC_SCORES=Highscores +STAT_DESC_SCORES_REVERSED=Lowscores STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) STAT_DESC_SINGERS=Beste Sänger STAT_DESC_SINGERS_REVERSED=Schlechteste Sänger -STAT_FORMAT_SINGERS=%0:s \n Durchschnittliche Score: %1:d +STAT_FORMAT_SINGERS=%0:s \n Durchschnittliche Punktzahl: %1:d STAT_DESC_SONGS=Beliebteste Songs STAT_DESC_SONGS_REVERSED=Unbeliebteste Songs @@ -285,8 +285,8 @@ STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d MSG_ERROR_TITLE=Fehler MSG_QUESTION_TITLE=Frage -MSG_QUIT_USDX=UltraStar \n\n wirklich\n\nverlassen? -MSG_END_PARTY=Party Modus \n\n beenden? -ERROR_NO_SONGS=Keine Songs \n\n vorhanden. -ERROR_NO_PLUGINS=Keine Plugins \n\n vorhanden. -ERROR_CORRUPT_SONG=Song konnte nicht \n\n geladen werden. \ No newline at end of file +MSG_QUIT_USDX=UltraStar wirklich verlassen? +MSG_END_PARTY=Party Modus beenden? +ERROR_NO_SONGS=Keine Songs vorhanden. +ERROR_NO_PLUGINS=Keine Plugins vorhanden. +ERROR_CORRUPT_SONG=Song konnte nicht geladen werden. \ No newline at end of file diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index d1785a3c..eb124f0b 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -7250,9 +7250,9 @@ Reflection=0 [StatMainButtonSongsText1] X =95 -Y =10 +Y =13 Font=0 -Size=9 +Size=8 Align=1 Text=STAT_DESC_SONGS Color=White @@ -7271,9 +7271,9 @@ Reflection=0 [StatMainButtonBandsText1] X =95 -Y =10 +Y =13 Font=0 -Size=9 +Size=8 Align=1 Text=STAT_DESC_BANDS Color=White @@ -7536,7 +7536,7 @@ X = 546 Y = 98 Color= Black Font = 0 -Size = 6 +Size = 5 Align=2 Text= @@ -7545,7 +7545,7 @@ X = 45 Y = 122 Color=White Font = 0 -Size = 8 +Size = 7 Text=Stat1 [StatDetailTextList2] @@ -7553,7 +7553,7 @@ X = 45 Y = 160 Color=White Font = 0 -Size = 8 +Size = 7 Text=Stat2 [StatDetailTextList3] @@ -7561,7 +7561,7 @@ X = 45 Y = 198 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList4] @@ -7569,7 +7569,7 @@ X = 45 Y = 236 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList5] @@ -7577,7 +7577,7 @@ X = 45 Y = 274 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList6] @@ -7585,7 +7585,7 @@ X = 45 Y = 312 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList7] @@ -7593,7 +7593,7 @@ X = 45 Y = 350 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList8] @@ -7601,7 +7601,7 @@ X = 45 Y = 388 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList9] @@ -7609,7 +7609,7 @@ X = 45 Y = 426 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailTextList10] @@ -7617,7 +7617,7 @@ X = 45 Y = 464 Color=White Font = 0 -Size = 8 +Size = 7 Text= [StatDetailStatic1] @@ -7787,7 +7787,7 @@ Z=1 [CheckPopupText] X =400 Y =180 -W =300 +W =280 Color=White Font =0 Size =12 @@ -7868,7 +7868,7 @@ Z=1 [ErrorPopupText] X =400 Y =180 -W =300 +W =280 Color=White Font =0 Size =12 -- cgit v1.2.3 From 0a558c269217ea1eff20805e8fab8ce3ef0a2910 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 28 May 2007 19:29:24 +0000 Subject: Fixed a bug in Coverloading, that could end up in an endless loop. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@233 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 106 +++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index db5eb2b2..45c7c2de 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -718,72 +718,74 @@ begin // Songs.LoadSongList; // moved to the UltraStar unit CatSongs.Refresh; - //Set Length of Button Array one Time Instead of one time for every Song - SetButtonLength(Length(CatSongs.Song)); + if (length(CatSongs.Song) > 0) then + begin + //Set Length of Button Array one Time Instead of one time for every Song + SetButtonLength(Length(CatSongs.Song)); - I := 0; - CreateSongButtons: + I := 0; + CreateSongButtons: - try - for Pet := I to High(CatSongs.Song) do begin // creating all buttons - // new - Texture.Limit := 512;// 256 0.4.2 value, 512 in 0.5.0 + try + for Pet := I to High(CatSongs.Song) do begin // creating all buttons + // new + Texture.Limit := 512;// 256 0.4.2 value, 512 in 0.5.0 - if not FileExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then - CatSongs.Song[Pet].Cover := ''; // 0.5.0: if cover not found then show 'no cover' + if not FileExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then + CatSongs.Song[Pet].Cover := ''; // 0.5.0: if cover not found then show 'no cover' - if CatSongs.Song[Pet].Cover = '' then - AddButton(300 + Pet*250, 140, 200, 200, Skin.GetTextureFileName('SongCover'), 'JPG', 'Plain', Theme.Song.Cover.Reflections) - else begin - // cache texture if there is a need to this - if not Covers.CoverExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then begin - Texture.CreateCacheMipmap := true; - Texture.GetTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'Plain', true); // preloads textures and creates cache mipmap - Texture.CreateCacheMipmap := false; + if CatSongs.Song[Pet].Cover = '' then + AddButton(300 + Pet*250, 140, 200, 200, Skin.GetTextureFileName('SongCover'), 'JPG', 'Plain', Theme.Song.Cover.Reflections) + else begin + // cache texture if there is a need to this + if not Covers.CoverExists(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover) then begin + Texture.CreateCacheMipmap := true; + Texture.GetTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'Plain', true); // preloads textures and creates cache mipmap + Texture.CreateCacheMipmap := false; - // puts this texture to the cache file - Covers.AddCover(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover); + // puts this texture to the cache file + Covers.AddCover(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover); - // unload full size texture - Texture.UnloadTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, false); + // unload full size texture + Texture.UnloadTexture(CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, false); - // we should also add mipmap texture by calling createtexture and use mipmap cache as data source - end; + // we should also add mipmap texture by calling createtexture and use mipmap cache as data source + end; - // and now load it from cache file (small place for the optimization by eliminating reading it from file, but not here) - AddButton(300 + Pet*250, 140, 200, 200, CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'JPG', 'Plain', Theme.Song.Cover.Reflections); + // and now load it from cache file (small place for the optimization by eliminating reading it from file, but not here) + AddButton(300 + Pet*250, 140, 200, 200, CatSongs.Song[Pet].Path + CatSongs.Song[Pet].Cover, 'JPG', 'Plain', Theme.Song.Cover.Reflections); + end; + Texture.Limit := 1024*1024; + I := -1; end; - Texture.Limit := 1024*1024; - I := -1; - end; - except - //When Error is reported the First time for this Song - if (I <> Pet) then - begin - //Some Error reporting: - Log.LogError('Could not load Cover: ' + CatSongs.Song[Pet].Cover); + except + //When Error is reported the First time for this Song + if (I <> Pet) then + begin + //Some Error reporting: + Log.LogError('Could not load Cover: ' + CatSongs.Song[Pet].Cover); - //Change Cover to NoCover and Continue Loading - CatSongs.Song[Pet].Cover := ''; - I := Pet; - end - else //when Error occurs Multiple Times(NoSong Cover is damaged), then start loading next Song - begin - Log.LogError('NoCover Cover is damaged!'); - try - AddButton(300 + Pet*250, 140, 200, 200, '', 'JPG', 'Plain', Theme.Song.Cover.Reflections); - except - Messagebox(0, PChar('No Cover Image is damage. Could not Workaround Song Loading, Ultrastar will exit now.'), PChar(Language.Translate('US_VERSION')), MB_ICONERROR or MB_OK); - Halt; + //Change Cover to NoCover and Continue Loading + CatSongs.Song[Pet].Cover := ''; + I := Pet; + end + else //when Error occurs Multiple Times(NoSong Cover is damaged), then start loading next Song + begin + Log.LogError('NoCover Cover is damaged!'); + try + AddButton(300 + Pet*250, 140, 200, 200, '', 'JPG', 'Plain', Theme.Song.Cover.Reflections); + except + Messagebox(0, PChar('No Cover Image is damage. Could not Workaround Song Loading, Ultrastar will exit now.'), PChar(Language.Translate('US_VERSION')), MB_ICONERROR or MB_OK); + Halt; + end; + I := Pet + 1; end; - I := Pet + 1; end; - end; - - if (I <> -1) then - GoTo CreateSongButtons; + if (I <> -1) then + GoTo CreateSongButtons; + end; // Randomize Patch Randomize; -- cgit v1.2.3 From 6d464e84614929fb0f99189aa29d358da0120861 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 28 May 2007 19:53:02 +0000 Subject: Fixed some Language Entrys git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@234 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/English.ini | 4 ++++ Languages/readme.txt | 3 +++ 2 files changed, 7 insertions(+) diff --git a/Languages/English.ini b/Languages/English.ini index 01ef2cb2..aeecaf49 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -218,6 +218,10 @@ PARTY_ROUND_DESC=next players to the mics PARTY_ROUND_WHEREAMI=Party Next Round PARTY_ROUND_LEGEND_CONTINUE=start round +PARTY_SONG_WHEREAMI=Party Song-Selection +PARTY_SONG_LEGEND_CONTINUE=sing +PARTY_SONG_MENU=party menu + PARTY_SCORE_DESC=score of the last round PARTY_SCORE_WHEREAMI=Party Points diff --git a/Languages/readme.txt b/Languages/readme.txt index f4f781a0..46ccff2c 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -115,6 +115,9 @@ PARTY_PLAYER_DESC=enter player- and teamnames! PARTY_PLAYER_WHEREAMI=Party Names PARTY_PLAYER_ENTER_NAME=enter names PARTY_PLAYER_LEGEND_CONTINUE=start party-game +PARTY_SONG_WHEREAMI=Party Song-Selection +PARTY_SONG_LEGEND_CONTINUE=sing +PARTY_SONG_MENU=party menu PARTY_ROUND_DESC=next players to the mics PARTY_ROUND_WHEREAMI=Party Next Round PARTY_ROUND_LEGEND_CONTINUE=start round -- cgit v1.2.3 From 3789f80943f7a237ecbcadeee5803a1fa4a982a2 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 28 May 2007 19:57:46 +0000 Subject: Fixed some Pronounciation in Error Messages git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@235 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UFiles.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index ee1935cd..5214a9b3 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -336,8 +336,8 @@ begin if (Done <> 15) then begin Result := False; - if (Done and 8) = 0 then //No BMP Flag - Log.LogError('BMP Tag Missing: ' + Song.FileName) + if (Done and 8) = 0 then //No BPM Flag + Log.LogError('BPM Tag Missing: ' + Song.FileName) else if (Done and 4) = 0 then //No MP3 Flag Log.LogError('MP3 Tag/File Missing: ' + Song.FileName) else if (Done and 2) = 0 then //No Artist Flag -- cgit v1.2.3 From 0bb302b56187c6435ae78bee7901765dbf72e89d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 28 May 2007 19:58:06 +0000 Subject: New spacing for Font type 1 git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@236 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuText.pas | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 5b035f51..69ece02f 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -279,6 +279,9 @@ begin {if Size >= 10 then Y2 := Y2 + Size * 2.8 else} + if (Style = 1) then + Y2 := Y2 + Size * 2.8 + else Y2 := Y2 + Size * 2.15; end; SetFontStyle(0); // reset to default -- cgit v1.2.3 From 2648bf52507205e7b00898cf2f5b6a3eb40e2229 Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 29 May 2007 16:57:11 +0000 Subject: Added: Support for Player Name Templates. Set Names in config.ini ([NameTemplate], Name1..12=text and recall in Name-Screens with F1..F12. Fix: All 12 player- and 3 teamnames are now saved in config.ini git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@237 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UIni.pas | 22 +++++++++-- Game/Code/Screens/UScreenName.pas | 51 +++++++++++++++++++++++++ Game/Code/Screens/UScreenPartyPlayer.pas | 65 ++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 3 deletions(-) diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index f3ea84ac..c92a7a50 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -5,7 +5,11 @@ uses IniFiles, ULog, SysUtils; type TIni = class - Name: array[0..5] of string; + Name: array[0..11] of string; + + // Templates for Names Mod + NameTeam: array[0..2] of string; + NameTemplate: array[0..11] of string; // Game Players: integer; @@ -174,9 +178,16 @@ begin IniFile := TMemIniFile.Create(GamePath + 'config.ini'); // Name - for I := 0 to 5 do + for I := 0 to 11 do Ini.Name[I] := IniFile.ReadString('Name', 'P'+IntToStr(I+1), 'Player'+IntToStr(I+1)); + + // Templates for Names Mod + for I := 0 to 2 do + Ini.NameTeam[I] := IniFile.ReadString('NameTeam', 'T'+IntToStr(I+1), 'Team'+IntToStr(I+1)); + for I := 0 to 11 do + Ini.NameTemplate[I] := IniFile.ReadString('NameTemplate', 'Name'+IntToStr(I+1), 'Template'+IntToStr(I+1)); + // Players Tekst := IniFile.ReadString('Game', 'Players', IPlayers[0]); for Pet := 0 to High(IPlayers) do @@ -665,8 +676,13 @@ begin IniFile := TIniFile.Create(GamePath + 'config.ini'); //Name - for I := 1 to 6 do + // Templates for Names Mod + for I := 1 to 12 do IniFile.WriteString('Name', 'P' + IntToStr(I), Ini.Name[I-1]); + for I := 1 to 3 do + IniFile.WriteString('NameTeam', 'T' + IntToStr(I), Ini.NameTeam[I-1]); + for I := 1 to 12 do + IniFile.WriteString('NameTemplate', 'Name' + IntToStr(I), Ini.NameTemplate[I-1]); IniFile.Free; end; diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index e2a80687..1b90c570 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -32,6 +32,57 @@ begin Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + chr(ScanCode); end; + // Templates for Names Mod + SDLK_F1: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[0]; + end; + SDLK_F2: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[1]; + end; + SDLK_F3: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[2]; + end; + SDLK_F4: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[3]; + end; + SDLK_F5: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[4]; + end; + SDLK_F6: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[5]; + end; + SDLK_F7: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[6]; + end; + SDLK_F8: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[7]; + end; + SDLK_F9: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[8]; + end; + SDLK_F10: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[9]; + end; + SDLK_F11: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[10]; + end; + SDLK_F12: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[11]; + end; + + SDLK_BACKSPACE: begin Button[Interaction].Text[0].DeleteLastL; diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index f6bcb0b7..e8607470 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -61,6 +61,56 @@ begin Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + chr(ScanCode); end; + // Templates for Names Mod + SDLK_F1: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[0]; + end; + SDLK_F2: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[1]; + end; + SDLK_F3: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[2]; + end; + SDLK_F4: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[3]; + end; + SDLK_F5: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[4]; + end; + SDLK_F6: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[5]; + end; + SDLK_F7: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[6]; + end; + SDLK_F8: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[7]; + end; + SDLK_F9: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[8]; + end; + SDLK_F10: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[9]; + end; + SDLK_F11: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[10]; + end; + SDLK_F12: + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[11]; + end; + SDLK_BACKSPACE: begin Button[Interaction].Text[0].DeleteLastL; @@ -135,6 +185,21 @@ procedure TScreenPartyPlayer.onShow; var I: integer; begin + // Templates for Names Mod + for I := 1 to 4 do + Button[I].Text[0].Text := Ini.Name[I-1]; + + for I := 6 to 9 do + Button[I].Text[0].Text := Ini.Name[I-2]; + + for I := 11 to 14 do + Button[I].Text[0].Text := Ini.Name[I-3]; + + Button[0].Text[0].Text := Ini.NameTeam[0]; + Button[5].Text[0].Text := Ini.NameTeam[1]; + Button[10].Text[0].Text := Ini.NameTeam[2]; + // Templates for Names Mod end + If (PartySession.Teams.NumTeams>=1) then begin Button[0].Visible := True; -- cgit v1.2.3 From 59e8d042088550527dbb1ad2719a9f0813621d92 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 29 May 2007 17:07:48 +0000 Subject: Added Error and Check Popup to Classic Theme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@238 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Star.ini | 2 + Skins/Classic/[icon]error.jpg | Bin 0 -> 1407 bytes Skins/Classic/[icon]question.jpg | Bin 0 -> 1695 bytes Skins/Classic/[menu]PopUpBg.JPG | Bin 0 -> 4013 bytes Skins/Classic/[menu]PopUpFg.JPG | Bin 0 -> 4151 bytes Themes/Classic.ini | 170 ++++++++++++++++++++++++++++++++++++++- 6 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 Skins/Classic/[icon]error.jpg create mode 100644 Skins/Classic/[icon]question.jpg create mode 100644 Skins/Classic/[menu]PopUpBg.JPG create mode 100644 Skins/Classic/[menu]PopUpFg.JPG diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index d174f2e0..beee4f05 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -35,6 +35,8 @@ ScoreIcon = [icon]Score.jpg PartyIcon = [icon]Party.jpg StatIcon = [icon]Stats.jpg SongCD = [icon]cd.jpg +IconQuestion = [icon]question.jpg +IconError = [icon]error.jpg # # # M A I N S C R E E N # # # ButtonSolo = [mainbutton]Solo.jpg diff --git a/Skins/Classic/[icon]error.jpg b/Skins/Classic/[icon]error.jpg new file mode 100644 index 00000000..5802e312 Binary files /dev/null and b/Skins/Classic/[icon]error.jpg differ diff --git a/Skins/Classic/[icon]question.jpg b/Skins/Classic/[icon]question.jpg new file mode 100644 index 00000000..e78fe6a8 Binary files /dev/null and b/Skins/Classic/[icon]question.jpg differ diff --git a/Skins/Classic/[menu]PopUpBg.JPG b/Skins/Classic/[menu]PopUpBg.JPG new file mode 100644 index 00000000..1a23a90c Binary files /dev/null and b/Skins/Classic/[menu]PopUpBg.JPG differ diff --git a/Skins/Classic/[menu]PopUpFg.JPG b/Skins/Classic/[menu]PopUpFg.JPG new file mode 100644 index 00000000..530d4cf9 Binary files /dev/null and b/Skins/Classic/[menu]PopUpFg.JPG differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 8451d6fd..d67b0111 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -320,7 +320,6 @@ TexY2=1 [SongStatic3] X =270 Y =120 -Z = 0.5 W =260 H =240 Color =Gray @@ -3837,4 +3836,171 @@ Font=1 Size=9 Align=1 Text= -Color=White \ No newline at end of file +Color=White + +# # # # OnScreen PopUp Error / Question Messages # # # # +[CheckPopup] +Texts=0 +Statics=3 + +[CheckPopupButton1] +X = 192 +Y = 327 +W = 128 +H = 50 +Tex =MainBar +Color = ColorDark +DColor = White +Int=1 +DInt=0.5 +Type=Font Black +Texts=1 +Z = 1 + +[CheckPopupButton1Text1] +X =64 +Y =13 +Color=White +Font =0 +Size =8 +Text=Yes +Align=1 +Z=1 + +[CheckPopupButton2] +X = 480 +Y = 327 +W = 128 +H = 50 +Tex =MainBar +Color = ColorDark +DColor = White +Int=1 +DInt=0.5 +Type=Font Black +Texts=1 +Z = 1 + +[CheckPopupButton2Text1] +X =64 +Y =13 +Color=White +Font =0 +Size =8 +Text=No +Align=1 +Z=1 + +[CheckPopupText] +X =400 +Y =226 +W =500 +Color=Black +Font =0 +Size =14 +Text= +Align=1 +Z=1 + +[CheckPopupStatic1] +Tex =PopUpBG +X =99 +Y =224 +W =602 +H =152 +Z =1 +Int=1 +Color =White +Type=Font Black + +[CheckPopupStatic2] +Tex =PopUpFG +X =99 +Y =224 +W =602 +H =152 +Z =1 +Int=1 +Color =Black +Type=Font Black + +[CheckPopupStatic3] +Tex =IconQuestion +X =124 +Y =235 +W =44 +H =44 +Z =1 +Int=1 +Color =Black +Type=Font Black + +[ErrorPopup] +Texts=1 +Statics=1 + +[ErrorPopupButton1] +X = 366 +Y = 342 +W = 27 +H = 23 +Tex =ButtonEnter +Color = White +DColor = White +Type=Plain +Texts=1 +Z = 1 + +[ErrorPopupButton1Text1] +X =32 +Y =0 +Color=Black +Font =0 +Size =10 +Text=OK +Align=0 +Z=0 + +[ErrorPopupText] +X =400 +Y =226 +W =500 +Color=Black +Font =0 +Size =14 +Text= +Align=1 +Z=1 + +[ErrorPopupStatic1] +Tex =PopUpBG +X =99 +Y =224 +W =602 +H =152 +Z =1 +Int=1 +Color =White +Type=Font Black + +[ErrorPopupStatic2] +Tex =PopUpFG +X =99 +Y =224 +W =602 +H =152 +Z =1 +Int=1 +Color =Black +Type=Font Black + +[ErrorPopupStatic3] +Tex =IconError +X =124 +Y =235 +W =44 +H =44 +Z =1 +Int=1 +Color =Black +Type=Font Black \ No newline at end of file -- cgit v1.2.3 From f40e293a9d9b6c363440c2becfac281334a4e198 Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 29 May 2007 17:31:37 +0000 Subject: Added Party-Options screen to Classic theme. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@239 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Classic.ini | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) diff --git a/Themes/Classic.ini b/Themes/Classic.ini index d67b0111..68436dff 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -3838,6 +3838,229 @@ Align=1 Text= Color=White + +[PartyOptions] +Texts = 3 + +[PartyOptionsBackground] +Tex=PartyBG + +[PartyOptionsStatic1] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[PartyOptionsStatic2] +X =388 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[PartyOptionsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=PARTY_OPTIONS_WHEREAMI + +[PartyOptionsText2] +X =294 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[PartyOptionsText3] +X =418 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_LEGEND_CONTINUE + +[PartyOptionsSelectLevel] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_DIFFICULTY +X = 40 +Y = 85 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayList] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_PLAYLIST +X = 40 +Y = 140 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayList2] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_PLAYLIST +X = 40 +Y = 195 +W = 230 +H = 70 +SkipX = 50 +Fields=1 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectRounds] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_ROUNDS +X = 40 +Y = 250 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectTeams] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS +X = 40 +Y = 305 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayers1] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS_PLAYER1 +X = 40 +Y = 360 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayers2] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS_PLAYER2 +X = 40 +Y = 415 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[PartyOptionsSelectPlayers3] +Tex = MainBar +TexSBG = MainBar +Text =PARTY_TEAMS_PLAYER3 +X = 40 +Y = 470 +W = 230 +H = 70 +SkipX = 50 +Fields=7 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + + # # # # OnScreen PopUp Error / Question Messages # # # # [CheckPopup] Texts=0 -- cgit v1.2.3 From dc72a49b4c680fe6698b831a203a9b00e476d562 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 1 Jun 2007 17:23:59 +0000 Subject: Fixed a Memory Bug in UMenuSelectSlide that causes memory that is not in use anymore is not freeed when the Attributes of a SelectSlide are Updated git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@240 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuSelectSlide.pas | 43 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/Game/Code/Menu/UMenuSelectSlide.pas b/Game/Code/Menu/UMenuSelectSlide.pas index 0149ea2b..f18b45cd 100644 --- a/Game/Code/Menu/UMenuSelectSlide.pas +++ b/Game/Code/Menu/UMenuSelectSlide.pas @@ -308,33 +308,34 @@ begin if (Lines <= 0) then Lines := 1; + //Free old Space used by Texts + For I := low(TextOpt) to high(TextOpt) do + TextOpt[I].Free; + setLength (TextOpt, Lines); for I := low(TextOpt) to high(TextOpt) do begin + TextOpt[I] := TText.Create; + TextOpt[I].Size := Text.Size; + //TextOpt[I].Align := 1; + TextOpt[I].Align := 0; + TextOpt[I].Visible := True; - //TextOpt[I] := TextOpt[0]; - TextOpt[I] := TText.Create; - TextOpt[I].Size := Text.Size; - //TextOpt[I].Align := 1; - TextOpt[I].Align := 0; - TextOpt[I].Visible := True; - - TextOpt[I].ColR := STDColR; - TextOpt[I].ColG := STDColG; - TextOpt[I].ColB := STDColB; - TextOpt[I].Int := STDInt; - - //Generate Positions - //TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * (I + 0.5); - TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * I; - TextOpt[I].Y := TextureSBG.Y + (TextureSBG.H / 2) - 1.5 * Text.Size{20}; - - //Better Look with 2 Options - if (Lines=2) AND (Length(TextOptT)= 2) then - TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W -40 - glTextWidth(PChar(TextOptT[1]))) * I; + TextOpt[I].ColR := STDColR; + TextOpt[I].ColG := STDColG; + TextOpt[I].ColB := STDColB; + TextOpt[I].Int := STDInt; + + //Generate Positions + //TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * (I + 0.5); + TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * I; + TextOpt[I].Y := TextureSBG.Y + (TextureSBG.H / 2) - 1.5 * Text.Size{20}; + + //Better Look with 2 Options + if (Lines=2) AND (Length(TextOptT)= 2) then + TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W -40 - glTextWidth(PChar(TextOptT[1]))) * I; end; - //TextOpt[I] := TextOpt[0]; end; end. -- cgit v1.2.3 From 842794d7b93443626089c00083118b532105c5ac Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 1 Jun 2007 17:40:09 +0000 Subject: Fixed standard Cover position. Buttons that have no expression in Theme are now hidden. The Screens are still available through Hotkeys, but they have supposably also no expression in Theme. => Better compatibility with old Screens git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@241 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 471e46bf..ef5d1136 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -974,7 +974,7 @@ begin //Load Cover Pos and Size from Theme Mod Song.Cover.X := ThemeIni.ReadInteger('SongCover', 'X', 300); - Song.Cover.Y := ThemeIni.ReadInteger('SongCover', 'Y', 140); + Song.Cover.Y := ThemeIni.ReadInteger('SongCover', 'Y', 190); Song.Cover.W := ThemeIni.ReadInteger('SongCover', 'W', 300); Song.Cover.H := ThemeIni.ReadInteger('SongCover', 'H', 200); Song.Cover.Style := ThemeIni.ReadInteger('SongCover', 'Style', 4); @@ -1589,6 +1589,11 @@ var T: integer; Collections2: PAThemeButtonCollection; begin + if not ThemeIni.SectionExists(Name) then + begin + ThemeButton.Visible := False; + exit; + end; DecimalSeparator := '.'; ThemeButton.Tex := ThemeIni.ReadString(Name, 'Tex', ''); ThemeButton.X := ThemeIni.ReadInteger (Name, 'X', 0); -- cgit v1.2.3 From 514ece97aaeb8eaa8bf56e224826bc5e6169ce8b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 3 Jun 2007 19:00:14 +0000 Subject: Some Code Cleanup in UScreenSong Add Procedure DeletePlaylist to TPlaylistManager Add automatic Playlist Deleting if last Song is deleted Fixed some Cover displaying Bugs when JumptoMenu is left git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@242 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UPlaylist.pas | 84 ++++++++++++++++++++++++++------- Game/Code/Screens/UScreenSong.pas | 37 +++++++-------- Game/Code/Screens/UScreenSongJumpto.pas | 1 + Game/Code/Screens/UScreenSongMenu.pas | 2 +- 4 files changed, 87 insertions(+), 37 deletions(-) diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas index 67460ed7..55cf90ff 100644 --- a/Game/Code/Classes/UPlaylist.pas +++ b/Game/Code/Classes/UPlaylist.pas @@ -40,6 +40,7 @@ type Procedure SetPlayList(Index: Cardinal); Function AddPlaylist(Name: String): Cardinal; + Procedure DelPlaylist(const Index: Cardinal); Procedure AddItem(const SongID: Cardinal; const iPlaylist: Integer = -1); Procedure DelItem(const iItem: Cardinal; const iPlaylist: Integer = -1); @@ -197,27 +198,29 @@ begin //open File for Rewriting AssignFile(F, PlaylistPath + Playlists[Index].Filename); try - Rewrite(F); + try + Rewrite(F); - //Write Version (not nessecary but helpful) - WriteLn(F, '######################################'); - WriteLn(F, '#Ultrastar Deluxe Playlist Format v1.0'); - WriteLn(F, '#Playlist "' + Playlists[Index].Name + '" with ' + InttoStr(Length(Playlists[Index].Items)) + ' Songs.'); - WriteLn(F, '######################################'); + //Write Version (not nessecary but helpful) + WriteLn(F, '######################################'); + WriteLn(F, '#Ultrastar Deluxe Playlist Format v1.0'); + WriteLn(F, '#Playlist "' + Playlists[Index].Name + '" with ' + InttoStr(Length(Playlists[Index].Items)) + ' Songs.'); + WriteLn(F, '######################################'); - //Write Name Information - WriteLn(F, '#Name: ' + Playlists[Index].Name); + //Write Name Information + WriteLn(F, '#Name: ' + Playlists[Index].Name); - //Write Song Information - WriteLn(F, '#Songs:'); + //Write Song Information + WriteLn(F, '#Songs:'); - For I := 0 to high(Playlists[Index].Items) do - begin - WriteLn(F, Playlists[Index].Items[I].Artist + ' : ' + Playlists[Index].Items[I].Title); + For I := 0 to high(Playlists[Index].Items) do + begin + WriteLn(F, Playlists[Index].Items[I].Artist + ' : ' + Playlists[Index].Items[I].Title); + end; + except + log.LogError('Could not write Playlistfile "' + Playlists[Index].Name + '"'); end; - finally - log.LogError('Could not write Playlistfile "' + Playlists[Index].Name + '"'); CloseFile(F); end; end; @@ -247,6 +250,9 @@ begin CatSongs.CatNumShow := -3; Mode := 2; + //Set CurPlaylist + CurPlaylist := Index; + //Show Cat in Topleft: ScreenSong.ShowCatTLCustom(Format(Theme.Playlist.CatText,[Playlists[Index].Name])); @@ -286,6 +292,47 @@ begin SavePlayList(Result); end; +//---------- +//DelPlaylist - Deletes a Playlist +//---------- +Procedure TPlayListManager.DelPlaylist(const Index: Cardinal); +var + I: Integer; + Filename: String; +begin + If Index > High(Playlists) then + Exit; + + Filename := PlaylistPath + Playlists[Index].Filename; + + //If not FileExists or File is not Writeable then exit + If (Not FileExists(Filename)) OR (FileisReadOnly(Filename)) then + Exit; + + + //Delete Playlist from FileSystem + if Not DeleteFile(Filename) then + Exit; + + //Delete Playlist from Array + //move all PLs to the Hole + For I := Index to High(Playlists)-1 do + PlayLists[I] := PlayLists[I+1]; + + //Delete last Playlist + SetLength (Playlists, High(Playlists)); + + //If Playlist is Displayed atm + //-> Display Songs + if (CatSongs.CatNumShow = -3) and (Index = CurPlaylist) then + begin + ScreenSong.UnLoadDetailedCover; + CatSongs.SetFilter('', 0); + ScreenSong.Interaction := 0; + ScreenSong.FixSelected; + end; +end; + //---------- //AddItem - Adds an Item to a specific Playlist //---------- @@ -347,8 +394,13 @@ begin SavePlayList(P); end; + //Delete Playlist if Last Song is deleted + if (Length(PlayLists[P].Items) = 0) then + begin + DelPlaylist(P); + end //Correct Display when Editing current Playlist - if (CatSongs.CatNumShow = -3) and (P = CurPlaylist) then + else if (CatSongs.CatNumShow = -3) and (P = CurPlaylist) then SetPlaylist(P); end; diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 45c7c2de..3924968f 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -95,6 +95,8 @@ type procedure DoJoker(Team: Byte); procedure SelectPlayers; + procedure UnLoadDetailedCover; + //Extensions procedure DrawExtensions; end; @@ -1379,13 +1381,7 @@ begin if VS > 0 then begin - CoverTime := 0; - Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture - Button[Interaction].Texture2.Alpha := 0; - - //0.5.0: unload old full size texture - if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then - Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + UnLoadDetailedCover; Skip := 1; @@ -1417,13 +1413,7 @@ begin if VS > 0 then begin - CoverTime := 0; - Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture - Button[Interaction].Texture2.Alpha := 0; - - //0.5.0: unload old full size texture - if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then - Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + UnLoadDetailedCover; Skip := 1; @@ -1470,12 +1460,7 @@ var Skip: integer; I: integer; begin - CoverTime := 0; - Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture - Button[Interaction].Texture2.Alpha := 0; - - if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then - Texture.UnloadTexture(Button[Interaction].Texture.Name, false); + UnLoadDetailedCover; Interaction := High(CatSongs.Song); SongTarget := 0; @@ -1809,6 +1794,18 @@ begin end; end; +//Detailed Cover Unloading. Unloads the Detailed, uncached Cover of the cur. Song +procedure TScreenSong.UnLoadDetailedCover; +begin + CoverTime := 0; + + Button[Interaction].Texture := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', true); // 0.5.0: show cached texture + Button[Interaction].Texture2.Alpha := 0; + + if Button[Interaction].Texture.Name <> Skin.GetTextureFileName('SongCover') then + Texture.UnloadTexture(Button[Interaction].Texture.Name, false); +end; + procedure TScreenSong.Refresh; begin { CatSongs.Refresh; diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 2ea94cdc..560868a5 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -97,6 +97,7 @@ begin Music.PlayBack; if (VisSongs = 0) AND (Length(Button[0].Text[0].Text) > 0) then begin + ScreenSong.UnLoadDetailedCover; Button[0].Text[0].Text := ''; CatSongs.SetFilter('', 0); SetTextFound(0); diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 2469240f..3814334c 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -414,7 +414,7 @@ begin 1: //Button 2 begin //Select New Players then Sing: - + ScreenSong.SelectPlayers; Visible := False; end; -- cgit v1.2.3 From 49ada15c935658c5d90416e26acfb360f1e7c047 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 3 Jun 2007 19:45:43 +0000 Subject: Added SongPreview Fading Song Preview Max Volume is now 70 % Need Testing because of timing git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@243 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMusic.pas | 13 +++++++++++++ Game/Code/Screens/UScreenSong.pas | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index 6e997c11..52bae3c9 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -59,6 +59,7 @@ type procedure InitializePlayback; procedure InitializeRecord; procedure SetVolume(Volume: integer); + procedure SetMusicVolume(Volume: Byte); procedure SetLoop(Enabled: boolean); function Open(Name: string): boolean; // true if succeed procedure Rewind; @@ -350,6 +351,16 @@ begin BASS_SetConfig(BASS_CONFIG_GVOL_MUSIC, Volume); end; +procedure TMusic.SetMusicVolume(Volume: Byte); +begin + //Max Volume Prevention + if Volume > 100 then + Volume := 100; + + //Set Volume + BASS_ChannelSetAttributes (Bass, -1, Integer(Volume), -101); +end; + procedure TMusic.SetLoop(Enabled: boolean); begin Loop := Enabled; @@ -364,6 +375,8 @@ begin Bass := Bass_StreamCreateFile(false, pchar(Name), 0, 0, 0); Loaded := true; + //Set Max Volume + SetMusicVolume (100); end; Result := Loaded; diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 3924968f..ae02b2f4 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1275,6 +1275,8 @@ begin Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3); Music.MoveTo(Music.Length / 4); Music.Play; + //Music Fade (Start not with max Volume) + Music.SetMusicVolume(70); SetScroll; UpdateLCD; end; @@ -1349,18 +1351,25 @@ begin // Log.LogBenchmark('SetScroll4', 5); - // 0.5.0: cover fade + // 0.5.0: cover fade and Song Fade if (CoverTime < 1) and (CoverTime + TimeSkip >= 1) then begin // load new texture Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); Button[Interaction].Texture.Alpha := 1; Button[Interaction].Texture2 := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); Button[Interaction].Texture2.Alpha := 1; + + //Play Song + Music.SetMusicVolume(20); + Music.Play; end; CoverTime := CoverTime + TimeSkip; Button[Interaction].Texture2.Alpha := (CoverTime - 1) * 1.5; if Button[Interaction].Texture2.Alpha > 1 then Button[Interaction].Texture2.Alpha := 1; + if (CoverTime > 1) and (CoverTime <= 3.5) then + Music.SetMusicVolume(Round((CoverTime-1)* 20)); + inherited Draw; @@ -1448,7 +1457,8 @@ begin Music.Close; if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin Music.MoveTo(Music.Length / 4); - Music.Play; + //Song Fading: Not Play Directly + //Music.Play; end; end else -- cgit v1.2.3 From 4c5b6c460f3729fa2db0590e6f133a786a486ed8 Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 5 Jun 2007 22:20:34 +0000 Subject: Some Themework in Classic. Statistics done. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@244 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Star.ini | 1 + Skins/Classic/[icon]cd.jpg | Bin 0 -> 1175 bytes Skins/Classic/[icon]main.jpg | Bin 0 -> 1153 bytes Skins/Classic/[icon]options.jpg | Bin 0 -> 1063 bytes Skins/Classic/[icon]party.jpg | Bin 0 -> 1528 bytes Skins/Classic/[icon]score.jpg | Bin 0 -> 1150 bytes Skins/Classic/[icon]search.jpg | Bin 0 -> 759 bytes Skins/Classic/[icon]songmenu.jpg | Bin 0 -> 1659 bytes Skins/Classic/[icon]stats.jpg | Bin 0 -> 1010 bytes Skins/Classic/[icon]video.jpg | Bin 0 -> 2608 bytes Skins/Classic/[main]Bar1.jpg | Bin 0 -> 2115 bytes Skins/Classic/[party]playerTeamButton.jpg | Bin 0 -> 2428 bytes Skins/Classic/[sing]lyricsHelpBar.bmp | Bin 0 -> 3126 bytes Skins/Classic/[stat]detailBG1.jpg | Bin 0 -> 653 bytes Skins/Classic/[stat]mainBG1.jpg | Bin 0 -> 652 bytes Skins/Classic/[stat]mainBG2.jpg | Bin 0 -> 2942 bytes Skins/Classic/[stat]mainBG3.jpg | Bin 0 -> 747 bytes Themes/Classic.ini | 995 +++++++++++++++++++++++++++++- 18 files changed, 965 insertions(+), 31 deletions(-) create mode 100644 Skins/Classic/[icon]cd.jpg create mode 100644 Skins/Classic/[icon]main.jpg create mode 100644 Skins/Classic/[icon]options.jpg create mode 100644 Skins/Classic/[icon]party.jpg create mode 100644 Skins/Classic/[icon]score.jpg create mode 100644 Skins/Classic/[icon]search.jpg create mode 100644 Skins/Classic/[icon]songmenu.jpg create mode 100644 Skins/Classic/[icon]stats.jpg create mode 100644 Skins/Classic/[icon]video.jpg create mode 100644 Skins/Classic/[main]Bar1.jpg create mode 100644 Skins/Classic/[party]playerTeamButton.jpg create mode 100644 Skins/Classic/[sing]lyricsHelpBar.bmp create mode 100644 Skins/Classic/[stat]detailBG1.jpg create mode 100644 Skins/Classic/[stat]mainBG1.jpg create mode 100644 Skins/Classic/[stat]mainBG2.jpg create mode 100644 Skins/Classic/[stat]mainBG3.jpg diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index beee4f05..0edc0756 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -37,6 +37,7 @@ StatIcon = [icon]Stats.jpg SongCD = [icon]cd.jpg IconQuestion = [icon]question.jpg IconError = [icon]error.jpg +VideoIcon = [icon]video.jpg # # # M A I N S C R E E N # # # ButtonSolo = [mainbutton]Solo.jpg diff --git a/Skins/Classic/[icon]cd.jpg b/Skins/Classic/[icon]cd.jpg new file mode 100644 index 00000000..d48dc4ff Binary files /dev/null and b/Skins/Classic/[icon]cd.jpg differ diff --git a/Skins/Classic/[icon]main.jpg b/Skins/Classic/[icon]main.jpg new file mode 100644 index 00000000..5941256a Binary files /dev/null and b/Skins/Classic/[icon]main.jpg differ diff --git a/Skins/Classic/[icon]options.jpg b/Skins/Classic/[icon]options.jpg new file mode 100644 index 00000000..278f0adc Binary files /dev/null and b/Skins/Classic/[icon]options.jpg differ diff --git a/Skins/Classic/[icon]party.jpg b/Skins/Classic/[icon]party.jpg new file mode 100644 index 00000000..2bccd403 Binary files /dev/null and b/Skins/Classic/[icon]party.jpg differ diff --git a/Skins/Classic/[icon]score.jpg b/Skins/Classic/[icon]score.jpg new file mode 100644 index 00000000..6402fa9a Binary files /dev/null and b/Skins/Classic/[icon]score.jpg differ diff --git a/Skins/Classic/[icon]search.jpg b/Skins/Classic/[icon]search.jpg new file mode 100644 index 00000000..b5870592 Binary files /dev/null and b/Skins/Classic/[icon]search.jpg differ diff --git a/Skins/Classic/[icon]songmenu.jpg b/Skins/Classic/[icon]songmenu.jpg new file mode 100644 index 00000000..35f4b440 Binary files /dev/null and b/Skins/Classic/[icon]songmenu.jpg differ diff --git a/Skins/Classic/[icon]stats.jpg b/Skins/Classic/[icon]stats.jpg new file mode 100644 index 00000000..cd5e03fb Binary files /dev/null and b/Skins/Classic/[icon]stats.jpg differ diff --git a/Skins/Classic/[icon]video.jpg b/Skins/Classic/[icon]video.jpg new file mode 100644 index 00000000..12d71add Binary files /dev/null and b/Skins/Classic/[icon]video.jpg differ diff --git a/Skins/Classic/[main]Bar1.jpg b/Skins/Classic/[main]Bar1.jpg new file mode 100644 index 00000000..4e9693e3 Binary files /dev/null and b/Skins/Classic/[main]Bar1.jpg differ diff --git a/Skins/Classic/[party]playerTeamButton.jpg b/Skins/Classic/[party]playerTeamButton.jpg new file mode 100644 index 00000000..2faf9c4b Binary files /dev/null and b/Skins/Classic/[party]playerTeamButton.jpg differ diff --git a/Skins/Classic/[sing]lyricsHelpBar.bmp b/Skins/Classic/[sing]lyricsHelpBar.bmp new file mode 100644 index 00000000..24fa2b52 Binary files /dev/null and b/Skins/Classic/[sing]lyricsHelpBar.bmp differ diff --git a/Skins/Classic/[stat]detailBG1.jpg b/Skins/Classic/[stat]detailBG1.jpg new file mode 100644 index 00000000..120dc483 Binary files /dev/null and b/Skins/Classic/[stat]detailBG1.jpg differ diff --git a/Skins/Classic/[stat]mainBG1.jpg b/Skins/Classic/[stat]mainBG1.jpg new file mode 100644 index 00000000..a937b24a Binary files /dev/null and b/Skins/Classic/[stat]mainBG1.jpg differ diff --git a/Skins/Classic/[stat]mainBG2.jpg b/Skins/Classic/[stat]mainBG2.jpg new file mode 100644 index 00000000..201d49b8 Binary files /dev/null and b/Skins/Classic/[stat]mainBG2.jpg differ diff --git a/Skins/Classic/[stat]mainBG3.jpg b/Skins/Classic/[stat]mainBG3.jpg new file mode 100644 index 00000000..812a8d78 Binary files /dev/null and b/Skins/Classic/[stat]mainBG3.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 68436dff..13b59e2e 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -273,6 +273,16 @@ Space=1 Bands=4 Length=7 +[SongVideoIcon] +X =384 +Y =104 +W =32 +H =32 +Z=1 +Color=White +Tex =VideoIcon +Type=Font Black + [SongText1] X =30 Y =455 @@ -3592,7 +3602,7 @@ TexX2=1 TexY2=1 [LevelButtonEasy] -Tex=MainBar +Tex=Button X=25 Y=310 W=250 @@ -3605,7 +3615,7 @@ DColor = White DInt = 0.5 [LevelButtonMedium] -Tex=MainBar +Tex=Button X=275 Y=310 W=250 @@ -3618,7 +3628,7 @@ DColor = White DInt = 0.5 [LevelButtonHard] -Tex=MainBar +Tex=Button X=525 Y=310 W=250 @@ -3636,7 +3646,7 @@ Y=180 Font=1 Size=22 Align=0 -Text=SING_SING_MODE +Text=SING_DIFFICULTY_WHEREAMI Color=GrayLight [LevelText2] @@ -3645,7 +3655,7 @@ Y=248 Font=1 Size=10 Align=0 -Text=SING_DIFFICULTY +Text=SING_DIFFICULTY_DESC Color=Gray [LevelButtonEasyText1] @@ -3694,13 +3704,14 @@ TexX1=0 TexY1=0 TexX2=1 TexY2=1 + [NameText1] X=30 Y=180 Font=1 Size=22 Align=0 -Text=SING_SING_MODE +Text=SING_PLAYER_WHEREAMI Color=GrayLight [NameText2] @@ -3709,11 +3720,11 @@ Y=248 Font=1 Size=10 Align=0 -Text=SING_ENTER_PLAYER_NAME +Text=SING_PLAYER_DESC Color=Gray [NameButtonPlayer1] -Tex=MainBar +Tex=Button X=25 Y=310 W=250 @@ -3734,7 +3745,7 @@ Text= Color=White [NameButtonPlayer2] -Tex=MainBar +Tex=Button X=25 Y=380 W=250 @@ -3755,7 +3766,7 @@ Text= Color=White [NameButtonPlayer3] -Tex=MainBar +Tex=Button X=25 Y=450 W=250 @@ -3776,7 +3787,7 @@ Text= Color=White [NameButtonPlayer4] -Tex=MainBar +Tex=Button X=425 Y=310 W=250 @@ -3787,8 +3798,17 @@ Color=P4Dark DColor=P4Lightest DInt=0.5 +[NameButtonPlayer4Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + [NameButtonPlayer5] -Tex=MainBar +Tex=Button X=425 Y=380 W=250 @@ -3799,8 +3819,17 @@ Color=P5Dark DColor=P5Lightest DInt=0.5 +[NameButtonPlayer5Text1] +X=115 +Y=20 +Font=1 +Size=9 +Align=1 +Text= +Color=White + [NameButtonPlayer6] -Tex=MainBar +Tex=Button X=425 Y=450 W=250 @@ -3811,24 +3840,6 @@ Color=P6Dark DColor=P6Lightest DInt=0.5 -[NameButtonPlayer4Text1] -X=115 -Y=20 -Font=1 -Size=9 -Align=1 -Text= -Color=White - -[NameButtonPlayer5Text1] -X=115 -Y=20 -Font=1 -Size=9 -Align=1 -Text= -Color=White - [NameButtonPlayer6Text1] X=115 Y=20 @@ -4061,6 +4072,928 @@ STColor = White STDColor = GrayDark +[PartyPlayer] +Texts=6 + +[PartyPlayerBackground] +Tex=PartyBG + +[PartyPlayerStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyPlayerStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyPlayerStatic3] +X =40 +Y =22 +W =27 +H =27 +Color =White +Tex =PartyIcon +Type=Font Black + +[PartyPlayerStatic4] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[PartyPlayerStatic5] +X =388 +Y =553 +W =26 +H =22 +Tex=ButtonAZ +Color =White +Type=Plain +Style=5 + +[PartyPlayerStatic6] +X =556 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain +Style=5 + +[PartyPlayerText1] +X =70 +Y =6 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 0 +Size = 20 +Color =White +Text=PARTY_MODE + +[PartyPlayerText2] +X =70 +Y =53 +Color=White +Font =0 +Size =10 +Align =0 +Text=PARTY_PLAYER_DESC + +[PartyPlayerText3] +X =238 +Y =552 +Color=Black +Font =0 +Size =7 +Align=2 +Text=PARTY_PLAYER_WHEREAMI + +[PartyPlayerText4] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[PartyPlayerText5] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_PLAYER_ENTER_NAME + +[PartyPlayerText6] +X =586 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=PARTY_PLAYER_LEGEND_CONTINUE + +[PartyPlayerTeam1Name] +Tex=PartyTeamButton2 +X=85 +Y=100 +W=310 +H=50 +Type=Font Black +Texts=1 +Color =P1Lightest +DColor =P1Dark + +[PartyPlayerTeam1NameText1] +X =155 +Y =8 +Font=1 +Size=11 +Align=1 +Text=Team 1 +Color=White + +[PartyPlayerPlayer1Name] +Tex=Button +X=81 +Y=160 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P1Lightest +DColor =P1Light + +[PartyPlayerPlayer1NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 1 +Color=White + +[PartyPlayerPlayer2Name] +Tex=Button +X=241 +Y=160 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P1Lightest +DColor =P1Light + +[PartyPlayerPlayer2NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 2 +Color=White + +[PartyPlayerPlayer3Name] +Tex=Button +X=401 +Y=160 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P1Lightest +DColor =P1Light + +[PartyPlayerPlayer3NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 3 +Color=White + +[PartyPlayerPlayer4Name] +Tex=Button +X=561 +Y=160 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P1Lightest +DColor =P1Light + +[PartyPlayerPlayer4NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 4 +Color=White + +[PartyPlayerTeam2Name] +Tex=PartyTeamButton2 +X=85 +Y=240 +W=310 +H=50 +Type=Font Black +Texts=1 +Color =P2Lightest +DColor =P2Dark + +[PartyPlayerTeam2NameText1] +X =155 +Y =8 +Font=1 +Size=11 +Align=1 +Text=Team 2 +Color=White + +[PartyPlayerPlayer5Name] +Tex=Button +X=81 +Y=300 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P2Lightest +DColor =P2Light + +[PartyPlayerPlayer5NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 5 +Color=White + +[PartyPlayerPlayer6Name] +Tex=Button +X=241 +Y=300 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P2Lightest +DColor =P2Light + +[PartyPlayerPlayer6NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 6 +Color=White + +[PartyPlayerPlayer7Name] +Tex=Button +X=401 +Y=300 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P2Lightest +DColor =P2Light + +[PartyPlayerPlayer7NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 7 +Color=White + +[PartyPlayerPlayer8Name] +Tex=Button +X=561 +Y=300 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P2Lightest +DColor =P2Light + +[PartyPlayerPlayer8NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 8 +Color=White + +[PartyPlayerTeam3Name] +Tex=Button +Tex=PartyTeamButton2 +X=85 +Y=380 +W=310 +H=50 +Type=Font Black +Texts=1 +Color =P3Lightest +DColor =P3Dark + +[PartyPlayerTeam3NameText1] +X =155 +Y =8 +Font=1 +Size=11 +Align=1 +Text=Team 3 +Color=White + +[PartyPlayerPlayer9Name] +Tex=Button +X=81 +Y=440 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P3Lightest +DColor =P3Light + +[PartyPlayerPlayer9NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 9 +Color=White + +[PartyPlayerPlayer10Name] +Tex=Button +X=241 +Y=440 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P3Lightest +DColor =P3Light + +[PartyPlayerPlayer10NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 10 +Color=White + +[PartyPlayerPlayer11Name] +Tex=Button +X=401 +Y=440 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P3Lightest +DColor =P3Light + +[PartyPlayerPlayer11NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 11 +Color=White + +[PartyPlayerPlayer12Name] +Tex=Button +X=561 +Y=440 +W =158 +H =54 +Type=Font Black +Texts=1 +Color =P3Lightest +DColor =P3Light + +[PartyPlayerPlayer12NameText1] +X =79 +Y =12 +Font=1 +Size=9 +Align=1 +Text=Player 12 +Color=White + + +[StatMain] +Texts=4 +Statics=6 + +[StatMainBackground] +Tex=MainBG + +[StatMainButtonScores] +X =589 +Y =120 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatMainButtonScoresText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_DESC_SCORES +Color=White + +[StatMainButtonSingers] +X =589 +Y =180 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatMainButtonSingersText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_DESC_SINGERS +Color=White + +[StatMainButtonSongs] +X =589 +Y =240 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatMainButtonSongsText1] +X =95 +Y =13 +Font=0 +Size=8 +Align=1 +Text=STAT_DESC_SONGS +Color=White + +[StatMainButtonBands] +X =589 +Y =300 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatMainButtonBandsText1] +X =95 +Y =13 +Font=0 +Size=8 +Align=1 +Text=STAT_DESC_BANDS +Color=White + +[StatMainButtonExit] +X =589 +Y =360 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatMainButtonExitText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_EXIT +Color=White + +[StatMainTextOverview] +X =45 +Y =145 +W =510 +Color=Black +Font =0 +Size =9 +Align=0 +Text= + +[StatMainStatic1] +X =40 +Y =71 +W =32 +H =32 +Color =ColorDark +Tex =MainIcon +Type=Font Black + +[StatMainStatic2] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[StatMainStatic3] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[StatMainStatic4] +X =40 +Y =120 +W =520 +H =20 +Tex=StatMainBG1 +Color =ColorLight +Type=Font Black + +[StatMainStatic5] +X =40 +Y =140 +W =520 +H =300 +Tex=StatMainBG2 +Color =ColorDark +Type=Font Black + +[StatMainStatic6] +X =40 +Y =440 +W =520 +H =20 +Tex=StatMainBG3 +Color =ColorLight +Type=Font Black + +[StatMainText1] +X =40 +Y =6 +Color=GrayLight +Font =1 +Size =22 +Text=STAT_MAIN +Align=0 + +[StatMainText2] +X =73 +Y =69 +Color=GrayDark +Font =1 +Size =10 +Align =0 +Text=STAT_MAIN_DESC + +[StatMainText3] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[StatMainText4] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + + +[StatDetail] +Texts=0 +Statics=0 + +[StatDetailBackground] +Tex=MainBG + +[StatDetailButtonNext] +X =589 +Y =120 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatDetailButtonNextText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_NEXT +Color=White + +[StatDetailButtonPrev] +X =589 +Y =180 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatDetailButtonPrevText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_PREV +Color=White + +[StatDetailButtonReverse] +X =589 +Y =240 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatDetailButtonReverseText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=STAT_REVERSE +Color=White + +[StatDetailButtonExit] +X =589 +Y =300 +W =190 +H =50 +Tex = Button +Color = ColorDark +Int = 1 +DColor = White +DInt = 0.5 +Type = Font Black +Texts=1 + +[StatDetailButtonExitText1] +X =95 +Y =10 +Font=0 +Size=10 +Align=1 +Text=SING_OPTIONS_EXIT +Color=White + +[StatDetailTextDescription] +X =73 +Y =69 +Color=GrayDark +Font =1 +Size =10 +Align =0 +Text= + +[StatDetailTextPage] +X = 546 +Y = 118 +Color= Black +Font = 0 +Size = 5 +Align=2 +Text= + +[StatDetailTextList1] +X = 45 +Y = 142 +Color=Black +Font = 0 +Size = 8 +Text=Stat1 + +[StatDetailTextList2] +X = 45 +Y = 180 +Color=Black +Font = 0 +Size = 8 +Text=Stat2 + +[StatDetailTextList3] +X = 45 +Y = 218 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList4] +X = 45 +Y = 256 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList5] +X = 45 +Y = 294 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList6] +X = 45 +Y = 332 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList7] +X = 45 +Y = 370 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList8] +X = 45 +Y = 408 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList9] +X = 45 +Y = 446 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailTextList10] +X = 45 +Y = 484 +Color=Black +Font = 0 +Size = 8 +Text= + +[StatDetailStatic1] +X =40 +Y =71 +W =32 +H =32 +Color =ColorDark +Tex =MainIcon +Type=Font Black + + +[StatDetailStatic2] +X =260 +Y =553 +W =30 +H =22 +Tex=ButtonNavi +Color =White +Type=Plain +Style=5 + +[StatDetailStatic3] +X =388 +Y =553 +W =22 +H =22 +Tex=ButtonEsc +Color =White +Type=Plain + +[StatDetailStatic4] +X =40 +Y =120 +W =520 +H =24 +Tex=StatDetailBG1 +Color =ColorLight +Type=Font Black + +[StatDetailStatic5] +X =40 +Y =144 +W =520 +H =379 +Tex=StatMainBG2 +Color =ColorDark +Type=Font Black + +[StatDetailStatic6] +X =40 +Y =523 +W =520 +H =20 +Tex=StatMainBG3 +Color =ColorLight +Type=Font Black + + +[StatDetailText1] +X =40 +Y =6 +Color=GrayLight +Font =1 +Size =22 +Text=STAT_DETAIL +Align=0 + +[StatDetailText2] +X =294 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_NAVIGATE + +[StatDetailText3] +X =418 +Y =552 +Color=Black +Font =0 +Size =7 +Align=0 +Text=SING_LEGEND_ESC + + # # # # OnScreen PopUp Error / Question Messages # # # # [CheckPopup] Texts=0 -- cgit v1.2.3 From d08356e3b64d8738ff9672229c1bbe963b58337c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 6 Jun 2007 20:24:29 +0000 Subject: Fixed some Bugs in Song Fading Added Ini Values to change the Fading and the Preview Volume git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@245 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UIni.pas | 26 +++++++++- Game/Code/Classes/UMusic.pas | 6 +-- Game/Code/Screens/UScreenSong.pas | 103 ++++++++++++++++++++++++++------------ 3 files changed, 97 insertions(+), 38 deletions(-) diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index c92a7a50..528966b3 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -38,7 +38,10 @@ type BeatClick: integer; SavePlayback: integer; Threshold: integer; - //TwoPlayerMode: integer; + + //Song Preview + PreviewVolume: integer; + PreviewFading: integer; // Lyrics LyricsFont: integer; @@ -130,7 +133,10 @@ const IBeatClick: array[0..1] of string = ('Off', 'On'); ISavePlayback: array[0..1] of string = ('Off', 'On'); IThreshold: array[0..3] of string = ('5%', '10%', '15%', '20%'); - //ITwoPlayerMode: array[0..2] of string = ('Stereo', '2 Cards', 'Advanced'); + //Song Preview + IPreviewVolume: array[0..10] of string = ('Off', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'); + IPreviewFading: array[0..5] of string = ('Off', '1 Sec', '2 Secs', '3 Secs', '4 Secs', '5 Secs'); + ILyricsFont: array[0..2] of string = ('Plain', 'OLine1', 'OLine2'); ILyricsEffect: array[0..3] of string = ('Simple', 'Zoom', 'Slide', 'Ball'); @@ -316,6 +322,15 @@ begin for Pet := 0 to High(IThreshold) do if Tekst = IThreshold[Pet] then Ini.Threshold := Pet; + //Song Preview + Tekst := IniFile.ReadString('Sound', 'PreviewVolume', IPreviewVolume[7]); + for Pet := 0 to High(IPreviewVolume) do + if Tekst = IPreviewVolume[Pet] then Ini.PreviewVolume := Pet; + + Tekst := IniFile.ReadString('Sound', 'PreviewFading', IPreviewFading[1]); + for Pet := 0 to High(IPreviewFading) do + if Tekst = IPreviewFading[Pet] then Ini.PreviewFading := Pet; + // Lyrics Font Tekst := IniFile.ReadString('Lyrics', 'LyricsFont', ILyricsFont[1]); for Pet := 0 to High(ILyricsFont) do @@ -582,6 +597,13 @@ begin Tekst := IThreshold[Ini.Threshold]; IniFile.WriteString('Sound', 'Threshold', Tekst); + // Song Preview + Tekst := IPreviewVolume[Ini.PreviewVolume]; + IniFile.WriteString('Sound', 'PreviewVolume', Tekst); + + Tekst := IPreviewFading[Ini.PreviewFading]; + IniFile.WriteString('Sound', 'PreviewFading', Tekst); + // SavePlayback Tekst := ISavePlayback[Ini.SavePlayback]; IniFile.WriteString('Sound', 'SavePlayback', Tekst); diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index 52bae3c9..3fcd2a21 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -59,7 +59,7 @@ type procedure InitializePlayback; procedure InitializeRecord; procedure SetVolume(Volume: integer); - procedure SetMusicVolume(Volume: Byte); + procedure SetMusicVolume(Volume: integer); procedure SetLoop(Enabled: boolean); function Open(Name: string): boolean; // true if succeed procedure Rewind; @@ -351,14 +351,14 @@ begin BASS_SetConfig(BASS_CONFIG_GVOL_MUSIC, Volume); end; -procedure TMusic.SetMusicVolume(Volume: Byte); +procedure TMusic.SetMusicVolume(Volume: Integer); begin //Max Volume Prevention if Volume > 100 then Volume := 100; //Set Volume - BASS_ChannelSetAttributes (Bass, -1, Integer(Volume), -101); + BASS_ChannelSetAttributes (Bass, -1, Volume, -101); end; procedure TMusic.SetLoop(Enabled: boolean); diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index ae02b2f4..ee05c11c 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1271,12 +1271,21 @@ begin if Length(CatSongs.Song) > 0 then begin - Music.SetLoop(false); - Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3); - Music.MoveTo(Music.Length / 4); - Music.Play; - //Music Fade (Start not with max Volume) - Music.SetMusicVolume(70); + //Load Music only when Song Preview is activated + if (Ini.PreviewVolume <> 0) then + begin + Music.SetLoop(false); + Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3); + Music.MoveTo(Music.Length / 4); + Music.Play; + + //Set Preview Volume + Music.SetMusicVolume (Ini.PreviewVolume * 10); + {//if Music Fade is activated, Set Volume to 0 % + if (Ini.PreviewFading <> 0) then + Music.SetMusicVolume(0);} + end; + SetScroll; UpdateLCD; end; @@ -1312,6 +1321,10 @@ end; procedure TScreenSong.onHide; begin + //When Music Fading is activated, Turn Music to 100 % + If (Ini.PreviewVolume <> 100) or (Ini.PreviewFading <> 0) then + Music.SetMusicVolume(100); + //When hide then Stop Music (For Party Mode Popup on Exit) if (Display.NextScreen <> @ScreenSing) and (Display.NextScreen <> @ScreenSingModi) and (Music <> nil) then Music.Stop; @@ -1350,25 +1363,42 @@ begin // Log.BenchmarkEnd(5); // Log.LogBenchmark('SetScroll4', 5); + //Fading Functions, Only if Covertime is under 5 Seconds + If (CoverTime < 5) then + begin + // 0.5.0: cover fade + if (CoverTime < 1) and (CoverTime + TimeSkip >= 1) then begin + // load new texture + Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); + Button[Interaction].Texture.Alpha := 1; + Button[Interaction].Texture2 := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); + Button[Interaction].Texture2.Alpha := 1; + end; - // 0.5.0: cover fade and Song Fade - if (CoverTime < 1) and (CoverTime + TimeSkip >= 1) then begin - // load new texture - Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); - Button[Interaction].Texture.Alpha := 1; - Button[Interaction].Texture2 := Texture.GetTexture(Button[Interaction].Texture.Name, 'Plain', false); - Button[Interaction].Texture2.Alpha := 1; + //Song Fade + if (CatSongs.VisibleSongs > 0) AND (Ini.PreviewVolume <> 0) AND (Not CatSongs.Song[Interaction].Main) AND (Ini.PreviewFading <> 0) then + begin + //Start Song Fade after a little Time, to prevent Song to be Played on Scrolling + if (CoverTime < 0.2) and (CoverTime + TimeSkip >= 0.2) then + Music.Play; - //Play Song - Music.SetMusicVolume(20); - Music.Play; - end; - CoverTime := CoverTime + TimeSkip; - Button[Interaction].Texture2.Alpha := (CoverTime - 1) * 1.5; - if Button[Interaction].Texture2.Alpha > 1 then Button[Interaction].Texture2.Alpha := 1; + //Update Song Volume + if (CoverTime < Ini.PreviewFading) then + Music.SetMusicVolume(Round (CoverTime * Ini.PreviewVolume / Ini.PreviewFading * 10)) + else + Music.SetMusicVolume(Ini.PreviewVolume * 10); + + end; - if (CoverTime > 1) and (CoverTime <= 3.5) then - Music.SetMusicVolume(Round((CoverTime-1)* 20)); + + //Update Fading Time + CoverTime := CoverTime + TimeSkip; + + //Update Fading Texture + Button[Interaction].Texture2.Alpha := (CoverTime - 1) * 1.5; + if Button[Interaction].Texture2.Alpha > 1 then Button[Interaction].Texture2.Alpha := 1; + + end; inherited Draw; @@ -1452,17 +1482,24 @@ end; //Procedure Change current played Preview procedure TScreenSong.ChangeMusic; begin - if (NOT CatSongs.Song[Interaction].Main) AND(CatSongs.VisibleSongs > 0) then - begin - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin - Music.MoveTo(Music.Length / 4); - //Song Fading: Not Play Directly - //Music.Play; - end; - end - else - Music.Stop; + //When Music Preview is avtivated -> then Change Music + if (Ini.PreviewVolume <> 0) then + begin + if (NOT CatSongs.Song[Interaction].Main) AND(CatSongs.VisibleSongs > 0) then + begin + Music.Close; + if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin + Music.MoveTo(Music.Length / 4); + //If Song Fading is activated then don't Play directly, and Set Volume to Null, else Play normal + if (Ini.PreviewVolume <> 0) then + Music.SetMusicVolume(0) + else + Music.Play; + end; + end + else + Music.Stop; + end; end; procedure TScreenSong.SkipTo(Target: Cardinal); // 0.5.0 -- cgit v1.2.3 From 7518565b2c77b915e8fe4f693f8de161d7506859 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 6 Jun 2007 20:26:59 +0000 Subject: Made new Player BG and Score Objects in ScreenSing backwards compatible git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@246 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index ef5d1136..8a6a7b9b 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -1053,16 +1053,38 @@ begin ThemeLoadText(Sing.TextP1Score, 'SingP1TextScore'); //Added for ps3 skin //This one is shown in 2/4P mode - ThemeLoadStatic(Sing.StaticP1TwoP, 'SingP1TwoPStatic'); - ThemeLoadText(Sing.TextP1TwoP, 'SingP1TwoPText'); - ThemeLoadStatic(Sing.StaticP1TwoPScoreBG, 'SingP1TwoPStatic2'); - ThemeLoadText(Sing.TextP1TwoPScore, 'SingP1TwoPTextScore'); + //if it exists, otherwise the one Player equivaltents are used + if (ThemeIni.SectionExists('SingP1TwoPTextScore')) then + begin + ThemeLoadStatic(Sing.StaticP1TwoP, 'SingP1TwoPStatic'); + ThemeLoadText(Sing.TextP1TwoP, 'SingP1TwoPText'); + ThemeLoadStatic(Sing.StaticP1TwoPScoreBG, 'SingP1TwoPStatic2'); + ThemeLoadText(Sing.TextP1TwoPScore, 'SingP1TwoPTextScore'); + end + else + begin + Sing.StaticP1TwoP := Sing.StaticP1; + Sing.TextP1TwoP := Sing.TextP1; + Sing.StaticP1TwoPScoreBG := Sing.StaticP1ScoreBG; + Sing.TextP1TwoPScore := Sing.TextP1Score; + end; //This one is shown in 3/6P mode - ThemeLoadStatic(Sing.StaticP1ThreeP, 'SingP1ThreePStatic'); - ThemeLoadText(Sing.TextP1ThreeP, 'SingP1ThreePText'); - ThemeLoadStatic(Sing.StaticP1ThreePScoreBG, 'SingP1ThreePStatic2'); - ThemeLoadText(Sing.TextP1ThreePScore, 'SingP1ThreePTextScore'); + //if it exists, otherwise the one Player equivaltents are used + if (ThemeIni.SectionExists('SingP1TwoPTextScore')) then + begin + ThemeLoadStatic(Sing.StaticP1ThreeP, 'SingP1ThreePStatic'); + ThemeLoadText(Sing.TextP1ThreeP, 'SingP1ThreePText'); + ThemeLoadStatic(Sing.StaticP1ThreePScoreBG, 'SingP1ThreePStatic2'); + ThemeLoadText(Sing.TextP1ThreePScore, 'SingP1ThreePTextScore'); + end + else + begin + Sing.StaticP1ThreeP := Sing.StaticP1; + Sing.TextP1ThreeP := Sing.TextP1; + Sing.StaticP1ThreePScoreBG := Sing.StaticP1ScoreBG; + Sing.TextP1ThreePScore := Sing.TextP1Score; + end; //eoa ThemeLoadStatic(Sing.StaticP2R, 'SingP2RStatic'); ThemeLoadText(Sing.TextP2R, 'SingP2RText'); -- cgit v1.2.3 From 18579e1d865dc0fbd9c179fc5d45b1fff2b9033b Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 7 Jun 2007 07:42:38 +0000 Subject: Fixed 2 Bugs in Song Preview Fading git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@247 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index ee05c11c..1a5b41b8 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1325,6 +1325,10 @@ begin If (Ini.PreviewVolume <> 100) or (Ini.PreviewFading <> 0) then Music.SetMusicVolume(100); + //If Preview is deactivated: Load MUsicfile now + If (Ini.PreviewVolume = 0) then + Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3); + //When hide then Stop Music (For Party Mode Popup on Exit) if (Display.NextScreen <> @ScreenSing) and (Display.NextScreen <> @ScreenSingModi) and (Music <> nil) then Music.Stop; @@ -1491,10 +1495,10 @@ begin if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then begin Music.MoveTo(Music.Length / 4); //If Song Fading is activated then don't Play directly, and Set Volume to Null, else Play normal - if (Ini.PreviewVolume <> 0) then - Music.SetMusicVolume(0) + if (Ini.PreviewFading = 0) then + Music.Play else - Music.Play; + Music.SetMusicVolume(0); end; end else -- cgit v1.2.3 From 4131257e42ceb88fa4fb2849b5c40011e8b5635d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 8 Jun 2007 16:23:40 +0000 Subject: Added ability to delete a Playlist within the Menu Language Files updated git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@248 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UPlaylist.pas | 2 ++ Game/Code/Screens/UScreenSongMenu.pas | 55 ++++++++++++++++++++++++++++++----- Languages/English.ini | 3 ++ Languages/German.ini | 6 +++- Languages/readme.txt | 10 +++++++ 5 files changed, 68 insertions(+), 8 deletions(-) diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas index 55cf90ff..e3f68239 100644 --- a/Game/Code/Classes/UPlaylist.pas +++ b/Game/Code/Classes/UPlaylist.pas @@ -327,9 +327,11 @@ begin if (CatSongs.CatNumShow = -3) and (Index = CurPlaylist) then begin ScreenSong.UnLoadDetailedCover; + ScreenSong.HideCatTL; CatSongs.SetFilter('', 0); ScreenSong.Interaction := 0; ScreenSong.FixSelected; + ScreenSong.ChangeMusic; end; end; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index 3814334c..06b8f183 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -27,9 +27,10 @@ const SM_Playlist_Add = 64 or 2; SM_Playlist_New = 64 or 3; - SM_Playlist_Del = 64 or 5; + SM_Playlist_DelItem = 64 or 5; SM_Playlist_Load = 64 or 8 or 1; + SM_Playlist_Del = 64 or 8 or 5; SM_Party_Main = 128 or 1; @@ -42,7 +43,7 @@ var implementation -uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist; +uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, UPlaylist, USongs; function TScreenSongMenu.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin @@ -265,10 +266,10 @@ begin Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); end; - SM_PlayList_Del: + SM_Playlist_DelItem: begin CurMenu := sMenu; - Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_DEL'); + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_DELITEM'); Button[0].Visible := True; Button[1].Visible := False; @@ -285,12 +286,15 @@ begin CurMenu := sMenu; Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_LOAD'); - Button[0].Visible := False; + //Show Delete Curent Playlist Button when Playlist is opened + Button[0].Visible := (CatSongs.CatNumShow = -3); + Button[1].Visible := False; Button[2].Visible := False; Button[3].Visible := True; SelectsS[0].Visible := True; + Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_DELCURRENT'); Button[3].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_LOAD'); SetLength(ISelections, Length(PlaylistMan.Playlists)); @@ -311,6 +315,21 @@ begin end; end; + SM_Playlist_Del: + begin + CurMenu := sMenu; + Text[0].Text := Language.Translate('SONG_MENU_NAME_PLAYLIST_DEL'); + + Button[0].Visible := True; + Button[1].Visible := False; + Button[2].Visible := False; + Button[3].Visible := True; + SelectsS[0].Visible := False; + + Button[0].Text[0].Text := Language.Translate('SONG_MENU_YES'); + Button[3].Text[0].Text := Language.Translate('SONG_MENU_CANCEL'); + end; + SM_Party_Main: begin @@ -421,7 +440,7 @@ begin 2: //Button 3 begin //Show add to Playlist Menu - MenuShow(SM_Playlist_Del); + MenuShow(SM_Playlist_DelItem); end; 3: //SelectSlide 3 @@ -488,7 +507,7 @@ begin end; end; - SM_PlayList_Del: + SM_Playlist_DelItem: begin Visible := False; Case Interaction of @@ -509,6 +528,10 @@ begin SM_Playlist_Load: begin Case Interaction of + 0: //Button 1 (Delete Playlist) + begin + MenuShow(SM_Playlist_Del); + end; 4: //Button 4 begin //Load Playlist @@ -518,6 +541,24 @@ begin end; end; + SM_Playlist_Del: + begin + Visible := False; + Case Interaction of + 0: //Button 1 + begin + //Delete + PlayListMan.DelPlaylist(PlaylistMan.CurPlayList); + Visible := False; + end; + + 4: //Button 4 + begin + MenuShow(SM_Playlist_Load); + end; + end; + end; + SM_Party_Main: begin Case Interaction of diff --git a/Languages/English.ini b/Languages/English.ini index aeecaf49..317b6d8c 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -176,6 +176,9 @@ SONG_MENU_NO=No SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open +SONG_MENU_PLAYLIST_DELCURRENT=delete current Playlist + +SONG_MENU_NAME_PLAYLIST_DEL=Delete Playlist? SONG_MENU_NAME_PARTY_MAIN=Party Menu SONG_MENU_JOKER=Joker diff --git a/Languages/German.ini b/Languages/German.ini index 41802135..4713ae48 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -170,12 +170,16 @@ SONG_MENU_NAME_PLAYLIST_NEW=Neue Playlist SONG_MENU_PLAYLIST_NEW_CREATE=Erstellen SONG_MENU_PLAYLIST_NEW_UNNAMED=Unbenannt -SONG_MENU_NAME_PLAYLIST_DEL=Wirklich löschen? +SONG_MENU_NAME_PLAYLIST_DELITEM=Wirklich löschen? SONG_MENU_YES=Ja SONG_MENU_NO=Nein +SONG_MENU_NAME_PLAYLIST_DEL=Playlist löschen? + + SONG_MENU_NAME_PLAYLIST_LOAD=Playlist öffnen SONG_MENU_PLAYLIST_LOAD=Öffnen +SONG_MENU_PLAYLIST_DELCURRENT=Aktuelle Playlist löschen SONG_MENU_NAME_PARTY_MAIN=Party-Menü SONG_MENU_JOKER=Joker diff --git a/Languages/readme.txt b/Languages/readme.txt index 46ccff2c..132f0c80 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -59,6 +59,13 @@ SONG_MENU_CHANGEPLAYERS=Change Players SONG_MENU_CANCEL=Cancel #Playlist Menu +SONG_MENU_NAME_MAIN=song menu +SONG_MENU_PLAY=Sing +SONG_MENU_CHANGEPLAYERS=Change Players +SONG_MENU_EDIT=Edit +SONG_MENU_MODI=Sing a Modi +SONG_MENU_CANCEL=Cancel + SONG_MENU_NAME_PLAYLIST=Song Menu SONG_MENU_PLAYLIST_ADD=Add Song SONG_MENU_PLAYLIST_DEL=Delete Song @@ -78,6 +85,9 @@ SONG_MENU_NO=No SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist SONG_MENU_PLAYLIST_LOAD=open +SONG_MENU_PLAYLIST_DELCURRENT=delete current Playlist + +SONG_MENU_NAME_PLAYLIST_DEL=Delete Playlist? #Menu Party Modus SONG_MENU_NAME_PARTY_MAIN=Menu -- cgit v1.2.3 From 56980dfdb5a44e03608689d3cd479d5c1c4a6dc4 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 8 Jun 2007 18:29:33 +0000 Subject: Party Win Screen now changes the colors of the TeamBgs automaticly when Color = TeamColor Changed Deluxe Team to fit the Changes git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@249 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenPartyWin.pas | 77 +++++++++++++++++++++++++++++++++++ Themes/Deluxe.ini | 12 +++--- 2 files changed, 83 insertions(+), 6 deletions(-) diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas index 1c4549a4..76d0420f 100644 --- a/Game/Code/Screens/UScreenPartyWin.pas +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -93,6 +93,14 @@ procedure TScreenPartyWin.onShow; var I: Integer; Placing: TeamOrderArray; + Function GetTeamColor(Team: Byte): Cardinal; + var + NameString: String; + begin + NameString := 'P' + InttoStr(Team+1) + 'Dark'; + + Result := ColorExists(NameString); + end; begin //Get Team Placing Placing := PartySession.GetTeamOrder; @@ -110,6 +118,29 @@ begin Static[StaticTeam1].Visible := True; Static[StaticTeam1BG].Visible := True; Static[StaticTeam1Deco].Visible := True; + + //Set Static Color to Team Color + If (Theme.PartyWin.StaticTeam1BG.Color = 'TeamColor') then + begin + I := GetTeamColor(Placing[0]); + if (I <> -1) then + begin + Static[StaticTeam1BG].Texture.ColR := Color[I].RGB.R; + Static[StaticTeam1BG].Texture.ColG := Color[I].RGB.G; + Static[StaticTeam1BG].Texture.ColB := Color[I].RGB.B; + end; + end; + + If (Theme.PartyWin.StaticTeam1.Color = 'TeamColor') then + begin + I := GetTeamColor(Placing[0]); + if (I <> -1) then + begin + Static[StaticTeam1].Texture.ColR := Color[I].RGB.R; + Static[StaticTeam1].Texture.ColG := Color[I].RGB.G; + Static[StaticTeam1].Texture.ColB := Color[I].RGB.B; + end; + end; end else begin @@ -130,6 +161,29 @@ begin Static[StaticTeam2].Visible := True; Static[StaticTeam2BG].Visible := True; Static[StaticTeam2Deco].Visible := True; + + //Set Static Color to Team Color + If (Theme.PartyWin.StaticTeam2BG.Color = 'TeamColor') then + begin + I := GetTeamColor(Placing[1]); + if (I <> -1) then + begin + Static[StaticTeam2BG].Texture.ColR := Color[I].RGB.R; + Static[StaticTeam2BG].Texture.ColG := Color[I].RGB.G; + Static[StaticTeam2BG].Texture.ColB := Color[I].RGB.B; + end; + end; + + If (Theme.PartyWin.StaticTeam2.Color = 'TeamColor') then + begin + I := GetTeamColor(Placing[1]); + if (I <> -1) then + begin + Static[StaticTeam2].Texture.ColR := Color[I].RGB.R; + Static[StaticTeam2].Texture.ColG := Color[I].RGB.G; + Static[StaticTeam2].Texture.ColB := Color[I].RGB.B; + end; + end; end else begin @@ -150,6 +204,29 @@ begin Static[StaticTeam3].Visible := True; Static[StaticTeam3BG].Visible := True; Static[StaticTeam3Deco].Visible := True; + + //Set Static Color to Team Color + If (Theme.PartyWin.StaticTeam3BG.Color = 'TeamColor') then + begin + I := GetTeamColor(Placing[2]); + if (I <> -1) then + begin + Static[StaticTeam3BG].Texture.ColR := Color[I].RGB.R; + Static[StaticTeam3BG].Texture.ColG := Color[I].RGB.G; + Static[StaticTeam3BG].Texture.ColB := Color[I].RGB.B; + end; + end; + + If (Theme.PartyWin.StaticTeam3.Color = 'TeamColor') then + begin + I := GetTeamColor(Placing[2]); + if (I <> -1) then + begin + Static[StaticTeam3].Texture.ColR := Color[I].RGB.R; + Static[StaticTeam3].Texture.ColG := Color[I].RGB.G; + Static[StaticTeam3].Texture.ColB := Color[I].RGB.B; + end; + end; end else begin diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index eb124f0b..240d674f 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -5923,7 +5923,7 @@ W =530 H =16 Z =1 Tex=PartyTeamPoints -Color =P1Dark +Color =TeamColor Int = 1 Type=Font Black Reflection=1 @@ -5936,7 +5936,7 @@ Y=185 W=550 H=65 Type=Font Black -Color =P1Dark +Color =TeamColor Reflection=1 ReflectionSpacing=2 @@ -6031,7 +6031,7 @@ W =380 H =15 Z =1 Tex=PartyTeamPoints -Color =P2Dark +Color =TeamColor Int = 1 Type=Font Black Reflection=1 @@ -6044,7 +6044,7 @@ Y=300 W=400 H=50 Type=Font Black -Color =P2Dark +Color =TeamColor Reflection=1 ReflectionSpacing=2 @@ -6103,7 +6103,7 @@ W =280 H =15 Z =1 Tex=PartyTeamPoints -Color =P2Dark +Color =TeamColor Int = 1 Type=Font Black Reflection=1 @@ -6116,7 +6116,7 @@ Y=400 W=300 H=40 Type=Font Black -Color =P2Dark +Color =TeamColor Reflection=1 ReflectionSpacing=2 -- cgit v1.2.3 From 6130b0841429920015301a661e5133cfd1ed3cb3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Fri, 8 Jun 2007 18:43:34 +0000 Subject: Fixed: Up and Down now don't leave Playlist and Search Mode anymore git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@250 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 127 +++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 69 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 1a5b41b8..2ce06d7a 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -381,7 +381,6 @@ begin end else if (Mode = 1) then //PartyMode -> Show Menu begin - //Is this Right? if (Ini.PartyPopup = 1) then ScreenSongMenu.MenuShow(SM_Party_Main) else @@ -427,93 +426,83 @@ begin SDLK_DOWN: begin - if (Mode = 0) then - begin -{ if Length(Songs.Song) > 0 then begin - Music.PlayChange; - InteractNext; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then Music.Play; - SetScroll; - end;} - - //Cat Change Hack - if Ini.Tabs_at_startup = 1 then + if (Mode = 0) then + begin + //Only Change Cat when not in Playlist or Search Mode + if (CatSongs.CatNumShow > -2) then begin - I := Interaction; - if I <= 0 then I := 1; - - while not catsongs.Song[I].Main do + //Cat Change Hack + if Ini.Tabs_at_startup = 1 then begin - Inc (I); - if (I > high(catsongs.Song)) then - I := low(catsongs.Song); - end; + I := Interaction; + if I <= 0 then I := 1; - Interaction := I; + while not catsongs.Song[I].Main do + begin + Inc (I); + if (I > high(catsongs.Song)) then + I := low(catsongs.Song); + end; - //Show Cat in Top Left Mod - ShowCatTL (Interaction); + Interaction := I; - CatSongs.ClickCategoryButton(Interaction); - SelectNext; - FixSelected; + //Show Cat in Top Left Mod + ShowCatTL (Interaction); - //Play Music: - Music.PlayChange; - ChangeMusic; + CatSongs.ClickCategoryButton(Interaction); + SelectNext; + FixSelected; - end; + //Play Music: + Music.PlayChange; + ChangeMusic; - // - //Cat Change Hack End} - end; + end; + + // + //Cat Change Hack End} + end; + end; end; SDLK_UP: begin - if (Mode = 0) then - begin -{ if Length(Songs.Song) > 0 then begin - Music.PlayChange; - InteractPrev; - Music.Close; - if Music.Open(CatSongs.Song[Interaction].Path + CatSongs.Song[Interaction].Mp3) then Music.Play; - SetScroll; - end;} - //Cat Change Hack - if Ini.Tabs_at_startup = 1 then + if (Mode = 0) then + begin + //Only Change Cat when not in Playlist or Search Mode + if (CatSongs.CatNumShow > -2) then begin - I := Interaction; - I2 := 0; - if I <= 0 then I := 1; - - while not catsongs.Song[I].Main or (I2 = 0) do + //Cat Change Hack + if Ini.Tabs_at_startup = 1 then begin - if catsongs.Song[I].Main then - Inc(I2); - Dec (I); - if (I < low(catsongs.Song)) then - I := high(catsongs.Song); - end; + I := Interaction; + I2 := 0; + if I <= 0 then I := 1; - Interaction := I; + while not catsongs.Song[I].Main or (I2 = 0) do + begin + if catsongs.Song[I].Main then + Inc(I2); + Dec (I); + if (I < low(catsongs.Song)) then + I := high(catsongs.Song); + end; - //Show Cat in Top Left Mod - ShowCatTL (I); + Interaction := I; - CatSongs.ClickCategoryButton(I); - SelectNext; - FixSelected; + //Show Cat in Top Left Mod + ShowCatTL (I); - //Play Music: - Music.PlayChange; - ChangeMusic; + CatSongs.ClickCategoryButton(I); + SelectNext; + FixSelected; + //Play Music: + Music.PlayChange; + ChangeMusic; + end; end; - - // - //Cat Change Hack End} - end; + //Cat Change Hack End} + end; end; SDLK_RIGHT: -- cgit v1.2.3 From 141878175d76d013be3ec8fb9fd0a58dc9b0d3eb Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 9 Jun 2007 10:10:25 +0000 Subject: Added Preview Volume and Fading to Sound Options Changed Themes to Fit these changes Updated Language Files Some fixes in SelectSlide git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@251 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 9 +- Game/Code/Menu/UMenuSelectSlide.pas | 10 ++- Game/Code/Screens/UScreenOptionsSound.pas | 11 ++- Languages/English.ini | 2 + Languages/German.ini | 2 + Languages/readme.txt | 4 + Skins/Deluxe/Autum.ini | 1 + Skins/Deluxe/Blue.ini | 1 + Skins/Deluxe/Summer.ini | 1 + Skins/Deluxe/Winter.ini | 1 + Skins/Deluxe/[main]selectbg.jpg | Bin 0 -> 4100 bytes Themes/Classic.ini | 42 +++++++++- Themes/Deluxe.ini | 134 +++++++++++++++++++----------- 13 files changed, 162 insertions(+), 56 deletions(-) create mode 100644 Skins/Deluxe/[main]selectbg.jpg diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 8a6a7b9b..78875dec 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -446,7 +446,9 @@ type SelectClickAssist: TThemeSelect; SelectBeatClick: TThemeSelect; SelectThreshold: TThemeSelect; - //SelectTwoPlayerMode: TThemeSelect; + //Song Preview + SelectSlidePreviewVolume: TThemeSelectSlide; + SelectSlidePreviewFading: TThemeSelectSlide; ButtonExit: TThemeButton; end; @@ -1209,7 +1211,10 @@ begin ThemeLoadSelect(OptionsSound.SelectClickAssist, 'OptionsSoundSelectClickAssist'); ThemeLoadSelect(OptionsSound.SelectBeatClick, 'OptionsSoundSelectBeatClick'); ThemeLoadSelect(OptionsSound.SelectThreshold, 'OptionsSoundSelectThreshold'); - //ThemeLoadSelect(OptionsSound.SelectTwoPlayerMode, 'OptionsSoundSelectTwoPlayerMode'); + //Song Preview + ThemeLoadSelectSlide(OptionsSound.SelectSlidePreviewVolume, 'OptionsSoundSelectSlidePreviewVolume'); + ThemeLoadSelectSlide(OptionsSound.SelectSlidePreviewFading, 'OptionsSoundSelectSlidePreviewFading'); + ThemeLoadButton(OptionsSound.ButtonExit, 'OptionsSoundButtonExit'); // Options Lyrics diff --git a/Game/Code/Menu/UMenuSelectSlide.pas b/Game/Code/Menu/UMenuSelectSlide.pas index f18b45cd..c1ccad6d 100644 --- a/Game/Code/Menu/UMenuSelectSlide.pas +++ b/Game/Code/Menu/UMenuSelectSlide.pas @@ -291,8 +291,8 @@ var maxlength: Real; I: Integer; begin - SetFontStyle(TextOpt[0].Style); - SetFontSize(TextOpt[0].Size); + SetFontStyle(0{Text.Style}); + SetFontSize(Text.Size); maxlength := 0; for I := low(TextOptT) to high (TextOptT) do @@ -329,7 +329,11 @@ begin //Generate Positions //TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * (I + 0.5); - TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * I; + if (I <> High(TextOpt)) OR (High(TextOpt) = 0) OR (Length(TextOptT) = Lines) then + TextOpt[I].X := TextureSBG.X + 20 + (TextureSBG.W / Lines) * I + else + TextOpt[I].X := TextureSBG.X + TextureSBG.W - maxlength; + TextOpt[I].Y := TextureSBG.Y + (TextureSBG.H / 2) - 1.5 * Text.Size{20}; //Better Look with 2 Options diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index c99f1ef6..fb04ab64 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -35,7 +35,7 @@ begin end; SDLK_RETURN: begin - if SelInteraction = 4 then begin + if SelInteraction = 6 then begin Ini.Save; Music.PlayBack; FadeTo(@ScreenOptions); @@ -47,14 +47,14 @@ begin InteractPrev; SDLK_RIGHT: begin - if (SelInteraction >= 0) and (SelInteraction <= 3) then begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin Music.PlayOption; InteractInc; end; end; SDLK_LEFT: begin - if (SelInteraction >= 0) and (SelInteraction <= 3) then begin + if (SelInteraction >= 0) and (SelInteraction <= 5) then begin Music.PlayOption; InteractDec; end; @@ -76,6 +76,11 @@ begin AddSelect(Theme.OptionsSound.SelectBeatClick, Ini.BeatClick, IBeatClick); AddSelect(Theme.OptionsSound.SelectThreshold, Ini.Threshold, IThreshold); + //Song Preview + AddSelectSlide(Theme.OptionsSound.SelectSlidePreviewVolume, Ini.PreviewVolume, IPreviewVolume); + AddSelectSlide + (Theme.OptionsSound.SelectSlidePreviewFading, Ini.PreviewFading, IPreviewFading); + AddButton(Theme.OptionsSound.ButtonExit); if (Length(Button[0].Text)=0) then AddButtonText(14, 20, Theme.Options.Description[7]); diff --git a/Languages/English.ini b/Languages/English.ini index 317b6d8c..3bef68cc 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -60,6 +60,8 @@ SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist SING_OPTIONS_SOUND_BEAT_CLICK=Beat click SING_OPTIONS_SOUND_THRESHOLD=Threshold SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Two players mode +SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview Volume +SING_OPTIONS_SOUND_PREVIEWFADING=Preview Fading SING_OPTIONS_LYRICS_WHEREAMI=Options Lyrics SING_OPTIONS_LYRICS_DESC=lyrics settings diff --git a/Languages/German.ini b/Languages/German.ini index 4713ae48..df4e2397 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -60,6 +60,8 @@ SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdr. SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spieler-Modus +SING_OPTIONS_SOUND_PREVIEWVOLUME=Vorschau Lautst. +SING_OPTIONS_SOUND_PREVIEWFADING=Vorschau Fading SING_OPTIONS_LYRICS_WHEREAMI=Optionen Lyrics SING_OPTIONS_LYRICS_DESC=Einstellungen für die Lyrics diff --git a/Languages/readme.txt b/Languages/readme.txt index 132f0c80..98026f10 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -13,6 +13,10 @@ SING_TOOLS=Tools SING_STATS=stats SING_STATS_DESC=View the Statistics +#Sound Options Screen +SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview Volume +SING_OPTIONS_SOUND_PREVIEWFADING=Preview Fading + #Advanced Options Screen SING_OPTIONS_ADVANCED=advanced SING_OPTIONS_ADVANCED_DESC=advanced options diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini index 4be2a132..33adc9d3 100644 --- a/Skins/Deluxe/Autum.ini +++ b/Skins/Deluxe/Autum.ini @@ -15,6 +15,7 @@ Color=Orange Button = [main]button.jpg ButtonF = [main]buttonf.jpg MainBar = [main]mainBar.jpg +SelectBG = [main]selectbg.jpg #Backgrounds LoadingBG = [bg-load]autum.jpg diff --git a/Skins/Deluxe/Blue.ini b/Skins/Deluxe/Blue.ini index 7ef40741..7f86780a 100644 --- a/Skins/Deluxe/Blue.ini +++ b/Skins/Deluxe/Blue.ini @@ -15,6 +15,7 @@ Color=Blue Button = [main]button.jpg ButtonF = [main]buttonf.jpg MainBar = [main]mainBar.jpg +SelectBG = [main]selectbg.jpg #Backgrounds LoadingBG = [bg-load]blue.jpg diff --git a/Skins/Deluxe/Summer.ini b/Skins/Deluxe/Summer.ini index 72126d08..040fafc6 100644 --- a/Skins/Deluxe/Summer.ini +++ b/Skins/Deluxe/Summer.ini @@ -15,6 +15,7 @@ Color=Blue Button = [main]button.jpg ButtonF = [main]buttonf.jpg MainBar = [main]mainBar.jpg +SelectBG = [main]selectbg.jpg #Backgrounds LoadingBG = [bg-load]summer.jpg diff --git a/Skins/Deluxe/Winter.ini b/Skins/Deluxe/Winter.ini index 00db0467..c3b6755b 100644 --- a/Skins/Deluxe/Winter.ini +++ b/Skins/Deluxe/Winter.ini @@ -15,6 +15,7 @@ Color=Blue Button = [main]button.jpg ButtonF = [main]buttonf.jpg MainBar = [main]mainBar.jpg +SelectBG = [main]selectbg.jpg #Backgrounds LoadingBG = [bg-load]winter.jpg diff --git a/Skins/Deluxe/[main]selectbg.jpg b/Skins/Deluxe/[main]selectbg.jpg new file mode 100644 index 00000000..98dcb671 Binary files /dev/null and b/Skins/Deluxe/[main]selectbg.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 13b59e2e..1b5fb857 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -2722,11 +2722,51 @@ SBGDColor = Gray STColor = White STDColor = GrayDark -[OptionsSoundButtonExit] +[OptionsSoundSelectSlidePreviewVolume] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_SOUND_PREVIEWVOLUME +X = 40 +Y = 305 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectSlidePreviewFading] +Tex =MainBar +TexSBG =MainBar +Text=SING_OPTIONS_SOUND_PREVIEWFADING X = 40 Y = 360 W = 230 H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundButtonExit] +X = 40 +Y = 415 +W = 230 +H = 70 Tex =MainBar Color = ColorDark DColor = Gray diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 240d674f..9423f54c 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -430,16 +430,16 @@ Align =2 Text= #Variable statics and texts for song-screen in sing- and partymode -# There can be an unlimited Number of Statics and Texts, As long +# There can be an unlimited Number of Statics and Texts, As long # as the numbers are in order. # Statics that are shown in PartyMode Only are Named_ -# SongStaticParty[No] +# SongStaticParty[No] # Texts that are shown in PartyMode Only are Named_ -# SongTextParty[No] +# SongTextParty[No] # Statics that are shown in Normal Mode Only are Named_ -# SongStaticNonParty[No] +# SongStaticNonParty[No] # Texts that are shown in Normal Mode Only are Named_ -# SongTextNonParty[No] +# SongTextNonParty[No] #Here are the ones for singmode [SongStaticNonParty1] @@ -2908,7 +2908,7 @@ Text=SING_LEGEND_ESC [OptionsGameSelectPlayers] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GAME_PLAYERS X = 40 Y = 85 @@ -2928,7 +2928,7 @@ STDColor = GrayDark [OptionsGameSelectDifficulty] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GAME_DIFFICULTY X = 40 Y = 140 @@ -2949,7 +2949,7 @@ STDColor = GrayDark [OptionsGameSelectSlideLanguage] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GAME_LANGUAGE X = 40 Y = 195 @@ -2969,7 +2969,7 @@ STDColor = GrayDark [OptionsGameSelectTabs] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GAME_TABS X = 40 Y = 250 @@ -2989,7 +2989,7 @@ STDColor = GrayDark [OptionsGameSelectSlideSorting] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GAME_SORTING X = 40 Y = 305 @@ -3009,7 +3009,7 @@ STDColor = GrayDark [OptionsGameSelectDebug] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GAME_DEBUG X = 40 Y = 360 @@ -3140,7 +3140,7 @@ Text=SING_LEGEND_ESC [OptionsGraphicsSelectSlideResolution] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text=SING_OPTIONS_GRAPHICS_RESOLUTION X = 40 Y = 85 @@ -3160,7 +3160,7 @@ STDColor = GrayDark [OptionsGraphicsSelectFullscreen] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GRAPHICS_FULLSCREEN X = 40 Y = 140 @@ -3180,7 +3180,7 @@ STDColor = GrayDark [OptionsGraphicsSelectDepth] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GRAPHICS_DEPTH X = 40 Y = 195 @@ -3200,7 +3200,7 @@ STDColor = GrayDark [OptionsGraphicsSelectOscilloscope] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GRAPHICS_OSCILLOSCOPE X = 40 Y = 250 @@ -3220,7 +3220,7 @@ STDColor = GrayDark [OptionsGraphicsSelectMovieSize] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GRAPHICS_MOVIE_SIZE X = 40 Y = 305 @@ -3351,7 +3351,7 @@ Text=SING_LEGEND_ESC [OptionsSoundSelectMicBoost] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_SOUND_MIC_BOOST X = 40 Y = 85 @@ -3371,7 +3371,7 @@ STDColor = GrayDark [OptionsSoundSelectClickAssist] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_SOUND_CLICK_ASSIST X = 40 Y = 140 @@ -3391,7 +3391,7 @@ STDColor = GrayDark [OptionsSoundSelectBeatClick] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_SOUND_BEAT_CLICK X = 40 Y = 195 @@ -3411,7 +3411,7 @@ STDColor = GrayDark [OptionsSoundSelectThreshold] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_SOUND_THRESHOLD X = 40 Y = 250 @@ -3431,7 +3431,7 @@ STDColor = GrayDark [OptionsSoundSelectTwoPlayerMode] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_SOUND_TWO_PLAYERS_MODE X = 40 Y = 305 @@ -3449,11 +3449,51 @@ SBGDColor = Gray STColor = White STDColor = GrayDark -[OptionsSoundButtonExit] +[OptionsSoundSelectSlidePreviewVolume] +Tex =MainBar +TexSBG =SelectBG +Text=SING_OPTIONS_SOUND_PREVIEWVOLUME +X = 40 +Y = 305 +W = 230 +H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundSelectSlidePreviewFADING] +Tex =MainBar +TexSBG =SelectBG +Text=SING_OPTIONS_SOUND_PREVIEWFADING X = 40 Y = 360 W = 230 H = 70 +SkipX = 50 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex =MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = White +STDColor = GrayDark + +[OptionsSoundButtonExit] +X = 40 +Y = 415 +W = 230 +H = 70 Tex =MainBar Color = ColorDark DColor = Gray @@ -3562,7 +3602,7 @@ Text=SING_LEGEND_ESC [OptionsLyricsSelectLyricsFont] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_LYRICS_FONT X = 40 Y = 85 @@ -3582,7 +3622,7 @@ STDColor = GrayDark [OptionsLyricsSelectLyricsEffect] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_LYRICS_EFFECT X = 40 Y = 140 @@ -3602,7 +3642,7 @@ STDColor = GrayDark [OptionsLyricsSelectSolmization] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_LYRICS_SOLMIZATION X = 40 Y = 195 @@ -3733,7 +3773,7 @@ Text=SING_LEGEND_ESC [OptionsThemesSelectTheme] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_THEMES_THEME X = 40 Y = 85 @@ -3753,7 +3793,7 @@ STDColor = GrayDark [OptionsThemesSelectSkin] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_THEMES_SKIN X = 40 Y = 140 @@ -3773,7 +3813,7 @@ STDColor = GrayDark [OptionsThemesSelectColor] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_THEMES_COLOR X = 40 Y = 195 @@ -3904,7 +3944,7 @@ Text=SING_LEGEND_ESC [OptionsRecordSelectSlideCard] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_RECORD_CARD X = 40 Y = 85 @@ -3925,7 +3965,7 @@ STDColor = GrayDark [OptionsRecordSelectSlideInput] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_RECORD_INPUT X = 40 Y = 140 @@ -3946,7 +3986,7 @@ STDColor = GrayDark [OptionsRecordSelectSlideChannelL] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_RECORD_CHANNELL X = 40 Y = 195 @@ -3967,7 +4007,7 @@ STDColor = GrayDark [OptionsRecordSelectSlideChannelR] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =SING_OPTIONS_RECORD_CHANNELR X = 40 Y = 250 @@ -4099,7 +4139,7 @@ Text=SING_LEGEND_ESC [OptionsAdvancedSelectLoadAnimation] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text=SING_OPTIONS_ADVANCED_LOADANIMATION X = 40 Y = 85 @@ -4119,7 +4159,7 @@ STDColor = GrayDark [OptionsAdvancedSelectScreenFade] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_SCREENFADE X = 40 Y = 140 @@ -4139,7 +4179,7 @@ STDColor = GrayDark [OptionsAdvancedSelectEffectSing] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_EFFECTSING X = 40 Y = 195 @@ -4159,7 +4199,7 @@ STDColor = GrayDark [OptionsAdvancedSelectLineBonus] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_GRAPHICS_LINEBONUS X = 40 Y = 250 @@ -4179,7 +4219,7 @@ STDColor = GrayDark [OptionsAdvancedSelectSlideOnSongClick] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text=SING_OPTIONS_ADVANCED_ONSONGCLICK X = 40 Y = 305 @@ -4199,7 +4239,7 @@ STDColor = GrayDark [OptionsAdvancedSelectAskbeforeDel] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL X = 40 Y = 360 @@ -4219,7 +4259,7 @@ STDColor = GrayDark [OptionsAdvancedSelectPartyPopup] Tex =MainBar -TexSBG =MainBar +TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_PARTYPOPUP X = 40 Y = 415 @@ -6344,7 +6384,7 @@ Text=SING_LEGEND_CONTINUE [PartyOptionsSelectLevel] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_DIFFICULTY X = 40 Y = 85 @@ -6365,7 +6405,7 @@ STDColor = GrayDark [PartyOptionsSelectPlayList] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_PLAYLIST X = 40 Y = 140 @@ -6386,7 +6426,7 @@ STDColor = GrayDark [PartyOptionsSelectPlayList2] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_PLAYLIST X = 40 Y = 195 @@ -6407,7 +6447,7 @@ STDColor = GrayDark [PartyOptionsSelectRounds] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_ROUNDS X = 40 Y = 250 @@ -6428,7 +6468,7 @@ STDColor = GrayDark [PartyOptionsSelectTeams] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_TEAMS X = 40 Y = 305 @@ -6449,7 +6489,7 @@ STDColor = GrayDark [PartyOptionsSelectPlayers1] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_TEAMS_PLAYER1 X = 40 Y = 360 @@ -6470,7 +6510,7 @@ STDColor = GrayDark [PartyOptionsSelectPlayers2] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_TEAMS_PLAYER2 X = 40 Y = 415 @@ -6491,7 +6531,7 @@ STDColor = GrayDark [PartyOptionsSelectPlayers3] Tex = MainBar -TexSBG = MainBar +TexSBG =SelectBG Text =PARTY_TEAMS_PLAYER3 X = 40 Y = 470 -- cgit v1.2.3 From 88a3cad5410c654d44eeea006818eb86c18542c1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 10 Jun 2007 09:02:03 +0000 Subject: Fixed a wrong Color String in third Place BG in UScreenPartyWin git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@252 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 9423f54c..4f63e0bb 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -6178,7 +6178,7 @@ W =280 H =15 Z =1 Tex=PartyTeamPoints -Color =P3Dark +Color =TeamColor Int = 1 Type=Font Black Reflection=1 @@ -6191,7 +6191,7 @@ Y=400 W=300 H=40 Type=Font Black -Color =P3Dark +Color =TeamColor Reflection=1 ReflectionSpacing=2 -- cgit v1.2.3 From 5575456e1071a7408bc91a6c9b9277f4fce1e785 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 10 Jun 2007 09:11:40 +0000 Subject: Fixed not existing SongEqualizer Color causing the EInvalidPointer exception on exit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@253 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Classic.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 1b5fb857..9e02de8f 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -262,7 +262,7 @@ Reflections=0 [SongEqualizer] Visible=1 Direction=1 -Color =Grey +Color =Black Alpha=1 X=320 Y=488 -- cgit v1.2.3 From 155910dbe253d5c1bf8e2287c27f0d9dffefa383 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 10 Jun 2007 09:12:53 +0000 Subject: Added a workaround for EInvalidPointer Exception when a not existing Equalizer- Color is specified in Theme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@254 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 78875dec..079ceb00 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -1002,6 +1002,11 @@ begin Song.Equalizer.ColR := Color[I].RGB.R; Song.Equalizer.ColG := Color[I].RGB.G; Song.Equalizer.ColB := Color[I].RGB.B; + end + else begin + Song.Equalizer.ColR := 0; + Song.Equalizer.ColG := 0; + Song.Equalizer.ColB := 0; end; //Load Equalizer Pos and Size from Theme Mod End -- cgit v1.2.3 From 81b634fd2e0b9a70c43e12d17d2ca25cce1a7335 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 10 Jun 2007 10:38:34 +0000 Subject: Changed LineBonus Translations to 0.5.3 compatible Texts git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@255 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 16 ++++++++-------- Languages/English.ini | 14 ++++++++------ Languages/German.ini | 14 ++++++++------ Languages/readme.txt | 14 ++++++++------ 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 079ceb00..dbb637e4 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -1109,15 +1109,15 @@ begin ThemeLoadText(Sing.TextP3RScore, 'SingP3RTextScore'); //Line Bonus Texts - Sing.LineBonusText[0] := Language.Translate('LINEBONUS_WORST'); + Sing.LineBonusText[0] := Language.Translate('POPUP_AWFUL'); Sing.LineBonusText[1] := Sing.LineBonusText[0]; - Sing.LineBonusText[2] := Language.Translate('LINEBONUS_BAD'); - Sing.LineBonusText[3] := Language.Translate('LINEBONUS_NORMAL'); - Sing.LineBonusText[4] := Sing.LineBonusText[3]; - Sing.LineBonusText[5] := Language.Translate('LINEBONUS_GOOD'); - Sing.LineBonusText[6] := Language.Translate('LINEBONUS_BETTER'); - Sing.LineBonusText[7] := Sing.LineBonusText[6]; - Sing.LineBonusText[8] := Language.Translate('LINEBONUS_PERFECT'); + Sing.LineBonusText[2] := Language.Translate('POPUP_POOR'); + Sing.LineBonusText[3] := Language.Translate('POPUP_BAD'); + Sing.LineBonusText[4] := Language.Translate('POPUP_NOTBAD'); + Sing.LineBonusText[5] := Language.Translate('POPUP_GOOD'); + Sing.LineBonusText[6] := Language.Translate('POPUP_GREAT'); + Sing.LineBonusText[7] := Language.Translate('POPUP_AWESOME'); + Sing.LineBonusText[8] := Language.Translate('POPUP_PERFECT'); // Score ThemeLoadBasic(Score, 'Score'); diff --git a/Languages/English.ini b/Languages/English.ini index 3bef68cc..bf6383d3 100644 --- a/Languages/English.ini +++ b/Languages/English.ini @@ -142,12 +142,14 @@ SING_TOP_5_CHARTS=top 5 Players SING_TOP_5_CHARTS_WHEREAMI=top 5 SING_TOP_5_CHARTS_CONTINUE=to song selection -LINEBONUS_PERFECT=Perfect! -LINEBONUS_BETTER=Cool! -LINEBONUS_GOOD=Good! -LINEBONUS_NORMAL=OK! -LINEBONUS_BAD=Bad! -LINEBONUS_WORST=Ghastly! +POPUP_PERFECT=perfect! +POPUP_AWESOME=awesome! +POPUP_GREAT=great! +POPUP_GOOD=good! +POPUP_NOTBAD=not bad! +POPUP_BAD=bad! +POPUP_POOR=poor! +POPUP_AWFUL=awful! IMPLODE_GLUE1=, IMPLODE_GLUE2= and diff --git a/Languages/German.ini b/Languages/German.ini index df4e2397..15049572 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -142,12 +142,14 @@ SING_TOP_5_CHARTS=Top-5-Spieler SING_TOP_5_CHARTS_WHEREAMI=Top-5 SING_TOP_5_CHARTS_CONTINUE=zur Song-Auswahl -LINEBONUS_PERFECT=Perfekt! -LINEBONUS_BETTER=Cool! -LINEBONUS_GOOD=Gut! -LINEBONUS_NORMAL=Ok! -LINEBONUS_BAD=Mies! -LINEBONUS_WORST=Grausam! +POPUP_PERFECT=Perfekt! +POPUP_AWESOME=Cool! +POPUP_GREAT=Gut! +POPUP_GOOD=Gut! +POPUP_NOTBAD=O.K.! +POPUP_BAD=Schlecht! +POPUP_POOR=Mies! +POPUP_AWFUL=Grausam! IMPLODE_GLUE1=, IMPLODE_GLUE2= und diff --git a/Languages/readme.txt b/Languages/readme.txt index 98026f10..a5bb7f18 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -37,12 +37,14 @@ SING_SCORE_SUPERSTAR=Superstar SING_SCORE_ULTRASTAR=Ultrastar #Line Bonus PopUps -LINEBONUS_PERFECT=Perfect! -LINEBONUS_BETTER=Cool! -LINEBONUS_GOOD=Good! -LINEBONUS_NORMAL=OK! -LINEBONUS_BAD=Bad! -LINEBONUS_WORST=Ghastly! +POPUP_PERFECT=perfect! +POPUP_AWESOME=awesome! +POPUP_GREAT=great! +POPUP_GOOD=good! +POPUP_NOTBAD=not bad! +POPUP_BAD=bad! +POPUP_POOR=poor! +POPUP_AWFUL=awful! #To connect Strigns with, e.g.: He, you and I IMPLODE_GLUE1=, -- cgit v1.2.3 From 02a59ca2d7f440a441ddf2e2b733ff5497714611 Mon Sep 17 00:00:00 2001 From: mota23 Date: Sun, 10 Jun 2007 13:15:04 +0000 Subject: Completed Player-names. F1..F12 gets Template-Name from Ini. Alt-F1..F12 writes Template-Name to Ini. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@256 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenName.pas | 137 +++++++++++++++++++++++-------- Game/Code/Screens/UScreenPartyPlayer.pas | 137 +++++++++++++++++++++++-------- 2 files changed, 202 insertions(+), 72 deletions(-) diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index 1b90c570..0d98e944 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -22,10 +22,15 @@ uses UGraphic, UMain, UIni, UTexture; function TScreenName.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; var I: integer; +SDL_ModState: Word; begin Result := true; If (PressedDown) Then begin // Key Down + + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); + case PressedKey of SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: begin @@ -34,53 +39,113 @@ begin // Templates for Names Mod SDLK_F1: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[0]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[0] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[0]; + end; SDLK_F2: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[1]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[1] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[1]; + end; SDLK_F3: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[2]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[2] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[2]; + end; SDLK_F4: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[3]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[3] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[3]; + end; SDLK_F5: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[4]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[4] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[4]; + end; SDLK_F6: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[5]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[5] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[5]; + end; SDLK_F7: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[6]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[6] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[6]; + end; SDLK_F8: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[7]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[7] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[7]; + end; SDLK_F9: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[8]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[8] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[8]; + end; SDLK_F10: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[9]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[9] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[9]; + end; SDLK_F11: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[10]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[10] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[10]; + end; SDLK_F12: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[11]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[11] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[11]; + end; SDLK_BACKSPACE: diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index e8607470..d6859775 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -39,6 +39,7 @@ uses UGraphic, UMain, UIni, UTexture, UParty; function TScreenPartyPlayer.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; var I, J: integer; + SDL_ModState: Word; procedure IntNext; begin repeat @@ -54,6 +55,10 @@ var begin Result := true; If (PressedDown) Then + + SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); + begin // Key Down case PressedKey of SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: @@ -63,53 +68,113 @@ begin // Templates for Names Mod SDLK_F1: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[0]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[0] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[0]; + end; SDLK_F2: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[1]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[1] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[1]; + end; SDLK_F3: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[2]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[2] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[2]; + end; SDLK_F4: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[3]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[3] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[3]; + end; SDLK_F5: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[4]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[4] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[4]; + end; SDLK_F6: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[5]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[5] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[5]; + end; SDLK_F7: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[6]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[6] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[6]; + end; SDLK_F8: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[7]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[7] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[7]; + end; SDLK_F9: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[8]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[8] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[8]; + end; SDLK_F10: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[9]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[9] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[9]; + end; SDLK_F11: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[10]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[10] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[10]; + end; SDLK_F12: - begin - Button[Interaction].Text[0].Text := Ini.NameTemplate[11]; - end; + if (SDL_ModState = KMOD_LALT) then + begin + Ini.NameTemplate[11] := Button[Interaction].Text[0].Text; + end + else + begin + Button[Interaction].Text[0].Text := Ini.NameTemplate[11]; + end; SDLK_BACKSPACE: begin -- cgit v1.2.3 From a7832821f3d5e76a2183a9c3cc4e7d66dff17192 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 10 Jun 2007 13:26:13 +0000 Subject: Some Themework on Classic Themes Song Menu Done git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@257 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Star.ini | 5 +- Skins/Classic/[helper]rectangle.jpg | Bin 0 -> 604 bytes Skins/Classic/[menu]songMenuBg.jpg | Bin 0 -> 1327 bytes Skins/Classic/[menu]songMenuBorder.jpg | Bin 0 -> 2076 bytes Skins/Classic/[menu]songMenuButtonBG.jpg | Bin 0 -> 720 bytes Skins/Classic/[menu]songMenuSelectBG.jpg | Bin 0 -> 889 bytes Themes/Classic.ini | 175 +++++++++++++++++++++++++++++++ 7 files changed, 178 insertions(+), 2 deletions(-) create mode 100644 Skins/Classic/[helper]rectangle.jpg create mode 100644 Skins/Classic/[menu]songMenuBg.jpg create mode 100644 Skins/Classic/[menu]songMenuBorder.jpg create mode 100644 Skins/Classic/[menu]songMenuButtonBG.jpg create mode 100644 Skins/Classic/[menu]songMenuSelectBG.jpg diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index 0edc0756..0abf8f48 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -138,6 +138,8 @@ Leiste2 = [special]bar2.jpg JumpToBG = [menu]jumpToBg.jpg SongMenuBG = [menu]songMenuBg.jpg +SongMenuBorder = [menu]songMenuBorder.jpg +SongMenuButton = [menu]songMenuButtonBG.jpg SongMenuSelectBG = [menu]songMenuSelectBg.jpg PopUpBG = [menu]popUpBG.jpg PopUpFG = [menu]popUpFG.jpg @@ -158,5 +160,4 @@ NotePerfectStar = [effect]perfectNoteStar.jpg # # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file +Rectangle = [helper]rectangle.jpg \ No newline at end of file diff --git a/Skins/Classic/[helper]rectangle.jpg b/Skins/Classic/[helper]rectangle.jpg new file mode 100644 index 00000000..e03f98fc Binary files /dev/null and b/Skins/Classic/[helper]rectangle.jpg differ diff --git a/Skins/Classic/[menu]songMenuBg.jpg b/Skins/Classic/[menu]songMenuBg.jpg new file mode 100644 index 00000000..e4242fc5 Binary files /dev/null and b/Skins/Classic/[menu]songMenuBg.jpg differ diff --git a/Skins/Classic/[menu]songMenuBorder.jpg b/Skins/Classic/[menu]songMenuBorder.jpg new file mode 100644 index 00000000..11dd0604 Binary files /dev/null and b/Skins/Classic/[menu]songMenuBorder.jpg differ diff --git a/Skins/Classic/[menu]songMenuButtonBG.jpg b/Skins/Classic/[menu]songMenuButtonBG.jpg new file mode 100644 index 00000000..53f0da59 Binary files /dev/null and b/Skins/Classic/[menu]songMenuButtonBG.jpg differ diff --git a/Skins/Classic/[menu]songMenuSelectBG.jpg b/Skins/Classic/[menu]songMenuSelectBG.jpg new file mode 100644 index 00000000..cd3041e2 Binary files /dev/null and b/Skins/Classic/[menu]songMenuSelectBG.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 9e02de8f..6fdd3651 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -4536,7 +4536,182 @@ Align=1 Text=Player 12 Color=White +# # # # Song Extensions # # # # +[SongMenu] +Texts=0 +Statics=1 + +[SongMenuButton1] +X = 505 +Y = 195 +W = 220 +H = 25 +Tex = SongMenuButton +Color =ColorDark +DColor = Gray +Type=Font Black +Texts=1 +Z = 0.98 + +[SongMenuButton1Text1] +X =110 +Y =0 +Color=Black +Font =0 +Size =8 +Text=SONG_MENU_PLAY +Align=1 +Z=0.99 + +[SongMenuButton2] +X = 505 +Y = 225 +W = 220 +H = 25 +Tex = SongMenuButton +Color =ColorDark +DColor = Gray +Type=Font Black +Texts=1 +Z = 0.98 + +[SongMenuButton2Text1] +X =110 +Y =0 +Color=Black +Font =0 +Size =8 +Text=SONG_MENU_EDIT +Align=1 +Z=0.99 + +[SongMenuButton3] +X = 505 +Y = 255 +W = 220 +H = 25 +Tex = SongMenuButton +Color =ColorDark +DColor = Gray +Type=Font Black +Texts=1 +Z = 0.98 + +[SongMenuButton3Text1] +X =110 +Y =0 +Color=Black +Font =0 +Size =8 +Text=SONG_MENU_MODI +Align=1 +Z=0.99 + +[SongMenuButton4] +X = 505 +Y = 285 +W = 220 +H = 25 +Tex = SongMenuButton +Color =ColorDark +DColor = Gray +Type=Font Black +Texts=1 +Z = 0.98 + +[SongMenuButton4Text1] +X =110 +Y =0 +Color=Black +Font =0 +Size =8 +Text=SONG_MENU_CANCEL +Align=1 +Z=0.99 + +[SongMenuSelectSlide3] +Tex = Rectangle +TexSBG = SongMenuSelectBG +Text = +X = 505 +Y = 255 +W = 0 +H = 25 +Z = 0.98 +SkipX = 0 +SBGW=220 + +TextSize=8 + +Color = ColorDark +DColor = Gray +TColor = White +TDColor = White +SBGTex = MainBar +SBGColor = ColorDark +SBGDColor = Gray +STColor = Black +STDColor = Black + +[SongMenuTextMenu] +X =615 +Y =140 +Color=Black +Font =0 +Size =13 +Text=MENU +Align=1 +Z=0.99 + +[SongMenuStatic1] +X =400 +Y =100 +W =400 +H =262 +Color=White +Tex =Rectangle +Type=Font Black +TexX1=0.1 +TexY1=0.1 +TexX2=0.9 +TexY2=0.9 + +[SongMenuStatic2] +X =400 +Y =100 +W =400 +H =262 +Color=Black +Tex =SongFade +Type=Font Black +TexX1=0.1 +TexY1=0.1 +TexX2=0.9 +TexY2=0.7 + +[SongMenuStatic3] +Tex =SongMenuBG +X =500 +Y =140 +W =230 +H =200 +Z =0.94 +Int=1 +Color =White +Type=Font Black + +[SongMenuStatic4] +X =705 +Y =120 +W =42 +H =240 +Color =Gray +Tex =SongMenuBorder +Type=Font Black +Z=0.98 + +# # # # Statistic Screens # # # # [StatMain] Texts=4 Statics=6 -- cgit v1.2.3 From 03c2049c1685ca6ec0046e422d65de1e996fc209 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 10 Jun 2007 14:40:20 +0000 Subject: Fixed a Bug in ScreenSong Equalizer that causes an Invalid Pointer Exception when US is closed. Changed Themes to fit the changes git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@258 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 7 ++++--- Themes/Classic.ini | 2 +- Themes/Deluxe.ini | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 2ce06d7a..87aa122e 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1533,9 +1533,10 @@ begin B:=0; Pos := 0; - Res := floor(92/Theme.Song.Equalizer.Bands);//How much channels are used for one Band + Res := ceil(92/Theme.Song.Equalizer.Bands);//How much channels are used for one Band + //Change Lengths - for I := 0 to 92 do + for I := 0 to (Res * Theme.Song.Equalizer.Bands - 1) do begin A := floor(I/Res); @@ -1589,7 +1590,7 @@ begin PosY := Theme.Song.Equalizer.Y; PosX := Theme.Song.Equalizer.X; - For I := 0 to Theme.Song.Equalizer.Bands do + For I := 0 to Theme.Song.Equalizer.Bands-1 do begin if Theme.Song.Equalizer.Direction then PosY := Theme.Song.Equalizer.Y //+ (Theme.Song.Equalizer.H + Theme.Song.Equalizer.Space) * Theme.Song.Equalizer.Length diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 6fdd3651..a437377e 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -270,7 +270,7 @@ Z=1 PieceW=8 PieceH=3 Space=1 -Bands=4 +Bands=5 Length=7 [SongVideoIcon] diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 4f63e0bb..4a603b67 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -337,7 +337,7 @@ Z=1 PieceW=6 PieceH=6 Space=1 -Bands=5 +Bands=6 Length=18 [SongVideoIcon] -- cgit v1.2.3 From 2473c6ee14684926ef7b61d1691946b852ebef05 Mon Sep 17 00:00:00 2001 From: mota23 Date: Tue, 12 Jun 2007 01:21:35 +0000 Subject: Some Themework in Classic. 5 Screens, help-keys and some fixes left. Fix: Autum-BG renamed to Autumn in Deluxe. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@259 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/[main]Button2.jpg | Bin 0 -> 2506 bytes Skins/Classic/[main]Button3.jpg | Bin 0 -> 3068 bytes Skins/Classic/[main]Logo.jpg | Bin 10023 -> 19821 bytes Skins/Classic/[party]Joker.jpg | Bin 0 -> 2334 bytes Skins/Deluxe/Autum.ini | 155 --------------------- Skins/Deluxe/Autumn.ini | 155 +++++++++++++++++++++ Skins/Deluxe/[bg-load]autum.jpg | Bin 138204 -> 0 bytes Skins/Deluxe/[bg-load]autumn.jpg | Bin 0 -> 138204 bytes Skins/Deluxe/[bg-main]autum.jpg | Bin 157407 -> 0 bytes Skins/Deluxe/[bg-main]autumn.jpg | Bin 0 -> 157407 bytes Themes/Classic.ini | 281 +++++++++++++++++++++++++++++++++------ Themes/Deluxe.ini | 4 +- 12 files changed, 394 insertions(+), 201 deletions(-) create mode 100644 Skins/Classic/[main]Button2.jpg create mode 100644 Skins/Classic/[main]Button3.jpg create mode 100644 Skins/Classic/[party]Joker.jpg delete mode 100644 Skins/Deluxe/Autum.ini create mode 100644 Skins/Deluxe/Autumn.ini delete mode 100644 Skins/Deluxe/[bg-load]autum.jpg create mode 100644 Skins/Deluxe/[bg-load]autumn.jpg delete mode 100644 Skins/Deluxe/[bg-main]autum.jpg create mode 100644 Skins/Deluxe/[bg-main]autumn.jpg diff --git a/Skins/Classic/[main]Button2.jpg b/Skins/Classic/[main]Button2.jpg new file mode 100644 index 00000000..e3e9679a Binary files /dev/null and b/Skins/Classic/[main]Button2.jpg differ diff --git a/Skins/Classic/[main]Button3.jpg b/Skins/Classic/[main]Button3.jpg new file mode 100644 index 00000000..3ac1f442 Binary files /dev/null and b/Skins/Classic/[main]Button3.jpg differ diff --git a/Skins/Classic/[main]Logo.jpg b/Skins/Classic/[main]Logo.jpg index d4d27533..1902cb02 100644 Binary files a/Skins/Classic/[main]Logo.jpg and b/Skins/Classic/[main]Logo.jpg differ diff --git a/Skins/Classic/[party]Joker.jpg b/Skins/Classic/[party]Joker.jpg new file mode 100644 index 00000000..78b66936 Binary files /dev/null and b/Skins/Classic/[party]Joker.jpg differ diff --git a/Skins/Deluxe/Autum.ini b/Skins/Deluxe/Autum.ini deleted file mode 100644 index 33adc9d3..00000000 --- a/Skins/Deluxe/Autum.ini +++ /dev/null @@ -1,155 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=Autum -Color=Orange - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg -SelectBG = [main]selectbg.jpg - -#Backgrounds -LoadingBG = [bg-load]autum.jpg -MainBG = [bg-main]autum.jpg -SongBG = [bg-main]autum.jpg -ScoreScreenBG = [bg-main]autum.jpg -Top5BG = [bg-main]autum.jpg -OptionsBG = [bg-main]autum.jpg -PartyBG = [bg-main]autum.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg -StatIcon = [icon]stats.jpg -VideoIcon = [icon]video.jpg - -IconError = [icon]error.jpg -IconQuestion = [icon]question.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar1 = [sing]timeBarBG.jpg - -#the bar behind the timestuff -TimeBar2 = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyTeamButton3 =[party]winTeamButton1.jpg -PartyTeamButton4 =[party]winTeamButton2.jpg -PartyTeamButton5 =[party]winTeamButton3.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp -PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg -PartyScoreBG1 =[party]scoreBG1.jpg -PartyScoreBG2 =[party]scoreBG2.jpg -PartyWinDeco1 =x_[party]winDecoration1.jpg -PartyWinDeco2 =x_[party]winDecoration1.jpg -PartyWinDeco3 =x_[party]winDecoration1.jpg - -# # # S T A T S # # # -StatMainBG1 = [stat]mainBG1.jpg -StatMainBG2 = [stat]mainBG2.jpg -StatMainBG3 = [stat]mainBG3.jpg -StatDetailBG1 = [stat]detailBG1.jpg - - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg -ButtonEsc = [button]esc.jpg -Button13 = [button]13.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -SongMenuSelectBG = [menu]songMenuSelectBg.jpg -PopUpBG = [menu]popUpBG.jpg -PopUpFG = [menu]popUpFG.jpg - - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/Autumn.ini b/Skins/Deluxe/Autumn.ini new file mode 100644 index 00000000..0e95f031 --- /dev/null +++ b/Skins/Deluxe/Autumn.ini @@ -0,0 +1,155 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Autumn +Color=Orange + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg +SelectBG = [main]selectbg.jpg + +#Backgrounds +LoadingBG = [bg-load]autumn.jpg +MainBG = [bg-main]autumn.jpg +SongBG = [bg-main]autumn.jpg +ScoreScreenBG = [bg-main]autumn.jpg +Top5BG = [bg-main]autumn.jpg +OptionsBG = [bg-main]autumn.jpg +PartyBG = [bg-main]autumn.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg +VideoIcon = [icon]video.jpg + +IconError = [icon]error.jpg +IconQuestion = [icon]question.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar1 = [sing]timeBarBG.jpg + +#the bar behind the timestuff +TimeBar2 = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg + +# # # S T A T S # # # +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg +PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[bg-load]autum.jpg b/Skins/Deluxe/[bg-load]autum.jpg deleted file mode 100644 index 51ee048c..00000000 Binary files a/Skins/Deluxe/[bg-load]autum.jpg and /dev/null differ diff --git a/Skins/Deluxe/[bg-load]autumn.jpg b/Skins/Deluxe/[bg-load]autumn.jpg new file mode 100644 index 00000000..51ee048c Binary files /dev/null and b/Skins/Deluxe/[bg-load]autumn.jpg differ diff --git a/Skins/Deluxe/[bg-main]autum.jpg b/Skins/Deluxe/[bg-main]autum.jpg deleted file mode 100644 index ae29b9bd..00000000 Binary files a/Skins/Deluxe/[bg-main]autum.jpg and /dev/null differ diff --git a/Skins/Deluxe/[bg-main]autumn.jpg b/Skins/Deluxe/[bg-main]autumn.jpg new file mode 100644 index 00000000..ae29b9bd Binary files /dev/null and b/Skins/Deluxe/[bg-main]autumn.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index a437377e..757d7c03 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -32,12 +32,12 @@ Size =14 Text =SING_LOADING [LoadingText2] -X =628 +X =790 Y =583 Color=Grey Font =0 Size =6 -Align=0 +Align=2 Text=US_VERSION [Main] @@ -104,9 +104,9 @@ Text= [MainStatic1] Tex =Logo X =30 -Y =320 +Y =300 W =740 -H =275 +H =283 Color =ColorDark Type=Font Black TexX1=0 @@ -130,7 +130,7 @@ TexY2=1 [MainStatic3] Tex =ButtonNavi X =190 -Y =570 +Y =574 W =30 H =22 Color =White @@ -143,7 +143,7 @@ TexY2=1 [MainStatic4] Tex =ButtonEnter X =350 -Y =571 +Y =574 W =26 H =22 Color =White @@ -156,7 +156,7 @@ TexY2=1 [MainStatic5] Tex =ButtonE X =510 -Y =570 +Y =574 W =22 H =22 Color =White @@ -295,7 +295,7 @@ Align=0 [SongText2] X =50 Y =500 -Color=Black +Color=GrayDark Font =1 Size =8 Text=SING_SONG_SELECTION_DESC @@ -305,7 +305,7 @@ Align=0 X =0 Y =100 W =800 -H =350 +H =450 Color=Black Tex =SongFade Type=Font Black @@ -403,6 +403,203 @@ Text= #TexX2=1 #TexY2=1 +# Jokers, 5 for each team, only shown in party Mode +[SongStaticTeam1Joker1] +Tex =Joker +X =20 +Y =30 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker2] +Tex =Joker +X =70 +Y =30 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker3] +Tex =Joker +X =120 +Y =30 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker4] +Tex =Joker +X =170 +Y =30 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam1Joker5] +Tex =Joker +X =220 +Y =30 +W =50 +H =50 +Color=P1Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker1] +Tex =Joker +X =280 +Y =30 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker2] +Tex =Joker +X =330 +Y =30 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker3] +Tex =Joker +X =380 +Y =30 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker4] +Tex =Joker +X =430 +Y =30 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam2Joker5] +Tex =Joker +X =480 +Y =30 +W =50 +H =50 +Color=P2Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker1] +Tex =Joker +X =540 +Y =30 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker2] +Tex =Joker +X =590 +Y =30 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker3] +Tex =Joker +X =640 +Y =30 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker4] +Tex =Joker +X =690 +Y =30 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[SongStaticTeam3Joker5] +Tex =Joker +X =740 +Y =30 +W =50 +H =50 +Color=P3Dark +Type=Font Black +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + + [Sing] Texts =1 @@ -412,7 +609,7 @@ X =43 Y =17 Font =1 Size =6 -Color =White +Color =Black Align=1 [SingStatic1] @@ -424,10 +621,6 @@ W =780 H =105 Color =GrayLightest Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [SingStatic2] ;Time BG @@ -438,12 +631,32 @@ W =328 H =42 Color =GrayLightest Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [SingStatic3] +Tex =Rectangle +X =140 +Y =21 +W =190 +H =10 +Color=Gray + +[SingTimeProgress] +X =140 +Y =21 +W =190 +H =10 +Color=GrayDark + +[SingTimeText] +Text =SING_TIME +X =100 +Y =14 +Font =1 +Size =8 +Color =White +Align=1 + +[SingStatic4] Tex =Bar X =20 Y =10 @@ -451,10 +664,6 @@ W =46 H =30 Color =Black Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [SingP1Static] Tex =P @@ -464,10 +673,6 @@ W =45 H =50 Color =P1Dark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [SingP1Static2] Tex =ScoreBG @@ -1993,9 +2198,7 @@ Tex=OptionsBG [OptionsText1] X = 50 Y = 170 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 +Color=GrayLight Font = 1 Size = 25 Text = SING_OPTIONS @@ -2003,9 +2206,7 @@ Text = SING_OPTIONS [OptionsText2] X = 250 Y = 550 -ColR = 0.5 -ColG = 0.5 -ColB = 0.5 +Color=Gray Font = 1 Size = 8 Text=SING_LEGEND_NAVIGATE @@ -2013,9 +2214,7 @@ Text=SING_LEGEND_NAVIGATE [OptionsText3] X = 500 Y = 550 -ColR = 0.5 -ColG = 0.5 -ColB = 0.5 +Color=Gray Font = 1 Size = 8 Text=SING_LEGEND_SELECT @@ -2028,17 +2227,11 @@ W=32 H=32 Color=ColorDark Type=Font Black -TexX1=0 -TexY1=0 -TexX2=1 -TexY2=1 [OptionsTextDescription] X = 70 Y = 248 -ColR = 0.5 -ColG = 0.5 -ColB = 0.5 +Color=GrayDark Font = 1 Size = 10 @@ -3696,7 +3889,7 @@ Font=1 Size=10 Align=0 Text=SING_DIFFICULTY_DESC -Color=Gray +Color=GrayDark [LevelButtonEasyText1] X=115 @@ -3761,7 +3954,7 @@ Font=1 Size=10 Align=0 Text=SING_PLAYER_DESC -Color=Gray +Color=GrayDark [NameButtonPlayer1] Tex=Button diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 4a603b67..80f09e1e 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -49,12 +49,12 @@ Size =10 Text =SING_LOADING [LoadingText2] -X =590 +X =790 Y =556 Color=Black Font =0 Size =6 -Align=0 +Align=2 Text=US_VERSION [Main] -- cgit v1.2.3 From 5d60d0893e283cd287ffc588774cbf8d995e19f3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 12 Jun 2007 16:55:47 +0000 Subject: Fixed a Bug in Database System thx to Pr3D@ToR git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@260 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDataBase.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UDataBase.pas b/Game/Code/Classes/UDataBase.pas index 0e5a4a3f..b8b41bc1 100644 --- a/Game/Code/Classes/UDataBase.pas +++ b/Game/Code/Classes/UDataBase.pas @@ -209,7 +209,7 @@ begin //Create Query Case Typ of 0: Query := 'SELECT `Player` , `Difficulty` , `Score` , `Artist` , `Title` FROM `US_Scores` INNER JOIN `US_Songs` ON (`SongID` = `ID`) ORDER BY `Score`'; - 1: Query := 'SELECT `Player` , (Sum(`Score`) / COUNT(`Score`)) FROM `US_Scores` GROUP BY `Player` ORDER BY (Sum(`Score`) / COUNT(`Score`))'; + 1: Query := 'SELECT `Player` , ROUND (Sum(`Score`) / COUNT(`Score`)) FROM `US_Scores` GROUP BY `Player` ORDER BY (Sum(`Score`) / COUNT(`Score`))'; 2: Query := 'SELECT `Artist` , `Title` , `TimesPlayed` FROM `US_Songs` ORDER BY `TimesPlayed`'; 3: Query := 'SELECT `Artist` , Sum(`TimesPlayed`) FROM `US_Songs` GROUP BY `Artist` ORDER BY Sum(`TimesPlayed`)'; end; @@ -252,7 +252,7 @@ begin 1:begin Stats[TableData.Row].Player := TableData.Fields[0]; - Stats[TableData.Row].AverageScore := TableData.FieldAsInteger(1); + Stats[TableData.Row].AverageScore := StrtoIntDef(TableData.Fields[1], 0); end; 2:begin -- cgit v1.2.3 From 3ecabca816142dcc2b7044aa637285514a4f9b2d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 14 Jun 2007 12:52:43 +0000 Subject: No Up/Down needed anymore in Jump to Menu Type can be changed now by pressing Left/Right while Button is Selected git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@261 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSongJumpto.pas | 60 ++++++++------------------------- 1 file changed, 14 insertions(+), 46 deletions(-) diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index 560868a5..7103257d 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -38,36 +38,6 @@ implementation uses UGraphic, UMain, UIni, UTexture, ULanguage, UParty, USongs, UScreenSong, ULog; function TScreenSongJumpto.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; - function IsVisible: Boolean; - begin - Result := True; - if (Interactions[Interaction].Typ = 0) then - begin - Result := Button[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 1) then - begin - //Result := Selects[Interactions[Interaction].Num].Visible; - end - else if (Interactions[Interaction].Typ = 3) then - begin - Result := SelectsS[Interactions[Interaction].Num].Visible; - end; - end; - - Procedure SelectNext; - begin - repeat - InteractNext; - until IsVisible; - end; - - Procedure SelectPrev; - begin - repeat - InteractPrev; - until IsVisible; - end; begin Result := true; If (PressedDown) Then @@ -109,33 +79,31 @@ begin // functions like this one, called so many times SDLK_DOWN: begin - SelectNext; - Button[0].Text[0].Selected := (Interaction = 0); + {SelectNext; + Button[0].Text[0].Selected := (Interaction = 0);} end; SDLK_UP: begin - SelectPrev; - Button[0].Text[0].Selected := (Interaction = 0); + {SelectPrev; + Button[0].Text[0].Selected := (Interaction = 0); } end; SDLK_RIGHT: begin - if (Interaction=1) then - begin - InteractInc; - if (Length(Button[0].Text[0].Text) > 0) then - SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); - end; + Interaction := 1; + InteractInc; + if (Length(Button[0].Text[0].Text) > 0) then + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + Interaction := 0; end; SDLK_LEFT: begin - if (Interaction=1) then - begin - InteractDec; - if (Length(Button[0].Text[0].Text) > 0) then - SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); - end; + Interaction := 1; + InteractDec; + if (Length(Button[0].Text[0].Text) > 0) then + SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); + Interaction := 0; end; end; end; -- cgit v1.2.3 From 5f45fd926da919d8057dfcca4101dc305bd230df Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 14 Jun 2007 13:08:54 +0000 Subject: Added Text Fading to ButtonCollection git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@262 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenu.pas | 4 ++++ Game/Code/Menu/UMenuButtonCollection.pas | 15 ++++++++++++--- Game/Code/Menu/UMenuText.pas | 4 +++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index d7c919ee..309e199a 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -559,6 +559,10 @@ begin begin Interactions[High(Interactions)].Typ := iBCollectionChild; Button[Result].Visible := False; + + for BT := 0 to BTLen-1 do + Button[Result].Text[BT].Alpha := 0; + Button[Result].Parent := ThemeButton.Parent; if (ButtonCollection[ThemeButton.Parent-1].Fade) then Button[Result].Texture.Alpha := 0; diff --git a/Game/Code/Menu/UMenuButtonCollection.pas b/Game/Code/Menu/UMenuButtonCollection.pas index 66ac70fc..5c9045a7 100644 --- a/Game/Code/Menu/UMenuButtonCollection.pas +++ b/Game/Code/Menu/UMenuButtonCollection.pas @@ -36,7 +36,7 @@ begin end; procedure TButtonCollection.Draw; -var I: Integer; +var I, J: Integer; begin inherited; //If fading is activated, Fade Child Buttons @@ -46,10 +46,19 @@ begin if (ScreenButton^[I].Parent = Parent) then begin if (FadeProgress < 0.5) then - ScreenButton^[I].Visible := SelectBool + begin + ScreenButton^[I].Visible := SelectBool; + + For J := 0 to High(ScreenButton^[I].Text) do + ScreenButton^[I].Text[J].Visible := SelectBool; + end else + begin ScreenButton^[I].Texture.Alpha := (FadeProgress-0.666)*3; - //ScreenButton^[I].Text[0]. + + For J := 0 to High(ScreenButton^[I].Text) do + ScreenButton^[I].Text[J].Alpha := (FadeProgress-0.666)*3; + end; end; end; end; diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 69ece02f..4713962e 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -23,6 +23,7 @@ type ColR: real; ColG: real; ColB: real; + Alpha: real; Int: real; Style: integer; Visible: boolean; @@ -225,7 +226,7 @@ begin SetFontStyle(Style); SetFontSize(Size); SetFontItalic(False); - glColor3f(ColR*Int, ColG*Int, ColB*Int); + glColor4f(ColR*Int, ColG*Int, ColB*Int, Alpha); //If Selected Set Blink... if SelectBool then @@ -303,6 +304,7 @@ end; constructor TText.Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string); begin inherited Create; + Alpha := 1; X := ParX; Y := ParY; W := ParW; -- cgit v1.2.3 From 4cf257760367a59740e80cbb34dcc3a0ef6adedc Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 14 Jun 2007 17:14:18 +0000 Subject: Changed Changelog Added German Translation Added Readme.txt and License.txt git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@263 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Changelog.german.txt | 194 ++++++++++++++++++++++++++++++++++++++++++++++ Game/Changelog.txt | 124 ++++++++++++++--------------- Game/ReadMe.txt | 78 +++++++++++++++++++ License.txt | 125 +++++++++++++++++++++++++++++ 4 files changed, 460 insertions(+), 61 deletions(-) create mode 100644 Game/Changelog.german.txt create mode 100644 Game/ReadMe.txt create mode 100644 License.txt diff --git a/Game/Changelog.german.txt b/Game/Changelog.german.txt new file mode 100644 index 00000000..f1289f03 --- /dev/null +++ b/Game/Changelog.german.txt @@ -0,0 +1,194 @@ +UltraStar Deluxe 1.00 (by Ultrastar Deluxe Team) +----------------------------- + +-------------- +Theme System +-------------- +Upd: Neues Skin/Theme System aus Ultrastar 0.5.1 +Upd: Laden von selbsterstellten Themes ermöglicht +Upd: Covereigenschaften in Theme.ini ausgelagert (z.B. Position) +Upd: Optionale Coverspiegelungen hinzugefügt +Upd: Neue Coveranordnung (Bessereres Aussehen mit vielen Songs). (Kann im Theme an und ausgeschaltet werden) +Upd: SongScreen Equalizer Objekt hinzugefügt +Upd: Optionale Spiegelungen zu Buttons und Statics hinzugefügt. (Reflection = 1) +Upd: Buttons können nun im Theme zu Gruppen zusammengefasst werden.z.B. Deluxe Theme Main Menu Tools Collection. +Upd: Buttons könen vom Theme ausgeblendet werden. z.B. für den Exit Button, oder falls Hotkeys existieren. +Upd: Texte können nun eine Länge (w= ..) erhalten. Sie werden dann bei der gegebenen Länge umgebrochen. + +-------------- +Aufnahme Optionen +-------------- +Upd: Ultrastar 0.5.2 Recording Optionen hinzugefügt +Fix: Soundcard Einträge wurden mehrmals in die Config.Ini eingetragen +Fix: Mehr als ein Singstaradapter sind jetzt möglich(2 Soundkarten mit dem selben Namen) + +-------------- +Song Screen +-------------- +Upd: Playlist Support hinzugefügt + +Upd: Song Suche (mit Interface) +Upd: Jump to Letter Hotkey +Upd: Songscreen Menu ähnlich wie bei Singstar +Upd: Spielernamen können nun vor dem Singen geändert werden +Upd: Song Vorschau Lautstärke kann nun geändert werden +Upd: Song Vorschau kann eingefadet werden + +-------------- +Party Modus +-------------- +Upd: Party Modus hinzugefügt: + 3 Teams mit bis zu 4 Spielern möglich + => insgesamt 12 Spieler +Upd: Modi SDK: Party Modi können mit etwas Programmiererfahrung leicht erstellt werden. +Upd: 4 Standard Party Modi Plugins: Duell, Hold the Line, Until 5000, Blind Mode + +-------------- +Effekte +-------------- +Upd: Neue Perfect Note Effekte +Upd: Effekt bei perfekt gesungenem Satz hinzugefügt +Upd: Goldene Noten haben jetzt einen Singstar ähnlichen Glitzereffekt, und sind nicht mehr gelb. +Upd: Neuer Effekt bei getroffenen Goldenen Noten +Upd: Neuer Menü-Übergangs-Effekt: Screen verschwimmt und "fliegt aus dem Bild heraus". Neue Möglichkeiten für Theme-Ersteller + +-------------- +Sonstiges +-------------- +Upd: Deluxe Theme hinzugefügt: Theme mit PS3 ähnlichem Aussehen +Upd: Neues Score Speicherungssystem (basierend auf SQLite) +Upd: Statistiken hinzugefügt. Generelle Statistiken und + Beste Scores, Beste Sänger, beliebteste Songs, beliebteste Bands +Upd: Einige On Screen Fehler Benachrichtigungen hinzugefügt, die neuen Spielern helfen sollten. +Upd: Neuer Erweiterter Options Screen hinzugefügt +Upd: Abfrage vor dem Beenden hinzugefügt +Upd: Im Editor werden jetzt zusätzlich die richtigen Notennamen ausgegeben (C, F#, etc.) +Fix: Nahezu keine Abstürze mehr wegen fehlerhaften TXT-Dateien. + In Game Popup hinzugefügt und einen Rücksprunk zum Songscreen. + Selbst der Partymodus wird nicht unterbrochen. +Fix: Workaround für Cover und Hintergrund JPEG-Errors +Fix: Videosize kann wieder geändert werden. +Fix: Bug in LineBonus Popup behoben das zu Speicherüberläufen führen kann. +Fix: Bug in SelectSlide behoben der zu Fehlern mit weniger als 3 optionen führen kann. + Automatisches Resizing hinzugefügt +Fix: Backgrounds can be used now in option Screens, too +Fix: Unnützer Speicherverbauch wenn ein Song mit Video abgespielt wird. Einige Videodaten blieben im Speicher nachdem der Song beendet wurde. + Dies könnte zu einem Out Of Memory Error führen wenn viele Songs mit Video gespielt werden. +Fix: Einige Speichernutzungs und Ladezeit Updates + + +UltraStar 0.5.0 ultra-star.dl.am Mod X-Mas Edition (by Mota und Whiteshark) +----------------------------- +Upd: Neue schnellerer und fehlerresistenter Headereinlesefunktion +Upd: Bewertungs Bar (Singstar Like) +Upd: PhrasenBonus + Popups + +Upd: Skin verschönert + +UltraStar 0.5.0 ultra-star.dl.am Mod r10 (by Mota und Whiteshark) +----------------------------- +Fix: Ein kleiner Bug bei der Pause Funktion wurde gefixt. +Fix: Ein Bug im Theme System wurde behoben. (SelectSlide konnte nicht weniger als 3 Einträge enthalten.) +Fix: Skin, Beschränkung auf 4 Skins aufgehoben +Fix: Noten Texturen werden anders/besser eingelesen + +Upd: Zahlen bei der Songauswahl sind jetzt sinnvoller. +Upd: Anzahl der Songs die eine Kategorie beinhaltet wird in der Übersicht angezeigt +Upd: Neuer Notenskin + +Upd: LanguageTag + Sortierung +Upd: Unterstützung der Covers.ini aus 0.5.1 - Für alle Sortier-Funtionen. Die alte Möglichkeit ohne die Covers.ini ist weiterhin möglich, genauso wie eine Kombination beider Methoden. + +UltraStar 0.5.0 ultra-star.dl.am Mod r9 (Release by Whiteshark) +----------------------------- + +Upd: BPM und VideoGap Angaben mit Punkt werden jetzt auch eingelesen. Es wird aber in diesem Fall in der Error.log eine meldung mit dem Namen des Fehlerhaften Songs ausgegeben. +Upd: Sollte beim Einlesen eines Songs(speziell beim Header) ein Fehler auftreten wird in der Error.log der Songname + Zeile ausgegeben. + +Upd, Beta: Pause. P drücken und der Song wird pausiert, nocheinmal P und es kann wieder gesungen werden. Noch keine Anzeige ob Pause aktiviert wird, und noch kein Pause Menü. + +bekannte Probleme: +Stellt man die Aufnahme Funktion ein, kommt es zu einem extremen CPU-Zeit verbrauch und es fängt an zu Laggen + +UltraStar 0.5.0 ultra-star.dl.am Mod r8b (Release by Whiteshark) +----------------------------- +Fix: Random Funktionen funktionieren alle ohne Fehler +Fix: In der Kategorieauswahl wird jetzt beim Start immer die erste Kategorie angezeigt +Fix: Musik wird nach Kategoriewechsel korrekt abgespielt +Fix: Richtiger Text wird jetzt nicht mehr zu falscher Musik abgespielt +Fix: Nach Beenden eines Songs ist dieser jetzt wieder in der Übersicht angewählt +Fix: Midi-konvertor Bug behoben (Nur Freestyle Noten anstatt Normalen) + +Thx to: dennisthemenace und mota für die super Bug-Reports :P + +Upd: doomhammers Cover sind Integriert: thx to doomhammer + +UltraStar 0.5.0 ultra-star.dl.am Mod r8a (Release by Whiteshark) +----------------------------- +Fix: Theme System konnte nicht ausgewählt werden (workaround: Nur bis zu 4 Themes möglich) +Fix: Richtige Kategorie wird angezeigt nach Druck von Escape + +Upd: Neue Random Funktionen: R + [Strg]: Random in allen Kategorien (Hier wird die Kategorie oben noch falsch angezeigt); R + [Shift]: Zufällige Kategorie +Upd: Gerade gewählte Kategorie wird oben links in der Ecke gezeigt + +UltraStar 0.5.0 ultra-star.dl.am Mod r8 (Release by Whiteshark) +----------------------------- +Fix: Creatorbug behoben +Fix: Wenn Tabs=on kam es manchmal vor das der angewählte Song nicht mit dem Angezeigten übereingestimmt hat + +Upd: Theme System komplett + -Bei Start nach Themes Suchen + -Den ThemeOptions Screen ändern +Upd: Neue Farben für Themes :) +Upd: kleine änderungen am Editor + -Leerzeichen im Header werden automatisch korrigiert + -Header ist nicht mehr Case Sensitive + +Upd: Skin Ordner gesäubert, Es gibt jetzt 2 Skins: Motas und der Original Skin +Upd: Ordner haben ihr eigenes Cover, welches angezeigt wird falls kein spezielles Cover vorhanden ist +Upd: Der BewertungsText (Ultrastar, Singstar, etc.) kann jetzt übersetzt werden + +Upd: Falls eine Sprache nicht komplett ist werden die nicht übersetzten Texte, mit der Englischen Sprachdatei übersetzt. (Falls es zu nicht kompletten Sprachdateien kommt) + +Upd: neues Kategorie System: + -Wenn eine Kategorie angewählt wird, werden nur die enthaltenden Songs angezeigt. + -Mit Escape gehts zurück in die Kategorie Auswahl + -Mit Hoch und Runter kann die Kategorie gewechselt werden. + +UltraStar 0.5.0 mota patch r7 (Release by Mota) +----------------------------- +- Neues Notendesign. +- versch. Neue Grafiken. +- Neue Bewertung "Ultrastar" ab 9810 Punkte. +- Textgröße-Bug im Editor behoben. + +UltraStar 0.5.0 mota patch r6 - 17.11.06 (Release by Mota) +---------------------------------------- +- Editiorfunktionen für Goldene/Freestyle-Noten. (Tasten [G] und [F]) +- Speicherfunktion des Editors angepasst. +- Verändertes Theme "SingStar". + +UltraStar 0.5.0 mota patch r5 - 16.11.06 (Release by Mota) +---------------------------------------- +- Goldene Noten werden dargestellt +- Zufallsauswahl verbessert + +UltraStar 0.5.0 mota patch r4 (Release by Mota) +----------------------------- +- Perfekt-Stern animation + +UltraStar 0.5.0 mota patch r3 (Release by Mota) +----------------------------- +- Sortierung Title2 und Artist2 -> Zahlen in Ordner "#" + +UltraStar 0.5.0 mota patch r2 (Release by Mota) +----------------------------- +- Eigene Cover für alle Sortierungen + +UltraStar 0.5.0 mota patch (Release by Mota) +-------------------------- +- Eigene Cover für Sortierung nach Edition. + +UltraStar 0.5.0 (by Corvus5) +-------------------------- +- Original Code \ No newline at end of file diff --git a/Game/Changelog.txt b/Game/Changelog.txt index b6de6209..f1ccb7b3 100644 --- a/Game/Changelog.txt +++ b/Game/Changelog.txt @@ -30,6 +30,9 @@ Upd: Added Playlist Support Upd: Song Search (with Screen interface) Upd: Jump to Letter Hotkey Upd: Menu in Songscreen similar to Singstars +Upd: Ability to change Playernames before singing +Upd: Ability to change Song Preview Volume +Upd: Song Preview Fade in -------------- Party Mode @@ -62,8 +65,9 @@ Upd: Add Advanced Screen with some new Options. Upd: Add a Question PopUp before exiting Upd: Show real Note in Editor (C, F#, etc.) Fix: No crashes caused by corrupted Textfiles anymore. - Added Errormessage Popup inGame and Jump Back to Songscreen. So even the Party Mode, + Added inGame Errormessage Popup and Jump Back to Songscreen. So even the Party Mode, isn't interuppted. +Fix: Workaround for Cover and BG JPG Errors Fix: Videosize can now be changed again Fix: Bug in LineBonus Popup that can end up in a Memory Overflow Fix: Bug in SelectSlide with less then 3 Options, No Overlapping anymore. Automatic resizing @@ -78,110 +82,108 @@ UltraStar 0.5.0 ultra-star.dl.am Mod X-Mas Edition (by Mota und Whiteshark) ----------------------------- Upd: New faster and Error resistant Header reader Upd: Bewertungs Bar (Singstar Like) -Upd: PhrasenBonus + Popups +Upd: LineBonus + Popups -Upd: Skin verschönert +Upd: Skin beautified UltraStar 0.5.0 ultra-star.dl.am Mod r10 (by Mota und Whiteshark) ----------------------------- -Fix: Ein kleiner Bug bei der Pause Funktion wurde gefixt. -Fix: Ein Bug im Theme System wurde behoben. (SelectSlide konnte nicht weniger als 3 Einträge enthalten.) -Fix: Skin, Beschränkung auf 4 Skins aufgehoben -Fix: Noten Texturen werden anders/besser eingelesen +Fix: Minor Bug in Pause Method fixed. +Fix: Fixed a Bug in Theme System +Fix: New Note Texture Reading -Upd: Zahlen bei der Songauswahl sind jetzt sinnvoller. -Upd: Anzahl der Songs die eine Kategorie beinhaltet wird in der Übersicht angezeigt -Upd: Neuer Notenskin +Upd: Numbers in SongSelection are now more meaningful +Upd: Show Count of Songs in Category in Category Overview +Upd: New Note Texture -Upd: LanguageTag + Sortierung -Upd: Unterstützung der Covers.ini aus 0.5.1 - Für alle Sortier-Funtionen. Die alte Möglichkeit ohne die Covers.ini ist weiterhin möglich, genauso wie eine Kombination beider Methoden. +Upd: LanguageTag + Sorting +Upd: Support for the Covers.ini from 0.5.1 - for all sorting options. The old behaviour without Covers.ini is also possible, just as well as a combination of both methods. UltraStar 0.5.0 ultra-star.dl.am Mod r9 (Release by Whiteshark) ----------------------------- -Upd: BPM und VideoGap Angaben mit Punkt werden jetzt auch eingelesen. Es wird aber in diesem Fall in der Error.log eine meldung mit dem Namen des Fehlerhaften Songs ausgegeben. -Upd: Sollte beim Einlesen eines Songs(speziell beim Header) ein Fehler auftreten wird in der Error.log der Songname + Zeile ausgegeben. +Upd: BPM and VideoGap Can now be read, too. But there will be an Errormessage in Error.log -Upd, Beta: Pause. P drücken und der Song wird pausiert, nocheinmal P und es kann wieder gesungen werden. Noch keine Anzeige ob Pause aktiviert wird, und noch kein Pause Menü. - -bekannte Probleme: -Stellt man die Aufnahme Funktion ein, kommt es zu einem extremen CPU-Zeit verbrauch und es fängt an zu Laggen +Upd, Beta: Pause. Press P and the Song will be paused, press P again and it will be continued. Pause Display and Menu missing. UltraStar 0.5.0 ultra-star.dl.am Mod r8b (Release by Whiteshark) ----------------------------- -Fix: Random Funktionen funktionieren alle ohne Fehler -Fix: In der Kategorieauswahl wird jetzt beim Start immer die erste Kategorie angezeigt -Fix: Musik wird nach Kategoriewechsel korrekt abgespielt -Fix: Richtiger Text wird jetzt nicht mehr zu falscher Musik abgespielt -Fix: Nach Beenden eines Songs ist dieser jetzt wieder in der Übersicht angewählt -Fix: Midi-konvertor Bug behoben (Nur Freestyle Noten anstatt Normalen) - -Thx to: dennisthemenace und mota für die super Bug-Reports :P +Fix: Random Methods now work without Errors +Fix: First Category is now shown at Startup. +Fix: Music is played correctly after categorychange +Fix: No wrong MP3 playing anymore +Fix: After exit Singing Mode the Song is chossen in Song Screen +Fix: Midi-konvertor Bug (Only Freestyle Notes instead of normal) -Upd: doomhammers Cover sind Integriert: thx to doomhammer +Thx to: dennisthemenace and mota for Bug-Reports :P UltraStar 0.5.0 ultra-star.dl.am Mod r8a (Release by Whiteshark) ----------------------------- -Fix: Theme System konnte nicht ausgewählt werden (workaround: Nur bis zu 4 Themes möglich) -Fix: Richtige Kategorie wird angezeigt nach Druck von Escape +Fix: Themes could not be Selected (workaround: Only 4 Themes possible) +Fix: Correct category is displayed after pressing Escape -Upd: Neue Random Funktionen: R + [Strg]: Random in allen Kategorien (Hier wird die Kategorie oben noch falsch angezeigt); R + [Shift]: Zufällige Kategorie -Upd: Gerade gewählte Kategorie wird oben links in der Ecke gezeigt +Upd: new Random functions: R + [Strg]: Random in all Categorys; + R + [Shift]: Random Category +Upd: Chossen Category is displayed in the top left UltraStar 0.5.0 ultra-star.dl.am Mod r8 (Release by Whiteshark) ----------------------------- -Fix: Creatorbug behoben -Fix: Wenn Tabs=on kam es manchmal vor das der angewählte Song nicht mit dem Angezeigten übereingestimmt hat +Fix: Creatorbug fixed +Fix: Tabs=on Preview Bug -Upd: Theme System komplett - -Bei Start nach Themes Suchen - -Den ThemeOptions Screen ändern -Upd: Neue Farben für Themes :) -Upd: kleine änderungen am Editor - -Leerzeichen im Header werden automatisch korrigiert - -Header ist nicht mehr Case Sensitive +Upd: Theme System ready + -Look for Themes at Startup + -ThemeOptions Screen working +Upd: New Theme Colors :) +Upd: Little changes at Editor + -Spaces in Header are corrected automaticaly + -Header is not Case Sensitive anymore -Upd: Skin Ordner gesäubert, Es gibt jetzt 2 Skins: Motas und der Original Skin -Upd: Ordner haben ihr eigenes Cover, welches angezeigt wird falls kein spezielles Cover vorhanden ist -Upd: Der BewertungsText (Ultrastar, Singstar, etc.) kann jetzt übersetzt werden +Upd: Skin Folder Cleaned up, There are 2 Skins now: Motas and the Original Skin +Upd: Categorys have their own noCover Image +Upd: Rating Text (Ultrastar, Singstar, etc.) can now be Translated -Upd: Falls eine Sprache nicht komplett ist werden die nicht übersetzten Texte, mit der Englischen Sprachdatei übersetzt. (Falls es zu nicht kompletten Sprachdateien kommt) +Upd: Inomplete Languages are corrected with Entrys from the English Language File -Upd: neues Kategorie System: - -Wenn eine Kategorie angewählt wird, werden nur die enthaltenden Songs angezeigt. - -Mit Escape gehts zurück in die Kategorie Auswahl - -Mit Hoch und Runter kann die Kategorie gewechselt werden. +Upd: new Category System: + -If a category is choosen only the Songs from this category are shown + -Press Escape to leave a category + -Press up or down to change the category. UltraStar 0.5.0 mota patch r7 (Release by Mota) ----------------------------- -- Neues Notendesign. -- versch. Neue Grafiken. -- Neue Bewertung "Ultrastar" ab 9810 Punkte. -- Textgröße-Bug im Editor behoben. +- New Note Texture. +- other new grafics. +- New rating "Ultrastar" with more than 9810 Points. +- Textsize-Bug in editor fixed. UltraStar 0.5.0 mota patch r6 - 17.11.06 (Release by Mota) ---------------------------------------- -- Editiorfunktionen für Goldene/Freestyle-Noten. (Tasten [G] und [F]) -- Speicherfunktion des Editors angepasst. -- Verändertes Theme "SingStar". +- Editiorfunctions for Golden/Freestyle-Notes. (Press [G] or [F]) +- Saving Methods of Editor changed +- Changed Theme "SingStar". UltraStar 0.5.0 mota patch r5 - 16.11.06 (Release by Mota) ---------------------------------------- -- Goldene Noten werden dargestellt -- Zufallsauswahl verbessert +- Goldene Notes are displayed +- Randomizing improved UltraStar 0.5.0 mota patch r4 (Release by Mota) ----------------------------- -- Perfekt-Stern animation +- Perfect-Star animation UltraStar 0.5.0 mota patch r3 (Release by Mota) ----------------------------- -- Sortierung Title2 und Artist2 -> Zahlen in Ordner "#" +- Sorting Title2 and Artist2 -> Numbers in Category "#" UltraStar 0.5.0 mota patch r2 (Release by Mota) ----------------------------- -- Eigene Cover für alle Sortierungen +- Cover for all Categorys and Sortings can be choosen UltraStar 0.5.0 mota patch (Release by Mota) -------------------------- -- Eigene Cover für Sortierung nach Edition. \ No newline at end of file +- Cover for Edition sorting can be choosen + +UltraStar 0.5.0 (by Corvus5) +-------------------------- +- Original Code \ No newline at end of file diff --git a/Game/ReadMe.txt b/Game/ReadMe.txt new file mode 100644 index 00000000..9615bf0e --- /dev/null +++ b/Game/ReadMe.txt @@ -0,0 +1,78 @@ +Ultrastar Deluxe 1.0 Readme.txt +---------------------------- +1. Authors +2. Release Notes +3. Controls +4. License +---------------------------- + +SF.Net Page: http://sourceforge.net/projects/ultrastardx/ + +This is just a little introduction, for more information open documentation.pdf + +---------------------------- +1. Authors +---------------------------- +This game was introduced by Corvus5 who has written most of the code by himself. +Basing on the official release 0.5.0 Mota and Whiteshark started to write little patches and modifications, and released this package named ultra-star.dl.am Mod. +This modification was continued at Sourceforge.net by the Ultrastar Deluxe Team: + Blindy + Mog + Mota + Sawyer + Whiteshark +And this piece of software is the Result! + + +---------------------------- +2. Release Notes +---------------------------- +- To change the path to the song directory add to config.ini: + [Path] + Songs=[SongFolder] (e.g. C:\Program Files\Ultrastar\Songs) + +- To take a screenshot press "PrintScreen" Key + Screenshots are saved in the directory "Screenshots". + +- To enable joypad support change config.ini: + + [Controller] + Joypad=Off + + to + + [Controller] + Joypad=On + + +- To Enable 4 to 6 Playermode 2 Screens are needed. + Disable the fullscreen mode, extend your desktop horizontaly, set the resolution to fill one + screen. + Add to Config.ini: + [Graphics] + Screens=2 + +- Press Alt + F[1..12] in NameScreen to Save a Playername + Press F[1..12] to Load a Playername + +- To enable benchmark run the game with -benchmark parameter + + +---------------------------- +3. Controls +---------------------------- +Use the Arrowkeys to navigate through the Screens. +Use Enter to Select and Escape to go back. +In Songscreen you can use R, Shift + R or Strg + R to Select a Random Song/Category +Use Alt + [Letter] to Jump to a Songs Artist with the first letter [Letter] +Use Alt + Shift + [Letter] to Jump to a Song Title with the first letter [Letter] +Press J to open the Search for a Song Interface + +Editor Controls are described in documentation.pdf + + +---------------------------- +4. License +---------------------------- +Ultrastar Deluxe is licensed under the Terms of the GNU General Public License 2.0 +See License.txt for more Informations. \ No newline at end of file diff --git a/License.txt b/License.txt new file mode 100644 index 00000000..4964fc70 --- /dev/null +++ b/License.txt @@ -0,0 +1,125 @@ +The GNU General Public License (GPL) +Version 2, June 1991 +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + +one line to give the program's name and a brief idea of what it does. +Copyright (C) + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest +in the program `Gnomovision' (which makes passes at compilers) +written by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. -- cgit v1.2.3 From a5edf603c98975c4f681dfb58510412d832b45b0 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 16 Jun 2007 09:31:40 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@264 b956fd51-792f-4845-bead-9b4dfca2ff2c --- README.txt | 5 +++ conf/authz | 21 +++++++++++++ conf/passwd | 8 +++++ conf/svnserve.conf | 30 ++++++++++++++++++ db/current | 1 + db/format | 1 + db/fs-type | 1 + db/revprops/0 | 5 +++ db/revs/0 | 11 +++++++ db/uuid | 1 + db/write-lock | 0 format | 1 + hooks/post-commit.tmpl | 51 ++++++++++++++++++++++++++++++ hooks/post-lock.tmpl | 44 ++++++++++++++++++++++++++ hooks/post-revprop-change.tmpl | 56 +++++++++++++++++++++++++++++++++ hooks/post-unlock.tmpl | 42 +++++++++++++++++++++++++ hooks/pre-commit.tmpl | 70 ++++++++++++++++++++++++++++++++++++++++++ hooks/pre-lock.tmpl | 64 ++++++++++++++++++++++++++++++++++++++ hooks/pre-revprop-change.tmpl | 66 +++++++++++++++++++++++++++++++++++++++ hooks/pre-unlock.tmpl | 60 ++++++++++++++++++++++++++++++++++++ hooks/start-commit.tmpl | 54 ++++++++++++++++++++++++++++++++ locks/db-logs.lock | 3 ++ locks/db.lock | 3 ++ 23 files changed, 598 insertions(+) create mode 100644 README.txt create mode 100644 conf/authz create mode 100644 conf/passwd create mode 100644 conf/svnserve.conf create mode 100644 db/current create mode 100644 db/format create mode 100644 db/fs-type create mode 100644 db/revprops/0 create mode 100644 db/revs/0 create mode 100644 db/uuid create mode 100644 db/write-lock create mode 100644 format create mode 100644 hooks/post-commit.tmpl create mode 100644 hooks/post-lock.tmpl create mode 100644 hooks/post-revprop-change.tmpl create mode 100644 hooks/post-unlock.tmpl create mode 100644 hooks/pre-commit.tmpl create mode 100644 hooks/pre-lock.tmpl create mode 100644 hooks/pre-revprop-change.tmpl create mode 100644 hooks/pre-unlock.tmpl create mode 100644 hooks/start-commit.tmpl create mode 100644 locks/db-logs.lock create mode 100644 locks/db.lock diff --git a/README.txt b/README.txt new file mode 100644 index 00000000..c93ca33f --- /dev/null +++ b/README.txt @@ -0,0 +1,5 @@ +This is a Subversion repository; use the 'svnadmin' tool to examine +it. Do not add, delete, or modify files here unless you know how +to avoid corrupting the repository. + +Visit http://subversion.tigris.org/ for more information. diff --git a/conf/authz b/conf/authz new file mode 100644 index 00000000..3407445f --- /dev/null +++ b/conf/authz @@ -0,0 +1,21 @@ +### This file is an example authorization file for svnserve. +### Its format is identical to that of mod_authz_svn authorization +### files. +### As shown below each section defines authorizations for the path and +### (optional) repository specified by the section name. +### The authorizations follow. An authorization line can refer to a +### single user, to a group of users defined in a special [groups] +### section, or to anyone using the '*' wildcard. Each definition can +### grant read ('r') access, read-write ('rw') access, or no access +### (''). + +[groups] +# harry_and_sally = harry,sally + +# [/foo/bar] +# harry = rw +# * = + +# [repository:/baz/fuz] +# @harry_and_sally = rw +# * = r diff --git a/conf/passwd b/conf/passwd new file mode 100644 index 00000000..d22bafc5 --- /dev/null +++ b/conf/passwd @@ -0,0 +1,8 @@ +### This file is an example password file for svnserve. +### Its format is similar to that of svnserve.conf. As shown in the +### example below it contains one section labelled [users]. +### The name and password for each user follow, one account per line. + +[users] +# harry = harryssecret +# sally = sallyssecret diff --git a/conf/svnserve.conf b/conf/svnserve.conf new file mode 100644 index 00000000..089b0d0e --- /dev/null +++ b/conf/svnserve.conf @@ -0,0 +1,30 @@ +### This file controls the configuration of the svnserve daemon, if you +### use it to allow access to this repository. (If you only allow +### access through http: and/or file: URLs, then this file is +### irrelevant.) + +### Visit http://subversion.tigris.org/ for more information. + +[general] +### These options control access to the repository for unauthenticated +### and authenticated users. Valid values are "write", "read", +### and "none". The sample settings below are the defaults. +# anon-access = read +# auth-access = write +### The password-db option controls the location of the password +### database file. Unless you specify a path starting with a /, +### the file's location is relative to the conf directory. +### Uncomment the line below to use the default password file. +# password-db = passwd +### The authz-db option controls the location of the authorization +### rules for path-based access control. Unless you specify a path +### starting with a /, the file's location is relative to the conf +### directory. If you don't specify an authz-db, no path-based access +### control is done. +### Uncomment the line below to use the default authorization file. +# authz-db = authz +### This option specifies the authentication realm of the repository. +### If two repositories have the same authentication realm, they should +### have the same password database, and vice versa. The default realm +### is repository's uuid. +# realm = My First Repository diff --git a/db/current b/db/current new file mode 100644 index 00000000..c435b766 --- /dev/null +++ b/db/current @@ -0,0 +1 @@ +0 1 1 diff --git a/db/format b/db/format new file mode 100644 index 00000000..0cfbf088 --- /dev/null +++ b/db/format @@ -0,0 +1 @@ +2 diff --git a/db/fs-type b/db/fs-type new file mode 100644 index 00000000..4fdd9531 --- /dev/null +++ b/db/fs-type @@ -0,0 +1 @@ +fsfs diff --git a/db/revprops/0 b/db/revprops/0 new file mode 100644 index 00000000..cc4a9b98 --- /dev/null +++ b/db/revprops/0 @@ -0,0 +1,5 @@ +K 8 +svn:date +V 27 +2007-06-16T09:31:31.515625Z +END diff --git a/db/revs/0 b/db/revs/0 new file mode 100644 index 00000000..10f5c45f --- /dev/null +++ b/db/revs/0 @@ -0,0 +1,11 @@ +PLAIN +END +ENDREP +id: 0.0.r0/17 +type: dir +count: 0 +text: 0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e +cpath: / + + +17 107 diff --git a/db/uuid b/db/uuid new file mode 100644 index 00000000..44d16b43 --- /dev/null +++ b/db/uuid @@ -0,0 +1 @@ +d19e7144-ee4c-554e-a747-10653ec3cfd8 diff --git a/db/write-lock b/db/write-lock new file mode 100644 index 00000000..e69de29b diff --git a/format b/format new file mode 100644 index 00000000..7ed6ff82 --- /dev/null +++ b/format @@ -0,0 +1 @@ +5 diff --git a/hooks/post-commit.tmpl b/hooks/post-commit.tmpl new file mode 100644 index 00000000..c1bfc355 --- /dev/null +++ b/hooks/post-commit.tmpl @@ -0,0 +1,51 @@ +#!/bin/sh + +# POST-COMMIT HOOK +# +# The post-commit hook is invoked after a commit. Subversion runs +# this hook by invoking a program (script, executable, binary, etc.) +# named 'post-commit' (for which this file is a template) with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REV (the number of the revision just committed) +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# Because the commit has already completed and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to help it examine the +# newly-committed tree. +# +# On a Unix system, the normal procedure is to have 'post-commit' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-commit' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-commit.bat' or 'post-commit.exe', +# but the basic idea is the same. +# +# The hook program typically does not inherit the environment of +# its parent process. For example, a common problem is for the +# PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and +# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ + + +REPOS="$1" +REV="$2" + +commit-email.pl "$REPOS" "$REV" commit-watchers@example.org +log-commit.py --repository "$REPOS" --revision "$REV" diff --git a/hooks/post-lock.tmpl b/hooks/post-lock.tmpl new file mode 100644 index 00000000..65a7d40e --- /dev/null +++ b/hooks/post-lock.tmpl @@ -0,0 +1,44 @@ +#!/bin/sh + +# POST-LOCK HOOK +# +# The post-lock hook is run after a path is locked. Subversion runs +# this hook by invoking a program (script, executable, binary, etc.) +# named 'post-lock' (for which this file is a template) with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] USER (the user who created the lock) +# +# The paths that were just locked are passed to the hook via STDIN (as +# of Subversion 1.2, only one path is passed per invocation, but the +# plan is to pass all locked paths at once, so the hook program +# should be written accordingly). +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# Because the lock has already been created and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to help it examine the +# newly-created lock. +# +# On a Unix system, the normal procedure is to have 'post-lock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-lock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-lock.bat' or 'post-lock.exe', +# but the basic idea is the same. +# +# Here is an example hook script, for a Unix /bin/sh interpreter: + +REPOS="$1" +USER="$2" + +# Send email to interested parties, let them know a lock was created: +mailer.py lock "$REPOS" "$USER" /path/to/mailer.conf diff --git a/hooks/post-revprop-change.tmpl b/hooks/post-revprop-change.tmpl new file mode 100644 index 00000000..395201a9 --- /dev/null +++ b/hooks/post-revprop-change.tmpl @@ -0,0 +1,56 @@ +#!/bin/sh + +# POST-REVPROP-CHANGE HOOK +# +# The post-revprop-change hook is invoked after a revision property +# has been added, modified or deleted. Subversion runs this hook by +# invoking a program (script, executable, binary, etc.) named +# 'post-revprop-change' (for which this file is a template), with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REV (the revision that was tweaked) +# [3] USER (the username of the person tweaking the property) +# [4] PROPNAME (the property that was changed) +# [5] ACTION (the property was 'A'dded, 'M'odified, or 'D'eleted) +# +# [STDIN] PROPVAL ** the old property value is passed via STDIN. +# +# Because the propchange has already completed and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to help it examine the +# new property value. +# +# On a Unix system, the normal procedure is to have 'post-revprop-change' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-revprop-change' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-revprop-change.bat' or 'post-revprop-change.exe', +# but the basic idea is the same. +# +# The hook program typically does not inherit the environment of +# its parent process. For example, a common problem is for the +# PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and +# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ + + +REPOS="$1" +REV="$2" +USER="$3" +PROPNAME="$4" +ACTION="$5" + +propchange-email.pl "$REPOS" "$REV" "$USER" "$PROPNAME" watchers@example.org diff --git a/hooks/post-unlock.tmpl b/hooks/post-unlock.tmpl new file mode 100644 index 00000000..5821be83 --- /dev/null +++ b/hooks/post-unlock.tmpl @@ -0,0 +1,42 @@ +#!/bin/sh + +# POST-UNLOCK HOOK +# +# The post-unlock hook runs after a path is unlocked. Subversion runs +# this hook by invoking a program (script, executable, binary, etc.) +# named 'post-unlock' (for which this file is a template) with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] USER (the user who destroyed the lock) +# +# The paths that were just unlocked are passed to the hook via STDIN +# (as of Subversion 1.2, only one path is passed per invocation, but +# the plan is to pass all unlocked paths at once, so the hook program +# should be written accordingly). +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# Because the lock has already been destroyed and cannot be undone, +# the exit code of the hook program is ignored. +# +# On a Unix system, the normal procedure is to have 'post-unlock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-unlock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-unlock.bat' or 'post-unlock.exe', +# but the basic idea is the same. +# +# Here is an example hook script, for a Unix /bin/sh interpreter: + +REPOS="$1" +USER="$2" + +# Send email to interested parties, let them know a lock was removed: +mailer.py unlock "$REPOS" "$USER" /path/to/mailer.conf diff --git a/hooks/pre-commit.tmpl b/hooks/pre-commit.tmpl new file mode 100644 index 00000000..4ac8669e --- /dev/null +++ b/hooks/pre-commit.tmpl @@ -0,0 +1,70 @@ +#!/bin/sh + +# PRE-COMMIT HOOK +# +# The pre-commit hook is invoked before a Subversion txn is +# committed. Subversion runs this hook by invoking a program +# (script, executable, binary, etc.) named 'pre-commit' (for which +# this file is a template), with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] TXN-NAME (the name of the txn about to be committed) +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# If the hook program exits with success, the txn is committed; but +# if it exits with failure (non-zero), the txn is aborted, no commit +# takes place, and STDERR is returned to the client. The hook +# program can use the 'svnlook' utility to help it examine the txn. +# +# On a Unix system, the normal procedure is to have 'pre-commit' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# *** NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT *** +# *** FOR REVISION PROPERTIES (like svn:log or svn:author). *** +# +# This is why we recommend using the read-only 'svnlook' utility. +# In the future, Subversion may enforce the rule that pre-commit +# hooks should not modify the versioned data in txns, or else come +# up with a mechanism to make it safe to do so (by informing the +# committing client of the changes). However, right now neither +# mechanism is implemented, so hook writers just have to be careful. +# +# Note that 'pre-commit' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-commit.bat' or 'pre-commit.exe', +# but the basic idea is the same. +# +# The hook program typically does not inherit the environment of +# its parent process. For example, a common problem is for the +# PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and +# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ + + +REPOS="$1" +TXN="$2" + +# Make sure that the log message contains some text. +SVNLOOK=/usr/local/bin/svnlook +$SVNLOOK log -t "$TXN" "$REPOS" | \ + grep "[a-zA-Z0-9]" > /dev/null || exit 1 + +# Check that the author of this commit has the rights to perform +# the commit on the files and directories being modified. +commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 + +# All checks passed, so allow the commit. +exit 0 diff --git a/hooks/pre-lock.tmpl b/hooks/pre-lock.tmpl new file mode 100644 index 00000000..f4c43d25 --- /dev/null +++ b/hooks/pre-lock.tmpl @@ -0,0 +1,64 @@ +#!/bin/sh + +# PRE-LOCK HOOK +# +# The pre-lock hook is invoked before an exclusive lock is +# created. Subversion runs this hook by invoking a program +# (script, executable, binary, etc.) named 'pre-lock' (for which +# this file is a template), with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] PATH (the path in the repository about to be locked) +# [3] USER (the user creating the lock) +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# If the hook program exits with success, the lock is created; but +# if it exits with failure (non-zero), the lock action is aborted +# and STDERR is returned to the client. + +# On a Unix system, the normal procedure is to have 'pre-lock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-lock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-lock.bat' or 'pre-lock.exe', +# but the basic idea is the same. +# +# Here is an example hook script, for a Unix /bin/sh interpreter: + +REPOS="$1" +PATH="$2" +USER="$3" + +# If a lock exists and is owned by a different person, don't allow it +# to be stolen (e.g., with 'svn lock --force ...'). + +# (Maybe this script could send email to the lock owner?) +SVNLOOK=/usr/local/bin/svnlook +GREP=/bin/grep +SED=/bin/sed + +LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \ + $GREP '^Owner: ' | $SED 's/Owner: //'` + +# If we get no result from svnlook, there's no lock, allow the lock to +# happen: +if [ "$LOCK_OWNER" = "" ]; then + exit 0 +fi + +# If the person locking matches the lock's owner, allow the lock to +# happen: +if [ "$LOCK_OWNER" = "$USER" ]; then + exit 0 +fi + +# Otherwise, we've got an owner mismatch, so return failure: +echo "Error: $PATH already locked by ${LOCK_OWNER}." 1>&2 +exit 1 diff --git a/hooks/pre-revprop-change.tmpl b/hooks/pre-revprop-change.tmpl new file mode 100644 index 00000000..9e284a91 --- /dev/null +++ b/hooks/pre-revprop-change.tmpl @@ -0,0 +1,66 @@ +#!/bin/sh + +# PRE-REVPROP-CHANGE HOOK +# +# The pre-revprop-change hook is invoked before a revision property +# is added, modified or deleted. Subversion runs this hook by invoking +# a program (script, executable, binary, etc.) named 'pre-revprop-change' +# (for which this file is a template), with the following ordered +# arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REVISION (the revision being tweaked) +# [3] USER (the username of the person tweaking the property) +# [4] PROPNAME (the property being set on the revision) +# [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted) +# +# [STDIN] PROPVAL ** the new property value is passed via STDIN. +# +# If the hook program exits with success, the propchange happens; but +# if it exits with failure (non-zero), the propchange doesn't happen. +# The hook program can use the 'svnlook' utility to examine the +# existing value of the revision property. +# +# WARNING: unlike other hooks, this hook MUST exist for revision +# properties to be changed. If the hook does not exist, Subversion +# will behave as if the hook were present, but failed. The reason +# for this is that revision properties are UNVERSIONED, meaning that +# a successful propchange is destructive; the old value is gone +# forever. We recommend the hook back up the old value somewhere. +# +# On a Unix system, the normal procedure is to have 'pre-revprop-change' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-revprop-change' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-revprop-change.bat' or 'pre-revprop-change.exe', +# but the basic idea is the same. +# +# The hook program typically does not inherit the environment of +# its parent process. For example, a common problem is for the +# PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and +# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ + + +REPOS="$1" +REV="$2" +USER="$3" +PROPNAME="$4" +ACTION="$5" + +if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi + +echo "Changing revision properties other than svn:log is prohibited" >&2 +exit 1 diff --git a/hooks/pre-unlock.tmpl b/hooks/pre-unlock.tmpl new file mode 100644 index 00000000..1298e805 --- /dev/null +++ b/hooks/pre-unlock.tmpl @@ -0,0 +1,60 @@ +#!/bin/sh + +# PRE-UNLOCK HOOK +# +# The pre-unlock hook is invoked before an exclusive lock is +# destroyed. Subversion runs this hook by invoking a program +# (script, executable, binary, etc.) named 'pre-unlock' (for which +# this file is a template), with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] PATH (the path in the repository about to be unlocked) +# [3] USER (the user destroying the lock) +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# If the hook program exits with success, the lock is destroyed; but +# if it exits with failure (non-zero), the unlock action is aborted +# and STDERR is returned to the client. + +# On a Unix system, the normal procedure is to have 'pre-unlock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-unlock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-unlock.bat' or 'pre-unlock.exe', +# but the basic idea is the same. +# +# Here is an example hook script, for a Unix /bin/sh interpreter: + +REPOS="$1" +PATH="$2" +USER="$3" + +# If a lock is owned by a different person, don't allow it be broken. +# (Maybe this script could send email to the lock owner?) + +SVNLOOK=/usr/local/bin/svnlook +GREP=/bin/grep +SED=/bin/sed + +LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \ + $GREP '^Owner: ' | $SED 's/Owner: //'` + +# If we get no result from svnlook, there's no lock, return success: +if [ "$LOCK_OWNER" = "" ]; then + exit 0 +fi +# If the person unlocking matches the lock's owner, return success: +if [ "$LOCK_OWNER" = "$USER" ]; then + exit 0 +fi + +# Otherwise, we've got an owner mismatch, so return failure: +echo "Error: $PATH locked by ${LOCK_OWNER}." 1>&2 +exit 1 diff --git a/hooks/start-commit.tmpl b/hooks/start-commit.tmpl new file mode 100644 index 00000000..e7707482 --- /dev/null +++ b/hooks/start-commit.tmpl @@ -0,0 +1,54 @@ +#!/bin/sh + +# START-COMMIT HOOK +# +# The start-commit hook is invoked before a Subversion txn is created +# in the process of doing a commit. Subversion runs this hook +# by invoking a program (script, executable, binary, etc.) named +# 'start-commit' (for which this file is a template) +# with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] USER (the authenticated user attempting to commit) +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# If the hook program exits with success, the commit continues; but +# if it exits with failure (non-zero), the commit is stopped before +# a Subversion txn is created, and STDERR is returned to the client. +# +# On a Unix system, the normal procedure is to have 'start-commit' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'start-commit' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'start-commit.bat' or 'start-commit.exe', +# but the basic idea is the same. +# +# The hook program typically does not inherit the environment of +# its parent process. For example, a common problem is for the +# PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and +# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ + + +REPOS="$1" +USER="$2" + +commit-allower.pl --repository "$REPOS" --user "$USER" || exit 1 +special-auth-check.py --user "$USER" --auth-level 3 || exit 1 + +# All checks passed, so allow the commit. +exit 0 diff --git a/locks/db-logs.lock b/locks/db-logs.lock new file mode 100644 index 00000000..536ac36a --- /dev/null +++ b/locks/db-logs.lock @@ -0,0 +1,3 @@ +This file is not used by Subversion 1.3.x or later. +However, its existence is required for compatibility with +Subversion 1.2.x or earlier. diff --git a/locks/db.lock b/locks/db.lock new file mode 100644 index 00000000..536ac36a --- /dev/null +++ b/locks/db.lock @@ -0,0 +1,3 @@ +This file is not used by Subversion 1.3.x or later. +However, its existence is required for compatibility with +Subversion 1.2.x or earlier. -- cgit v1.2.3 From 92a343ee6465a52d16a48d4f1d674b2feae4b583 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 16 Jun 2007 09:38:17 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@265 b956fd51-792f-4845-bead-9b4dfca2ff2c --- README.txt | 5 --- conf/authz | 21 ------------- conf/passwd | 8 ----- conf/svnserve.conf | 30 ------------------ db/current | 1 - db/format | 1 - db/fs-type | 1 - db/revprops/0 | 5 --- db/revs/0 | 11 ------- db/uuid | 1 - db/write-lock | 0 format | 1 - hooks/post-commit.tmpl | 51 ------------------------------ hooks/post-lock.tmpl | 44 -------------------------- hooks/post-revprop-change.tmpl | 56 --------------------------------- hooks/post-unlock.tmpl | 42 ------------------------- hooks/pre-commit.tmpl | 70 ------------------------------------------ hooks/pre-lock.tmpl | 64 -------------------------------------- hooks/pre-revprop-change.tmpl | 66 --------------------------------------- hooks/pre-unlock.tmpl | 60 ------------------------------------ hooks/start-commit.tmpl | 54 -------------------------------- locks/db-logs.lock | 3 -- locks/db.lock | 3 -- 23 files changed, 598 deletions(-) delete mode 100644 README.txt delete mode 100644 conf/authz delete mode 100644 conf/passwd delete mode 100644 conf/svnserve.conf delete mode 100644 db/current delete mode 100644 db/format delete mode 100644 db/fs-type delete mode 100644 db/revprops/0 delete mode 100644 db/revs/0 delete mode 100644 db/uuid delete mode 100644 db/write-lock delete mode 100644 format delete mode 100644 hooks/post-commit.tmpl delete mode 100644 hooks/post-lock.tmpl delete mode 100644 hooks/post-revprop-change.tmpl delete mode 100644 hooks/post-unlock.tmpl delete mode 100644 hooks/pre-commit.tmpl delete mode 100644 hooks/pre-lock.tmpl delete mode 100644 hooks/pre-revprop-change.tmpl delete mode 100644 hooks/pre-unlock.tmpl delete mode 100644 hooks/start-commit.tmpl delete mode 100644 locks/db-logs.lock delete mode 100644 locks/db.lock diff --git a/README.txt b/README.txt deleted file mode 100644 index c93ca33f..00000000 --- a/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -This is a Subversion repository; use the 'svnadmin' tool to examine -it. Do not add, delete, or modify files here unless you know how -to avoid corrupting the repository. - -Visit http://subversion.tigris.org/ for more information. diff --git a/conf/authz b/conf/authz deleted file mode 100644 index 3407445f..00000000 --- a/conf/authz +++ /dev/null @@ -1,21 +0,0 @@ -### This file is an example authorization file for svnserve. -### Its format is identical to that of mod_authz_svn authorization -### files. -### As shown below each section defines authorizations for the path and -### (optional) repository specified by the section name. -### The authorizations follow. An authorization line can refer to a -### single user, to a group of users defined in a special [groups] -### section, or to anyone using the '*' wildcard. Each definition can -### grant read ('r') access, read-write ('rw') access, or no access -### (''). - -[groups] -# harry_and_sally = harry,sally - -# [/foo/bar] -# harry = rw -# * = - -# [repository:/baz/fuz] -# @harry_and_sally = rw -# * = r diff --git a/conf/passwd b/conf/passwd deleted file mode 100644 index d22bafc5..00000000 --- a/conf/passwd +++ /dev/null @@ -1,8 +0,0 @@ -### This file is an example password file for svnserve. -### Its format is similar to that of svnserve.conf. As shown in the -### example below it contains one section labelled [users]. -### The name and password for each user follow, one account per line. - -[users] -# harry = harryssecret -# sally = sallyssecret diff --git a/conf/svnserve.conf b/conf/svnserve.conf deleted file mode 100644 index 089b0d0e..00000000 --- a/conf/svnserve.conf +++ /dev/null @@ -1,30 +0,0 @@ -### This file controls the configuration of the svnserve daemon, if you -### use it to allow access to this repository. (If you only allow -### access through http: and/or file: URLs, then this file is -### irrelevant.) - -### Visit http://subversion.tigris.org/ for more information. - -[general] -### These options control access to the repository for unauthenticated -### and authenticated users. Valid values are "write", "read", -### and "none". The sample settings below are the defaults. -# anon-access = read -# auth-access = write -### The password-db option controls the location of the password -### database file. Unless you specify a path starting with a /, -### the file's location is relative to the conf directory. -### Uncomment the line below to use the default password file. -# password-db = passwd -### The authz-db option controls the location of the authorization -### rules for path-based access control. Unless you specify a path -### starting with a /, the file's location is relative to the conf -### directory. If you don't specify an authz-db, no path-based access -### control is done. -### Uncomment the line below to use the default authorization file. -# authz-db = authz -### This option specifies the authentication realm of the repository. -### If two repositories have the same authentication realm, they should -### have the same password database, and vice versa. The default realm -### is repository's uuid. -# realm = My First Repository diff --git a/db/current b/db/current deleted file mode 100644 index c435b766..00000000 --- a/db/current +++ /dev/null @@ -1 +0,0 @@ -0 1 1 diff --git a/db/format b/db/format deleted file mode 100644 index 0cfbf088..00000000 --- a/db/format +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/db/fs-type b/db/fs-type deleted file mode 100644 index 4fdd9531..00000000 --- a/db/fs-type +++ /dev/null @@ -1 +0,0 @@ -fsfs diff --git a/db/revprops/0 b/db/revprops/0 deleted file mode 100644 index cc4a9b98..00000000 --- a/db/revprops/0 +++ /dev/null @@ -1,5 +0,0 @@ -K 8 -svn:date -V 27 -2007-06-16T09:31:31.515625Z -END diff --git a/db/revs/0 b/db/revs/0 deleted file mode 100644 index 10f5c45f..00000000 --- a/db/revs/0 +++ /dev/null @@ -1,11 +0,0 @@ -PLAIN -END -ENDREP -id: 0.0.r0/17 -type: dir -count: 0 -text: 0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e -cpath: / - - -17 107 diff --git a/db/uuid b/db/uuid deleted file mode 100644 index 44d16b43..00000000 --- a/db/uuid +++ /dev/null @@ -1 +0,0 @@ -d19e7144-ee4c-554e-a747-10653ec3cfd8 diff --git a/db/write-lock b/db/write-lock deleted file mode 100644 index e69de29b..00000000 diff --git a/format b/format deleted file mode 100644 index 7ed6ff82..00000000 --- a/format +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/hooks/post-commit.tmpl b/hooks/post-commit.tmpl deleted file mode 100644 index c1bfc355..00000000 --- a/hooks/post-commit.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -# POST-COMMIT HOOK -# -# The post-commit hook is invoked after a commit. Subversion runs -# this hook by invoking a program (script, executable, binary, etc.) -# named 'post-commit' (for which this file is a template) with the -# following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] REV (the number of the revision just committed) -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# Because the commit has already completed and cannot be undone, -# the exit code of the hook program is ignored. The hook program -# can use the 'svnlook' utility to help it examine the -# newly-committed tree. -# -# On a Unix system, the normal procedure is to have 'post-commit' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'post-commit' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'post-commit.bat' or 'post-commit.exe', -# but the basic idea is the same. -# -# The hook program typically does not inherit the environment of -# its parent process. For example, a common problem is for the -# PATH environment variable to not be set to its usual value, so -# that subprograms fail to launch unless invoked via absolute path. -# If you're having unexpected problems with a hook program, the -# culprit may be unusual (or missing) environment variables. -# -# Here is an example hook script, for a Unix /bin/sh interpreter. -# For more examples and pre-written hooks, see those in -# the Subversion repository at -# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and -# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ - - -REPOS="$1" -REV="$2" - -commit-email.pl "$REPOS" "$REV" commit-watchers@example.org -log-commit.py --repository "$REPOS" --revision "$REV" diff --git a/hooks/post-lock.tmpl b/hooks/post-lock.tmpl deleted file mode 100644 index 65a7d40e..00000000 --- a/hooks/post-lock.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -# POST-LOCK HOOK -# -# The post-lock hook is run after a path is locked. Subversion runs -# this hook by invoking a program (script, executable, binary, etc.) -# named 'post-lock' (for which this file is a template) with the -# following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] USER (the user who created the lock) -# -# The paths that were just locked are passed to the hook via STDIN (as -# of Subversion 1.2, only one path is passed per invocation, but the -# plan is to pass all locked paths at once, so the hook program -# should be written accordingly). -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# Because the lock has already been created and cannot be undone, -# the exit code of the hook program is ignored. The hook program -# can use the 'svnlook' utility to help it examine the -# newly-created lock. -# -# On a Unix system, the normal procedure is to have 'post-lock' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'post-lock' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'post-lock.bat' or 'post-lock.exe', -# but the basic idea is the same. -# -# Here is an example hook script, for a Unix /bin/sh interpreter: - -REPOS="$1" -USER="$2" - -# Send email to interested parties, let them know a lock was created: -mailer.py lock "$REPOS" "$USER" /path/to/mailer.conf diff --git a/hooks/post-revprop-change.tmpl b/hooks/post-revprop-change.tmpl deleted file mode 100644 index 395201a9..00000000 --- a/hooks/post-revprop-change.tmpl +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh - -# POST-REVPROP-CHANGE HOOK -# -# The post-revprop-change hook is invoked after a revision property -# has been added, modified or deleted. Subversion runs this hook by -# invoking a program (script, executable, binary, etc.) named -# 'post-revprop-change' (for which this file is a template), with the -# following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] REV (the revision that was tweaked) -# [3] USER (the username of the person tweaking the property) -# [4] PROPNAME (the property that was changed) -# [5] ACTION (the property was 'A'dded, 'M'odified, or 'D'eleted) -# -# [STDIN] PROPVAL ** the old property value is passed via STDIN. -# -# Because the propchange has already completed and cannot be undone, -# the exit code of the hook program is ignored. The hook program -# can use the 'svnlook' utility to help it examine the -# new property value. -# -# On a Unix system, the normal procedure is to have 'post-revprop-change' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'post-revprop-change' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'post-revprop-change.bat' or 'post-revprop-change.exe', -# but the basic idea is the same. -# -# The hook program typically does not inherit the environment of -# its parent process. For example, a common problem is for the -# PATH environment variable to not be set to its usual value, so -# that subprograms fail to launch unless invoked via absolute path. -# If you're having unexpected problems with a hook program, the -# culprit may be unusual (or missing) environment variables. -# -# Here is an example hook script, for a Unix /bin/sh interpreter. -# For more examples and pre-written hooks, see those in -# the Subversion repository at -# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and -# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ - - -REPOS="$1" -REV="$2" -USER="$3" -PROPNAME="$4" -ACTION="$5" - -propchange-email.pl "$REPOS" "$REV" "$USER" "$PROPNAME" watchers@example.org diff --git a/hooks/post-unlock.tmpl b/hooks/post-unlock.tmpl deleted file mode 100644 index 5821be83..00000000 --- a/hooks/post-unlock.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -# POST-UNLOCK HOOK -# -# The post-unlock hook runs after a path is unlocked. Subversion runs -# this hook by invoking a program (script, executable, binary, etc.) -# named 'post-unlock' (for which this file is a template) with the -# following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] USER (the user who destroyed the lock) -# -# The paths that were just unlocked are passed to the hook via STDIN -# (as of Subversion 1.2, only one path is passed per invocation, but -# the plan is to pass all unlocked paths at once, so the hook program -# should be written accordingly). -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# Because the lock has already been destroyed and cannot be undone, -# the exit code of the hook program is ignored. -# -# On a Unix system, the normal procedure is to have 'post-unlock' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'post-unlock' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'post-unlock.bat' or 'post-unlock.exe', -# but the basic idea is the same. -# -# Here is an example hook script, for a Unix /bin/sh interpreter: - -REPOS="$1" -USER="$2" - -# Send email to interested parties, let them know a lock was removed: -mailer.py unlock "$REPOS" "$USER" /path/to/mailer.conf diff --git a/hooks/pre-commit.tmpl b/hooks/pre-commit.tmpl deleted file mode 100644 index 4ac8669e..00000000 --- a/hooks/pre-commit.tmpl +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh - -# PRE-COMMIT HOOK -# -# The pre-commit hook is invoked before a Subversion txn is -# committed. Subversion runs this hook by invoking a program -# (script, executable, binary, etc.) named 'pre-commit' (for which -# this file is a template), with the following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] TXN-NAME (the name of the txn about to be committed) -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# If the hook program exits with success, the txn is committed; but -# if it exits with failure (non-zero), the txn is aborted, no commit -# takes place, and STDERR is returned to the client. The hook -# program can use the 'svnlook' utility to help it examine the txn. -# -# On a Unix system, the normal procedure is to have 'pre-commit' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# *** NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT *** -# *** FOR REVISION PROPERTIES (like svn:log or svn:author). *** -# -# This is why we recommend using the read-only 'svnlook' utility. -# In the future, Subversion may enforce the rule that pre-commit -# hooks should not modify the versioned data in txns, or else come -# up with a mechanism to make it safe to do so (by informing the -# committing client of the changes). However, right now neither -# mechanism is implemented, so hook writers just have to be careful. -# -# Note that 'pre-commit' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'pre-commit.bat' or 'pre-commit.exe', -# but the basic idea is the same. -# -# The hook program typically does not inherit the environment of -# its parent process. For example, a common problem is for the -# PATH environment variable to not be set to its usual value, so -# that subprograms fail to launch unless invoked via absolute path. -# If you're having unexpected problems with a hook program, the -# culprit may be unusual (or missing) environment variables. -# -# Here is an example hook script, for a Unix /bin/sh interpreter. -# For more examples and pre-written hooks, see those in -# the Subversion repository at -# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and -# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ - - -REPOS="$1" -TXN="$2" - -# Make sure that the log message contains some text. -SVNLOOK=/usr/local/bin/svnlook -$SVNLOOK log -t "$TXN" "$REPOS" | \ - grep "[a-zA-Z0-9]" > /dev/null || exit 1 - -# Check that the author of this commit has the rights to perform -# the commit on the files and directories being modified. -commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 - -# All checks passed, so allow the commit. -exit 0 diff --git a/hooks/pre-lock.tmpl b/hooks/pre-lock.tmpl deleted file mode 100644 index f4c43d25..00000000 --- a/hooks/pre-lock.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh - -# PRE-LOCK HOOK -# -# The pre-lock hook is invoked before an exclusive lock is -# created. Subversion runs this hook by invoking a program -# (script, executable, binary, etc.) named 'pre-lock' (for which -# this file is a template), with the following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] PATH (the path in the repository about to be locked) -# [3] USER (the user creating the lock) -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# If the hook program exits with success, the lock is created; but -# if it exits with failure (non-zero), the lock action is aborted -# and STDERR is returned to the client. - -# On a Unix system, the normal procedure is to have 'pre-lock' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'pre-lock' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'pre-lock.bat' or 'pre-lock.exe', -# but the basic idea is the same. -# -# Here is an example hook script, for a Unix /bin/sh interpreter: - -REPOS="$1" -PATH="$2" -USER="$3" - -# If a lock exists and is owned by a different person, don't allow it -# to be stolen (e.g., with 'svn lock --force ...'). - -# (Maybe this script could send email to the lock owner?) -SVNLOOK=/usr/local/bin/svnlook -GREP=/bin/grep -SED=/bin/sed - -LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \ - $GREP '^Owner: ' | $SED 's/Owner: //'` - -# If we get no result from svnlook, there's no lock, allow the lock to -# happen: -if [ "$LOCK_OWNER" = "" ]; then - exit 0 -fi - -# If the person locking matches the lock's owner, allow the lock to -# happen: -if [ "$LOCK_OWNER" = "$USER" ]; then - exit 0 -fi - -# Otherwise, we've got an owner mismatch, so return failure: -echo "Error: $PATH already locked by ${LOCK_OWNER}." 1>&2 -exit 1 diff --git a/hooks/pre-revprop-change.tmpl b/hooks/pre-revprop-change.tmpl deleted file mode 100644 index 9e284a91..00000000 --- a/hooks/pre-revprop-change.tmpl +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh - -# PRE-REVPROP-CHANGE HOOK -# -# The pre-revprop-change hook is invoked before a revision property -# is added, modified or deleted. Subversion runs this hook by invoking -# a program (script, executable, binary, etc.) named 'pre-revprop-change' -# (for which this file is a template), with the following ordered -# arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] REVISION (the revision being tweaked) -# [3] USER (the username of the person tweaking the property) -# [4] PROPNAME (the property being set on the revision) -# [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted) -# -# [STDIN] PROPVAL ** the new property value is passed via STDIN. -# -# If the hook program exits with success, the propchange happens; but -# if it exits with failure (non-zero), the propchange doesn't happen. -# The hook program can use the 'svnlook' utility to examine the -# existing value of the revision property. -# -# WARNING: unlike other hooks, this hook MUST exist for revision -# properties to be changed. If the hook does not exist, Subversion -# will behave as if the hook were present, but failed. The reason -# for this is that revision properties are UNVERSIONED, meaning that -# a successful propchange is destructive; the old value is gone -# forever. We recommend the hook back up the old value somewhere. -# -# On a Unix system, the normal procedure is to have 'pre-revprop-change' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'pre-revprop-change' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'pre-revprop-change.bat' or 'pre-revprop-change.exe', -# but the basic idea is the same. -# -# The hook program typically does not inherit the environment of -# its parent process. For example, a common problem is for the -# PATH environment variable to not be set to its usual value, so -# that subprograms fail to launch unless invoked via absolute path. -# If you're having unexpected problems with a hook program, the -# culprit may be unusual (or missing) environment variables. -# -# Here is an example hook script, for a Unix /bin/sh interpreter. -# For more examples and pre-written hooks, see those in -# the Subversion repository at -# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and -# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ - - -REPOS="$1" -REV="$2" -USER="$3" -PROPNAME="$4" -ACTION="$5" - -if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi - -echo "Changing revision properties other than svn:log is prohibited" >&2 -exit 1 diff --git a/hooks/pre-unlock.tmpl b/hooks/pre-unlock.tmpl deleted file mode 100644 index 1298e805..00000000 --- a/hooks/pre-unlock.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -# PRE-UNLOCK HOOK -# -# The pre-unlock hook is invoked before an exclusive lock is -# destroyed. Subversion runs this hook by invoking a program -# (script, executable, binary, etc.) named 'pre-unlock' (for which -# this file is a template), with the following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] PATH (the path in the repository about to be unlocked) -# [3] USER (the user destroying the lock) -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# If the hook program exits with success, the lock is destroyed; but -# if it exits with failure (non-zero), the unlock action is aborted -# and STDERR is returned to the client. - -# On a Unix system, the normal procedure is to have 'pre-unlock' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'pre-unlock' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'pre-unlock.bat' or 'pre-unlock.exe', -# but the basic idea is the same. -# -# Here is an example hook script, for a Unix /bin/sh interpreter: - -REPOS="$1" -PATH="$2" -USER="$3" - -# If a lock is owned by a different person, don't allow it be broken. -# (Maybe this script could send email to the lock owner?) - -SVNLOOK=/usr/local/bin/svnlook -GREP=/bin/grep -SED=/bin/sed - -LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \ - $GREP '^Owner: ' | $SED 's/Owner: //'` - -# If we get no result from svnlook, there's no lock, return success: -if [ "$LOCK_OWNER" = "" ]; then - exit 0 -fi -# If the person unlocking matches the lock's owner, return success: -if [ "$LOCK_OWNER" = "$USER" ]; then - exit 0 -fi - -# Otherwise, we've got an owner mismatch, so return failure: -echo "Error: $PATH locked by ${LOCK_OWNER}." 1>&2 -exit 1 diff --git a/hooks/start-commit.tmpl b/hooks/start-commit.tmpl deleted file mode 100644 index e7707482..00000000 --- a/hooks/start-commit.tmpl +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh - -# START-COMMIT HOOK -# -# The start-commit hook is invoked before a Subversion txn is created -# in the process of doing a commit. Subversion runs this hook -# by invoking a program (script, executable, binary, etc.) named -# 'start-commit' (for which this file is a template) -# with the following ordered arguments: -# -# [1] REPOS-PATH (the path to this repository) -# [2] USER (the authenticated user attempting to commit) -# -# The default working directory for the invocation is undefined, so -# the program should set one explicitly if it cares. -# -# If the hook program exits with success, the commit continues; but -# if it exits with failure (non-zero), the commit is stopped before -# a Subversion txn is created, and STDERR is returned to the client. -# -# On a Unix system, the normal procedure is to have 'start-commit' -# invoke other programs to do the real work, though it may do the -# work itself too. -# -# Note that 'start-commit' must be executable by the user(s) who will -# invoke it (typically the user httpd runs as), and that user must -# have filesystem-level permission to access the repository. -# -# On a Windows system, you should name the hook program -# 'start-commit.bat' or 'start-commit.exe', -# but the basic idea is the same. -# -# The hook program typically does not inherit the environment of -# its parent process. For example, a common problem is for the -# PATH environment variable to not be set to its usual value, so -# that subprograms fail to launch unless invoked via absolute path. -# If you're having unexpected problems with a hook program, the -# culprit may be unusual (or missing) environment variables. -# -# Here is an example hook script, for a Unix /bin/sh interpreter. -# For more examples and pre-written hooks, see those in -# the Subversion repository at -# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and -# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ - - -REPOS="$1" -USER="$2" - -commit-allower.pl --repository "$REPOS" --user "$USER" || exit 1 -special-auth-check.py --user "$USER" --auth-level 3 || exit 1 - -# All checks passed, so allow the commit. -exit 0 diff --git a/locks/db-logs.lock b/locks/db-logs.lock deleted file mode 100644 index 536ac36a..00000000 --- a/locks/db-logs.lock +++ /dev/null @@ -1,3 +0,0 @@ -This file is not used by Subversion 1.3.x or later. -However, its existence is required for compatibility with -Subversion 1.2.x or earlier. diff --git a/locks/db.lock b/locks/db.lock deleted file mode 100644 index 536ac36a..00000000 --- a/locks/db.lock +++ /dev/null @@ -1,3 +0,0 @@ -This file is not used by Subversion 1.3.x or later. -However, its existence is required for compatibility with -Subversion 1.2.x or earlier. -- cgit v1.2.3 From 077d1c500e6a90870dfa979303cd5003feffc359 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 20 Jun 2007 18:14:10 +0000 Subject: Enabled Deco Texurechanging depending on TeamPlaylings in PartyScore Screen Changed Theme to fit the Changes git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@266 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UThemes.pas | 32 ++++++++++++ Game/Code/Screens/UScreenPartyScore.pas | 87 ++++++++++++++++++++++++++++++++- Themes/Deluxe.ini | 15 ++++++ 3 files changed, 132 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index dbb637e4..b55a84dc 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -587,6 +587,23 @@ type StaticTeam3BG: TThemeStatic; StaticTeam3Deco: TThemeStatic; + DecoTextures: record + ChangeTextures: Boolean; + + FirstTexture: String; + FirstTyp: String; + FirstColor: String; + + SecondTexture: String; + SecondTyp: String; + SecondColor: String; + + ThirdTexture: String; + ThirdTyp: String; + ThirdColor: String; + end; + + TextWinner: TThemeText; end; @@ -1361,6 +1378,21 @@ begin ThemeLoadStatic (PartyScore.StaticTeam3BG, 'PartyScoreStaticTeam3BG'); ThemeLoadStatic (PartyScore.StaticTeam3Deco, 'PartyScoreStaticTeam3Deco'); + //Load Party Score DecoTextures Object + PartyScore.DecoTextures.ChangeTextures := (ThemeIni.ReadInteger('PartyScoreDecoTextures', 'ChangeTextures', 0) = 1); + + PartyScore.DecoTextures.FirstTexture := ThemeIni.ReadString('PartyScoreDecoTextures', 'FirstTexture', ''); + PartyScore.DecoTextures.FirstTyp := ThemeIni.ReadString('PartyScoreDecoTextures', 'FirstTyp', 'Note Black'); + PartyScore.DecoTextures.FirstColor := ThemeIni.ReadString('PartyScoreDecoTextures', 'FirstColor', 'Black'); + + PartyScore.DecoTextures.SecondTexture := ThemeIni.ReadString('PartyScoreDecoTextures', 'SecondTexture', ''); + PartyScore.DecoTextures.SecondTyp := ThemeIni.ReadString('PartyScoreDecoTextures', 'SecondTyp', 'Note Black'); + PartyScore.DecoTextures.SecondColor := ThemeIni.ReadString('PartyScoreDecoTextures', 'SecondColor', 'Black'); + + PartyScore.DecoTextures.ThirdTexture := ThemeIni.ReadString('PartyScoreDecoTextures', 'ThirdTexture', ''); + PartyScore.DecoTextures.ThirdTyp := ThemeIni.ReadString('PartyScoreDecoTextures', 'ThirdTyp', 'Note Black'); + PartyScore.DecoTextures.ThirdColor := ThemeIni.ReadString('PartyScoreDecoTextures', 'ThirdColor', 'Black'); + ThemeLoadText (PartyScore.TextWinner, 'PartyScoreTextWinner'); //Party Win diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index 324656c0..5c632356 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -25,6 +25,11 @@ type StaticTeam3Deco: Cardinal; TextWinner: Cardinal; + DecoTex: Array[0..5] of Integer; + DecoColor: Array[0..5] of Record + R, G, B: Real; + end; + MaxScore: Word; constructor Create; override; @@ -35,7 +40,7 @@ type implementation -uses UGraphic, UMain, UParty, UScreenSingModi, ULanguage; +uses UGraphic, UMain, UParty, UScreenSingModi, ULanguage, UTexture, USkins; function TScreenPartyScore.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin @@ -75,6 +80,9 @@ end; constructor TScreenPartyScore.Create; var I: integer; + Tex: TTexture; + R, G, B: Real; + Color: Integer; begin inherited Create; @@ -97,12 +105,50 @@ begin TextWinner := AddText (Theme.PartyScore.TextWinner); + //Load Deco Textures + if Theme.PartyScore.DecoTextures.ChangeTextures then + begin + //Get Color + LoadColor(R, G, B, Theme.PartyScore.DecoTextures.FirstColor); + Color := $10000 * Round(R*255) + $100 * Round(G*255) + Round(B*255); + DecoColor[0].R := R; + DecoColor[0].G := G; + DecoColor[0].B := B; + + //Load Texture + Tex := Texture.LoadTexture(pchar(Skin.GetTextureFileName(Theme.PartyScore.DecoTextures.FirstTexture)), 'JPG', PChar(Theme.PartyScore.DecoTextures.FirstTyp), Color); + DecoTex[0] := Tex.TexNum; + + //Get Second Color + LoadColor(R, G, B, Theme.PartyScore.DecoTextures.SecondColor); + Color := $10000 * Round(R*255) + $100 * Round(G*255) + Round(B*255); + DecoColor[1].R := R; + DecoColor[1].G := G; + DecoColor[1].B := B; + + //Load Second Texture + Tex := Texture.LoadTexture(pchar(Skin.GetTextureFileName(Theme.PartyScore.DecoTextures.SecondTexture)), 'JPG', PChar(Theme.PartyScore.DecoTextures.SecondTyp), Color); + DecoTex[1] := Tex.TexNum; + + //Get Third Color + LoadColor(R, G, B, Theme.PartyScore.DecoTextures.ThirdColor); + Color := $10000 * Round(R*255) + $100 * Round(G*255) + Round(B*255); + DecoColor[2].R := R; + DecoColor[2].G := G; + DecoColor[2].B := B; + + //Load Third Texture + Tex := Texture.LoadTexture(pchar(Skin.GetTextureFileName(Theme.PartyScore.DecoTextures.ThirdTexture)), 'JPG', PChar(Theme.PartyScore.DecoTextures.ThirdTyp), Color); + DecoTex[2] := Tex.TexNum; + end; + LoadFromTheme(Theme.PartyScore); end; procedure TScreenPartyScore.onShow; var - I: Integer; + I, J: Integer; + Placings: Array [0..5] of Byte; begin //Get Maxscore MaxScore := 0; @@ -112,6 +158,16 @@ begin MaxScore := ScreenSingModi.PlayerInfo.Playerinfo[I].Score; end; + //Get Placings + for I := 0 to ScreenSingModi.PlayerInfo.NumPlayers - 1 do + begin + Placings[I] := 0; + for J := 0 to ScreenSingModi.PlayerInfo.NumPlayers - 1 do + If (ScreenSingModi.PlayerInfo.Playerinfo[J].Score > ScreenSingModi.PlayerInfo.Playerinfo[I].Score) then + Inc(Placings[I]); + end; + + //Set Static Length Static[StaticTeam1].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[0].Percentage / 100; Static[StaticTeam2].Texture.ScaleW := ScreenSingModi.PlayerInfo.Playerinfo[1].Percentage / 100; @@ -133,6 +189,15 @@ begin Text[TextScoreTeam1].Text := InttoStr(ScreenSingModi.PlayerInfo.Playerinfo[0].Score); Text[TextNameTeam1].Text := String(ScreenSingModi.TeamInfo.Teaminfo[0].Name); + //Set Deco Texture + if Theme.PartyScore.DecoTextures.ChangeTextures then + begin + Static[StaticTeam1Deco].Texture.TexNum := DecoTex[Placings[0]]; + Static[StaticTeam1Deco].Texture.ColR := DecoColor[Placings[0]].R; + Static[StaticTeam1Deco].Texture.ColG := DecoColor[Placings[0]].G; + Static[StaticTeam1Deco].Texture.ColB := DecoColor[Placings[0]].B; + end; + Text[TextScoreTeam1].Visible := True; Text[TextNameTeam1].Visible := True; Static[StaticTeam1].Visible := True; @@ -153,6 +218,15 @@ begin Text[TextScoreTeam2].Text := InttoStr(ScreenSingModi.PlayerInfo.Playerinfo[1].Score); Text[TextNameTeam2].Text := String(ScreenSingModi.TeamInfo.Teaminfo[1].Name); + //Set Deco Texture + if Theme.PartyScore.DecoTextures.ChangeTextures then + begin + Static[StaticTeam2Deco].Texture.TexNum := DecoTex[Placings[1]]; + Static[StaticTeam2Deco].Texture.ColR := DecoColor[Placings[1]].R; + Static[StaticTeam2Deco].Texture.ColG := DecoColor[Placings[1]].G; + Static[StaticTeam2Deco].Texture.ColB := DecoColor[Placings[1]].B; + end; + Text[TextScoreTeam2].Visible := True; Text[TextNameTeam2].Visible := True; Static[StaticTeam2].Visible := True; @@ -173,6 +247,15 @@ begin Text[TextScoreTeam3].Text := InttoStr(ScreenSingModi.PlayerInfo.Playerinfo[2].Score); Text[TextNameTeam3].Text := String(ScreenSingModi.TeamInfo.Teaminfo[2].Name); + //Set Deco Texture + if Theme.PartyScore.DecoTextures.ChangeTextures then + begin + Static[StaticTeam3Deco].Texture.TexNum := DecoTex[Placings[2]]; + Static[StaticTeam3Deco].Texture.ColR := DecoColor[Placings[2]].R; + Static[StaticTeam3Deco].Texture.ColG := DecoColor[Placings[2]].G; + Static[StaticTeam3Deco].Texture.ColB := DecoColor[Placings[2]].B; + end; + Text[TextScoreTeam3].Visible := True; Text[TextNameTeam3].Visible := True; Static[StaticTeam3].Visible := True; diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 80f09e1e..ecd807a2 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -5534,6 +5534,21 @@ Texts=5 [PartyScoreBackground] Tex=PartyBG +[PartyScoreDecoTextures] +ChangeTextures =1 + +FirstTexture =PartyScoreDeco +FirstTyp =Font Black +FirstColor =Gold + +SecondTexture =PartyScoreDeco +SecondTyp =Font Black +SecondColor =Silver + +ThirdTexture =PartyScoreDeco +ThirdTyp =Font Black +ThirdColor =Bronze + [PartyScoreStatic1] X =0 Y =549 -- cgit v1.2.3 From e0c4de18cabd3f1f27376afe389cdd4470ee198d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 25 Jun 2007 12:24:53 +0000 Subject: Fixed wrong sentence timings (T in Editor) when last note of a sentence and first note of the next sentence overlap. Fixed 2 Bugs in Midi Converter: Notes were added more than once to txt when the save Button is pressed multiple times Notes are added more than once when open is pressed multiple time Added sentence start calculating to Midi Converter git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@267 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Changelog.german.txt | 7 ++++++- Game/Changelog.txt | 5 ++++- Game/Code/Screens/UScreenEditConvert.pas | 30 ++++++++++++++++++++++++++++++ Game/Code/Screens/UScreenEditSub.pas | 8 ++++++-- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/Game/Changelog.german.txt b/Game/Changelog.german.txt index f1289f03..c2237fde 100644 --- a/Game/Changelog.german.txt +++ b/Game/Changelog.german.txt @@ -62,6 +62,7 @@ Upd: Statistiken hinzugef Upd: Einige On Screen Fehler Benachrichtigungen hinzugefügt, die neuen Spielern helfen sollten. Upd: Neuer Erweiterter Options Screen hinzugefügt Upd: Abfrage vor dem Beenden hinzugefügt +Upd: Song Hintergrundbilder können jetzt auch auf voller Bildschrimfläche dargestellt werden. Upd: Im Editor werden jetzt zusätzlich die richtigen Notennamen ausgegeben (C, F#, etc.) Fix: Nahezu keine Abstürze mehr wegen fehlerhaften TXT-Dateien. In Game Popup hinzugefügt und einen Rücksprunk zum Songscreen. @@ -75,7 +76,11 @@ Fix: Backgrounds can be used now in option Screens, too Fix: Unnützer Speicherverbauch wenn ein Song mit Video abgespielt wird. Einige Videodaten blieben im Speicher nachdem der Song beendet wurde. Dies könnte zu einem Out Of Memory Error führen wenn viele Songs mit Video gespielt werden. Fix: Einige Speichernutzungs und Ladezeit Updates - +Fix: Falsche Satzübergänge wenn T im Editor benutzt wurde und sich 2 Noten von verschiedenen + Sätzen überlagerten. +Fix: [Midi Converter]Noten wurden mehrmals hinzugefügt wenn eine Datei mehrmals geöffnet wurde + oder der Save Button mehrmals gedrückt wurde. +Fix: [Midi Converter]Satzübergänge werden nun vom Mide Converter automatisch berechnet. UltraStar 0.5.0 ultra-star.dl.am Mod X-Mas Edition (by Mota und Whiteshark) ----------------------------- diff --git a/Game/Changelog.txt b/Game/Changelog.txt index f1ccb7b3..aafebb25 100644 --- a/Game/Changelog.txt +++ b/Game/Changelog.txt @@ -63,6 +63,7 @@ Upd: Statistic Screen with general Statistics and some Tables: Upd: Add some on Screen Error Messages helping new Peoples Upd: Add Advanced Screen with some new Options. Upd: Add a Question PopUp before exiting +Upd: Add ability to scale Background Images in Singscreen to Fullsize Upd: Show real Note in Editor (C, F#, etc.) Fix: No crashes caused by corrupted Textfiles anymore. Added inGame Errormessage Popup and Jump Back to Songscreen. So even the Party Mode, @@ -76,7 +77,9 @@ Fix: useless Memory usement when Song with Video is Played. When a Song with Vid there was some Memory that was not freeed at the End of the Song. This could have caused too much Memory usement when many Songs with Video are Played. Fix: Some Changes in Memory usement and better Loading speed. - +Fix: Wrong Timings pressing T in Editor if 2 Notes from different Sentences overlap +Fix: [Midi Converter]Notes are added more than once when a File is opened twice or the save button is pressed multiple times. +Fix: [Midi Converter]Sentence Timings are calculated automaticly when Midi File is converted UltraStar 0.5.0 ultra-star.dl.am Mod X-Mas Edition (by Mota und Whiteshark) ----------------------------- diff --git a/Game/Code/Screens/UScreenEditConvert.pas b/Game/Code/Screens/UScreenEditConvert.pas index 92e8544c..f1e3ba32 100644 --- a/Game/Code/Screens/UScreenEditConvert.pas +++ b/Game/Code/Screens/UScreenEditConvert.pas @@ -54,8 +54,10 @@ type BPM: real; Ticks: real; Nuta: array of TNuta; + procedure AddLyric(Start: integer; Tekst: string); procedure Extract; + procedure MidiFile1MidiEvent(event: PMidiEvent); function SelectedNumber: integer; constructor Create; override; @@ -192,6 +194,7 @@ var Nu: integer; NutaTemp: TNuta; Move: integer; + Max, Min: integer; begin // song info Song.Title := ''; @@ -201,6 +204,8 @@ begin SetLength(Song.BPM, 1); Song.BPM[0].BPM := BPM*4; + SetLength(Nuta, 0); + // extract notes for T := 0 to High(ATrack) do begin // if ATrack[T].Hear then begin @@ -265,6 +270,27 @@ begin SetLength(Czesc.Czesc[C].Nuta, 0); Czesc.Czesc[C].IlNut := 0; Czesc.Czesc[C].HighNut := -1; + + //Calculate Start of the Last Sentence + if (C > 0) and (Nu > 0) then + begin + Max := Nuta[Nu].Start; + Min := Nuta[Nu-1].Start + Nuta[Nu-1].Len; + + case (Max - Min) of + 0: Czesc.Czesc[C].Start := Max; + 1: Czesc.Czesc[C].Start := Max; + 2: Czesc.Czesc[C].Start := Max - 1; + 3: Czesc.Czesc[C].Start := Max - 2; + else + if ((Max - Min) > 4) then + Czesc.Czesc[C].Start := Min + 2 + else + Czesc.Czesc[C].Start := Max; + + end; // case + + end; end; // tworzy miejsce na nowa nute @@ -388,7 +414,11 @@ begin SetLength(Channel, 16); for T := 0 to 15 do + begin Channel[T].Name := IntToStr(T+1); + SetLength(Channel[T].Note, 0); + Channel[T].Status := 0; + end; for T := 0 to MidiFile.NumberOfTracks-1 do begin MidiTrack := MidiFile.GetTrack(T); diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index a0adef2c..8a5eaab8 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -730,8 +730,12 @@ begin 0: S := Max; 1: S := Max; 2: S := Max - 1; - 3..3: S := Max - 2; - 4..10000: S := Min + 2; // poczatek + 2 + 3: S := Max - 2; + else + if ((Max - Min) > 4) then + S := Min + 2 + else + S := Max; end; // case Czesci[0].Czesc[C].Start := S; -- cgit v1.2.3 From 26173c50974c12b7ca6c9302efe6bd32c555df30 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 25 Jun 2007 12:27:58 +0000 Subject: Added ability to display Videos only in full size and Backgrounds in half size. Fullsize is now the standard value for Moviesize git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@268 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 2 +- Game/Code/Classes/UIni.pas | 25 ++++++++++++++++++++----- Game/Code/SMpeg/USmpeg.pas | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 41225c0d..2575758f 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -79,7 +79,7 @@ begin glClearColor (1, 1, 1, 1); glColor4f (1, 1, 1, 1); - if (Ini.MovieSize = 0) then //HalfSize BG + if (Ini.MovieSize <= 1) then //HalfSize BG begin (* half screen + gradient *) Rec.Top := 110; // 80 diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index 528966b3..ceb3c240 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -126,7 +126,7 @@ const ISpectrum: array[0..1] of string = ('Off', 'On'); ISpectrograph: array[0..1] of string = ('Off', 'On'); - IMovieSize: array[0..1] of string = ('Half', 'Full'); + IMovieSize: array[0..2] of string = ('Half', 'Full [Vid]', 'Full [BG+Vid]'); IMicBoost: array[0..3] of string = ('Off', '+6dB', '+12dB', '+18dB'); IClickAssist: array[0..1] of string = ('Off', 'On'); @@ -173,10 +173,10 @@ var Modes: PPSDL_Rect; SR: TSearchRec; //Skin List Patch -function GetFileName (S: String):String; + function GetFileName (S: String):String; begin //Result := copy (S,0,StrRScan (PChar(S),char('.'))+1); - Result := copy (S,0,Pos ('.ini',S)-1); + Result := copy (S,0,Pos ('.ini',S)-1); end; begin @@ -293,7 +293,7 @@ begin if Tekst = ISpectrograph[Pet] then Ini.Spectrograph := Pet; // MovieSize - Tekst := IniFile.ReadString('Graphics', 'MovieSize', IMovieSize[0]); + Tekst := IniFile.ReadString('Graphics', 'MovieSize', IMovieSize[2]); for Pet := 0 to High(IMovieSize) do if Tekst = IMovieSize[Pet] then Ini.MovieSize := Pet; @@ -349,12 +349,25 @@ begin // Theme //Theme List Patch + + //I2 Saves the no of the Deluxe (Standard-) Theme + I2 := 0; + //I counts is the cur. Theme no + I := 0; + SetLength(ITheme, 0); FindFirst('Themes\*.ini',faAnyFile,SR); Repeat + //Read Themename from Theme ThemeIni := TMemIniFile.Create(SR.Name); Tekst := UpperCase(ThemeIni.ReadString('Theme','Name',GetFileName(SR.Name))); ThemeIni.Free; + + //if Deluxe Theme then save Themeno to I2 + if (Tekst = 'DELUXE') then + I2 := I; + + //Search for Skins for this Theme for Pet := low(Skin.Skin) to high(Skin.Skin) do begin if UpperCase(Skin.Skin[Pet].Theme) = Tekst then @@ -364,6 +377,8 @@ begin break; end; end; + + Inc(I); Until FindNext(SR) <> 0; FindClose(SR); //Theme List Patch End } @@ -375,7 +390,7 @@ begin end; - Tekst := IniFile.ReadString('Themes', 'Theme', ITheme[0]); + Tekst := IniFile.ReadString('Themes', 'Theme', ITheme[I2]); Ini.Theme := 0; for Pet := 0 to High(ITheme) do if Uppercase(Tekst) = Uppercase(ITheme[Pet]) then Ini.Theme := Pet; diff --git a/Game/Code/SMpeg/USmpeg.pas b/Game/Code/SMpeg/USmpeg.pas index 85f3f988..317b04bb 100644 --- a/Game/Code/SMpeg/USmpeg.pas +++ b/Game/Code/SMpeg/USmpeg.pas @@ -253,7 +253,7 @@ begin TexT := 110 / 600 * (textures.movie_height / 1024{512}); TexB := 490 / 600 * (textures.movie_height / 1024{512}); - if Ini.MovieSize = 1 then begin + if Ini.MovieSize >= 1 then begin // full screen size CropT := 0; CropB := 600; -- cgit v1.2.3 From 139918027ecdd4a1b149722eea7b578579b993f1 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 25 Jun 2007 16:44:07 +0000 Subject: Fixed a Bug in Editor. When a Song with Cover was edited and after a song without was loaded and saved, the cover from the first song was written to the second song git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@269 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UFiles.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index 5214a9b3..e6982a1a 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -116,6 +116,7 @@ begin //Additional Information Song.Background := ''; + Song.Cover := ''; Song.Video := ''; Song.VideoGAP := 0; Song.NotesGAP := 0; @@ -734,10 +735,10 @@ begin if Song.Edition <> 'Unknown' then WriteLn(SongFile, '#EDITION:' + Song.Edition); if Song.Genre <> 'Unknown' then WriteLn(SongFile, '#GENRE:' + Song.Genre); if Song.Language <> 'Unknown' then WriteLn(SongFile, '#LANGUAGE:' + Song.Language); - if Song.Cover <> '' then WriteLn(SongFile, '#COVER:' + Song.Cover); WriteLn(SongFile, '#MP3:' + Song.Mp3); + if Song.Cover <> '' then WriteLn(SongFile, '#COVER:' + Song.Cover); if Song.Background <> '' then WriteLn(SongFile, '#BACKGROUND:' + Song.Background); if Song.Video <> '' then WriteLn(SongFile, '#VIDEO:' + Song.Video); if Song.VideoGAP <> 0 then WriteLn(SongFile, '#VIDEOGAP:' + FloatToStr(Song.VideoGAP)); -- cgit v1.2.3 From 1d20a6ed1de519a7167c3b53fee7f2484f2f22b1 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 26 Jun 2007 14:11:20 +0000 Subject: Added support for transparency in PNG images - if a PNG with transparency is loaded as 'Transparent' texture type, then the alpha-channel is set according to the transparency information in the file git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@270 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UTexture.pas | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas index 0eae68a2..da603ec9 100644 --- a/Game/Code/Classes/UTexture.pas +++ b/Game/Code/Classes/UTexture.pas @@ -193,6 +193,10 @@ var TextureB: TBitmap; TextureJ: TJPEGImage; TexturePNG: TPNGObject; + TextureAlpha: array of byte; + AlphaPtr: PByte; + TransparentColor: TColor; + PixelColor: TColor; Pet: integer; Pet2: integer; @@ -246,6 +250,27 @@ begin Exit; end; TextureB.Assign(TexturePNG); + // transparent png hack start (part 1 of 2) + if (Typ = 'Transparent') and (TexturePNG.TransparencyMode = ptmPartial) then + begin + setlength(TextureAlpha, TextureB.Width*TextureB.Height); + if (TexturePNG.Header.ColorType = COLOR_GRAYSCALEALPHA) or + (TexturePNG.Header.ColorType = COLOR_RGBALPHA) then + begin + // i would have preferred english variables here but i use Pet because i'm lazy + for Pet := 0 to TextureB.Height - 1 do + begin + AlphaPtr := PByte(TexturePNG.AlphaScanline[Pet]); + for Pet2 := 0 to TextureB.Width - 1 do + begin + TextureAlpha[Pet*TextureB.Width+Pet2]:= AlphaPtr^; + Inc(AlphaPtr); + end; + end; + end; + end else + setlength(TextureAlpha,0); // just no special transparency for unimplemented transparency types (ptmBit) + // transparent png hack end TexturePNG.Free; end; @@ -357,11 +382,13 @@ begin TexNewH := Round(Power(2, Ceil(Log2(TexOrygH)))); TextureB.Width := TexNewW; TextureB.Height := TexNewH; + // kopiowanie for Pet := 0 to TexOrygH-1 do begin for Pet2 := 0 to TexOrygW-1 do begin Pix := TextureB.Canvas.Pixels[Pet2, Pet]; - if ((Pix = $fefefe) or (Pix = Col)) then begin //Small fix, that caused artefacts to be drawn (#fe == dec254) + // ,- part of transparent png hack + if ((Pix = $fefefe) or (Pix = Col)) and (length(TextureAlpha)=0) then begin //Small fix, that caused artefacts to be drawn (#fe == dec254) TextureD32[Pet*TexNewW + Pet2 + 1, 1] := 0; TextureD32[Pet*TexNewW + Pet2 + 1, 2] := 0; TextureD32[Pet*TexNewW + Pet2 + 1, 3] := 0; @@ -370,7 +397,12 @@ begin TextureD32[Pet*TexNewW + Pet2+1, 1] := Pix; TextureD32[Pet*TexNewW + Pet2+1, 2] := Pix div 256; TextureD32[Pet*TexNewW + Pet2+1, 3] := Pix div (256*256); - TextureD32[Pet*TexNewW + Pet2+1, 4] := 255; + // transparent png hack start (part 2 of 2) + if (Format = 'PNG') and (length(TextureAlpha) <> 0) then begin + TextureD32[Pet*TexNewW+Pet2+1,4]:=TextureAlpha[Pet*TexOrygW+Pet2]; + end else + // transparent png hack end + TextureD32[Pet*TexNewW + Pet2+1, 4] := 255; end; end; end; -- cgit v1.2.3 From 9f6e3caffa80ce75ef845e30094a3baa568bab12 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 26 Jun 2007 15:12:50 +0000 Subject: Some Fixes in Readme.txt git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@271 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/ReadMe.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Game/ReadMe.txt b/Game/ReadMe.txt index 9615bf0e..618a1924 100644 --- a/Game/ReadMe.txt +++ b/Game/ReadMe.txt @@ -62,11 +62,11 @@ And this piece of software is the Result! 3. Controls ---------------------------- Use the Arrowkeys to navigate through the Screens. -Use Enter to Select and Escape to go back. -In Songscreen you can use R, Shift + R or Strg + R to Select a Random Song/Category -Use Alt + [Letter] to Jump to a Songs Artist with the first letter [Letter] -Use Alt + Shift + [Letter] to Jump to a Song Title with the first letter [Letter] -Press J to open the Search for a Song Interface +Use Enter to select and Escape to go to the previous screen. +In Songscreen you can use R, Shift + R or Strg + R to select a random song/category +Use Alt + [Letter] to jump to a songs artist with the first letter [Letter] +Use Alt + Shift + [Letter] to jump to a song title with the first letter [Letter] +Press J to open the "Search for a Song" Interface Editor Controls are described in documentation.pdf @@ -74,5 +74,5 @@ Editor Controls are described in documentation.pdf ---------------------------- 4. License ---------------------------- -Ultrastar Deluxe is licensed under the Terms of the GNU General Public License 2.0 -See License.txt for more Informations. \ No newline at end of file +Ultrastar Deluxe is licensed under the terms of the GNU General Public License 2.0 +See License.txt for more Information. \ No newline at end of file -- cgit v1.2.3 From 7050f9d54fc4603a952c12efbab2e3331413865f Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 3 Jul 2007 08:37:09 +0000 Subject: some tweaking of transparency handling for PNGs to make it look more as expected git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@272 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UTexture.pas | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas index da603ec9..275f0748 100644 --- a/Game/Code/Classes/UTexture.pas +++ b/Game/Code/Classes/UTexture.pas @@ -206,6 +206,7 @@ var TempA: integer; Error: integer; SkipX: integer; + myAlpha: Real; begin Log.BenchmarkStart(4); Mipmapping := true; @@ -399,7 +400,16 @@ begin TextureD32[Pet*TexNewW + Pet2+1, 3] := Pix div (256*256); // transparent png hack start (part 2 of 2) if (Format = 'PNG') and (length(TextureAlpha) <> 0) then begin - TextureD32[Pet*TexNewW+Pet2+1,4]:=TextureAlpha[Pet*TexOrygW+Pet2]; + myAlpha:=TextureAlpha[Pet*TexOrygW+Pet2]; + + // the following calculations tweak transparency so that it really looks transparent + myAlpha:=myAlpha-75; + if myAlpha < 0 then myAlpha:=0; + myAlpha:=myAlpha/180; + myAlpha:=myAlpha*myAlpha*myAlpha; + myAlpha:=myAlpha*255; + + TextureD32[Pet*TexNewW+Pet2+1,4]:=floor(myAlpha); end else // transparent png hack end TextureD32[Pet*TexNewW + Pet2+1, 4] := 255; -- cgit v1.2.3 From dce08a8771098ac1a56dd4548202454ab268e951 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 3 Jul 2007 14:56:15 +0000 Subject: Fixed a bug in EditorSub that causes a crash when the last note of a sentence was deleted. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@273 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenEditSub.pas | 53 ++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 8a5eaab8..9e84462d 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -882,20 +882,49 @@ var begin C := Czesci[0].Akt; - // we copy all notes from the next to the selected one - for N := AktNuta+1 to Czesci[0].Czesc[C].HighNut do begin - Czesci[0].Czesc[C].Nuta[N-1] := Czesci[0].Czesc[C].Nuta[N]; - end; - - NLen := Czesci[0].Czesc[C].IlNut - 1; - SetLength(Czesci[0].Czesc[C].Nuta, NLen); - Dec(Czesci[0].Czesc[C].HighNut); - Dec(Czesci[0].Czesc[C].IlNut); + //Do Not delete Last Note + if (Czesci[0].High > 0) OR (Czesci[0].Czesc[C].HighNut > 0) then + begin + // we copy all notes from the next to the selected one + for N := AktNuta+1 to Czesci[0].Czesc[C].HighNut do begin + Czesci[0].Czesc[C].Nuta[N-1] := Czesci[0].Czesc[C].Nuta[N]; + end; - // me slightly modify new note - if AktNuta > Czesci[0].Czesc[C].HighNut then Dec(AktNuta); - Czesci[0].Czesc[C].Nuta[AktNuta].Color := 1; + NLen := Czesci[0].Czesc[C].IlNut - 1; + + if (NLen > 0) then + begin + SetLength(Czesci[0].Czesc[C].Nuta, NLen); + Dec(Czesci[0].Czesc[C].HighNut); + Dec(Czesci[0].Czesc[C].IlNut); + + + // me slightly modify new note + if AktNuta > Czesci[0].Czesc[C].HighNut then Dec(AktNuta); + Czesci[0].Czesc[C].Nuta[AktNuta].Color := 1; + end + //Last Note of current Sentence Deleted - > Delete Sentence + else + begin + //Move all Sentences after the current to the Left + for N := C+1 to Czesci[0].High do + Czesci[0].Czesc[N-1] := Czesci[0].Czesc[N]; + + //Delete Last Sentence + SetLength(Czesci[0].Czesc, Czesci[0].High); + Czesci[0].High := High(Czesci[0].Czesc); + Czesci[0].Ilosc := Length(Czesci[0].Czesc); + + AktNuta := 0; + if (C > 0) then + Czesci[0].Akt := C - 1 + else + Czesci[0].Akt := 0; + + Czesci[0].Czesc[Czesci[0].Akt].Nuta[AktNuta].Color := 1; + end; + end; end; procedure TScreenEditSub.TransposeNote(Transpose: integer); -- cgit v1.2.3 From dd3cc6f8e84f03f626a88741474412d36e4d18ac Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 12:00:15 +0000 Subject: Improved Error Logging and Benchmark: Write US Version, date and time to files. Added better Commandline Parameter Interpreter: More than one parameter can be used at the same time Many new, useful farameters: e.g. No error logging, Resolution change, FullScreen, DualScreen Mode, other Config File, other Score File and SongPath git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@274 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UDraw.pas | 4 +- Game/Code/Classes/UGraphic.pas | 31 +++-- Game/Code/Classes/UIni.pas | 289 ++++++++++++++++++++++------------------- Game/Code/Classes/ULog.pas | 68 +++++----- Game/Code/Classes/UMain.pas | 4 +- Game/Code/Menu/UDisplay.pas | 4 +- Game/Code/UltraStar.dpr | 24 +++- 7 files changed, 237 insertions(+), 187 deletions(-) diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 2575758f..077f5121 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -153,8 +153,8 @@ var begin; // Log.LogStatus('Oscilloscope', 'SingDraw'); glColor3f(Skin_OscR, Skin_OscG, Skin_OscB); - if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then - glColor3f(1, 1, 1); + {if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then + glColor3f(1, 1, 1); } glBegin(GL_LINE_STRIP); glVertex2f(X, -Sound[NrSound].BufferArray[1] / $10000 * H + Y + H/2); diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 205fa9fd..cf1a0c5a 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -178,7 +178,7 @@ procedure LoadScreens; implementation -uses UMain, UIni, UDisplay, Graphics, Classes, Windows; +uses UMain, UIni, UDisplay, UCommandLine, Graphics, Classes, Windows; procedure LoadTextures; var @@ -332,8 +332,12 @@ var S: string; I: integer; W, H: integer; + Depth: Integer; begin - Screens := Ini.Screens + 1; + if (Params.Screens <> -1) then + Screens := Params.Screens + 1 + else + Screens := Ini.Screens + 1; SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5); @@ -341,28 +345,39 @@ begin SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - S := IResolution[Ini.Resolution]; + // If there is a resolution in Parameters, use it, else use the Ini value + I := Params.Resolution; + if (I <> -1) then + S := IResolution[I] + else + S := IResolution[Ini.Resolution]; + I := Pos('x', S); W := StrToInt(Copy(S, 1, I-1)) * Screens; H := StrToInt(Copy(S, I+1, 1000)); - if ParamStr(1) = '-fsblack' then begin + {if ParamStr(1) = '-fsblack' then begin W := 800; H := 600; end; if ParamStr(1) = '-320x240' then begin W := 320; H := 240; - end; + end; } + + If (Params.Depth <> -1) then + Depth := Params.Depth + else + Depth := Ini.Depth; Log.LogStatus('SDL_SetVideoMode', 'Initialize3D'); // SDL_SetRefreshrate(85); // SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); - if (Ini.FullScreen = 0) and (ParamStr(1) <> '-fsblack') then - screen := SDL_SetVideoMode(W, H, (Ini.Depth+1) * 16, SDL_OPENGL) + if (Ini.FullScreen = 0) and (Not Params.FullScreen) then + screen := SDL_SetVideoMode(W, H, (Depth+1) * 16, SDL_OPENGL) else begin - screen := SDL_SetVideoMode(W, H, (Ini.Depth+1) * 16, SDL_OPENGL or SDL_FULLSCREEN); + screen := SDL_SetVideoMode(W, H, (Depth+1) * 16, SDL_OPENGL or SDL_FULLSCREEN); SDL_ShowCursor(0); end; if (screen = nil) then begin diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index ceb3c240..846c0deb 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -11,6 +11,9 @@ type NameTeam: array[0..2] of string; NameTemplate: array[0..11] of string; + //Filename of the opened iniFile + Filename: string; + // Game Players: integer; Difficulty: integer; @@ -159,7 +162,7 @@ const IChannel: array[0..6] of string = ('0', '1', '2', '3', '4', '5', '6'); implementation -uses UFiles, SDL, ULanguage, USkins, URecord; +uses UFiles, SDL, ULanguage, USkins, URecord, UCommandLine; procedure TIni.Load; var @@ -181,7 +184,16 @@ var begin GamePath := ExtractFilePath(ParamStr(0)); - IniFile := TMemIniFile.Create(GamePath + 'config.ini'); + + if (Params.ConfigFile <> '') then + try + IniFile := TMemIniFile.Create(Params.ConfigFile); + except + IniFile := TMemIniFile.Create(GamePath + 'config.ini'); + end + else + IniFile := TMemIniFile.Create(GamePath + 'config.ini'); + // Name for I := 0 to 11 do @@ -516,9 +528,12 @@ begin // SongPath - SongPath := IncludeTrailingPathDelimiter(IniFile.ReadString('Path', 'Songs', SongPath)); - + if (Params.SongPath <> '') then + SongPath := IncludeTrailingPathDelimiter(Params.SongPath) + else + SongPath := IncludeTrailingPathDelimiter(IniFile.ReadString('Path', 'Songs', SongPath)); + Filename := IniFile.FileName; IniFile.Free; end; @@ -529,176 +544,178 @@ var I: Integer; S: String; begin - if not (FileExists(GamePath + 'config.ini') and FileIsReadOnly(GamePath + 'config.ini')) then begin - IniFile := TIniFile.Create(GamePath + 'config.ini'); + //if not (FileExists(GamePath + 'config.ini') and FileIsReadOnly(GamePath + 'config.ini')) then begin + if not (FileExists(Filename) and FileIsReadOnly(Filename)) then begin - // Players - Tekst := IPlayers[Ini.Players]; - IniFile.WriteString('Game', 'Players', Tekst); + IniFile := TIniFile.Create(Filename); - // Difficulty - Tekst := IDifficulty[Ini.Difficulty]; - IniFile.WriteString('Game', 'Difficulty', Tekst); + // Players + Tekst := IPlayers[Ini.Players]; + IniFile.WriteString('Game', 'Players', Tekst); - // Language - Tekst := ILanguage[Ini.Language]; - IniFile.WriteString('Game', 'Language', Tekst); + // Difficulty + Tekst := IDifficulty[Ini.Difficulty]; + IniFile.WriteString('Game', 'Difficulty', Tekst); - // Tabs - Tekst := ITabs[Ini.Tabs]; - IniFile.WriteString('Game', 'Tabs', Tekst); + // Language + Tekst := ILanguage[Ini.Language]; + IniFile.WriteString('Game', 'Language', Tekst); - // Sorting - Tekst := ISorting[Ini.Sorting]; - IniFile.WriteString('Game', 'Sorting', Tekst); + // Tabs + Tekst := ITabs[Ini.Tabs]; + IniFile.WriteString('Game', 'Tabs', Tekst); - // Debug - Tekst := IDebug[Ini.Debug]; - IniFile.WriteString('Game', 'Debug', Tekst); + // Sorting + Tekst := ISorting[Ini.Sorting]; + IniFile.WriteString('Game', 'Sorting', Tekst); - // Screens - Tekst := IScreens[Ini.Screens]; - IniFile.WriteString('Graphics', 'Screens', Tekst); + // Debug + Tekst := IDebug[Ini.Debug]; + IniFile.WriteString('Game', 'Debug', Tekst); - // FullScreen - Tekst := IFullScreen[Ini.FullScreen]; - IniFile.WriteString('Graphics', 'FullScreen', Tekst); + // Screens + Tekst := IScreens[Ini.Screens]; + IniFile.WriteString('Graphics', 'Screens', Tekst); - // Resolution - Tekst := IResolution[Ini.Resolution]; - IniFile.WriteString('Graphics', 'Resolution', Tekst); + // FullScreen + Tekst := IFullScreen[Ini.FullScreen]; + IniFile.WriteString('Graphics', 'FullScreen', Tekst); - // Depth - Tekst := IDepth[Ini.Depth]; - IniFile.WriteString('Graphics', 'Depth', Tekst); + // Resolution + Tekst := IResolution[Ini.Resolution]; + IniFile.WriteString('Graphics', 'Resolution', Tekst); - // Resolution - Tekst := ITextureSize[Ini.TextureSize]; - IniFile.WriteString('Graphics', 'TextureSize', Tekst); + // Depth + Tekst := IDepth[Ini.Depth]; + IniFile.WriteString('Graphics', 'Depth', Tekst); - // Sing Window - Tekst := ISingWindow[Ini.SingWindow]; - IniFile.WriteString('Graphics', 'SingWindow', Tekst); + // Resolution + Tekst := ITextureSize[Ini.TextureSize]; + IniFile.WriteString('Graphics', 'TextureSize', Tekst); - // Oscilloscope - Tekst := IOscilloscope[Ini.Oscilloscope]; - IniFile.WriteString('Graphics', 'Oscilloscope', Tekst); + // Sing Window + Tekst := ISingWindow[Ini.SingWindow]; + IniFile.WriteString('Graphics', 'SingWindow', Tekst); - // Spectrum - Tekst := ISpectrum[Ini.Spectrum]; - IniFile.WriteString('Graphics', 'Spectrum', Tekst); + // Oscilloscope + Tekst := IOscilloscope[Ini.Oscilloscope]; + IniFile.WriteString('Graphics', 'Oscilloscope', Tekst); - // Spectrograph - Tekst := ISpectrograph[Ini.Spectrograph]; - IniFile.WriteString('Graphics', 'Spectrograph', Tekst); + // Spectrum + Tekst := ISpectrum[Ini.Spectrum]; + IniFile.WriteString('Graphics', 'Spectrum', Tekst); - // Movie Size - Tekst := IMovieSize[Ini.MovieSize]; - IniFile.WriteString('Graphics', 'MovieSize', Tekst); + // Spectrograph + Tekst := ISpectrograph[Ini.Spectrograph]; + IniFile.WriteString('Graphics', 'Spectrograph', Tekst); - // MicBoost - Tekst := IMicBoost[Ini.MicBoost]; - IniFile.WriteString('Sound', 'MicBoost', Tekst); + // Movie Size + Tekst := IMovieSize[Ini.MovieSize]; + IniFile.WriteString('Graphics', 'MovieSize', Tekst); - // ClickAssist - Tekst := IClickAssist[Ini.ClickAssist]; - IniFile.WriteString('Sound', 'ClickAssist', Tekst); + // MicBoost + Tekst := IMicBoost[Ini.MicBoost]; + IniFile.WriteString('Sound', 'MicBoost', Tekst); - // BeatClick - Tekst := IBeatClick[Ini.BeatClick]; - IniFile.WriteString('Sound', 'BeatClick', Tekst); + // ClickAssist + Tekst := IClickAssist[Ini.ClickAssist]; + IniFile.WriteString('Sound', 'ClickAssist', Tekst); - // Threshold - Tekst := IThreshold[Ini.Threshold]; - IniFile.WriteString('Sound', 'Threshold', Tekst); + // BeatClick + Tekst := IBeatClick[Ini.BeatClick]; + IniFile.WriteString('Sound', 'BeatClick', Tekst); - // Song Preview - Tekst := IPreviewVolume[Ini.PreviewVolume]; - IniFile.WriteString('Sound', 'PreviewVolume', Tekst); + // Threshold + Tekst := IThreshold[Ini.Threshold]; + IniFile.WriteString('Sound', 'Threshold', Tekst); - Tekst := IPreviewFading[Ini.PreviewFading]; - IniFile.WriteString('Sound', 'PreviewFading', Tekst); + // Song Preview + Tekst := IPreviewVolume[Ini.PreviewVolume]; + IniFile.WriteString('Sound', 'PreviewVolume', Tekst); - // SavePlayback - Tekst := ISavePlayback[Ini.SavePlayback]; - IniFile.WriteString('Sound', 'SavePlayback', Tekst); + Tekst := IPreviewFading[Ini.PreviewFading]; + IniFile.WriteString('Sound', 'PreviewFading', Tekst); - // Lyrics Font - Tekst := ILyricsFont[Ini.LyricsFont]; - IniFile.WriteString('Lyrics', 'LyricsFont', Tekst); + // SavePlayback + Tekst := ISavePlayback[Ini.SavePlayback]; + IniFile.WriteString('Sound', 'SavePlayback', Tekst); - // Lyrics Effect - Tekst := ILyricsEffect[Ini.LyricsEffect]; - IniFile.WriteString('Lyrics', 'LyricsEffect', Tekst); + // Lyrics Font + Tekst := ILyricsFont[Ini.LyricsFont]; + IniFile.WriteString('Lyrics', 'LyricsFont', Tekst); - // Solmization - Tekst := ISolmization[Ini.Solmization]; - IniFile.WriteString('Lyrics', 'Solmization', Tekst); + // Lyrics Effect + Tekst := ILyricsEffect[Ini.LyricsEffect]; + IniFile.WriteString('Lyrics', 'LyricsEffect', Tekst); - // Theme - Tekst := ITheme[Ini.Theme]; - IniFile.WriteString('Themes', 'Theme', Tekst); + // Solmization + Tekst := ISolmization[Ini.Solmization]; + IniFile.WriteString('Lyrics', 'Solmization', Tekst); - // Skin - Tekst := ISkin[Ini.SkinNo]; - IniFile.WriteString('Themes', 'Skin', Tekst); + // Theme + Tekst := ITheme[Ini.Theme]; + IniFile.WriteString('Themes', 'Theme', Tekst); - // Color - Tekst := IColor[Ini.Color]; - IniFile.WriteString('Themes', 'Color', Tekst); + // Skin + Tekst := ISkin[Ini.SkinNo]; + IniFile.WriteString('Themes', 'Skin', Tekst); - // Record - for I := 0 to High(CardList) do begin - S := IntToStr(I+1); + // Color + Tekst := IColor[Ini.Color]; + IniFile.WriteString('Themes', 'Color', Tekst); - Tekst := CardList[I].Name; - IniFile.WriteString('Record', 'DeviceName' + S, Tekst); + // Record + for I := 0 to High(CardList) do begin + S := IntToStr(I+1); - Tekst := IntToStr(CardList[I].Input); - IniFile.WriteString('Record', 'Input' + S, Tekst); + Tekst := CardList[I].Name; + IniFile.WriteString('Record', 'DeviceName' + S, Tekst); - Tekst := IntToStr(CardList[I].ChannelL); - IniFile.WriteString('Record', 'ChannelL' + S, Tekst); + Tekst := IntToStr(CardList[I].Input); + IniFile.WriteString('Record', 'Input' + S, Tekst); - Tekst := IntToStr(CardList[I].ChannelR); - IniFile.WriteString('Record', 'ChannelR' + S, Tekst); - end; + Tekst := IntToStr(CardList[I].ChannelL); + IniFile.WriteString('Record', 'ChannelL' + S, Tekst); - //Log.LogError(InttoStr(Length(CardList)) + ' Cards Saved'); + Tekst := IntToStr(CardList[I].ChannelR); + IniFile.WriteString('Record', 'ChannelR' + S, Tekst); + end; - //Advanced Settings + //Log.LogError(InttoStr(Length(CardList)) + ' Cards Saved'); - //LoadAnimation - Tekst := ILoadAnimation[Ini.LoadAnimation]; - IniFile.WriteString('Advanced', 'LoadAnimation', Tekst); + //Advanced Settings - //EffectSing - Tekst := IEffectSing[Ini.EffectSing]; - IniFile.WriteString('Advanced', 'EffectSing', Tekst); + //LoadAnimation + Tekst := ILoadAnimation[Ini.LoadAnimation]; + IniFile.WriteString('Advanced', 'LoadAnimation', Tekst); - //ScreenFade - Tekst := IScreenFade[Ini.ScreenFade]; - IniFile.WriteString('Advanced', 'ScreenFade', Tekst); + //EffectSing + Tekst := IEffectSing[Ini.EffectSing]; + IniFile.WriteString('Advanced', 'EffectSing', Tekst); - //AskbeforeDel - Tekst := IAskbeforeDel[Ini.AskbeforeDel]; - IniFile.WriteString('Advanced', 'AskbeforeDel', Tekst); + //ScreenFade + Tekst := IScreenFade[Ini.ScreenFade]; + IniFile.WriteString('Advanced', 'ScreenFade', Tekst); - //OnSongClick - Tekst := IOnSongClick[Ini.OnSongClick]; - IniFile.WriteString('Advanced', 'OnSongClick', Tekst); + //AskbeforeDel + Tekst := IAskbeforeDel[Ini.AskbeforeDel]; + IniFile.WriteString('Advanced', 'AskbeforeDel', Tekst); - //Line Bonus - Tekst := ILineBonus[Ini.LineBonus]; - IniFile.WriteString('Advanced', 'LineBonus', Tekst); + //OnSongClick + Tekst := IOnSongClick[Ini.OnSongClick]; + IniFile.WriteString('Advanced', 'OnSongClick', Tekst); - //Party Popup - Tekst := IPartyPopup[Ini.PartyPopup]; - IniFile.WriteString('Advanced', 'PartyPopup', Tekst); + //Line Bonus + Tekst := ILineBonus[Ini.LineBonus]; + IniFile.WriteString('Advanced', 'LineBonus', Tekst); - // Joypad - Tekst := IJoypad[Ini.Joypad]; - IniFile.WriteString('Controller', 'Joypad', Tekst); + //Party Popup + Tekst := IPartyPopup[Ini.PartyPopup]; + IniFile.WriteString('Advanced', 'PartyPopup', Tekst); + + // Joypad + Tekst := IJoypad[Ini.Joypad]; + IniFile.WriteString('Controller', 'Joypad', Tekst); IniFile.Free; end; @@ -709,8 +726,10 @@ var IniFile: TIniFile; I: integer; begin - if not FileIsReadOnly(GamePath + 'config.ini') then begin - IniFile := TIniFile.Create(GamePath + 'config.ini'); + //if not FileIsReadOnly(GamePath + 'config.ini') then begin + //IniFile := TIniFile.Create(GamePath + 'config.ini'); + if not FileIsReadOnly(Filename) then begin + IniFile := TIniFile.Create(Filename); //Name // Templates for Names Mod @@ -730,8 +749,10 @@ var IniFile: TIniFile; I: integer; begin - if not FileIsReadOnly(GamePath + 'config.ini') then begin - IniFile := TIniFile.Create(GamePath + 'config.ini'); + //if not FileIsReadOnly(GamePath + 'config.ini') then begin + //IniFile := TIniFile.Create(GamePath + 'config.ini'); + if not FileIsReadOnly(Filename) then begin + IniFile := TIniFile.Create(Filename); // Difficulty IniFile.WriteString('Game', 'Difficulty', IDifficulty[Ini.Difficulty]); diff --git a/Game/Code/Classes/ULog.pas b/Game/Code/Classes/ULog.pas index 59e25954..9d20d2f1 100644 --- a/Game/Code/Classes/ULog.pas +++ b/Game/Code/Classes/ULog.pas @@ -11,13 +11,14 @@ type FileBenchmark: TextFile; FileBenchmarkO: boolean; // opened - FileAnalyze: TextFile; - FileAnalyzeO: boolean; // opened FileError: TextFile; FileErrorO: boolean; // opened Title: String; //Application Title + //Should Log Files be written + Enabled: Boolean; + // destuctor destructor Free; @@ -26,9 +27,6 @@ type procedure BenchmarkEnd(Number: integer); procedure LogBenchmark(Text: string; Number: integer); - // analyze - procedure LogAnalyze(Text: string); - // error procedure LogError(Text: string); overload; @@ -47,7 +45,7 @@ var Log: TLog; implementation -uses UFiles, SysUtils, DateUtils, URecord, UTime, UIni, Windows; +uses UFiles, SysUtils, DateUtils, URecord, UTime, UIni, Windows, UCommandLine; destructor TLog.Free; begin @@ -78,7 +76,7 @@ var ValueText: string; begin - if (ParamStr(1) = '-benchmark') then begin + if Enabled AND (Params.Benchmark) then begin if not FileBenchmarkO then begin FileBenchmarkO := true; AssignFile(FileBenchmark, LogPath + 'Benchmark.log'); @@ -86,6 +84,16 @@ begin Rewrite(FileBenchmark); if IOResult = 0 then FileBenchmarkO := true; {$I+} + + //If File is opened write Date to Benchmark File + If (FileBenchmarkO) then + begin + WriteLn(FileBenchmark, Title + ' Benchmark File'); + WriteLn(FileBenchmark, 'Date: ' + DatetoStr(Now) + ' Time: ' + TimetoStr(Now)); + WriteLn(FileBenchmark, '-------------------'); + + Flush(FileBenchmark); + end; end; if FileBenchmarkO then begin @@ -133,44 +141,34 @@ begin end; end; -procedure TLog.LogAnalyze(Text: string); -var - Seconds: integer; - Miliseconds: integer; - ValueText: string; -begin - //if Ini.Debug = 1 then begin - - if not FileAnalyzeO then begin - AssignFile(FileAnalyze, LogPath + 'Analyze.log'); - {$I-} - Rewrite(FileAnalyze); - if IOResult = 0 then FileAnalyzeO := true; - {$I+} - end; - - if FileAnalyzeO then begin - WriteLn(FileAnalyze, Text); - Flush(FileAnalyze); // try to speed up - end; - - //end; -end; - procedure TLog.LogError(Text: string); begin - if not FileErrorO then begin + if Enabled AND (not FileErrorO) then begin FileErrorO := true; AssignFile(FileError, LogPath + 'Error.log'); {$I-} Rewrite(FileError); if IOResult = 0 then FileErrorO := true; {$I+} + + //If File is opened write Date to Error File + If (FileErrorO) then + begin + WriteLn(FileError, Title + ' Error Log'); + WriteLn(FileError, 'Date: ' + DatetoStr(Now) + ' Time: ' + TimetoStr(Now)); + WriteLn(FileError, '-------------------'); + + Flush(FileError); + end; end; if FileErrorO then begin - WriteLn(FileError, Text); - Flush(FileError); + try + WriteLn(FileError, Text); + Flush(FileError); + except + FileErrorO := false; + end; end; end; @@ -225,3 +223,5 @@ begin end; end. + + diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 3bf7d197..b47047a5 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -95,7 +95,7 @@ function GetTimeFromBeat(Beat: integer): real; procedure ClearScores(PlayerNum: integer); implementation -uses USongs, UJoystick, math; +uses USongs, UJoystick, math, UCommandLine; procedure MainLoop; var @@ -105,7 +105,7 @@ begin While not Done do Begin // joypad - if Ini.Joypad = 1 then + if (Ini.Joypad = 1) OR (Params.Joypad) then Joy.Update; // keyboard events diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index f95a73e3..223a7615 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -111,8 +111,8 @@ begin Result := True; Col := 1; - if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then - Col := 0; + {if (ParamStr(1) = '-black') or (ParamStr(1) = '-fsblack') then + Col := 0; } glClearColor(Col, Col, Col , 0); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index b9687292..44899166 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -1,7 +1,6 @@ program UltraStar; {$DEFINE TRANSLATE} -//DEFINE THEMESAVE} {$R 'UltraStar.res' 'UltraStar.rc'} @@ -26,7 +25,6 @@ uses UGraphic in 'Classes\UGraphic.pas', UTexture in 'Classes\UTexture.pas', UMusic in 'Classes\UMusic.pas', - //UPliki in 'Classes\UPliki.pas', ULanguage in 'Classes\ULanguage.pas', UMain in 'Classes\UMain.pas', UDraw in 'Classes\UDraw.pas', @@ -51,6 +49,7 @@ uses UDLLManager in 'Classes\UDLLManager.pas', UParty in 'Classes\UParty.pas', UPlaylist in 'Classes\UPlaylist.pas', + UCommandLine in 'Classes\UCommandLine.pas', //------------------------------ //Includes - Screens @@ -144,9 +143,13 @@ begin //------------------------------ USTime := TTime.Create; + // Commandline Parameter Parser + Params := TCMDParams.Create; + // Log + Benchmark Log := TLog.Create; Log.Title := WndTitle; + Log.Enabled := Not Params.NoLog; Log.BenchmarkStart(0); // Language @@ -182,7 +185,13 @@ begin Log.BenchmarkStart(1); Log.LogStatus('Load Ini', 'Initialization'); Ini := TIni.Create; Ini.Load; - Language.ChangeLanguage(ILanguage[Ini.Language]); + + //Load Languagefile + if (Params.Language <> -1) then + Language.ChangeLanguage(ILanguage[Params.Language]) + else + Language.ChangeLanguage(ILanguage[Ini.Language]); + Log.BenchmarkEnd(1); Log.LogBenchmark('Loading Ini', 1); @@ -268,7 +277,12 @@ begin Log.BenchmarkStart(1); Log.LogStatus('DataBase System', 'Initialization'); DataBase := TDataBaseSystem.Create; - DataBase.Init ('Ultrastar.db'); + + if (Params.ScoreFile = '') then + DataBase.Init ('Ultrastar.db') + else + DataBase.Init (Params.ScoreFile); + Log.BenchmarkEnd(1); Log.LogBenchmark('Loading DataBase System', 1); @@ -287,7 +301,7 @@ begin Log.LogBenchmark('Loading Particel System', 1); // Joypad - if Ini.Joypad = 1 then begin + if (Ini.Joypad = 1) OR (Params.Joypad) then begin Log.BenchmarkStart(1); Log.LogStatus('Initialize Joystick', 'Initialization'); Joy := TJoy.Create; Log.BenchmarkEnd(1); -- cgit v1.2.3 From 002bda99cfc259407bd924619302671bc5cd193a Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 12:08:51 +0000 Subject: Fixed a bug in UDisplay that causes the game to crash on exit in Dualscreen Mode. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@275 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 223a7615..92693a41 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -244,7 +244,7 @@ begin - if (myfade > 40) or (not doFade) or (not canFade) then begin // fade out complete... + if ((myfade > 40) or (not doFade) or (not canFade)) And (S = 1) then begin // fade out complete... myFade:=0; ActualScreen.onHide; ActualScreen.ShowFinish:=False; @@ -256,7 +256,10 @@ begin ActualScreen.ShowFinish := true; end else + begin Result:=False; + Break; + end; // end of fade mod end; end; // if -- cgit v1.2.3 From 711b111994779f94c310ccde4e08645d13741b71 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 12:30:53 +0000 Subject: Update ReadMe.txt with some information about Command-Line Parameters git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@276 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/ReadMe.txt | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/Game/ReadMe.txt b/Game/ReadMe.txt index 618a1924..fffab29e 100644 --- a/Game/ReadMe.txt +++ b/Game/ReadMe.txt @@ -2,8 +2,9 @@ Ultrastar Deluxe 1.0 Readme.txt ---------------------------- 1. Authors 2. Release Notes -3. Controls -4. License +3. Command-Line Parameters +4. Controls +5. License ---------------------------- SF.Net Page: http://sourceforge.net/projects/ultrastardx/ @@ -59,7 +60,40 @@ And this piece of software is the Result! ---------------------------- -3. Controls +3. Command-Line Parameters +---------------------------- +Command-Line Parameters are passed to the game adding it to the Path of a Shortcut or starting the game within the console. + +The following parameters are possible. They can be joined in any possible way. + +-Benchmark : Create a benchmark.log file with start timings. +-NoLog : Do not create any .log files +-Joypad : Start with Joypad support +-Language [ID] : Load Language [ID] on startup. Example: -Language german + +-Songpath [Path] : Some as config Songpath. Example: -SongPath "C:\Ultrastar Songs" +-ConfigFile [File] : Load Configfile [File] instead of config.ini. Path to the file have to exist. Example: -ConfigFile config.SongCreation.ini +-ScoreFile [File] : Use [File] instead of Ultrastar.db. Path to the file have to exist. Example: -ScoreFile HouseParty.db + +-FullScreen : Start the game in Fullscreen Mode +-Depth [16/32] : Force Depth 16 or 32. Example: -Depth 16 +-Resolution [ID] : Force resolution. Example: -Resolution 800x600 +-Screens [1/2] : Force 1 or 2 Screen Mode. Example: -Screens 2 + +Some Examples: + +Start with Resolution 1024x768 32 Bit Depth and Fullscreen: +ultrastar.exe -Resolution 1024x768 -Depth 32 -Fullscreen + +Start without logging and polish Language +ultrastar.exe -NoLog -Language polish + +Start with custom config File and Score DB: +ultrastar.exe -ConfigFile C:\Ultrastar\Configs\PartyConfig.ini -ScoreFile C:\Ultrastar\Scores\PartyScores.db + + +---------------------------- +4. Controls ---------------------------- Use the Arrowkeys to navigate through the Screens. Use Enter to select and Escape to go to the previous screen. @@ -72,7 +106,7 @@ Editor Controls are described in documentation.pdf ---------------------------- -4. License +5. License ---------------------------- Ultrastar Deluxe is licensed under the terms of the GNU General Public License 2.0 See License.txt for more Information. \ No newline at end of file -- cgit v1.2.3 From a91908d71f4ea3b21f30f40a9e7dab09760ec1c2 Mon Sep 17 00:00:00 2001 From: b1indy Date: Sun, 8 Jul 2007 13:11:20 +0000 Subject: added another effect (sparkling stars that fall down) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@277 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphicClasses.pas | 67 +++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index e1cd8aff..5f0b0b4e 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -2,10 +2,11 @@ unit UGraphicClasses; interface +uses UTexture; const DelayBetweenFrames : Cardinal = 60; type - TParticleType=(GoldenNote, PerfectNote, NoteHitTwinkle, PerfectLineTwinkle); + TParticleType=(GoldenNote, PerfectNote, NoteHitTwinkle, PerfectLineTwinkle, ColoredStar, Flare); TColour3f = Record r, g, b: Real; @@ -52,6 +53,8 @@ type TwinkleArray : Array[0..5] of Real; // store x-position of last twinkle for every player PerfNoteArray : Array of PerfectNotePositions; + FlareTex: TTexture; + constructor Create; destructor Destroy; override; procedure Draw; @@ -76,7 +79,7 @@ type var GoldenRec : TEffectManager; implementation -uses sysutils, Windows,OpenGl12, UIni, UMain, UThemes, USkins, UGraphic, UDrawTexture, UTexture, math, dialogs; +uses sysutils, Windows,OpenGl12, UIni, UMain, UThemes, USkins, UGraphic, UDrawTexture, math, dialogs; //TParticle Constructor TParticle.Create(cX,cY: Real; cScreen: Integer; cLive: Byte; cFrame : integer; cRecArrayIndex : Integer; cStarType : TParticleType; Player: Cardinal); @@ -173,6 +176,52 @@ begin mX := RandomRange(-5,5); mY := RandomRange(-5,5); end; + ColoredStar: + begin + Tex := Tex_Note_Star.TexNum; + W := RandomRange(10,20); + H := W; + SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1); + SurviveSentenceChange:=True; + // assign colours according to player given + SetLength(Scale,1); + SetLength(Col,1); + Col[0].b := (Player and $ff)/255; + Col[0].g := ((Player shr 8) and $ff)/255; + Col[0].r := ((Player shr 16) and $ff)/255; + mX := 0; + mY := 0; + end; + Flare: + begin + Tex := Tex_Note_Star.TexNum; + W := 7; + H := 7; + SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1); + mX := RandomRange(-5,5); + mY := RandomRange(-5,5); + SetLength(Scale,4); + Scale[1]:=0.8; + Scale[2]:=0.4; + Scale[3]:=0.3; + SetLength(Col,4); + Col[0].r := 1; + Col[0].g := 0.7; + Col[0].b := 0.1; + + Col[1].r := 1; + Col[1].g := 1; + Col[1].b := 0.4; + + Col[2].r := 1; + Col[2].g := 1; + Col[2].b := 1; + + Col[3].r := 1; + Col[3].g := 1; + Col[3].b := 1; + + end; else // just some random default values begin Tex := Tex_Note_Star.TexNum; @@ -226,6 +275,20 @@ begin X := X + mX; Y := Y + mY; end; + ColoredStar: + begin + Alpha := (-cos((Frame+1)*2*pi/16)+1); // neat fade-in-and-out + end; + Flare: + begin + Alpha := (-cos((Frame+1)/16*1.7*pi+0.3*pi)+1); // neat fade-in-and-out + SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1); + // move around + X := X + mX; + Y := Y + mY; + mY:=mY+1.5; +// mX:=mX/2; + end; end; end; -- cgit v1.2.3 From 7bfc5ef4301caf4d3841c7741af5c8409fe0b175 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 13:20:16 +0000 Subject: Add Debug OSD with FPS and RSpeed Will be extended in further Releases with some error messages git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@278 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UDisplay.pas | 73 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index 92693a41..70e678fb 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -28,6 +28,14 @@ type pTex : array[1..2] of glUInt; // end + //FPS Counter + FPSCounter: Cardinal; + LastFPS: Cardinal; + NextFPSSwap:Cardinal; + + //For Debug OSD + OSD_LastError: String; + function Draw: Boolean; procedure PrintScreen; constructor Create; @@ -35,6 +43,8 @@ type destructor Destroy; // end procedure ScreenShot; + + procedure DrawDebugInformation; end; var @@ -42,7 +52,7 @@ var implementation -uses UGraphic, UTime, Graphics, Jpeg, UFiles, UTexture, UIni; +uses UGraphic, UTime, Graphics, Jpeg, UFiles, UTexture, UIni, TextGL, UCommandLine; constructor TDisplay.Create; var i: integer; @@ -86,6 +96,9 @@ begin end; FreeMem(pTexData); // end + + //Set LastError for OSD to No Error + OSD_LastError := 'No Errors'; end; // fade mod @@ -243,7 +256,6 @@ begin NextScreen.OnShow; - if ((myfade > 40) or (not doFade) or (not canFade)) And (S = 1) then begin // fade out complete... myFade:=0; ActualScreen.onHide; @@ -263,6 +275,11 @@ begin // end of fade mod end; end; // if + + //Draw OSD only on first Screen if Debug Mode is enabled + if ((Ini.Debug = 1) OR (Params.Debug)) AND (S=1) then + DrawDebugInformation; + end; // for // SwapBuffers(h_DC); end; @@ -365,5 +382,57 @@ begin end; end; +//------------ +// DrawDebugInformation - Procedure draw FPS and some other Informations on Screen +//------------ +procedure TDisplay.DrawDebugInformation; +var Ticks: Cardinal; +begin + //Some White Background for information + glEnable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + glColor4f(1, 1, 1, 0.5); + glBegin(GL_QUADS); + glVertex2f(690, 44); + glVertex2f(690, 0); + glVertex2f(800, 0); + glVertex2f(800, 44); + glEnd; + glDisable(GL_BLEND); + + //Set Font Specs + SetFontStyle(0); + SetFontSize(7); + SetFontItalic(False); + glColor4f(0, 0, 0, 1); + + //Calculate FPS + Ticks := GetTickCount; + if (Ticks >= NextFPSSwap) then + begin + LastFPS := FPSCounter * 4; + FPSCounter := 0; + NextFPSSwap := Ticks + 250; + end; + + Inc(FPSCounter); + + //Draw Text + + //FPS + SetFontPos(695, 0); + glPrint (PChar('FPS: ' + InttoStr(LastFPS))); + + //RSpeed + SetFontPos(695, 13); + glPrint (PChar('RSpeed: ' + InttoStr(Round(1000 * TimeMid)))); + + //LastError + SetFontPos(695, 26); + glColor4f(1, 0, 0, 1); + glPrint (PChar(OSD_LastError)); + + glColor4f(1, 1, 1, 1); +end; end. -- cgit v1.2.3 From c9d28ba8d798c2e7defc1449f591dd8b150d117e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 13:32:14 +0000 Subject: Update Changelog git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@279 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Changelog.german.txt | 3 +++ Game/Changelog.txt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Game/Changelog.german.txt b/Game/Changelog.german.txt index c2237fde..cf9b3391 100644 --- a/Game/Changelog.german.txt +++ b/Game/Changelog.german.txt @@ -64,6 +64,8 @@ Upd: Neuer Erweiterter Options Screen hinzugef Upd: Abfrage vor dem Beenden hinzugefügt Upd: Song Hintergrundbilder können jetzt auch auf voller Bildschrimfläche dargestellt werden. Upd: Im Editor werden jetzt zusätzlich die richtigen Notennamen ausgegeben (C, F#, etc.) +Upd: Neue Schriftarten +Upd: Bessere Unterstützung für Kommandozeilen Parameter Fix: Nahezu keine Abstürze mehr wegen fehlerhaften TXT-Dateien. In Game Popup hinzugefügt und einen Rücksprunk zum Songscreen. Selbst der Partymodus wird nicht unterbrochen. @@ -78,6 +80,7 @@ Fix: Unn Fix: Einige Speichernutzungs und Ladezeit Updates Fix: Falsche Satzübergänge wenn T im Editor benutzt wurde und sich 2 Noten von verschiedenen Sätzen überlagerten. +Fix: Editor stürzte ab wenn die letzte Note eines Satzes gelöscht wurde. Fix: [Midi Converter]Noten wurden mehrmals hinzugefügt wenn eine Datei mehrmals geöffnet wurde oder der Save Button mehrmals gedrückt wurde. Fix: [Midi Converter]Satzübergänge werden nun vom Mide Converter automatisch berechnet. diff --git a/Game/Changelog.txt b/Game/Changelog.txt index aafebb25..b03c3248 100644 --- a/Game/Changelog.txt +++ b/Game/Changelog.txt @@ -65,6 +65,8 @@ Upd: Add Advanced Screen with some new Options. Upd: Add a Question PopUp before exiting Upd: Add ability to scale Background Images in Singscreen to Fullsize Upd: Show real Note in Editor (C, F#, etc.) +Upd: New fonts added +Upd: Add better support for Command-Line Parameters Fix: No crashes caused by corrupted Textfiles anymore. Added inGame Errormessage Popup and Jump Back to Songscreen. So even the Party Mode, isn't interuppted. @@ -78,6 +80,7 @@ Fix: useless Memory usement when Song with Video is Played. When a Song with Vid too much Memory usement when many Songs with Video are Played. Fix: Some Changes in Memory usement and better Loading speed. Fix: Wrong Timings pressing T in Editor if 2 Notes from different Sentences overlap +Fix: Editor crashes when last note of a sentence is deleted Fix: [Midi Converter]Notes are added more than once when a File is opened twice or the save button is pressed multiple times. Fix: [Midi Converter]Sentence Timings are calculated automaticly when Midi File is converted -- cgit v1.2.3 From f98839dba7e48a36cb6a2bdcbef547c7ef31aada Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 14:06:50 +0000 Subject: Changed Outline Font Filenames Changed Outline2 Font to official Ultrastars Outline1 Font for better Song backward compatibility git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@280 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/UltraStar.rc | 8 ++++---- Game/Fonts/Outline 1/Outline 1.dat | Bin 0 -> 256 bytes Game/Fonts/Outline 1/Outline 1.png | Bin 0 -> 49840 bytes Game/Fonts/Outline 1/Outline 36 (1024) 16c.png | Bin 49840 -> 0 bytes Game/Fonts/Outline 1/Outline 36 (1024).dat | Bin 256 -> 0 bytes Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG | Bin 49019 -> 0 bytes Game/Fonts/Outline 2/Outline 2.dat | Bin 0 -> 256 bytes Game/Fonts/Outline 2/Outline 2.png | Bin 0 -> 40714 bytes Game/Fonts/Outline 2/Outline.dat | Bin 256 -> 0 bytes 9 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 Game/Fonts/Outline 1/Outline 1.dat create mode 100644 Game/Fonts/Outline 1/Outline 1.png delete mode 100644 Game/Fonts/Outline 1/Outline 36 (1024) 16c.png delete mode 100644 Game/Fonts/Outline 1/Outline 36 (1024).dat delete mode 100644 Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG create mode 100644 Game/Fonts/Outline 2/Outline 2.dat create mode 100644 Game/Fonts/Outline 2/Outline 2.png delete mode 100644 Game/Fonts/Outline 2/Outline.dat diff --git a/Game/Code/UltraStar.rc b/Game/Code/UltraStar.rc index 68d68e4b..2160cfb8 100644 --- a/Game/Code/UltraStar.rc +++ b/Game/Code/UltraStar.rc @@ -4,11 +4,11 @@ Font FNT "..\Fonts\Normal\eurostar_regular.dat" FontB PNG "..\Fonts\Bold\eurostar_regular_bold.png" FontB FNT "..\Fonts\Bold\eurostar_regular_bold.dat" -FontO PNG "..\Fonts\Outline 1\Outline 36 (1024) 16c.PNG" -FontO FNT "..\Fonts\Outline 1\Outline 36 (1024).dat" +FontO PNG "..\Fonts\Outline 1\Outline 1.PNG" +FontO FNT "..\Fonts\Outline 1\Outline 1.dat" -FontO2 PNG "..\Fonts\Outline 2\5 - Outline Dark Edited 16c.PNG" -FontO2 FNT "..\Fonts\Outline 2\Outline.dat" +FontO2 PNG "..\Fonts\Outline 2\Outline 2.PNG" +FontO2 FNT "..\Fonts\Outline 2\Outline 2.dat" MAINICON ICON "..\Graphics\ustar-icon_v01.ico" //MAINICON ICON "..\Graphics\us.ico" \ No newline at end of file diff --git a/Game/Fonts/Outline 1/Outline 1.dat b/Game/Fonts/Outline 1/Outline 1.dat new file mode 100644 index 00000000..ea9f2484 Binary files /dev/null and b/Game/Fonts/Outline 1/Outline 1.dat differ diff --git a/Game/Fonts/Outline 1/Outline 1.png b/Game/Fonts/Outline 1/Outline 1.png new file mode 100644 index 00000000..1e213823 Binary files /dev/null and b/Game/Fonts/Outline 1/Outline 1.png differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024) 16c.png b/Game/Fonts/Outline 1/Outline 36 (1024) 16c.png deleted file mode 100644 index 1e213823..00000000 Binary files a/Game/Fonts/Outline 1/Outline 36 (1024) 16c.png and /dev/null differ diff --git a/Game/Fonts/Outline 1/Outline 36 (1024).dat b/Game/Fonts/Outline 1/Outline 36 (1024).dat deleted file mode 100644 index ea9f2484..00000000 Binary files a/Game/Fonts/Outline 1/Outline 36 (1024).dat and /dev/null differ diff --git a/Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG b/Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG deleted file mode 100644 index d0a0a390..00000000 Binary files a/Game/Fonts/Outline 2/5 - Outline Dark Edited 16c.PNG and /dev/null differ diff --git a/Game/Fonts/Outline 2/Outline 2.dat b/Game/Fonts/Outline 2/Outline 2.dat new file mode 100644 index 00000000..062f1629 Binary files /dev/null and b/Game/Fonts/Outline 2/Outline 2.dat differ diff --git a/Game/Fonts/Outline 2/Outline 2.png b/Game/Fonts/Outline 2/Outline 2.png new file mode 100644 index 00000000..4e111f27 Binary files /dev/null and b/Game/Fonts/Outline 2/Outline 2.png differ diff --git a/Game/Fonts/Outline 2/Outline.dat b/Game/Fonts/Outline 2/Outline.dat deleted file mode 100644 index ea9f2484..00000000 Binary files a/Game/Fonts/Outline 2/Outline.dat and /dev/null differ -- cgit v1.2.3 From f6a236acf6289b452e651107c9ca8cf9c6e82e41 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 8 Jul 2007 14:09:29 +0000 Subject: Changed to Version 1.00 RC1 Only changes that have to be done from now on are changes in the Theme Files. I hope Mota will be able to do it soon git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@281 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/UltraStar.dpr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 44899166..a49d43c2 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -106,7 +106,7 @@ uses SysUtils; const - Version = 'UltraStar Deluxe V 0.98 Beta'; + Version = 'UltraStar Deluxe V 1.00 RC1'; var WndTitle: string; -- cgit v1.2.3 From e8ff96a8c44e152a2cb7b71579249c15a10f4168 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 9 Jul 2007 14:00:16 +0000 Subject: Added missing UCommandLine.pas git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@282 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UCommandLine.pas | 280 +++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 Game/Code/Classes/UCommandLine.pas diff --git a/Game/Code/Classes/UCommandLine.pas b/Game/Code/Classes/UCommandLine.pas new file mode 100644 index 00000000..03229721 --- /dev/null +++ b/Game/Code/Classes/UCommandLine.pas @@ -0,0 +1,280 @@ +unit UCommandLine; + +interface + +type + //----------- + // TCMDParams - Class Reaads Infos from ParamStr and set some easy Interface Variables + //----------- + TCMDParams = class + private + sLanguage: String; + sResolution: String; + public + //Some Boolean Variables Set when Reading Infos + Debug: Boolean; + Benchmark: Boolean; + NoLog: Boolean; + FullScreen: Boolean; + Joypad: Boolean; + + //Some Value Variables Set when Reading Infos {-1: Not Set, others: Value} + Depth: Integer; + Screens: Integer; + + //Some Strings Set when Reading Infos {Length=0 Not Set} + SongPath: String; + ConfigFile: String; + ScoreFile: String; + + //Pseudo Integer Values + Function GetLanguage: Integer; + Property Language: Integer read GetLanguage; + + Function GetResolution: Integer; + Property Resolution: Integer read GetResolution; + + //Some Procedures for Reading Infos + Constructor Create; + + Procedure ResetVariables; + Procedure ReadParamInfo; + end; + +var + Params: TCMDParams; + +implementation +uses SysUtils, UIni; + +//------------- +// Constructor - Create class, Reset Variables and Read Infos +//------------- +Constructor TCMDParams.Create; +begin + ResetVariables; + ReadParamInfo; +end; + +//------------- +// ResetVariables - Reset Class Variables +//------------- +Procedure TCMDParams.ResetVariables; +begin + Debug := False; + Benchmark := False; + NoLog := False; + FullScreen := False; + Joypad := False; + + //Some Value Variables Set when Reading Infos {-1: Not Set, others: Value} + sResolution := ''; + sLanguage := ''; + Depth := -1; + Screens := -1; + + //Some Strings Set when Reading Infos {Length=0 Not Set} + SongPath := ''; + ConfigFile := ''; + ScoreFile := ''; +end; + +//------------- +// ReadParamInfo - Read Infos from Parameters +//------------- +Procedure TCMDParams.ReadParamInfo; +var + I: Integer; + PCount: Integer; + Command: String; +begin + PCount := ParamCount; + //Log.LogError('ParamCount: ' + Inttostr(PCount)); + + //Check all Parameters + For I := 1 to PCount do + begin + Command := Paramstr(I); + //Log.LogError('Start parsing Command: ' + Command); + //Is String Parameter ? + if (Length(Command) > 1) AND (Command[1] = '-') then + begin + //Remove - from Command + Command := Lowercase(Trim(Copy(Command, 2, Length(Command) - 1))); + //Log.LogError('Command prepared: ' + Command); + + //Check Command + + // Boolean Triggers: + if (Command = 'debug') then + Debug := True + else if (Command = 'benchmark') then + Benchmark := True + else if (Command = 'nolog') then + NoLog := True + else if (Command = 'fullscreen') then + Fullscreen := True + else if (Command = 'joypad') then + Joypad := True + + //Integer Variables + else if (Command = 'depth') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + Command := ParamStr(I + 1); + + //Check for valid Value + If (Command = '16') then + Depth := 0 + Else If (Command = '32') then + Depth := 1; + end; + end + + else if (Command = 'screens') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + Command := ParamStr(I + 1); + + //Check for valid Value + If (Command = '1') then + Screens := 0 + Else If (Command = '2') then + Screens := 1; + end; + end + + //Pseudo Integer Values + else if (Command = 'language') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + //Write Value to String + sLanguage := Lowercase(ParamStr(I + 1)); + end; + end + + else if (Command = 'resolution') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + //Write Value to String + sResolution := Lowercase(ParamStr(I + 1)); + end; + end + + //String Values + else if (Command = 'songpath') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + //Write Value to String + SongPath := ParamStr(I + 1); + end; + end + + else if (Command = 'configfile') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + //Write Value to String + ConfigFile := ParamStr(I + 1); + + //is this a relative PAth -> then add Gamepath + if Not ((Length(ConfigFile) > 2) AND (ConfigFile[2] = ':')) then + ConfigFile := ExtractFilePath(ParamStr(0)) + Configfile; + end; + end + + else if (Command = 'scorefile') then + begin + //Check if there is another Parameter to get the Value from + if (PCount > I) then + begin + //Write Value to String + ScoreFile := ParamStr(I + 1); + end; + end; + + end; + + end; + +{ Log.LogError('Values: '); + + if Debug then + Log.LogError('Debug'); + + if Benchmark then + Log.LogError('Benchmark'); + + if NoLog then + Log.LogError('NoLog'); + + if Fullscreen then + Log.LogError('FullScreen'); + + if JoyStick then + Log.LogError('Joystick'); + + + Log.LogError('Screens: ' + Inttostr(Screens)); + Log.LogError('Depth: ' + Inttostr(Depth)); + + Log.LogError('Resolution: ' + Inttostr(Resolution)); + Log.LogError('Resolution: ' + Inttostr(Language)); + + Log.LogError('sResolution: ' + sResolution); + Log.LogError('sLanguage: ' + sLanguage); + + Log.LogError('ConfigFile: ' + ConfigFile); + Log.LogError('SongPath: ' + SongPath); + Log.LogError('ScoreFile: ' + ScoreFile); } + +end; + +//------------- +// GetLanguage - Get Language ID from saved String Information +//------------- +Function TCMDParams.GetLanguage: Integer; +var + I: integer; +begin + Result := -1; + + //Search for Language + For I := 0 to high(ILanguage) do + if (LowerCase(ILanguage[I]) = sLanguage) then + begin + Result := I; + Break; + end; +end; + +//------------- +// GetResolution - Get Resolution ID from saved String Information +//------------- +Function TCMDParams.GetResolution: Integer; +var + I: integer; +begin + Result := -1; + + //Search for Resolution + For I := 0 to high(IResolution) do + if (LowerCase(IResolution[I]) = sResolution) then + begin + Result := I; + Break; + end; +end; + +end. \ No newline at end of file -- cgit v1.2.3 From a1612bc4ad4ebbfe166ce8006012b6cac4c0abf3 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 9 Jul 2007 16:42:38 +0000 Subject: Fixed Bug in Stat Main: Categorys was counted as Songs git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@283 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenStatMain.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Game/Code/Screens/UScreenStatMain.pas b/Game/Code/Screens/UScreenStatMain.pas index 54457a6e..b3907d41 100644 --- a/Game/Code/Screens/UScreenStatMain.pas +++ b/Game/Code/Screens/UScreenStatMain.pas @@ -170,7 +170,7 @@ begin %2:d Count of UnSung Songs %3:d Count of Songs with Video (A3) %4:s Name of the most popular Song} - A1 := Length(CatSongs.Song); + A1 := Length(Songs.Song); A2 := Database.GetTotalEntrys(2); A3 := SongswithVid; -- cgit v1.2.3 From b97c08964c2f5b8296dda138362cc96752f989c9 Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 9 Jul 2007 21:25:08 +0000 Subject: Theme/Skin: Minor changes on deluxe skin (affected: the two icons, and the songselection1) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@284 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[icon]error.jpg | Bin 819 -> 620 bytes Skins/Deluxe/[icon]question.jpg | Bin 824 -> 663 bytes Skins/Deluxe/[main]songSelection1.jpg | Bin 1818 -> 2219 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[icon]error.jpg b/Skins/Deluxe/[icon]error.jpg index 8abddff9..a5140f0e 100644 Binary files a/Skins/Deluxe/[icon]error.jpg and b/Skins/Deluxe/[icon]error.jpg differ diff --git a/Skins/Deluxe/[icon]question.jpg b/Skins/Deluxe/[icon]question.jpg index 43471452..029172de 100644 Binary files a/Skins/Deluxe/[icon]question.jpg and b/Skins/Deluxe/[icon]question.jpg differ diff --git a/Skins/Deluxe/[main]songSelection1.jpg b/Skins/Deluxe/[main]songSelection1.jpg index e12296be..348737ed 100644 Binary files a/Skins/Deluxe/[main]songSelection1.jpg and b/Skins/Deluxe/[main]songSelection1.jpg differ -- cgit v1.2.3 From 719338c75423adb5f11de70f1afe5eb26c2776ee Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 10 Jul 2007 00:10:52 +0000 Subject: Theme/Skin: Replaced the dx buttons with simpler ones for the classic skin, ugly fugly but they match the style (affected Classic.ibi too) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@285 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/[button]alt.jpg | Bin 3752 -> 892 bytes Skins/Classic/[button]az.jpg | Bin 3784 -> 900 bytes Skins/Classic/[button]e.jpg | Bin 2900 -> 883 bytes Skins/Classic/[button]enter.jpg | Bin 1655 -> 911 bytes Skins/Classic/[button]esc.jpg | Bin 1551 -> 892 bytes Skins/Classic/[button]navi.jpg | Bin 1794 -> 938 bytes Skins/Classic/[button]p.jpg | Bin 2900 -> 884 bytes Themes/Classic.ini | 36 ++++++++++++++++++------------------ 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Skins/Classic/[button]alt.jpg b/Skins/Classic/[button]alt.jpg index 193b8415..ec3e630f 100644 Binary files a/Skins/Classic/[button]alt.jpg and b/Skins/Classic/[button]alt.jpg differ diff --git a/Skins/Classic/[button]az.jpg b/Skins/Classic/[button]az.jpg index d2c80a87..b486604e 100644 Binary files a/Skins/Classic/[button]az.jpg and b/Skins/Classic/[button]az.jpg differ diff --git a/Skins/Classic/[button]e.jpg b/Skins/Classic/[button]e.jpg index c5da3d9e..7b247260 100644 Binary files a/Skins/Classic/[button]e.jpg and b/Skins/Classic/[button]e.jpg differ diff --git a/Skins/Classic/[button]enter.jpg b/Skins/Classic/[button]enter.jpg index 3f6c8feb..16ee885a 100644 Binary files a/Skins/Classic/[button]enter.jpg and b/Skins/Classic/[button]enter.jpg differ diff --git a/Skins/Classic/[button]esc.jpg b/Skins/Classic/[button]esc.jpg index 9f055b6f..7c40487a 100644 Binary files a/Skins/Classic/[button]esc.jpg and b/Skins/Classic/[button]esc.jpg differ diff --git a/Skins/Classic/[button]navi.jpg b/Skins/Classic/[button]navi.jpg index 5640cac1..41b44525 100644 Binary files a/Skins/Classic/[button]navi.jpg and b/Skins/Classic/[button]navi.jpg differ diff --git a/Skins/Classic/[button]p.jpg b/Skins/Classic/[button]p.jpg index c5da3d9e..d2d60c02 100644 Binary files a/Skins/Classic/[button]p.jpg and b/Skins/Classic/[button]p.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 757d7c03..d9f1c0f2 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -131,7 +131,7 @@ TexY2=1 Tex =ButtonNavi X =190 Y =574 -W =30 +W =22 H =22 Color =White Type=Plain @@ -144,7 +144,7 @@ TexY2=1 Tex =ButtonEnter X =350 Y =574 -W =26 +W =22 H =22 Color =White Type=Plain @@ -2422,7 +2422,7 @@ Tex=OptionsBG [OptionsGameStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -2607,7 +2607,7 @@ Tex=OptionsBG [OptionsGraphicsStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -2771,7 +2771,7 @@ Tex=OptionsBG [OptionsSoundStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -2975,7 +2975,7 @@ Tex=OptionsBG [OptionsLyricsStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -3099,7 +3099,7 @@ Tex=OptionsBG [OptionsThemesStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -3223,7 +3223,7 @@ Tex=OptionsBG [OptionsRecordStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -3371,7 +3371,7 @@ Tex=OptionsBG [OptionsAdvancedStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -4092,7 +4092,7 @@ Tex=PartyBG [PartyOptionsStatic1] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -4102,7 +4102,7 @@ Style=5 [PartyOptionsStatic2] X =388 Y =553 -W =26 +W =22 H =22 Tex=ButtonEnter Color =White @@ -4345,7 +4345,7 @@ Type=Font Black [PartyPlayerStatic4] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -4355,7 +4355,7 @@ Style=5 [PartyPlayerStatic5] X =388 Y =553 -W =26 +W =22 H =22 Tex=ButtonAZ Color =White @@ -4365,7 +4365,7 @@ Style=5 [PartyPlayerStatic6] X =556 Y =553 -W =26 +W =22 H =22 Tex=ButtonEnter Color =White @@ -5044,7 +5044,7 @@ Type=Font Black [StatMainStatic2] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -5330,7 +5330,7 @@ Type=Font Black [StatDetailStatic2] X =260 Y =553 -W =30 +W =22 H =22 Tex=ButtonNavi Color =White @@ -5506,8 +5506,8 @@ Statics=1 [ErrorPopupButton1] X = 366 Y = 342 -W = 27 -H = 23 +W =22 +H =22 Tex =ButtonEnter Color = White DColor = White -- cgit v1.2.3 From 36187ab53f7dcda0b68bd86b04f43f6b6a01e1e5 Mon Sep 17 00:00:00 2001 From: mogguh Date: Tue, 10 Jul 2007 08:59:22 +0000 Subject: Theme/Skin: Two more ugly buttons for the classic skin ([1..3] and [j]) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@286 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/[button]13.jpg | Bin 0 -> 893 bytes Skins/Classic/[button]j.jpg | Bin 0 -> 880 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Classic/[button]13.jpg create mode 100644 Skins/Classic/[button]j.jpg diff --git a/Skins/Classic/[button]13.jpg b/Skins/Classic/[button]13.jpg new file mode 100644 index 00000000..5787bb24 Binary files /dev/null and b/Skins/Classic/[button]13.jpg differ diff --git a/Skins/Classic/[button]j.jpg b/Skins/Classic/[button]j.jpg new file mode 100644 index 00000000..b6eed56c Binary files /dev/null and b/Skins/Classic/[button]j.jpg differ -- cgit v1.2.3 -- cgit v1.2.3 From 14d96cbdfc03c018fe32f2d04338842ad0864f38 Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 11 Jul 2007 21:33:20 +0000 Subject: DX Theme/Skin: Covers in SongSelection are now in the middle, thanks eBandit! (affected: Deluxe.ini) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@292 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index ecd807a2..9fbcfa63 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -319,7 +319,7 @@ Texts =3 Tex=SongBG [SongCover] -X=252 +X=303 Y=125 W=320 H=190 @@ -331,7 +331,7 @@ Visible=1 Direction=1 Color=White Alpha=1 -X=205 +X=255 Y=514 Z=1 PieceW=6 @@ -341,7 +341,7 @@ Bands=6 Length=18 [SongVideoIcon] -X =249 +X =299 Y =487 W =32 H =32 @@ -373,7 +373,7 @@ Reflection=1 ReflectionSpacing=1 [SongStatic3] -X =200 +X =250 Y =120 W =300 H =200 @@ -382,7 +382,7 @@ Tex =SongSelection1 Type=Font Black [SongStatic4] -X =248 +X =298 Y =320 W =200 H =200 @@ -401,7 +401,7 @@ Align =0 Text=SING_SONG_SELECTION_DESC [SongTextArtist] -X =350 +X =400 Y =320 W = 190 Color=White @@ -411,7 +411,7 @@ Align =1 Text= [SongTextTitle] -X =350 +X =400 Y =380 W = 190 Color=White @@ -421,7 +421,7 @@ Align =1 Text= [SongTextNumber] -X =440 +X =490 Y =495 Color=White Font =0 -- cgit v1.2.3 From bd781a2b47f8f170c1c0d978c4715ed01b814f3d Mon Sep 17 00:00:00 2001 From: mogguh Date: Thu, 12 Jul 2007 01:36:56 +0000 Subject: DX Theme/Skin: More stuff in the middle now thanks eBandit!! gn8 gabari :P git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@293 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 106 +++++++++++++++++++++++++++--------------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 9fbcfa63..eee98014 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -654,7 +654,7 @@ Text=PARTY_SONG_LEGEND_CONTINUE # Jokers, 5 for each team, only shown in party Mode [SongStaticTeam1Joker1] Tex =Joker -X =480 +X =530 Y =400 W =40 H =40 @@ -667,7 +667,7 @@ TexY2=1 [SongStaticTeam1Joker2] Tex =Joker -X =530 +X =580 Y =400 W =40 H =40 @@ -680,7 +680,7 @@ TexY2=1 [SongStaticTeam1Joker3] Tex =Joker -X =580 +X =630 Y =400 W =40 H =40 @@ -693,7 +693,7 @@ TexY2=1 [SongStaticTeam1Joker4] Tex =Joker -X =630 +X =680 Y =400 W =40 H =40 @@ -706,7 +706,7 @@ TexY2=1 [SongStaticTeam1Joker5] Tex =Joker -X =680 +X =730 Y =400 W =40 H =40 @@ -719,7 +719,7 @@ TexY2=1 [SongStaticTeam2Joker1] Tex =Joker -X =480 +X =530 Y =450 W =40 H =40 @@ -732,7 +732,7 @@ TexY2=1 [SongStaticTeam2Joker2] Tex =Joker -X =530 +X =580 Y =450 W =40 H =40 @@ -745,7 +745,7 @@ TexY2=1 [SongStaticTeam2Joker3] Tex =Joker -X =580 +X =630 Y =450 W =40 H =40 @@ -758,7 +758,7 @@ TexY2=1 [SongStaticTeam2Joker4] Tex =Joker -X =630 +X =680 Y =450 W =40 H =40 @@ -771,7 +771,7 @@ TexY2=1 [SongStaticTeam2Joker5] Tex =Joker -X =680 +X =730 Y =450 W =40 H =40 @@ -784,7 +784,7 @@ TexY2=1 [SongStaticTeam3Joker1] Tex =Joker -X =480 +X =530 Y =500 W =40 H =40 @@ -797,7 +797,7 @@ TexY2=1 [SongStaticTeam3Joker2] Tex =Joker -X =530 +X =580 Y =500 W =40 H =40 @@ -810,7 +810,7 @@ TexY2=1 [SongStaticTeam3Joker3] Tex =Joker -X =580 +X =630 Y =500 W =40 H =40 @@ -823,7 +823,7 @@ TexY2=1 [SongStaticTeam3Joker4] Tex =Joker -X =630 +X =680 Y =500 W =40 H =40 @@ -836,7 +836,7 @@ TexY2=1 [SongStaticTeam3Joker5] Tex =Joker -X =680 +X =730 Y =500 W =40 H =40 @@ -1253,7 +1253,7 @@ Text=SING_LEGEND_CONTINUE # # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # [ScoreTextName1] -X =150 +X =175 Y =260 Font =0 Size =14 @@ -1262,7 +1262,7 @@ Color =White Align=0 [ScoreTextScore1] -X =150 +X =175 Y =430 Color=White Font =1 @@ -1271,7 +1271,7 @@ Text =Tone Deaf Align=0 [ScoreTextNotes1] -X =150 +X =175 Y =340 Color=White Font =0 @@ -1280,7 +1280,7 @@ Text=SING_NOTES Align=0 [ScoreTextNotesScore1] -X =440 +X =465 Y =340 Color=White Font =0 @@ -1289,7 +1289,7 @@ Align =2 Text =0 [ScoreTextLineBonus1] -X =150 +X =175 Y =370 Color=White Font =0 @@ -1298,7 +1298,7 @@ Text =SING_PHRASE_BONUS Align=0 [ScoreTextLineBonusScore1] -X =440 +X =465 Y =370 Color=White Font =0 @@ -1307,7 +1307,7 @@ Align =2 Text =0 [ScoreTextGoldenNotes1] -X =150 +X =175 Y =400 Color=White Font =0 @@ -1316,7 +1316,7 @@ Text =SING_GOLDEN_NOTES Align=0 [ScoreTextGoldenNotesScore1] -X =440 +X =465 Y =400 Color=White Font =0 @@ -1325,7 +1325,7 @@ Align =2 Text =0 [ScoreTextTotal1] -X =180 +X =205 Y =460 Color=White Font =0 @@ -1334,7 +1334,7 @@ Text=SING_TOTAL Align=0 [ScoreTextTotalSCore1] -X =440 +X =465 Y =460 Color=White Font =0 @@ -1345,7 +1345,7 @@ Text =0 #Lines [ScorePlayer1Static1] Tex =ScoreLine -X =148 +X =173 Y =338 W =295 H =2 @@ -1354,7 +1354,7 @@ Type =Font Black [ScorePlayer1Static2] Tex =ScoreLine -X =148 +X =173 Y =368 W =295 H =2 @@ -1363,7 +1363,7 @@ Type =Font Black [ScorePlayer1Static3] Tex =ScoreLine -X =148 +X =173 Y =398 W =295 H =2 @@ -1372,7 +1372,7 @@ Type =Font Black [ScorePlayer1Static4] Tex =ScoreLine -X =148 +X =173 Y =428 W =295 H =2 @@ -1381,7 +1381,7 @@ Type =Font Black [ScorePlayer1Static5] Tex =ScoreLine -X =148 +X =173 Y =458 W =295 H =4 @@ -1390,7 +1390,7 @@ Color =White [ScoreStaticBoxDark1] Tex =PlayerNumberBox -X =150 +X =175 Y =467 W =25 H =25 @@ -1405,7 +1405,7 @@ Reflection=1 ReflectionSpacing=4 [ScorePlayer1Text1] -X =154 +X =179 Y =472 W =30 H =30 @@ -1419,7 +1419,7 @@ Text=P1 #ScoreBar [ScoreStaticBackLevel1] Tex =ScoreLevel -X =450 +X =475 Y =160 W =150 H =300 @@ -1432,7 +1432,7 @@ TexY2=0.9 [ScoreStaticBackLevelRound1] Tex =ScoreLevelRound -X =450 +X =475 Y =130 W =150 H =30 @@ -1445,7 +1445,7 @@ TexY2=0.5 [ScoreStaticLevel1] Tex =ScoreLevel -X =450 +X =475 Y =410 W =150 H =30 @@ -1458,7 +1458,7 @@ TexY2=0.9 [ScoreStaticLevelRound1] Tex =ScoreLevelRound -X =450 +X =475 Y =380 W =150 H =30 @@ -1471,7 +1471,7 @@ TexY2=1 [ScorePlayer1Static6] Tex =ScoreEndCap -X =469 +X =494 Y =460 W =112 H =30 @@ -1486,7 +1486,7 @@ ReflectionSpacing=4 [ScorePlayer1Static7] Tex =ScoreLine -X =468 +X =493 Y =460 W =114 H =2 @@ -7021,7 +7021,7 @@ Texts=0 Statics=1 [SongMenuButton1] -X = 460 +X = 510 Y = 165 W = 270 H = 25 @@ -7044,7 +7044,7 @@ Align=0 Z=0.99 [SongMenuButton2] -X = 460 +X = 510 Y = 195 W = 270 H = 25 @@ -7067,7 +7067,7 @@ Align=0 Z=0.99 [SongMenuButton3] -X = 460 +X = 510 Y = 225 W = 270 H = 25 @@ -7090,7 +7090,7 @@ Align=0 Z=0.99 [SongMenuButton4] -X = 460 +X = 510 Y = 255 W = 270 H = 25 @@ -7115,7 +7115,7 @@ Z=0.99 Tex = Rectangle TexSBG = SongMenuSelectBG Text = -X = 460 +X = 510 Y = 225 W = 0 H = 25 @@ -7136,7 +7136,7 @@ STColor = White STDColor = GrayDark [SongMenuTextMenu] -X =489 +X =539 Y =125 Color=White Font =0 @@ -7146,7 +7146,7 @@ Align=0 Z=0.99 [SongMenuStatic2] -X =463 +X =513 Y =135 W =21 H =21 @@ -7157,7 +7157,7 @@ Z=0.98 [SongMenuStatic1] Tex =SongMenuBG -X =448 +X =498 Y =120 W =300 H =200 @@ -7172,7 +7172,7 @@ Statics=1 [SongJumptoStatic1] Tex =JumpToBG -X =171 +X =221 Y =175 W =355 H =175 @@ -7182,7 +7182,7 @@ Color =DarkBlue Type=Font Black [SongJumptoStatic2] -X =184 +X =234 Y =185 W =21 H =21 @@ -7192,7 +7192,7 @@ Type=Font Black Z=0.99 [SongJumptoText1] -X =210 +X =310 Y =175 Color=White Font =0 @@ -7206,7 +7206,7 @@ Tex = button TexSBG = mainicon #Text = SONG_JUMPTO_TYPE_DESC Font=1 -X = 192 +X = 242 Y = 205 Z = 0.99 W = 0 @@ -7223,7 +7223,7 @@ STColor = White STDColor = LightBlue [SongJumptoButtonSearchText] -X = 200 +X = 250 Y = 215 Z = 0.99 W = 160 @@ -7233,7 +7233,7 @@ Font=1 Align=0 [SongJumptoTextFound] -X =184 +X =234 Y =295 Color=White Font =0 @@ -7921,7 +7921,7 @@ Align=1 Z=1 [ErrorPopupText] -X =400 +X =450 Y =180 W =280 Color=White -- cgit v1.2.3 From 9471a308f070043e5da08e81235ebae0045be2bf Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 12 Jul 2007 09:25:54 +0000 Subject: Added complete Dutch language file to SVN Removed incomplete language files git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@294 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Catalan.ini | 85 ----------------------------------------------- Languages/Croatian.ini | 72 --------------------------------------- Languages/Czech.ini | 83 --------------------------------------------- Languages/Dutch.ini | Bin 5142 -> 9194 bytes Languages/Finnish.ini | 71 --------------------------------------- Languages/French.ini | 70 -------------------------------------- Languages/Galego.ini | 72 --------------------------------------- Languages/Italian.ini | 85 ----------------------------------------------- Languages/Lithuanian.ini | Bin 5274 -> 0 bytes Languages/Polish.ini | 83 --------------------------------------------- Languages/Portuguese.ini | 70 -------------------------------------- Languages/Spanish.ini | 79 ------------------------------------------- Languages/Swedish.ini | 70 -------------------------------------- Languages/Turkish.ini | 69 -------------------------------------- 14 files changed, 909 deletions(-) delete mode 100644 Languages/Catalan.ini delete mode 100644 Languages/Croatian.ini delete mode 100644 Languages/Czech.ini delete mode 100644 Languages/Finnish.ini delete mode 100644 Languages/French.ini delete mode 100644 Languages/Galego.ini delete mode 100644 Languages/Italian.ini delete mode 100644 Languages/Lithuanian.ini delete mode 100644 Languages/Polish.ini delete mode 100644 Languages/Portuguese.ini delete mode 100644 Languages/Spanish.ini delete mode 100644 Languages/Swedish.ini delete mode 100644 Languages/Turkish.ini diff --git a/Languages/Catalan.ini b/Languages/Catalan.ini deleted file mode 100644 index 38b692fd..00000000 --- a/Languages/Catalan.ini +++ /dev/null @@ -1,85 +0,0 @@ -[Text] -SING_LOADING=Carregant... -SING_SING=cantar -SING_SING_DESC=joc ràpid: cantar un solo o un duet -SING_EDITOR=editor -SING_EDITOR_DESC=crea les teves propies cançons -SING_EXIT_DESC=sortir del joc - -SING_OPTIONS_GAME=joc -SING_OPTIONS_GRAPHICS=gràfics -SING_OPTIONS_SOUND=so -SING_OPTIONS_LYRICS=lletres -SING_OPTIONS_THEMES=temes -SING_OPTIONS_RECORD=gravar -SING_OPTIONS_NETWORK=xarxa -SING_OPTIONS_EXIT=sortir - -SING_OPTIONS_GAME_DESC=opcions del joc -SING_OPTIONS_GAME_PLAYERS=Jugadors -SING_OPTIONS_GAME_DIFFICULTY=Dificultat -SING_OPTIONS_GAME_LANGUAGE=Idioma -SING_OPTIONS_GAME_TABS=Pestanyes -SING_OPTIONS_GAME_SORTING=Ordre -SING_OPTIONS_GAME_DEBUG=Depurar - -SING_OPTIONS_GRAPHICS_DESC=opcions gràfiques -SING_OPTIONS_GRAPHICS_RESOLUTION=Ressolució -SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa -SING_OPTIONS_GRAPHICS_DEPTH=Profunditat -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscil·loscopi -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Mida del vídeo - -SING_OPTIONS_SOUND_DESC=opcions de so -SING_OPTIONS_SOUND_MIC_BOOST=Potenciar el Micro -SING_OPTIONS_SOUND_CLICK_ASSIST=Asistent de Notes -SING_OPTIONS_SOUND_BEAT_CLICK=Asistent de Ritme -SING_OPTIONS_SOUND_THRESHOLD=Llindar -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode 2 jugadors - -SING_OPTIONS_LYRICS_DESC=opcions de les lletres -SING_OPTIONS_LYRICS_FONT=Font -SING_OPTIONS_LYRICS_EFFECT=Efecte -SING_OPTIONS_LYRICS_SOLMIZATION=Solfa - -SING_OPTIONS_THEMES_DESC=opcions de temes -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_SKIN=Pell -SING_OPTIONS_THEMES_COLOR=Color - -SING_OPTIONS_RECORD_DESC=opcions de gravació -SING_OPTIONS_RECORD_CARD=Tarja de So -SING_OPTIONS_RECORD_INPUT=Entrada -SING_OPTIONS_RECORD_CHANNELL=Canal esquerra -SING_OPTIONS_RECORD_CHANNELR=Canal dret - -SING_OPTIONS_NETWORK_DESC=opcions de xarxa -SING_OPTIONS_NETWORK_VERSIONCHECK=Comprovar versió -SING_OPTIONS_NETWORK_SENDVERSION=Enviar versió -SING_OPTIONS_NETWORK_USEANONYMOUS=Validació anònima - - - -SING_CHOOSE_MODE=Triar mode -SING_GAME_OPTIONS=opcions de joc -SING_GAME_OPTIONS_DESC=canviar preferències de joc -SING_LEGEND_SELECT=SELECCIONAR -SING_LEGEND_NAVIGATE=NAVEGAR -SING_OPTIONS=opcions -SING_DIFFICULTY=seleccionar dificultat -SING_EASY=fàcil -SING_MEDIUM=mitja -SING_HARD=difícil -SING_TIME=TEMPS -SING_TOTAL=total -SING_SONG_SELECTION=selecció de cançó -SING_CHOOSE_SONG=triar una cançó -SING_SING_MODE=cantar un solo -SING_NOTES=notes -SING_GOLDEN_NOTES=notes daurades -SING_PHRASE_BONUS=bonus de línia -SING_EXIT=sortir -SING_TOP_5_CHARTS=llista dels 5 millors -SING_ENTER_PLAYER_NAME=Introdueix el nom del jugador - - diff --git a/Languages/Croatian.ini b/Languages/Croatian.ini deleted file mode 100644 index abcb1863..00000000 --- a/Languages/Croatian.ini +++ /dev/null @@ -1,72 +0,0 @@ -[Text] -SING_LOADING=Molim prièekajte... -SING_SING=pjevaj -SING_SING_DESC=brza igra: pjevaj solo ili duet -SING_EDITOR=ureðivac -SING_EDITOR_DESC=napravi sam svoju pjesmu -SING_EXIT_DESC=izaði iz igre - -SING_OPTIONS_GAME=igra -SING_OPTIONS_GRAPHICS=grafika -SING_OPTIONS_SOUND=zvuk -SING_OPTIONS_LYRICS=tekst -SING_OPTIONS_THEMES=tema -SING_OPTIONS_EXIT=izaði - -SING_OPTIONS_GAME_DESC=opcije igre -SING_OPTIONS_GAME_PLAYERS=Igraèi -SING_OPTIONS_GAME_DIFFICULTY=Težina -SING_OPTIONS_GAME_LANGUAGE=Jezik -SING_OPTIONS_GAME_TABS=Tabulature -SING_OPTIONS_GAME_SORTING=Sortirati -SING_OPTIONS_GAME_DEBUG=Bez grešaka - -SING_OPTIONS_GRAPHICS_DESC=grafièke opcije -SING_OPTIONS_GRAPHICS_RESOLUTION=Rezolucija -SING_OPTIONS_GRAPHICS_FULLSCREEN=Cijeli ekran -SING_OPTIONS_GRAPHICS_DEPTH=Dubina -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velièina filma - -SING_OPTIONS_SOUND_DESC=opcije zvuka -SING_OPTIONS_SOUND_MIC_BOOST=Pojaèavanje mikrofona -SING_OPTIONS_SOUND_CLICK_ASSIST=Klik pomoc -SING_OPTIONS_SOUND_BEAT_CLICK=Udarac pomoc -SING_OPTIONS_SOUND_THRESHOLD=Prag -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Dva igraèa mod - -SING_OPTIONS_LYRICS_DESC=tekst opcije -SING_OPTIONS_LYRICS_FONT=Vrsta pisanja -SING_OPTIONS_LYRICS_EFFECT=Efekat -SING_OPTIONS_LYRICS_SOLMIZATION=Solmizacija - -SING_OPTIONS_THEMES_DESC=opcije teme -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_SKIN=Skin -SING_OPTIONS_THEMES_COLOR=Boja - - - -SING_CHOOSE_MODE=odabir naèina -SING_GAME_OPTIONS=opcije igre -SING_GAME_OPTIONS_DESC=promjena postavki igre -SING_LEGEND_SELECT=ODABIR -SING_LEGEND_BACK=NATRAG -SING_LEGEND_NAVIGATE=KRETANJE -SING_OPTIONS=opcije -SING_DIFFICULTY=odaberite razinu težine -SING_EASY=lako -SING_MEDIUM=srednje -SING_HARD=teško -SING_TIME=VRIJEME -SING_COLON=: -SING_TOTAL=ukupno -SING_SONG_SELECTION=odabir pjesme -SING_CHOOSE_SONG=odaberite pjesmu -SING_SING_MODE=solo pjevanje -SING_NOTES=note -SING_GOLDEN_NOTES=zlatne note -SING_PHRASE_BONUS=toèan pojam -SING_EXIT=izlaz -SING_TOP_5_CHARTS=popis 5 najboljih -SING_ENTER_PLAYER_NAME=upišite ime igraèa diff --git a/Languages/Czech.ini b/Languages/Czech.ini deleted file mode 100644 index 4458dc67..00000000 --- a/Languages/Czech.ini +++ /dev/null @@ -1,83 +0,0 @@ -[Text] -SING_LOADING=Naèítám... -SING_SING=zpívat -SING_SING_DESC=rychlá hra: zpívat sólo nebo duet -SING_EDITOR=editor -SING_EDITOR_DESC=vytvoøit vlastní písnì -SING_EXIT_DESC=ukonèit hru - -SING_OPTIONS_GAME=hra -SING_OPTIONS_GRAPHICS=grafika -SING_OPTIONS_SOUND=zvuk -SING_OPTIONS_LYRICS=slova -SING_OPTIONS_THEMES=témata -SING_OPTIONS_RECORD=záznam -SING_OPTIONS_NETWORK=sí -SING_OPTIONS_EXIT=zpìt - -SING_OPTIONS_GAME_DESC=nastavení hry -SING_OPTIONS_GAME_PLAYERS=Hráèi -SING_OPTIONS_GAME_DIFFICULTY=Obtížnost -SING_OPTIONS_GAME_LANGUAGE=Jazyk -SING_OPTIONS_GAME_TABS=Skupiny -SING_OPTIONS_GAME_SORTING=Øazení -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=nastavení grafiky -SING_OPTIONS_GRAPHICS_RESOLUTION=Rozlišení -SING_OPTIONS_GRAPHICS_FULLSCREEN=Celá obrazovka -SING_OPTIONS_GRAPHICS_DEPTH=Hloubka -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velikost videa - -SING_OPTIONS_SOUND_DESC=nastavení zvuku -SING_OPTIONS_SOUND_MIC_BOOST=Zesílení mikrofonu -SING_OPTIONS_SOUND_CLICK_ASSIST=Pomocný klik -SING_OPTIONS_SOUND_BEAT_CLICK=Pravidelný klik -SING_OPTIONS_SOUND_THRESHOLD=Práh slyšitelnosti -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mód dvou hráèù - -SING_OPTIONS_LYRICS_DESC=nastavení slov -SING_OPTIONS_LYRICS_FONT=Písmo -SING_OPTIONS_LYRICS_EFFECT=Efekt -SING_OPTIONS_LYRICS_SOLMIZATION=Solmizace - -SING_OPTIONS_THEMES_DESC=nastavení témat -SING_OPTIONS_THEMES_THEME=Téma -SING_OPTIONS_THEMES_SKIN=Skin -SING_OPTIONS_THEMES_COLOR=Barva - -SING_OPTIONS_RECORD_DESC=nastavení záznamu -SING_OPTIONS_RECORD_CARD=Zvuková karta -SING_OPTIONS_RECORD_INPUT=Vstup -SING_OPTIONS_RECORD_CHANNELL=Levý kanál -SING_OPTIONS_RECORD_CHANNELR=Pravý kanál - -SING_OPTIONS_NETWORK_DESC=nastavení sítì -SING_OPTIONS_NETWORK_VERSIONCHECK=Zkontrolovat verzi -SING_OPTIONS_NETWORK_SENDVERSION=Zaslat verzi -SING_OPTIONS_NETWORK_USEANONYMOUS=Anonymní pøihlášení - - - -SING_CHOOSE_MODE=vyberte mód -SING_GAME_OPTIONS=nastavení -SING_GAME_OPTIONS_DESC=zmìnit nastavení -SING_LEGEND_SELECT=VÝBÌR -SING_LEGEND_NAVIGATE=NAVIGACE -SING_OPTIONS=nastavení -SING_DIFFICULTY=vyberte obtížnost -SING_EASY=lehká -SING_MEDIUM=støední -SING_HARD=tìžká -SING_TIME=ÈAS -SING_TOTAL=celkem -SING_SONG_SELECTION=výbìr písnì -SING_CHOOSE_SONG=vyberte píseò -SING_SING_MODE=zpívat -SING_NOTES=noty -SING_GOLDEN_NOTES=zlaté noty -SING_PHRASE_BONUS=øádky -SING_EXIT=konec -SING_TOP_5_CHARTS=5 nejlepších -SING_ENTER_PLAYER_NAME=zadejte jméno hráèe diff --git a/Languages/Dutch.ini b/Languages/Dutch.ini index df4b0b21..1724751a 100644 Binary files a/Languages/Dutch.ini and b/Languages/Dutch.ini differ diff --git a/Languages/Finnish.ini b/Languages/Finnish.ini deleted file mode 100644 index f0380be5..00000000 --- a/Languages/Finnish.ini +++ /dev/null @@ -1,71 +0,0 @@ -[Text] -SING_LOADING=Ladataan... -SING_SING=Laula -SING_SING_DESC=Pikapeli: Laula yksin tai duettona -SING_EDITOR=Editori -SING_EDITOR_DESC=Tee oma laulu -SING_EXIT_DESC=Poistu - -SING_OPTIONS_GAME=Peli -SING_OPTIONS_GRAPHICS=Grafiikka -SING_OPTIONS_SOUND=Äänet -SING_OPTIONS_LYRICS=Sanat -SING_OPTIONS_THEMES=Teemat -SING_OPTIONS_EXIT=Poistu - -SING_OPTIONS_GAME_DESC=Peliasetukset -SING_OPTIONS_GAME_PLAYERS=Pelaajat -SING_OPTIONS_GAME_DIFFICULTY=Vaikeustaso -SING_OPTIONS_GAME_LANGUAGE=Kieli -SING_OPTIONS_GAME_TABS=Tabit -SING_OPTIONS_GAME_SORTING=Järjestely -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=Grafiikka asetukset -SING_OPTIONS_GRAPHICS_RESOLUTION=Resoluutio -SING_OPTIONS_GRAPHICS_FULLSCREEN=Koko näyttö -SING_OPTIONS_GRAPHICS_DEPTH=Värit -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oskiloskooppi -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videon koko - -SING_OPTIONS_SOUND_DESC=Ääni asetukset -SING_OPTIONS_SOUND_MIC_BOOST=Mikki boostaus -SING_OPTIONS_SOUND_CLICK_ASSIST=Tahtiapuri -SING_OPTIONS_SOUND_BEAT_CLICK=Tahdin lyönti -SING_OPTIONS_SOUND_THRESHOLD=Kynnysarvo -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Kaksinpeli - -SING_OPTIONS_LYRICS_DESC=Sanojen asetukset -SING_OPTIONS_LYRICS_FONT=Fontti -SING_OPTIONS_LYRICS_EFFECT=Efekti -SING_OPTIONS_LYRICS_SOLMIZATION=Solmisaatio - -SING_OPTIONS_THEMES_DESC=Teema asetukset -SING_OPTIONS_THEMES_THEME=Teema -SING_OPTIONS_THEMES_SKIN=Ulkoasu -SING_OPTIONS_THEMES_COLOR=Väri - - - -SING_CHOOSE_MODE=Valitse pelityyppi -SING_GAME_OPTIONS=Peli Asetukset -SING_GAME_OPTIONS_DESC=Muuta asetuksia -SING_LEGEND_SELECT=Valitse -SING_LEGEND_NAVIGATE=Liiku -SING_OPTIONS=Asetukset -SING_DIFFICULTY=Valitse vaikeustaso -SING_EASY=Helppo -SING_MEDIUM=Keskivaikea -SING_HARD=Vaikea -SING_TIME=Aika -SING_TOTAL=Pisteet -SING_SONG_SELECTION=Kappaleen valinta -SING_CHOOSE_SONG=Valitse kappale -SING_SING_MODE=Soolo -SING_NOTES=Nuotit -SING_GOLDEN_NOTES=Kultaiset nuotit -SING_PHRASE_BONUS=Bonus -SING_EXIT=Poistu -EVENT_NOISE_DETECT Kohinanvaimennus.(0=on,3=off) -SING_TOP_5_CHARTS=Top 5 -SING_ENTER_PLAYER_NAME=Pelaaja diff --git a/Languages/French.ini b/Languages/French.ini deleted file mode 100644 index ab3437d5..00000000 --- a/Languages/French.ini +++ /dev/null @@ -1,70 +0,0 @@ -[Text] -SING_LOADING=Chargement... -SING_SING=Chanter -SING_SING_DESC=Partie rapide: en solo ou en duo -SING_EDITOR=Editer -SING_EDITOR_DESC=Créer ses chansons -SING_EXIT_DESC=Sortir du jeu - -SING_OPTIONS_GAME=jeu -SING_OPTIONS_GRAPHICS=video -SING_OPTIONS_SOUND=audio -SING_OPTIONS_LYRICS=paroles -SING_OPTIONS_THEMES=themes -SING_OPTIONS_EXIT=retour - -SING_OPTIONS_GAME_DESC=options de jeu -SING_OPTIONS_GAME_PLAYERS=Joueurs -SING_OPTIONS_GAME_DIFFICULTY=Difficulté -SING_OPTIONS_GAME_LANGUAGE=Langage -SING_OPTIONS_GAME_TABS=Tabs -SING_OPTIONS_GAME_SORTING=Trier par -SING_OPTIONS_GAME_DEBUG=Débogage - -SING_OPTIONS_GRAPHICS_DESC=configuration video -SING_OPTIONS_GRAPHICS_RESOLUTION=Résolution -SING_OPTIONS_GRAPHICS_FULLSCREEN=Plein ecran -SING_OPTIONS_GRAPHICS_DEPTH=Profondeur -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Taille de la video - -SING_OPTIONS_SOUND_DESC=configuration audio -SING_OPTIONS_SOUND_MIC_BOOST=Amplification Mic -SING_OPTIONS_SOUND_CLICK_ASSIST=Aide aux notes -SING_OPTIONS_SOUND_BEAT_CLICK=Métronome -SING_OPTIONS_SOUND_THRESHOLD=Sensibilité sonore -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode 2 joueurs - -SING_OPTIONS_LYRICS_DESC=gestion des paroles -SING_OPTIONS_LYRICS_FONT=Police -SING_OPTIONS_LYRICS_EFFECT=Effet -SING_OPTIONS_LYRICS_SOLMIZATION=Mise en gamme - -SING_OPTIONS_THEMES_DESC=gestion des themes -SING_OPTIONS_THEMES_THEME=Theme -SING_OPTIONS_THEMES_SKIN=Skin -SING_OPTIONS_THEMES_COLOR=Couleur - - - -SING_CHOOSE_MODE=choisir mode -SING_GAME_OPTIONS=chante en solo -SING_GAME_OPTIONS_DESC=change les parametres de jeu -SING_LEGEND_SELECT=CHOISIR -SING_LEGEND_NAVIGATE=NAVIGUER -SING_OPTIONS=options -SING_DIFFICULTY=choisir la difficulté -SING_EASY=facile -SING_MEDIUM=moyenne -SING_HARD=difficile -SING_TIME=TEMPS -SING_TOTAL=total -SING_SONG_SELECTION=sélection chanson -SING_CHOOSE_SONG=choisis ta chanson -SING_SING_MODE=chante en solo -SING_NOTES=notes -SING_GOLDEN_NOTES=notes en or -SING_PHRASE_BONUS=ligne bonus -SING_EXIT=quitter -SING_TOP_5_CHARTS=les 5 meilleurs du hit-parade -SING_ENTER_PLAYER_NAME=entrer nom de joueur diff --git a/Languages/Galego.ini b/Languages/Galego.ini deleted file mode 100644 index e20072f8..00000000 --- a/Languages/Galego.ini +++ /dev/null @@ -1,72 +0,0 @@ -[Text] -SING_LOADING=Iniciandose... -SING_SING=Cantar -SING_SING_DESC=Cantar un só ou dueto -SING_EDITOR=Editor -SING_EDITOR_DESC=Crea as tuas propias cancións -SING_EXIT_DESC=Sair do xogo - -SING_OPTIONS_GAME=Xogo -SING_OPTIONS_GRAPHICS=Graficos -SING_OPTIONS_SOUND=Son -SING_OPTIONS_LYRICS=Letras -SING_OPTIONS_THEMES=Temas -SING_OPTIONS_EXIT=Volver - -SING_OPTIONS_GAME_DESC=Opcións do Xogo -SING_OPTIONS_GAME_PLAYERS=Xogadores -SING_OPTIONS_GAME_DIFFICULTY=Dificultade -SING_OPTIONS_GAME_LANGUAGE=Lingua -SING_OPTIONS_GAME_TABS=Tabs -SING_OPTIONS_GAME_SORTING=Ordear -SING_OPTIONS_GAME_DEBUG=Debugger - -SING_OPTIONS_GRAPHICS_DESC=Opcións dos graficos -SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución -SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla compreta -SING_OPTIONS_GRAPHICS_DEPTH=Profundidade -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño do video - -SING_OPTIONS_SOUND_DESC=Opcións do son -SING_OPTIONS_SOUND_MIC_BOOST=Potenciar Micro -SING_OPTIONS_SOUND_CLICK_ASSIST=Asistente Notas -SING_OPTIONS_SOUND_BEAT_CLICK=Asistente golpes -SING_OPTIONS_SOUND_THRESHOLD=Threshold -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo 2 Xogadores - -SING_OPTIONS_LYRICS_DESC=Opcións das letras -SING_OPTIONS_LYRICS_FONT=Fonte -SING_OPTIONS_LYRICS_EFFECT=Efecto -SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo - -SING_OPTIONS_THEMES_DESC=Opcións dos temas -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_SKIN=Pel -SING_OPTIONS_THEMES_COLOR=Cor - - - -SING_CHOOSE_MODE=Elexir modo -SING_GAME_OPTIONS=Opcións do juego -SING_GAME_OPTIONS_DESC=Modifica a configuración do xogo -SING_LEGEND_SELECT=SELECCIONAR -SING_LEGEND_NAVIGATE=DESPLAZARSE -SING_OPTIONS=Opcións -SING_DIFFICULTY=Seleccionar dificultade -SING_EASY=Facil -SING_MEDIUM=Media -SING_HARD=Dificil -SING_TIME=TEMPO -SING_TOTAL=total -SING_SONG_SELECTION=selección da canción -SING_CHOOSE_SONG=elixe unha canción -SING_SING_MODE=cantar un só -SING_NOTES=notas -SING_GOLDEN_NOTES=notas douradas -SING_PHRASE_BONUS=bonus da línea -SING_EXIT=sair -EVENT_NOISE_DETECT Detec. rudio (0=sí,3=no) -SING_TOP_5_CHARTS=lista dos 5 mellores -SING_ENTER_PLAYER_NAME=introducir nome do xogador -SONG_SCORE=Puntuación diff --git a/Languages/Italian.ini b/Languages/Italian.ini deleted file mode 100644 index 6a93e3f4..00000000 --- a/Languages/Italian.ini +++ /dev/null @@ -1,85 +0,0 @@ -[Text] -SING_LOADING=In caricamento... -SING_SING=Canta -SING_SING_DESC=Gara veloce: canta da solo o duetta -SING_EDITOR=Editor -SING_EDITOR_DESC=Crea le tue canzoni -SING_EXIT_DESC=Esci dal gioco - -SING_OPTIONS_GAME=Gioco -SING_OPTIONS_GRAPHICS=Grafica -SING_OPTIONS_SOUND=Suono -SING_OPTIONS_LYRICS=Testi -SING_OPTIONS_THEMES=Temi -SING_OPTIONS_RECORD=Registrazione -SING_OPTIONS_NETWORK=Rete -SING_OPTIONS_EXIT=Esci - -SING_OPTIONS_GAME_DESC=Opzioni di gioco -SING_OPTIONS_GAME_PLAYERS=Giocatori -SING_OPTIONS_GAME_DIFFICULTY=Difficolta' -SING_OPTIONS_GAME_LANGUAGE=Lingua -SING_OPTIONS_GAME_TABS=Tablature -SING_OPTIONS_GAME_SORTING=Ordinamento -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=Opzioni di grafica -SING_OPTIONS_GRAPHICS_RESOLUTION=Risoluzione -SING_OPTIONS_GRAPHICS_FULLSCREEN=Schermo intero -SING_OPTIONS_GRAPHICS_DEPTH=Profondita' -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscopio -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Dimensione Video - -SING_OPTIONS_SOUND_DESC=Opzioni audio -SING_OPTIONS_SOUND_MIC_BOOST=Preamplif. mic -SING_OPTIONS_SOUND_CLICK_ASSIST=Assistente di note -SING_OPTIONS_SOUND_BEAT_CLICK=Assistente tempo -SING_OPTIONS_SOUND_THRESHOLD=Suono di soglia -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mod. 2 giocatori - -SING_OPTIONS_LYRICS_DESC=Opzioni testi -SING_OPTIONS_LYRICS_FONT=Carattere -SING_OPTIONS_LYRICS_EFFECT=Effetto -SING_OPTIONS_LYRICS_SOLMIZATION=Solfeggio - -SING_OPTIONS_THEMES_DESC=Opzioni temi -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_SKIN=Skin -SING_OPTIONS_THEMES_COLOR=Colore - -SING_OPTIONS_RECORD_DESC=Opzioni di registrazione -SING_OPTIONS_RECORD_CARD=Scheda sonora -SING_OPTIONS_RECORD_INPUT=Ingresso -SING_OPTIONS_RECORD_CHANNELL=Canale sinistro -SING_OPTIONS_RECORD_CHANNELR=Canale destro - -SING_OPTIONS_NETWORK_DESC=Opzioni di rete -SING_OPTIONS_NETWORK_VERSIONCHECK=Controlla versione -SING_OPTIONS_NETWORK_SENDVERSION=Invia versione -SING_OPTIONS_NETWORK_USEANONYMOUS=Accesso anonimo - - - -SING_CHOOSE_MODE=scegli modalita -SING_GAME_OPTIONS=opzioni di gioco -SING_GAME_OPTIONS_DESC=cambia impostazioni di gioco -SING_LEGEND_SELECT=SELEZIONA -SING_LEGEND_BACK=INDIETRO -SING_LEGEND_NAVIGATE=NAVIGA -SING_OPTIONS=opzioni -SING_DIFFICULTY=seleziona difficolta -SING_EASY=facile -SING_MEDIUM=media -SING_HARD=difficile -SING_TIME=TEMPO -SING_COLON=: -SING_TOTAL=totale -SING_SONG_SELECTION=seleziona brano -SING_CHOOSE_SONG=scegli il tuo brano -SING_SING_MODE=esegui un assolo -SING_NOTES=note -SING_GOLDEN_NOTES=note dorate -SING_PHRASE_BONUS=bonus riga -SING_EXIT=esci -SING_TOP_5_CHARTS=I migliori 5 -SING_ENTER_PLAYER_NAME=inserisci nome giocatore diff --git a/Languages/Lithuanian.ini b/Languages/Lithuanian.ini deleted file mode 100644 index b5b3f29e..00000000 Binary files a/Languages/Lithuanian.ini and /dev/null differ diff --git a/Languages/Polish.ini b/Languages/Polish.ini deleted file mode 100644 index 32aca449..00000000 --- a/Languages/Polish.ini +++ /dev/null @@ -1,83 +0,0 @@ -[Text] -SING_LOADING=Wczytywanie... -SING_SING=œpiewaj -SING_SING_DESC=œpiewaj solo lub w kilka osób -SING_EDITOR=edytor -SING_EDITOR_DESC=stwórz w³asne piosenki -SING_EXIT_DESC=wyjdŸ z gry - -SING_OPTIONS_GAME=gra -SING_OPTIONS_GRAPHICS=grafika -SING_OPTIONS_SOUND=dŸwiêk -SING_OPTIONS_LYRICS=s³owa -SING_OPTIONS_THEMES=tematy -SING_OPTIONS_RECORD=nagrywanie -SING_OPTIONS_NETWORK=sieæ -SING_OPTIONS_EXIT=wyjœcie - -SING_OPTIONS_GAME_DESC=opcje gry -SING_OPTIONS_GAME_PLAYERS=Iloœæ graczy -SING_OPTIONS_GAME_DIFFICULTY=Poziom trudnoœci -SING_OPTIONS_GAME_LANGUAGE=Jêzyk -SING_OPTIONS_GAME_TABS=Zak³adki -SING_OPTIONS_GAME_SORTING=Sortowanie -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=opcje graficzne -SING_OPTIONS_GRAPHICS_RESOLUTION=Rozdzielczoœæ -SING_OPTIONS_GRAPHICS_FULLSCREEN=Pe³ny ekran -SING_OPTIONS_GRAPHICS_DEPTH=G³êbia koloru -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscyloskop -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Wielkoœæ filmów - -SING_OPTIONS_SOUND_DESC=opcje dŸwiêku -SING_OPTIONS_SOUND_MIC_BOOST=Podbicie mikrofonu -SING_OPTIONS_SOUND_CLICK_ASSIST=Pomoc klikniêciami -SING_OPTIONS_SOUND_BEAT_CLICK=Klikniêcia w rytm -SING_OPTIONS_SOUND_THRESHOLD=Próg -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tryb dwóch graczy - -SING_OPTIONS_LYRICS_DESC=opcje s³ów -SING_OPTIONS_LYRICS_FONT=Czcionka -SING_OPTIONS_LYRICS_EFFECT=Efekt -SING_OPTIONS_LYRICS_SOLMIZATION=Solmizacja - -SING_OPTIONS_THEMES_DESC=opcje tematów -SING_OPTIONS_THEMES_THEME=Temat -SING_OPTIONS_THEMES_SKIN=Skóra -SING_OPTIONS_THEMES_COLOR=Kolor - -SING_OPTIONS_RECORD_DESC=opcje nagrywania -SING_OPTIONS_RECORD_CARD=Karta dŸwiêkowa -SING_OPTIONS_RECORD_INPUT=Wejœcie -SING_OPTIONS_RECORD_CHANNELL=Lewy kana³ -SING_OPTIONS_RECORD_CHANNELR=Prawy kana³ - -SING_OPTIONS_NETWORK_DESC=opcje sieciowe -SING_OPTIONS_NETWORK_VERSIONCHECK=Sprawdzaj wersjê -SING_OPTIONS_NETWORK_SENDVERSION=Wysy³aj wersjê -SING_OPTIONS_NETWORK_USEANONYMOUS=Loguj anonimowo - - - -SING_CHOOSE_MODE=wybierz tryb -SING_GAME_OPTIONS=opcje gry -SING_GAME_OPTIONS_DESC=zmieñ ustawienia gry -SING_LEGEND_SELECT=WYBÓR -SING_LEGEND_NAVIGATE=NAWIGACJA -SING_OPTIONS=opcje -SING_DIFFICULTY=wybierz poziom trudnoœci -SING_EASY=³atwo -SING_MEDIUM=œrednio -SING_HARD=trudno -SING_TIME=CZAS -SING_TOTAL=³¹cznie -SING_SONG_SELECTION=wybór piosenki -SING_CHOOSE_SONG=wybierz piosenkê -SING_SING_MODE=œpiew solo -SING_NOTES=nuty -SING_GOLDEN_NOTES=z³ote nuty -SING_PHRASE_BONUS=premia linii -SING_EXIT=zakoñcz -SING_TOP_5_CHARTS=lista 5 najlepszych -SING_ENTER_PLAYER_NAME=wprowadŸ imiê gracza diff --git a/Languages/Portuguese.ini b/Languages/Portuguese.ini deleted file mode 100644 index 2f8574c4..00000000 --- a/Languages/Portuguese.ini +++ /dev/null @@ -1,70 +0,0 @@ -[Text] -SING_LOADING=Iniciar... -SING_SING=Cantar -SING_SING_DESC=Cantar único ou um dueto -SING_EDITOR=Publisher -SING_EDITOR_DESC=Cria suas próprias canções -SING_EXIT_DESC=Sair do jogo - -SING_OPTIONS_GAME=Jogo -SING_OPTIONS_GRAPHICS=Graficos -SING_OPTIONS_SOUND=Som -SING_OPTIONS_LYRICS=Letras -SING_OPTIONS_THEMES=Assuntos -SING_OPTIONS_EXIT=Retornar - -SING_OPTIONS_GAME_DESC=Opções do jogo -SING_OPTIONS_GAME_PLAYERS=Jogadores -SING_OPTIONS_GAME_DIFFICULTY=Dificuldade -SING_OPTIONS_GAME_LANGUAGE=Língua -SING_OPTIONS_GAME_TABS=Tabs -SING_OPTIONS_GAME_SORTING=Á ordem -SING_OPTIONS_GAME_DEBUG=Debugger - -SING_OPTIONS_GRAPHICS_DESC=Opções dos graficos -SING_OPTIONS_GRAPHICS_RESOLUTION=Definição -SING_OPTIONS_GRAPHICS_FULLSCREEN=Tela completa -SING_OPTIONS_GRAPHICS_DEPTH=Profundidade -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamanho do vídeo - -SING_OPTIONS_SOUND_DESC=Opções do som -SING_OPTIONS_SOUND_MIC_BOOST=Aproveitarar micro -SING_OPTIONS_SOUND_CLICK_ASSIST=Notas assistentes -SING_OPTIONS_SOUND_BEAT_CLICK=Sopros do assistente -SING_OPTIONS_SOUND_THRESHOLD=Threshold -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Maneira 2 jogadores - -SING_OPTIONS_LYRICS_DESC=opções das letras -SING_OPTIONS_LYRICS_FONT=Fonte -SING_OPTIONS_LYRICS_EFFECT=Efeito -SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo - -SING_OPTIONS_THEMES_DESC=Opções dos assuntos -SING_OPTIONS_THEMES_THEME=Assunto -SING_OPTIONS_THEMES_SKIN=Pele -SING_OPTIONS_THEMES_COLOR=Cor - -SING_CHOOSE_MODE=Escolher a maneira -SING_GAME_OPTIONS=Opções do jogo -SING_GAME_OPTIONS_DESC=Modifica a configuração do jogo -SING_LEGEND_SELECT=SELECIONAR -SING_LEGEND_NAVIGATE=MOVER-SE -SING_OPTIONS=Opções -SING_DIFFICULTY=Seleta a dificuldade -SING_EASY=Fácil -SING_MEDIUM=Meios -SING_HARD=Dificil -SING_TIME=TEMPO -SING_TOTAL=Total -SING_SONG_SELECTION=Seleção da canção -SING_CHOOSE_SONG=Escolhe uma canção -SING_SING_MODE=Cantar únicas -SING_NOTES=Notas -SING_GOLDEN_NOTES=Notas douradas -SING_PHRASE_BONUS=Bônus da linha -SING_EXIT=Á licença -EVENT_NOISE_DETECT=Deteção ruído (0=sí,3=no) -SING_TOP_5_CHARTS=Lista das 5 mais melhores -SING_ENTER_PLAYER_NAME=Introduzir nome do jogador -SONG_SCORE=Pontuação diff --git a/Languages/Spanish.ini b/Languages/Spanish.ini deleted file mode 100644 index c4177725..00000000 --- a/Languages/Spanish.ini +++ /dev/null @@ -1,79 +0,0 @@ -[Text] -SING_LOADING=Cargando... -SING_SING=cantar -SING_SING_DESC=juego rapido: cantar un solo o un dueto -SING_EDITOR=editor -SING_EDITOR_DESC=crea tus propias canciones -SING_EXIT_DESC=salir del juego - -SING_OPTIONS_GAME=juego -SING_OPTIONS_GRAPHICS=graficos -SING_OPTIONS_SOUND=sonido -SING_OPTIONS_LYRICS=letras -SING_OPTIONS_THEMES=temas -SING_OPTIONS_EXIT=salir - -SING_OPTIONS_GAME_DESC=opciones del juego -SING_OPTIONS_GAME_PLAYERS=jugadores -SING_OPTIONS_GAME_DIFFICULTY=Dificultad -SING_OPTIONS_GAME_LANGUAGE=Idioma -SING_OPTIONS_GAME_TABS=Tabs -SING_OPTIONS_GAME_SORTING=Ordenar -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=opciones de los graficos -SING_OPTIONS_GRAPHICS_RESOLUTION=Resolucion -SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa -SING_OPTIONS_GRAPHICS_DEPTH=Profundidad -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamano de video - -SING_OPTIONS_SOUND_DESC=opciones de sonido -SING_OPTIONS_SOUND_MIC_BOOST=Potenciar Micro -SING_OPTIONS_SOUND_CLICK_ASSIST=Asistente de Notas -SING_OPTIONS_SOUND_BEAT_CLICK=Asistente de golpes -SING_OPTIONS_SOUND_THRESHOLD=Threshold -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo dos jugadores - -SING_OPTIONS_LYRICS_DESC=opciones de letras -SING_OPTIONS_LYRICS_FONT=Fuente -SING_OPTIONS_LYRICS_EFFECT=Efecto -SING_OPTIONS_LYRICS_SOLMIZATION=Solfa - -SING_OPTIONS_THEMES_DESC=opciones de temas -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_SKIN=Skin -SING_OPTIONS_THEMES_COLOR=Color - -SING_OPTIONS_RECORD_DESC=opciones de grabación -SING_OPTIONS_RECORD_CARD=Tarjeta de sonido -SING_OPTIONS_RECORD_INPUT=Entrada -SING_OPTIONS_RECORD_CHANNELL=Canal izquierdo -SING_OPTIONS_RECORD_CHANNELR=Canal derecho - -SING_OPTIONS_NETWORK_DESC=opciones de red -SING_OPTIONS_NETWORK_VERSIONCHECK=Comprobar versión -SING_OPTIONS_NETWORK_SENDVERSION=Enviar versión -SING_OPTIONS_NETWORK_USEANONYMOUS=Acceso anónimo - -SING_CHOOSE_MODE=elegir modo -SING_GAME_OPTIONS=opciones de juego -SING_GAME_OPTIONS_DESC=modifica la configuración del juego -SING_LEGEND_SELECT=SELECCIONAR -SING_LEGEND_NAVIGATE=DESPLAZARSE -SING_OPTIONS=opciones -SING_DIFFICULTY=seleccionar dificultad -SING_EASY=fácil -SING_MEDIUM=media -SING_HARD=difícil -SING_TIME=TIEMPO -SING_TOTAL=total -SING_SONG_SELECTION=selección de canción -SING_CHOOSE_SONG=elige una canción -SING_SING_MODE=cantar un solo -SING_NOTES=notas -SING_GOLDEN_NOTES=notas doradas -SING_PHRASE_BONUS=bonus de línea -SING_EXIT=salir -SING_TOP_5_CHARTS=lista de los 5 mejores -SING_ENTER_PLAYER_NAME=introducir nombre de jugador diff --git a/Languages/Swedish.ini b/Languages/Swedish.ini deleted file mode 100644 index 52c18ab5..00000000 --- a/Languages/Swedish.ini +++ /dev/null @@ -1,70 +0,0 @@ -[Text] -SING_LOADING=Laddar... -SING_SING=sjung -SING_SING_DESC=snabbspel: sjung solo eller duett -SING_EDITOR=editor -SING_EDITOR_DESC=skapa dina egna latar -SING_EXIT_DESC=avsluta - -SING_OPTIONS_GAME=spel -SING_OPTIONS_GRAPHICS=grafik -SING_OPTIONS_SOUND=ljud -SING_OPTIONS_LYRICS=text -SING_OPTIONS_THEMES=teman -SING_OPTIONS_EXIT=avsluta - -SING_OPTIONS_GAME_DESC=spelalternativ -SING_OPTIONS_GAME_PLAYERS=Spelare -SING_OPTIONS_GAME_DIFFICULTY=Svarighetsgrad -SING_OPTIONS_GAME_LANGUAGE=Sprak -SING_OPTIONS_GAME_TABS=Tabulatur -SING_OPTIONS_GAME_SORTING=Sortering -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=grafikalternativ -SING_OPTIONS_GRAPHICS_RESOLUTION=Upplösning -SING_OPTIONS_GRAPHICS_FULLSCREEN=Helskärm -SING_OPTIONS_GRAPHICS_DEPTH=Djup -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videostorlek - -SING_OPTIONS_SOUND_DESC=ljudalternativ -SING_OPTIONS_SOUND_MIC_BOOST=Mic boost -SING_OPTIONS_SOUND_CLICK_ASSIST=Click-assistens -SING_OPTIONS_SOUND_BEAT_CLICK=Slag-klick -SING_OPTIONS_SOUND_THRESHOLD=Lägsta niva -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tva-spelar-läge - -SING_OPTIONS_LYRICS_DESC=textalternativ -SING_OPTIONS_LYRICS_FONT=Typsnitt -SING_OPTIONS_LYRICS_EFFECT=Effekt -SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation - -SING_OPTIONS_THEMES_DESC=tema-alternativ -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_COLOR=Färg - - - -SING_CHOOSE_MODE=välj läge -SING_GAME_OPTIONS=spelalternativ -SING_GAME_OPTIONS_DESC=ändra spelinställningar -SING_LEGEND_SELECT=VÄLJ -SING_LEGEND_NAVIGATE=NAVIGERA -SING_OPTIONS=alternativ -SING_DIFFICULTY=välj svarighetsgrad -SING_EASY=lätt -SING_MEDIUM=medel -SING_HARD=svar -SING_TIME=TID -SING_COLON=: -SING_TOTAL=totalt -SING_SONG_SELECTION=latval -SING_CHOOSE_SONG=välj din lat -SING_SING_MODE=sjung solo -SING_NOTES=noter -SING_GOLDEN_NOTES=gyllene noter -SING_PHRASE_BONUS=linjebonus -SING_EXIT=avsluta -SING_TOP_5_CHARTS=fem-i-topp listor -SING_ENTER_PLAYER_NAME=skriv spelarens namn diff --git a/Languages/Turkish.ini b/Languages/Turkish.ini deleted file mode 100644 index a6b56951..00000000 --- a/Languages/Turkish.ini +++ /dev/null @@ -1,69 +0,0 @@ -[Text] -SING_LOADING=yükleniyor... -SING_SING=sarki -SING_SING_DESC=oyuna basla: tek kisi yada düet -SING_EDITOR=editör -SING_EDITOR_DESC=kendi müzigini yarat -SING_EXIT_DESC=oyundan cik - -SING_OPTIONS_GAME=oyun -SING_OPTIONS_GRAPHICS=grafikler -SING_OPTIONS_SOUND=sesler -SING_OPTIONS_LYRICS=lirikler -SING_OPTIONS_THEMES=temalar -SING_OPTIONS_EXIT=cikis - -SING_OPTIONS_GAME_DESC=oyun ayarlarý -SING_OPTIONS_GAME_PLAYERS=Oyuncular -SING_OPTIONS_GAME_DIFFICULTY=Zorluk -SING_OPTIONS_GAME_LANGUAGE=Dil -SING_OPTIONS_GAME_TABS=Tablar -SING_OPTIONS_GAME_SORTING=Listeleme -SING_OPTIONS_GAME_DEBUG=Debug - -SING_OPTIONS_GRAPHICS_DESC=grafik secenekleri -SING_OPTIONS_GRAPHICS_RESOLUTION=Cözünürlük -SING_OPTIONS_GRAPHICS_FULLSCREEN=Tam Ekran -SING_OPTIONS_GRAPHICS_DEPTH=Derinlik -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osiloskop -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Film Boyutu - -SING_OPTIONS_SOUND_DESC=ses secenekleri -SING_OPTIONS_SOUND_MIC_BOOST=Mic boost -SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist -SING_OPTIONS_SOUND_BEAT_CLICK=Beat click -SING_OPTIONS_SOUND_THRESHOLD=Threshold -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Iki kisilik mod - -SING_OPTIONS_LYRICS_DESC=lirik ayarlarý -SING_OPTIONS_LYRICS_FONT=Font -SING_OPTIONS_LYRICS_EFFECT=Efektler -SING_OPTIONS_LYRICS_SOLMIZATION=Solmizasyon - -SING_OPTIONS_THEMES_DESC=tema secenekleri -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_COLOR=Renk - - - -SING_CHOOSE_MODE=Mod Sec -SING_GAME_OPTIONS=oyun secenekleri -SING_GAME_OPTIONS_DESC=oyun seceneklerini degistir -SING_LEGEND_SELECT=SECIM -SING_LEGEND_NAVIGATE=NAVIGASYON -SING_OPTIONS=ayarlar -SING_DIFFICULTY=zorluk sec -SING_EASY=kolay -SING_MEDIUM=orta -SING_HARD=zor -SING_TIME=ZMN -SING_TOTAL=Toplam -SING_SONG_SELECTION=sarki secimi -SING_CHOOSE_SONG=sarkini sec -SING_SING_MODE=Solo -SING_NOTES=notalar -SING_GOLDEN_NOTES=altin notalar -SING_PHRASE_BONUS=cizgi bonusu -SING_EXIT=cikis -SING_TOP_5_CHARTS=top 5 tablosu -SING_ENTER_PLAYER_NAME=oyuncu isminizi girin \ No newline at end of file -- cgit v1.2.3 From 776361f0444627266a8fd398024c28b5bb10ae36 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 15 Jul 2007 17:21:12 +0000 Subject: Fixed a bug in Note Name convertation git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@297 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenEditSub.pas | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 9e84462d..9ca45f55 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -1291,8 +1291,18 @@ end; function TScreenEditSub.GetNoteName(Note: Integer): String; var N1, N2: Integer; begin - N1 := Note mod 12; - N2 := Note div 12; + if (Note > 0) then + begin + N1 := Note mod 12; + N2 := Note div 12; + end + else + begin + N1 := (Note + (-Trunc(Note/12)+1)*12) mod 12; + N2 := -1; + end; + + case N1 of 0: Result := 'c'; -- cgit v1.2.3 From 2fb094bfc98a1c761641229acda7b6df561a8247 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 15 Jul 2007 18:13:59 +0000 Subject: Fixed a bug in Party playlist selection when no playlist or category is available git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@298 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenPartyOptions.pas | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index aa8681d0..49cc8c53 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -63,11 +63,15 @@ begin SDLK_RETURN: begin + //Don'T start when Playlist is Selected and there are no Playlists + If (Playlist = 2) and (Length(PlaylistMan.Playlists) = 0) then + Exit; + //Save Difficulty Ini.Difficulty := SelectsS[SelectLevel].SelectedOption; Ini.SaveLevel; - //Save PlayList - //(Todo) + + //Save Num Teams: PartySession.Teams.NumTeams := NumTeams + 2; PartySession.Teams.Teaminfo[0].NumPlayers := NumPlayer1+1; @@ -76,6 +80,7 @@ begin //Save Playlist PlaylistMan.Mode := Playlist; + PlaylistMan.CurPlayList := High(Cardinal); //If Category Selected Search Category ID if Playlist = 1 then begin @@ -91,6 +96,10 @@ begin Break; end; end; + + //No Categorys or Invalid Entry + If PlaylistMan.CurPlayList = High(Cardinal) then + Exit; end else PlaylistMan.CurPlayList := Playlist2; @@ -203,11 +212,25 @@ begin IPlaylist2[high(IPlaylist2)] := CatSongs.Song[I].Artist; end; end; + + If (Length(IPlaylist2) = 0) then + begin + SetLength(IPlaylist2, 1); + IPlaylist2[0] := 'No Categories found'; + end; end; 2: begin - SetLength(IPlaylist2, Length(PlaylistMan.Playlists)); - PlaylistMan.GetNames(IPlaylist2); + if (Length(PlaylistMan.Playlists) > 0) then + begin + SetLength(IPlaylist2, Length(PlaylistMan.Playlists)); + PlaylistMan.GetNames(IPlaylist2); + end + else + begin + SetLength(IPlaylist2, 1); + IPlaylist2[0] := 'No Playlists found'; + end; end; end; -- cgit v1.2.3 From 4ea2e7a0239c8592cbe726747f110a4763882395 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 17 Jul 2007 15:58:39 +0000 Subject: Fixed a really important orthographic mistake in german language file git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@299 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Languages/German.ini b/Languages/German.ini index 15049572..287dcdcc 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -6,7 +6,7 @@ SING_SING=Singen SING_SING_DESC=Singen SING_MULTI=Party -SING_MULTI_DESC=Ein runden basierendes Teamspiel spielen +SING_MULTI_DESC=Ein rundenbasierendes Teamspiel spielen SING_TOOLS=Tools -- cgit v1.2.3 From 2c6d79e1c7a8d7d680cb98881028ca72c04b43d0 Mon Sep 17 00:00:00 2001 From: mogguh Date: Wed, 18 Jul 2007 18:57:45 +0000 Subject: Theme/Skin: Deluxe Skin - The blue backdrop is now even more kinky! git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@300 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/[bg-load]blue.jpg | Bin 94799 -> 87866 bytes Skins/Deluxe/[bg-main]blue.jpg | Bin 84543 -> 65147 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Skins/Deluxe/[bg-load]blue.jpg b/Skins/Deluxe/[bg-load]blue.jpg index 8e36cf6b..7949b574 100644 Binary files a/Skins/Deluxe/[bg-load]blue.jpg and b/Skins/Deluxe/[bg-load]blue.jpg differ diff --git a/Skins/Deluxe/[bg-main]blue.jpg b/Skins/Deluxe/[bg-main]blue.jpg index 2831a2de..e035ddbe 100644 Binary files a/Skins/Deluxe/[bg-main]blue.jpg and b/Skins/Deluxe/[bg-main]blue.jpg differ -- cgit v1.2.3 From 800adc4ca34e677907d36e2a3850eac726226a11 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Wed, 18 Jul 2007 20:18:27 +0000 Subject: Little hack in SongScreen that fixes problems with blending. Drawing order changed only for SongScreen: Buttons -> Statics -> Texts git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@301 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenSong.pas | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 87aa122e..3221f21e 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1340,6 +1340,7 @@ function TScreenSong.Draw: boolean; var dx: real; dt: real; + I: Integer; begin dx := SongTarget-SongCurrent; dt := TimeSkip*7; @@ -1393,7 +1394,26 @@ begin end; - inherited Draw; + //inherited Draw; + //heres a little Hack, that causes the Statics + //are Drawn after the Buttons because of some Blending Problems. + //This should cause no Problems because all Buttons on this screen + //Has Z Position. + //Draw BG + DrawBG; + + //Instead of Draw FG Procedure: + //We draw Buttons for our own + for I := 0 to Length(Button) - 1 do + Button[I].Draw; + + // Statics + for I := 0 to Length(Static) - 1 do + Static[I].Draw; + + // and texts + for I := 0 to Length(Text) - 1 do + Text[I].Draw; //Draw Equalizer -- cgit v1.2.3 From 32a4f82b42c2c39f9fc0525dadd94d42ca272340 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Thu, 19 Jul 2007 15:26:43 +0000 Subject: Deluxe Theme: Add missing Z Attribute to PartyJoker git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@302 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 138 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 77 insertions(+), 61 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index eee98014..b85c05db 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -319,7 +319,7 @@ Texts =3 Tex=SongBG [SongCover] -X=303 +X=252 Y=125 W=320 H=190 @@ -331,7 +331,7 @@ Visible=1 Direction=1 Color=White Alpha=1 -X=255 +X=205 Y=514 Z=1 PieceW=6 @@ -341,7 +341,7 @@ Bands=6 Length=18 [SongVideoIcon] -X =299 +X =249 Y =487 W =32 H =32 @@ -373,16 +373,17 @@ Reflection=1 ReflectionSpacing=1 [SongStatic3] -X =250 +X =200 Y =120 W =300 H =200 +Z =0.5 Color =LightBlue Tex =SongSelection1 Type=Font Black [SongStatic4] -X =298 +X =248 Y =320 W =200 H =200 @@ -401,7 +402,7 @@ Align =0 Text=SING_SONG_SELECTION_DESC [SongTextArtist] -X =400 +X =350 Y =320 W = 190 Color=White @@ -411,7 +412,7 @@ Align =1 Text= [SongTextTitle] -X =400 +X =350 Y =380 W = 190 Color=White @@ -421,7 +422,7 @@ Align =1 Text= [SongTextNumber] -X =490 +X =440 Y =495 Color=White Font =0 @@ -654,10 +655,11 @@ Text=PARTY_SONG_LEGEND_CONTINUE # Jokers, 5 for each team, only shown in party Mode [SongStaticTeam1Joker1] Tex =Joker -X =530 +X =480 Y =400 W =40 H =40 +Z =0.98 Color=P1Dark Type=Font Black TexX1=0 @@ -667,10 +669,11 @@ TexY2=1 [SongStaticTeam1Joker2] Tex =Joker -X =580 +X =530 Y =400 W =40 H =40 +Z =0.98 Color=P1Dark Type=Font Black TexX1=0 @@ -680,10 +683,11 @@ TexY2=1 [SongStaticTeam1Joker3] Tex =Joker -X =630 +X =580 Y =400 W =40 H =40 +Z =0.98 Color=P1Dark Type=Font Black TexX1=0 @@ -693,10 +697,11 @@ TexY2=1 [SongStaticTeam1Joker4] Tex =Joker -X =680 +X =630 Y =400 W =40 H =40 +Z =0.98 Color=P1Dark Type=Font Black TexX1=0 @@ -706,10 +711,11 @@ TexY2=1 [SongStaticTeam1Joker5] Tex =Joker -X =730 +X =680 Y =400 W =40 H =40 +Z =0.98 Color=P1Dark Type=Font Black TexX1=0 @@ -719,10 +725,11 @@ TexY2=1 [SongStaticTeam2Joker1] Tex =Joker -X =530 +X =480 Y =450 W =40 H =40 +Z =0.98 Color=P2Dark Type=Font Black TexX1=0 @@ -732,10 +739,11 @@ TexY2=1 [SongStaticTeam2Joker2] Tex =Joker -X =580 +X =530 Y =450 W =40 H =40 +Z =0.98 Color=P2Dark Type=Font Black TexX1=0 @@ -745,10 +753,11 @@ TexY2=1 [SongStaticTeam2Joker3] Tex =Joker -X =630 +X =580 Y =450 W =40 H =40 +Z =0.98 Color=P2Dark Type=Font Black TexX1=0 @@ -758,10 +767,11 @@ TexY2=1 [SongStaticTeam2Joker4] Tex =Joker -X =680 +X =630 Y =450 W =40 H =40 +Z =0.98 Color=P2Dark Type=Font Black TexX1=0 @@ -771,10 +781,11 @@ TexY2=1 [SongStaticTeam2Joker5] Tex =Joker -X =730 +X =680 Y =450 W =40 H =40 +Z =0.98 Color=P2Dark Type=Font Black TexX1=0 @@ -784,10 +795,11 @@ TexY2=1 [SongStaticTeam3Joker1] Tex =Joker -X =530 +X =480 Y =500 W =40 H =40 +Z =0.98 Color=P3Dark Type=Font Black TexX1=0 @@ -797,10 +809,11 @@ TexY2=1 [SongStaticTeam3Joker2] Tex =Joker -X =580 +X =530 Y =500 W =40 H =40 +Z =0.98 Color=P3Dark Type=Font Black TexX1=0 @@ -810,10 +823,11 @@ TexY2=1 [SongStaticTeam3Joker3] Tex =Joker -X =630 +X =580 Y =500 W =40 H =40 +Z =0.98 Color=P3Dark Type=Font Black TexX1=0 @@ -823,10 +837,11 @@ TexY2=1 [SongStaticTeam3Joker4] Tex =Joker -X =680 +X =630 Y =500 W =40 H =40 +Z =0.98 Color=P3Dark Type=Font Black TexX1=0 @@ -836,10 +851,11 @@ TexY2=1 [SongStaticTeam3Joker5] Tex =Joker -X =730 +X =680 Y =500 W =40 H =40 +Z =0.98 Color=P3Dark Type=Font Black TexX1=0 @@ -1253,7 +1269,7 @@ Text=SING_LEGEND_CONTINUE # # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # [ScoreTextName1] -X =175 +X =150 Y =260 Font =0 Size =14 @@ -1262,7 +1278,7 @@ Color =White Align=0 [ScoreTextScore1] -X =175 +X =150 Y =430 Color=White Font =1 @@ -1271,7 +1287,7 @@ Text =Tone Deaf Align=0 [ScoreTextNotes1] -X =175 +X =150 Y =340 Color=White Font =0 @@ -1280,7 +1296,7 @@ Text=SING_NOTES Align=0 [ScoreTextNotesScore1] -X =465 +X =440 Y =340 Color=White Font =0 @@ -1289,7 +1305,7 @@ Align =2 Text =0 [ScoreTextLineBonus1] -X =175 +X =150 Y =370 Color=White Font =0 @@ -1298,7 +1314,7 @@ Text =SING_PHRASE_BONUS Align=0 [ScoreTextLineBonusScore1] -X =465 +X =440 Y =370 Color=White Font =0 @@ -1307,7 +1323,7 @@ Align =2 Text =0 [ScoreTextGoldenNotes1] -X =175 +X =150 Y =400 Color=White Font =0 @@ -1316,7 +1332,7 @@ Text =SING_GOLDEN_NOTES Align=0 [ScoreTextGoldenNotesScore1] -X =465 +X =440 Y =400 Color=White Font =0 @@ -1325,7 +1341,7 @@ Align =2 Text =0 [ScoreTextTotal1] -X =205 +X =180 Y =460 Color=White Font =0 @@ -1334,7 +1350,7 @@ Text=SING_TOTAL Align=0 [ScoreTextTotalSCore1] -X =465 +X =440 Y =460 Color=White Font =0 @@ -1345,7 +1361,7 @@ Text =0 #Lines [ScorePlayer1Static1] Tex =ScoreLine -X =173 +X =148 Y =338 W =295 H =2 @@ -1354,7 +1370,7 @@ Type =Font Black [ScorePlayer1Static2] Tex =ScoreLine -X =173 +X =148 Y =368 W =295 H =2 @@ -1363,7 +1379,7 @@ Type =Font Black [ScorePlayer1Static3] Tex =ScoreLine -X =173 +X =148 Y =398 W =295 H =2 @@ -1372,7 +1388,7 @@ Type =Font Black [ScorePlayer1Static4] Tex =ScoreLine -X =173 +X =148 Y =428 W =295 H =2 @@ -1381,7 +1397,7 @@ Type =Font Black [ScorePlayer1Static5] Tex =ScoreLine -X =173 +X =148 Y =458 W =295 H =4 @@ -1390,7 +1406,7 @@ Color =White [ScoreStaticBoxDark1] Tex =PlayerNumberBox -X =175 +X =150 Y =467 W =25 H =25 @@ -1405,7 +1421,7 @@ Reflection=1 ReflectionSpacing=4 [ScorePlayer1Text1] -X =179 +X =154 Y =472 W =30 H =30 @@ -1419,7 +1435,7 @@ Text=P1 #ScoreBar [ScoreStaticBackLevel1] Tex =ScoreLevel -X =475 +X =450 Y =160 W =150 H =300 @@ -1432,7 +1448,7 @@ TexY2=0.9 [ScoreStaticBackLevelRound1] Tex =ScoreLevelRound -X =475 +X =450 Y =130 W =150 H =30 @@ -1445,7 +1461,7 @@ TexY2=0.5 [ScoreStaticLevel1] Tex =ScoreLevel -X =475 +X =450 Y =410 W =150 H =30 @@ -1458,7 +1474,7 @@ TexY2=0.9 [ScoreStaticLevelRound1] Tex =ScoreLevelRound -X =475 +X =450 Y =380 W =150 H =30 @@ -1471,7 +1487,7 @@ TexY2=1 [ScorePlayer1Static6] Tex =ScoreEndCap -X =494 +X =469 Y =460 W =112 H =30 @@ -1486,7 +1502,7 @@ ReflectionSpacing=4 [ScorePlayer1Static7] Tex =ScoreLine -X =493 +X =468 Y =460 W =114 H =2 @@ -7021,7 +7037,7 @@ Texts=0 Statics=1 [SongMenuButton1] -X = 510 +X = 460 Y = 165 W = 270 H = 25 @@ -7044,7 +7060,7 @@ Align=0 Z=0.99 [SongMenuButton2] -X = 510 +X = 460 Y = 195 W = 270 H = 25 @@ -7067,7 +7083,7 @@ Align=0 Z=0.99 [SongMenuButton3] -X = 510 +X = 460 Y = 225 W = 270 H = 25 @@ -7090,7 +7106,7 @@ Align=0 Z=0.99 [SongMenuButton4] -X = 510 +X = 460 Y = 255 W = 270 H = 25 @@ -7115,7 +7131,7 @@ Z=0.99 Tex = Rectangle TexSBG = SongMenuSelectBG Text = -X = 510 +X = 460 Y = 225 W = 0 H = 25 @@ -7136,7 +7152,7 @@ STColor = White STDColor = GrayDark [SongMenuTextMenu] -X =539 +X =489 Y =125 Color=White Font =0 @@ -7146,7 +7162,7 @@ Align=0 Z=0.99 [SongMenuStatic2] -X =513 +X =463 Y =135 W =21 H =21 @@ -7157,7 +7173,7 @@ Z=0.98 [SongMenuStatic1] Tex =SongMenuBG -X =498 +X =448 Y =120 W =300 H =200 @@ -7172,7 +7188,7 @@ Statics=1 [SongJumptoStatic1] Tex =JumpToBG -X =221 +X =171 Y =175 W =355 H =175 @@ -7182,7 +7198,7 @@ Color =DarkBlue Type=Font Black [SongJumptoStatic2] -X =234 +X =184 Y =185 W =21 H =21 @@ -7192,7 +7208,7 @@ Type=Font Black Z=0.99 [SongJumptoText1] -X =310 +X =210 Y =175 Color=White Font =0 @@ -7206,7 +7222,7 @@ Tex = button TexSBG = mainicon #Text = SONG_JUMPTO_TYPE_DESC Font=1 -X = 242 +X = 192 Y = 205 Z = 0.99 W = 0 @@ -7223,7 +7239,7 @@ STColor = White STDColor = LightBlue [SongJumptoButtonSearchText] -X = 250 +X = 200 Y = 215 Z = 0.99 W = 160 @@ -7233,7 +7249,7 @@ Font=1 Align=0 [SongJumptoTextFound] -X =234 +X =184 Y =295 Color=White Font =0 @@ -7921,7 +7937,7 @@ Align=1 Z=1 [ErrorPopupText] -X =450 +X =400 Y =180 W =280 Color=White -- cgit v1.2.3 From f771c09130e6b0bc024f0946ca023e13cd7b5466 Mon Sep 17 00:00:00 2001 From: b1indy Date: Fri, 20 Jul 2007 21:54:15 +0000 Subject: added new credits screen to branch git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@309 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphicClasses.pas | 2 +- Game/Code/Screens/UScreenCredits.pas | 1140 +++++++++++++++++++++++++++++---- Game/Code/UltraStar.rc | 26 +- Game/Graphics/credits_v5_bg.png | Bin 0 -> 264166 bytes Game/Graphics/credits_v5_overlay.png | Bin 0 -> 380739 bytes Game/Graphics/intro-l-01.png | Bin 0 -> 31481 bytes Game/Graphics/intro-l-02.png | Bin 0 -> 27728 bytes Game/Graphics/intro-l-03.png | Bin 0 -> 222080 bytes Game/Graphics/intro-l-04.png | Bin 0 -> 102638 bytes Game/Graphics/intro-l-05.png | Bin 0 -> 26036 bytes Game/Graphics/intro-l-06.png | Bin 0 -> 77860 bytes Game/Graphics/intro-l-07.png | Bin 0 -> 31873 bytes Game/Graphics/intro-l-08.png | Bin 0 -> 13041 bytes Game/Graphics/intro-l-09.png | Bin 0 -> 7553 bytes Game/Graphics/names_blindguard.png | Bin 0 -> 9007 bytes Game/Graphics/names_blindy.png | Bin 0 -> 8208 bytes Game/Graphics/names_canni.png | Bin 0 -> 6491 bytes Game/Graphics/names_commandio.png | Bin 0 -> 7240 bytes Game/Graphics/names_lazyjoker.png | Bin 0 -> 8397 bytes Game/Graphics/names_mog.png | Bin 0 -> 6247 bytes Game/Graphics/names_mota.png | Bin 0 -> 8197 bytes Game/Graphics/names_skillmaster.png | Bin 0 -> 7730 bytes Game/Graphics/names_whiteshark.png | Bin 0 -> 10786 bytes Game/Graphics/outro-bg.png | Bin 0 -> 578211 bytes Game/Graphics/outro-esc.png | Bin 0 -> 82249 bytes Game/Graphics/outro-exit-dark.png | Bin 0 -> 94897 bytes Sounds/credits-outro-tune.mp3 | Bin 0 -> 156212 bytes Sounds/wome-credits-tune.mp3 | Bin 0 -> 1682311 bytes 28 files changed, 1034 insertions(+), 134 deletions(-) create mode 100644 Game/Graphics/credits_v5_bg.png create mode 100644 Game/Graphics/credits_v5_overlay.png create mode 100644 Game/Graphics/intro-l-01.png create mode 100644 Game/Graphics/intro-l-02.png create mode 100644 Game/Graphics/intro-l-03.png create mode 100644 Game/Graphics/intro-l-04.png create mode 100644 Game/Graphics/intro-l-05.png create mode 100644 Game/Graphics/intro-l-06.png create mode 100644 Game/Graphics/intro-l-07.png create mode 100644 Game/Graphics/intro-l-08.png create mode 100644 Game/Graphics/intro-l-09.png create mode 100644 Game/Graphics/names_blindguard.png create mode 100644 Game/Graphics/names_blindy.png create mode 100644 Game/Graphics/names_canni.png create mode 100644 Game/Graphics/names_commandio.png create mode 100644 Game/Graphics/names_lazyjoker.png create mode 100644 Game/Graphics/names_mog.png create mode 100644 Game/Graphics/names_mota.png create mode 100644 Game/Graphics/names_skillmaster.png create mode 100644 Game/Graphics/names_whiteshark.png create mode 100644 Game/Graphics/outro-bg.png create mode 100644 Game/Graphics/outro-esc.png create mode 100644 Game/Graphics/outro-exit-dark.png create mode 100644 Sounds/credits-outro-tune.mp3 create mode 100644 Sounds/wome-credits-tune.mp3 diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index 5f0b0b4e..032830b9 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -286,7 +286,7 @@ begin // move around X := X + mX; Y := Y + mY; - mY:=mY+1.5; + mY:=mY+1.8; // mX:=mX/2; end; end; diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index 98cdc417..43a9a3ca 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -3,15 +3,57 @@ unit UScreenCredits; interface uses - UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes, ULCD, ULight; + UMenu, SDL, UDisplay, UTexture, OpenGL12, UMusic, UFiles, SysUtils, UThemes, ULCD, ULight, UGraphicClasses; type + TCreditsStages=(InitialDelay,Intro,MainPart,Outro); + TScreenCredits = class(TMenu) public - Credits_Y: Real; + Credits_X: Real; Credits_Time: Cardinal; Credits_Alpha: Cardinal; + CTime: Cardinal; + CTime_hold: array of Cardinal; + ESC_Alpha: Integer; + + credits_entry_tex: TTexture; + credits_entry_dx_tex: TTexture; + credits_bg_tex: TTexture; + credits_bg_ovl: TTexture; +// credits_bg_logo: TTexture; + credits_bg_scrollbox_left: TTexture; + credits_blindguard: TTexture; + credits_blindy: TTexture; + credits_canni: TTexture; + credits_commandio: TTexture; + credits_lazyjoker: TTexture; + credits_mog: TTexture; + credits_mota: TTexture; + credits_skillmaster: TTexture; + credits_whiteshark: TTexture; + intro_layer01: TTexture; + intro_layer02: TTexture; + intro_layer03: TTexture; + intro_layer04: TTexture; + intro_layer05: TTexture; + intro_layer06: TTexture; + intro_layer07: TTexture; + intro_layer08: TTexture; + intro_layer09: TTexture; + outro_bg: TTexture; + outro_esc: TTexture; + outro_exd: TTexture; + + deluxe_slidein: cardinal; + + CurrentScrollText: String; + NextScrollUpdate: Real; + EndofLastScrollingPart: Cardinal; + CurrentScrollStart, CurrentScrollEnd: Integer; + + CRDTS_Stage: TCreditsStages; Fadeout: boolean; constructor Create; override; @@ -20,67 +62,60 @@ type procedure onShow; override; procedure onHide; override; procedure DrawCredits; + procedure Draw_FunkyText; end; - const Credits_Text: Array[0..52] of PChar = ( - ':SPACE:', - 'Main Idea: Corvus 5', - 'Thank you very much for this great Game', - ':SPACE:', - 'The Ultrastar Deluxe Team:', - ':SPACE:', - 'blindy:', - 'VFX Programming', - ':SPACE:', - 'commandi00:', - 'Beta Testing', - ':SPACE:', - 'Crazy Joker:', - 'Graphics', - ':SPACE:', - 'DennistheMenace:', - 'Beta Testing and great Support in "the Board"', - ':SPACE:', - 'Mog:', - 'Programming, Graphics', - ':SPACE:', - 'Mota:', - 'Programming, Idea of creating this Mod', - ':SPACE:', - 'Sawyer:', - 'Web Master, Programming', - ':SPACE:', - 'Whiteshark:', - 'Programming, Creating Release', - ':SPACE:', - ':SPACE:', - 'Thanks to', - ':SPACE:', - 'Blind Guard', - 'for supporting us and administrate this great Board', - ':SPACE:', - 'Weezl', - 'for the credits screen music', - ':SPACE:', - 'The whole Community from www.ultra-star.dl.am', - 'for supporting us, supporting the newbies', - 'and remembering us to continue work', - ':SPACE:', - 'You', - 'for using Ultrastar Deluxe', - ':SPACE:', - ':SPACE:', - 'Visit us at:', - 'http://www.ultrastardx.dl.am', - 'http://sourceforge.net/projects/ultrastardx/', - 'http://www.Ultra-Star.dl.am', - 'Please write Bug Reports and Feature Requests', - 'to help making this a better Game'); +const + Funky_Text: AnsiString = +{ 'Hey doodz, we made it! You had to wait very long cause we wanted it to be perfect. So here it is, the most perfect UltraStar you`ll ever get. We have this awesome stars, we have this awesome party mode with plugins, we have the best skins and yes we´re '+ + 'the best :P Whiteshark tried his best to fix all the bugs, and he has done an awesome job! Mota and Mog fired up their Photoshops to create this stunning skins, Blindy has brought you this massive stars and Canni did the documentation. BlindGuard hosts '+ + 'the forum, and oh my gosh he spends a lot of time fucking with all the wankers asking for mp3s. We also want to thank the people in the forum for their massive support and their patience xD Blindy and Mog also want to thank www.demoscene.tv for '+ + 'inspiration (yay Kewlerz suck, but we suck more) - also big shout outs to Einsiedler for brewing our favourite beer and dnbradio.com for the music. Big greetings from Mog to Antje too, I love you baby :X'; +} + 'So here we are, grandma deluxe has arrived. It´s Mog on the keyboard, but I speak for all of us teamers :P Took us '+ + 'longer than expected to come up with this, but hey you know good things take their time ;) As we tried to put in as '+ + 'many features as we have seen on the board (and our`s aswell), like the neat eyecandy (stars h00ray), the party mode, '+ + 'new awesome skins, fucking bugfixes (poor Whiteshark) and a hell lot of other stuff. I´m also proud to announce that '+ + 'we´re the only UltraStar with all this stuff, nice hu? ;) Maybe it´s about time to explain why it took so long, I just '+ + 'strip the part with lazy joker (has he done _anything_?) and all the other people who joined #ultra-star.dl.am on '+ + 'QuakeNet just to beg for a beta or wanted to "help" (hey I´m from a big newspaper). Actually there was a lot of code '+ + 'that had to be written up from scratch (party mode anyone?), and some of the stuff was pretty new to us (OpenGL h00ray). '+ + 'And it reallly didn´t help when people on the board didn´t stop arguing about the release date (I don´t say wankers), so '+ + 'next time some real help would be apprechiated - send us beer if you´re unskilled xD It´s almost sunset outside, time '+ + 'for the thanks then. We want to thank sourceforge for the hosting, BlindGuard for the board support (bet he has some '+ + 'grey hairs now), Wome for the tune you hear right now (thanks mate :X), Corvus5 for the work on UltraStar, our friends '+ + 'on the board (ultra-star.dl.am the place to be!), Einsiedler for the beer, the demoscene and weed for some inspiration...'; + + Timings: array[0..21] of Cardinal=( + 20, // 0 Delay vor Start + + 149, // 1 Ende erster Intro Zoom + 155, // 2 Start 2. Action im Intro + 170, // 3 Ende Separation im Intro + 271, // 4 Anfang Zoomout im Intro + 0, // 5 unused + 261, // 6 Start fade-to-white im Intro + + 271, // 7 Start Main Part + 280, // 8 Start On-Beat-Sternchen Main Part + 396, // 9 Start BlindGuard + 666, // 10 Start blindy + 936, // 11 Start Canni + 1206, // 12 Start Commandio + 1476, // 13 Start LazyJoker + 1746, // 14 Start Mog + 2016, // 15 Start Mota + 2286, // 16 Start SkillMaster + 2556, // 17 Start WhiteShark + 2826, // 18 Ende Whiteshark + 3096, // 19 Start FadeOut Mainscreen + 3366, // 20 Ende Credits Tune + 60); // 21 start flare im intro implementation -uses Dialogs,Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage; +uses Dialogs,Windows, UGraphic, UMain, UIni, USongs, Textgl, opengl, ULanguage, Math; function TScreenCredits.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; begin @@ -93,25 +128,47 @@ begin FadeTo(@ScreenMain); Music.PlayBack; end; + SDLK_SPACE: + begin + setlength(CTime_hold,length(CTime_hold)+1); + CTime_hold[high(CTime_hold)]:=CTime; + end; + end;//esac end; //fi end; constructor TScreenCredits.Create; -var - I: integer; begin inherited Create; + credits_bg_tex := Texture.LoadTexture(true, 'CRDTS_BG', 'PNG', 'Plain', 0); + credits_bg_ovl := Texture.LoadTexture(true, 'CRDTS_OVL', 'PNG', 'Transparent', 0); - AddBackground(Theme.Loading.Background.Tex); + credits_blindguard := Texture.LoadTexture(true, 'CRDTS_blindguard', 'PNG', 'Font Black', 0); + credits_blindy := Texture.LoadTexture(true, 'CRDTS_blindy', 'PNG', 'Font Black', 0); + credits_canni := Texture.LoadTexture(true, 'CRDTS_canni', 'PNG', 'Font Black', 0); + credits_commandio := Texture.LoadTexture(true, 'CRDTS_commandio', 'PNG', 'Font Black', 0); + credits_lazyjoker := Texture.LoadTexture(true, 'CRDTS_lazyjoker', 'PNG', 'Font Black', 0); + credits_mog := Texture.LoadTexture(true, 'CRDTS_mog', 'PNG', 'Font Black', 0); + credits_mota := Texture.LoadTexture(true, 'CRDTS_mota', 'PNG', 'Font Black', 0); + credits_skillmaster := Texture.LoadTexture(true, 'CRDTS_skillmaster', 'PNG', 'Font Black', 0); + credits_whiteshark := Texture.LoadTexture(true, 'CRDTS_whiteshark', 'PNG', 'Font Black', 0); -// for I := 0 to High(Theme.Loading.Static) do -// AddStatic(Theme.Loading.Static[I]); + intro_layer01 := Texture.LoadTexture(true, 'INTRO_L01', 'PNG', 'Transparent', 0); + intro_layer02 := Texture.LoadTexture(true, 'INTRO_L02', 'PNG', 'Transparent', 0); + intro_layer03 := Texture.LoadTexture(true, 'INTRO_L03', 'PNG', 'Transparent', 0); + intro_layer04 := Texture.LoadTexture(true, 'INTRO_L04', 'PNG', 'Transparent', 0); + intro_layer05 := Texture.LoadTexture(true, 'INTRO_L05', 'PNG', 'Transparent', 0); + intro_layer06 := Texture.LoadTexture(true, 'INTRO_L06', 'PNG', 'Transparent', 0); + intro_layer07 := Texture.LoadTexture(true, 'INTRO_L07', 'PNG', 'Transparent', 0); + intro_layer08 := Texture.LoadTexture(true, 'INTRO_L08', 'PNG', 'Transparent', 0); + intro_layer09 := Texture.LoadTexture(true, 'INTRO_L09', 'PNG', 'Transparent', 0); -// for I := 0 to High(Theme.Loading.Text) do -// AddText(Theme.Loading.Text[I]); + outro_bg := Texture.LoadTexture(true, 'OUTRO_BG', 'PNG', 'Plain', 0); + outro_esc := Texture.LoadTexture(true, 'OUTRO_ESC', 'PNG', 'Transparent', 0); + outro_exd := Texture.LoadTexture(true, 'OUTRO_EXD', 'PNG', 'Plain', 0); - Fadeout := false; + CRDTS_Stage:=InitialDelay; end; function TScreenCredits.Draw: boolean; @@ -121,11 +178,15 @@ end; procedure TScreenCredits.onShow; begin - Credits_Y := 600; + CRDTS_Stage:=InitialDelay; + Credits_X := 580; + deluxe_slidein := 0; Credits_Alpha := 0; //Music.SetLoop(true); Loop looped ned, so ne scheisse - Music.Open(soundpath + 'wome_-_echoes.mp3'); //danke kleinster liebster weeeetüüüüü!! - Music.Play; + Music.Open(soundpath + 'wome-credits-tune.mp3'); //danke kleinster liebster weeeetüüüüü!! +// Music.Play; + CTime:=0; + setlength(CTime_hold,0); end; procedure TScreenCredits.onHide; @@ -133,91 +194,906 @@ begin Music.Stop; end; +Procedure TScreenCredits.Draw_FunkyText; +var + S,I, Len: Integer; + X,Y,A: Real; + visibleText: PChar; +begin + SetFontSize(10); + //Init ScrollingText + if (CTime = Timings[7]) then + begin + //Set Position of Text + Credits_X := 600; + CurrentScrollStart:=1; + CurrentScrollEnd:=1; + end; + + if (CTime > Timings[7]) and (CurrentScrollStart < length(Funky_Text)) then + begin + X:=0; + visibleText:=pchar(Copy(Funky_Text, CurrentScrollStart, CurrentScrollEnd)); + for S := 0 to length(visibleText)-1 do begin + Y:=abs(sin((Credits_X+X)*0.93{*(((Credits_X+X))/1200)}/100*pi)); + SetFontPos(Credits_X+X,538-Y*(Credits_X+X)*(Credits_X+X)*(Credits_X+X)/1000000); + if (Credits_X+X < 15) then A:=0; + if (Credits_X+X >=15) then A:=Credits_X+X-15; + if Credits_X+X > 32 then A:=17; + glColor4f( 230/255-40/255+Y*(Credits_X+X)/900, 200/255-30/255+Y*(Credits_X+X)/1000, 155/255-20/255+Y*(Credits_X+X)/1100, A/17); + glPrintLetter(visibleText[S]); + X := X + Fonts[ActFont].Width[Ord(visibleText[S])] * Fonts[ActFont].Tex.H / 30 * Fonts[ActFont].AspectW; + end; + if (Credits_X<0) and (CurrentScrollStart < length(Funky_Text)) then begin + Credits_X:=Credits_X + Fonts[ActFont].Width[Ord(Funky_Text[CurrentScrollStart])] * Fonts[ActFont].Tex.H / 30 * Fonts[ActFont].AspectW; + inc(CurrentScrollStart); + end; + visibleText:=pchar(Copy(Funky_Text, CurrentScrollStart, CurrentScrollEnd)); + if (Credits_X+glTextWidth(visibleText) < 600) and (CurrentScrollEnd < length(Funky_Text)) then begin + inc(CurrentScrollEnd); + end; + end; + // timing hack + X:=5; + SetFontStyle (2); + SetFontItalic(False); + SetFontSize(9); + glColor4f(1, 1, 1, 1); + for S:=0 to high(CTime_hold) do begin + visibleText:=pchar(inttostr(CTime_hold[S])); + SetFontPos (500, X); + glPrint (Addr(visibleText[0])); + X:=X+20; + end; +end; + +procedure Start3D; +begin + glMatrixMode(GL_PROJECTION); + glPushMatrix; + glLoadIdentity; + glFrustum(-0.3*4/3,0.3*4/3,-0.3,0.3,1,1000); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity; +end; +procedure End3D; +begin + glMatrixMode(GL_PROJECTION); + glPopMatrix; + glMatrixMode(GL_MODELVIEW); +end; + procedure TScreenCredits.DrawCredits; var T,I: Cardinal; - Y: Real; + X: Real; Ver: PChar; + RuntimeStr: AnsiString; + Data: TFFTData; + j,k,l:cardinal; + f,g,h: Real; + STime:cardinal; + Delay:cardinal; + + myPixel: longword; + myColor: Cardinal; + myScale: Real; + myAngle: Real; +const myLogoCoords: Array[0..27,0..1] of Cardinal = ((39,32),(84,32),(100,16),(125,24), + (154,31),(156,58),(168,32),(203,36), + (258,34),(251,50),(274,93),(294,84), + (232,54),(278,62),(319,34),(336,92), + (347,23),(374,32),(377,58),(361,83), + (385,91),(405,91),(429,35),(423,51), + (450,32),(485,34),(444,91),(486,93)); + begin +//dis does teh muiwk y0r +Data := Music.GetFFTData; + + + T := GetTickCount div 33; if T <> Credits_Time then begin Credits_Time := T; - //Change Position - Credits_Y := Credits_Y - 1; - //Change Alpha - Inc (Credits_Alpha, 3); - end; - //If lowest Position is outside the Screen-> Show MainMenu - if (Y <= 0) then - Y := 600; - //Draw BackGround - DrawBG; - - - //Draw pulsing Credits Text - //Set Font - SetFontStyle (2); - SetFontItalic(False); - SetFontSize(9); - SetFontPos (10, 5); - glColor4f(1, 0, 0, 0.2 + Abs((Credits_Alpha mod 150)/100 - 0.75)); - glPrint ('You may press ESC now'); - - //Set Font Size for Credits - SetFontSize(12); - //Draw Version - if (Credits_Y>-35) then - begin - Ver := PChar(Language.Translate('US_VERSION')); - //Set Color - if Credits_Y > 500 then - glColor4f(1, 0.6, 0.08, (600 - Credits_Y)/100 - 0.2) - else - glColor4f(1, 0.6, 0.08, 0.8); + inc(CTime); + Credits_X := Credits_X-2; + if (CRDTS_Stage=InitialDelay) and (CTime=Timings[0]) then + begin +// CTime:=Timings[20]; +// CRDTS_Stage:=Outro; - SetFontPos (400 - glTextWidth(Ver)/2, Credits_Y); - glprint(Ver); + CRDTS_Stage:=Intro; + CTime:=0; + Music.Play; + + end; + if (CRDTS_Stage=Intro) and (CTime=Timings[7]) then + begin + CRDTS_Stage:=MainPart; + end; + if (CRDTS_Stage=MainPart) and (CTime=Timings[20]) then + begin + CRDTS_Stage:=Outro; + end; end; - //Set Color + Start Pos - glColor4f(0.8, 0.8, 1, 0.8); - Y := Credits_Y + 50; + //draw background + if CRDTS_Stage=InitialDelay then + begin + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + end + else + if CRDTS_Stage=Intro then + begin + Start3D; + glPushMatrix; - //Search upper Position - For I := 0 to high(Credits_Text) do - begin - if (Credits_Text[I]=':SPACE:') then //Spacer - Y := Y + 55 - else - Y := Y + 30; + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - if Y > -35 then - break; - end; + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); - //Draw Text - For T := I+1 to high(Credits_Text) do - begin - if (Credits_Text[T]=':SPACE:') then //Spacer - Y := Y + 55 - else + if CTime < Timings[1] then begin + myScale:= 0.5+0.5*(Timings[1]-CTime)/(Timings[1]); // slowly move layers together + myAngle:=cos((CTime)*pi/((Timings[1])*2)); // and make logo face towards camera + end else begin // this is the part when the logo stands still + myScale:=0.5; + myAngle:=0; + end; + if CTime > Timings[2] then begin + myScale:= 0.5+0.5*(CTime-Timings[2])/(Timings[3]-Timings[2]); // get some space between layers + myAngle:=0; + end; +// if CTime > Timings[3] then myScale:=1; // keep the space between layers + glTranslatef(0,0,-5+0.5*myScale); + if CTime > Timings[3] then myScale:=1; // keep the space between layers + if CTime > Timings[3] then begin // make logo rotate left and grow +// myScale:=(CTime-Timings[4])/(Timings[7]-Timings[4]); + glRotatef(20*sqr(CTime-Timings[3])/sqr((Timings[7]-Timings[3])/2),0,0,1); + glScalef(1+sqr(CTime-Timings[3])/(32*(Timings[7]-Timings[3])),1+sqr(CTime-Timings[3])/(32*(Timings[7]-Timings[3])),1); + end; + if CTime < Timings[2] then + glRotatef(30*myAngle,0.5*myScale+myScale,1+myScale,0); +// glScalef(0.5,0.5,0.5); + glScalef(4/3,-1,1); + glColor4f(1, 1, 1, 1); + + glBindTexture(GL_TEXTURE_2D, intro_layer01.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, -0.4 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, -0.4 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, -0.4 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, -0.4 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer02.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, -0.3 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, -0.3 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, -0.3 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, -0.3 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer03.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, -0.2 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, -0.2 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, -0.2 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, -0.2 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer04.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, -0.1 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, -0.1 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, -0.1 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, -0.1 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer05.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, 0 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, 0 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, 0 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, 0 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer06.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, 0.1 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, 0.1 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, 0.1 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, 0.1 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer07.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, 0.2 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, 0.2 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, 0.2 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, 0.2 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer08.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, 0.3 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, 0.3 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, 0.3 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, 0.3 * myScale); + glEnd; + glBindTexture(GL_TEXTURE_2D, intro_layer09.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex3f(-1, -1, 0.22 * myScale); + glTexCoord2f(0,1);glVertex3f(-1, 1, 0.22 * myScale); + glTexCoord2f(1,1); glVertex3f(1, 1, 0.22 * myScale); + glTexCoord2f(1,0);glVertex3f(1, -1, 0.22 * myScale); + glEnd; + gldisable(gl_texture_2d); + glDisable(GL_BLEND); + + glPopMatrix; + End3D; + + // do some sparkling effects + if (CTime < Timings[1]) and (CTime > Timings[21]) then + begin + for k:=1 to 3 do begin + l:=410+floor((CTime-Timings[21])/(Timings[1]-Timings[21])*(536-410))+RandomRange(-5,5); + j:=floor((Timings[1]-CTime)/22)+RandomRange(285,301); + GoldenRec.Spawn(l, j, 1, 16, 0, -1, Flare, 0); + end; + end; + + // fade to white at end + if Ctime > Timings[6] then + begin + glColor4f(1,1,1,sqr(Ctime-Timings[6])*(Ctime-Timings[6])/sqr(Timings[7]-Timings[6])); + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glVertex2f(0,0); + glVertex2f(0,600); + glVertex2f(800,600); + glVertex2f(800,0); + glEnd; + glDisable(GL_BLEND); + end; + + end; + if (CRDTS_Stage=MainPart) then + // main credits screen background, scroller, logo and girl + begin + + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + + glColor4f(1, 1, 1, 1); + glBindTexture(GL_TEXTURE_2D, credits_bg_tex.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(0, 0); + glTexCoord2f(0,600/1024);glVertex2f(0, 600); + glTexCoord2f(800/1024,600/1024); glVertex2f(800, 600); + glTexCoord2f(800/1024,0);glVertex2f(800, 0); + glEnd; + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + + // draw scroller + Draw_FunkyText; + +//######################################################################### +// draw credits names + +// BlindGuard (von links oben reindrehen, nach rechts unten rausdrehen) + STime:=Timings[9]-10; + Delay:=Timings[10]-Timings[9]; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(0,329,0); + if CTime <= STime+10 then begin glrotatef((CTime-STime)*9+270,0,0,1);end; + gltranslatef(223,0,0); + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + gltranslatef(223,0,0); + glrotatef((CTime-(STime+Delay-10))*-9,0,0,1); + gltranslatef(-223,0,0); + end; + glBindTexture(GL_TEXTURE_2D, credits_blindguard.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163, -129); + glTexCoord2f(0,1);glVertex2f(-163, 129); + glTexCoord2f(1,1); glVertex2f(163, 129); + glTexCoord2f(1,0);glVertex2f(163, -129); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// Blindy (zoom von 0 auf volle grösse und drehung, zoom auf doppelte grösse und nach rechts oben schieben) + STime:=Timings[10]-10; + Delay:=Timings[11]-Timings[10]+5; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+20) and (CTime<=STime+22) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+20 then begin + j:=CTime-Stime; + glscalef(j*j/400,j*j/400,j*j/400); + glrotatef(j*18.0,0,0,1); + end; + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=CTime-(STime+Delay-10); + f:=j*10.0; + gltranslatef(f*3,-f,0); + glscalef(1+j/10,1+j/10,1+j/10); + glrotatef(j*9.0,0,0,1); + end; + glBindTexture(GL_TEXTURE_2D, credits_blindy.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163, -129); + glTexCoord2f(0,1);glVertex2f(-163, 129); + glTexCoord2f(1,1); glVertex2f(163, 129); + glTexCoord2f(1,0);glVertex2f(163, -129); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// Canni (von links reinschieben, nach rechts oben rausschieben) + STime:=Timings[11]-10; + Delay:=Timings[12]-Timings[11]+5; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+10 then begin + gltranslatef(((CTime-STime)*21.0)-210,0,0); + end; + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=(CTime-(STime+Delay-10))*21; + gltranslatef(j,-j/2,0); + end; + glBindTexture(GL_TEXTURE_2D, credits_canni.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163, -129); + glTexCoord2f(0,1);glVertex2f(-163, 129); + glTexCoord2f(1,1); glVertex2f(163, 129); + glTexCoord2f(1,0);glVertex2f(163, -129); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// Commandio (von unten reinklappen, nach rechts oben rausklappen) + STime:=Timings[12]-10; + Delay:=Timings[13]-Timings[12]; + if CTime > STime then begin - //Set Color - if Y > 500 then - glColor4f(0.8, 0.8, 1, (600 - Y)/100 - 0.2) + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+10 then + f:=258.0-25.8*(CTime-STime) else - glColor4f(0.8, 0.8, 1, 0.8); + f:=0; - SetFontPos (400 - glTextWidth(Credits_Text[T])/2, Y); - glprint(Credits_Text[T]); - Y := Y + 30; + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=CTime-(STime+Delay-10); + g:=32.6*j; + end else + g:=0; + glBindTexture(GL_TEXTURE_2D, credits_commandio.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163+g-f*1.5, -129+f*1.5-g/2); + glTexCoord2f(0,1);glVertex2f(-163+g*1.5, 129-(g*1.5*258/326)); + glTexCoord2f(1,1); glVertex2f(163+g, 129+g/4); + glTexCoord2f(1,0);glVertex2f(163+f*1.5+g/4, -129+f*1.5-g/4); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; end; - if Y > 600 then - break; - end; +// lazy joker (just scrolls from left to right, no twinkling stars, no on-beat flashing) + STime:=Timings[13]-35; + Delay:=Timings[14]-Timings[13]+5; + if CTime > STime then + begin + k:=0; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)>10) and ((CTime-STime)<20) then ESC_Alpha:=20; + ESC_Alpha:=10; + f:=CTime-STime; + if CTime <=STime+40 then j:=CTime-STime else j:=40; + if (CTime >=STime+Delay-40) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j*j/1600); + + glPushMatrix; + gltranslatef(180+(f-70),329,0); + glBindTexture(GL_TEXTURE_2D, credits_lazyjoker.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163, -129); + glTexCoord2f(0,1);glVertex2f(-163, 129); + glTexCoord2f(1,1); glVertex2f(163, 129); + glTexCoord2f(1,0);glVertex2f(163, -129); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// Mog (von links reinklappen, nach rechts unten rausklappen) + STime:=Timings[14]-10; + Delay:=Timings[15]-Timings[14]+5; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+10 then + f:=326.0-32.6*(CTime-STime) + else + f:=0; + + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=CTime-(STime+Delay-10); + g:=32.6*j; + end else + g:=0; + glBindTexture(GL_TEXTURE_2D, credits_mog.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163+g*1.5, -129+g*1.5); + glTexCoord2f(0,1);glVertex2f(-163+g*1.2, 129+g); + glTexCoord2f(1,1); glVertex2f(163-f+g/2, 129+f*1.5+g/4); + glTexCoord2f(1,0);glVertex2f(163-f+g*1.5, -129-f*1.5); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// Mota (von rechts oben reindrehen, nach links unten rausschieben und verkleinern und dabei drehen) + STime:=Timings[15]-10; + Delay:=Timings[16]-Timings[15]+5; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+10 then begin + gltranslatef(223,0,0); + glrotatef((10-(CTime-STime))*9,0,0,1); + gltranslatef(-223,0,0); + end; + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=CTime-(STime+Delay-10); + f:=j*10.0; + gltranslatef(-f*2,-f,0); + glscalef(1-j/10,1-j/10,1-j/10); + glrotatef(-j*9.0,0,0,1); + end; + glBindTexture(GL_TEXTURE_2D, credits_mota.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163, -129); + glTexCoord2f(0,1);glVertex2f(-163, 129); + glTexCoord2f(1,1); glVertex2f(163, 129); + glTexCoord2f(1,0);glVertex2f(163, -129); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// Skillmaster (von rechts unten reinschieben, nach rechts oben rausdrehen) + STime:=Timings[16]-10; + Delay:=Timings[17]-Timings[16]+5; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+10 then begin + j:=STime+10-CTime; + f:=j*10.0; + gltranslatef(+f*2,+f/2,0); + end; + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=CTime-(STime+Delay-10); + f:=j*10.0; + gltranslatef(0,-223,0); + glrotatef(j*-9,0,0,1); + gltranslatef(0,223,0); + glrotatef(j*9,0,0,1); + end; + glBindTexture(GL_TEXTURE_2D, credits_skillmaster.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163, -129); + glTexCoord2f(0,1);glVertex2f(-163, 129); + glTexCoord2f(1,1); glVertex2f(163, 129); + glTexCoord2f(1,0);glVertex2f(163, -129); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + +// WhiteShark (von links unten reinklappen, nach rechts oben rausklappen) + STime:=Timings[17]-10; + Delay:=Timings[18]-Timings[17]; + if CTime > STime then + begin + k:=0; + ESC_Alpha:=20; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then ESC_Alpha:=5 else inc(ESC_Alpha); + if ESC_Alpha >20 then ESC_Alpha:=20; + if ((CTime-STime)<20) then ESC_Alpha:=20; + k:=CTime-STime; + if CTime <=STime+10 then j:=CTime-STime else j:=10; + if (CTime >=STime+Delay-10) then if (CTime <=STime+Delay) then j:=(STime+Delay)-CTime else j:=0; + glColor4f(1, 1, 1, ESC_Alpha/20*j/10); + + if (CTime >= STime+10) and (CTime<=STime+12) then begin + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 0); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 1); + GoldenRec.Spawn(RandomRange(65,390), RandomRange(200,460), 1, 16, 0, -1, PerfectLineTwinkle, 5); + end; + + glPushMatrix; + gltranslatef(223,329,0); + if CTime <= STime+10 then + f:=326.0-32.6*(CTime-STime) + else + f:=0; + + if CTime >=STime+Delay-10 then if CTime <=STime+Delay then begin + j:=CTime-(STime+Delay-10); + g:=32.6*j; + end else + g:=0; + glBindTexture(GL_TEXTURE_2D, credits_whiteshark.TexNum); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(-163-f+g, -129+f/4-g/2); + glTexCoord2f(0,1);glVertex2f(-163-f/4+g, 129+g/2+f/4); + glTexCoord2f(1,1); glVertex2f(163-f*1.2+g/4, 129+f/2-g/4); + glTexCoord2f(1,0);glVertex2f(163-f*1.5+g/4, -129+f*1.5+g/4); + glEnd; + gldisable(gl_texture_2d); + gldisable(GL_BLEND); + glPopMatrix; + end; + + +// #################################################################### +// do some twinkle stuff (kinda on beat) + if (CTime>Timings[8]) and (CTime < Timings[19]) then begin + k:=0; + for j:=0 to 40 do + if Data[j]>=Data[k] then k:=j; + if Data[k]>0.25 then begin + l:=RandomRange(6,16); + j:=RandomRange(0,27); + GoldenRec.Spawn(myLogoCoords[j,0], myLogoCoords[j,1], 16-l, l, 0, -1, PerfectNote, 0); + end; + end; + +//################################################# +// draw the rest of the main screen (girl and logo + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glColor4f(1, 1, 1, 1); + glBindTexture(GL_TEXTURE_2D, credits_bg_ovl.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(800-393, 0); + glTexCoord2f(0,600/1024);glVertex2f(800-393, 600); + glTexCoord2f(393/512,600/1024); glVertex2f(800, 600); + glTexCoord2f(393/512,0);glVertex2f(800, 0); + glEnd; +{ glBindTexture(GL_TEXTURE_2D, credits_bg_logo.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(0, 0); + glTexCoord2f(0,112/128);glVertex2f(0, 112); + glTexCoord2f(497/512,112/128); glVertex2f(497, 112); + glTexCoord2f(497/512,0);glVertex2f(497, 0); + glEnd; +} + gldisable(gl_texture_2d); + glDisable(GL_BLEND); + + // fade out at end of main part + if Ctime > Timings[19] then + begin + glColor4f(0,0,0,(Ctime-Timings[19])/(Timings[20]-Timings[19])); + glEnable(GL_BLEND); + glBegin(GL_QUADS); + glVertex2f(0,0); + glVertex2f(0,600); + glVertex2f(800,600); + glVertex2f(800,0); + glEnd; + glDisable(GL_BLEND); + end; + end + else + if (CRDTS_Stage=Outro) then + begin + if CTime=Timings[20] then begin + CTime:=0; + Music.Stop; + Music.Open(soundpath + 'credits-outro-tune.mp3'); + Music.Play; + Music.SetLoop(True); + end; + if CTime > 231 then begin + Music.Play; + Ctime:=0; + end; + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); + + // do something useful + // outro background + glEnable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + + glColor4f(1, 1, 1, 1); + glBindTexture(GL_TEXTURE_2D, outro_bg.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(0, 0); + glTexCoord2f(0,600/1024);glVertex2f(0, 600); + glTexCoord2f(800/1024,600/1024); glVertex2f(800, 600); + glTexCoord2f(800/1024,0);glVertex2f(800, 0); + glEnd; + + //outro overlays + glColor4f(1, 1, 1, (1+sin(CTime/15))/3+1/3); + glBindTexture(GL_TEXTURE_2D, outro_esc.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(0, 0); + glTexCoord2f(0,223/256);glVertex2f(0, 223); + glTexCoord2f(487/512,223/256); glVertex2f(487, 223); + glTexCoord2f(487/512,0);glVertex2f(487, 0); + glEnd; + + ESC_Alpha:=20; + if (RandomRange(0,20) > 18) and (ESC_Alpha=20) then + ESC_Alpha:=0 + else inc(ESC_Alpha); + if ESC_Alpha > 20 then ESC_Alpha:=20; + glColor4f(1, 1, 1, ESC_Alpha/20); + glBindTexture(GL_TEXTURE_2D, outro_exd.TexNum); + glbegin(gl_quads); + glTexCoord2f(0,0);glVertex2f(800-310, 600-247); + glTexCoord2f(0,247/256);glVertex2f(800-310, 600); + glTexCoord2f(310/512,247/256); glVertex2f(800, 600); + glTexCoord2f(310/512,0);glVertex2f(800, 600-247); + glEnd; + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + + // outro scrollers? + // ... + end; + +{ // draw credits runtime counter + SetFontStyle (2); + SetFontItalic(False); + SetFontSize(9); + SetFontPos (5, 5); + glColor4f(1, 1, 1, 1); +// RuntimeStr:='CTime: '+inttostr(floor(CTime/30.320663991914489602156136106092))+'.'+inttostr(floor(CTime/3.0320663991914489602156136106092)-floor(CTime/30.320663991914489602156136106092)*10); + RuntimeStr:='CTime: '+inttostr(CTime); + glPrint (Addr(RuntimeStr[1])); +} + // make the stars shine + GoldenRec.Draw; + //timing hack +// Draw_FunkyText; end; end. diff --git a/Game/Code/UltraStar.rc b/Game/Code/UltraStar.rc index 2160cfb8..cf954deb 100644 --- a/Game/Code/UltraStar.rc +++ b/Game/Code/UltraStar.rc @@ -11,4 +11,28 @@ FontO2 PNG "..\Fonts\Outline 2\Outline 2.PNG" FontO2 FNT "..\Fonts\Outline 2\Outline 2.dat" MAINICON ICON "..\Graphics\ustar-icon_v01.ico" -//MAINICON ICON "..\Graphics\us.ico" \ No newline at end of file +//MAINICON ICON "..\Graphics\us.ico" + +CRDTS_BG PNG "..\Graphics\credits_v5_bg.png" +CRDTS_OVL PNG "..\Graphics\credits_v5_overlay.png" +CRDTS_blindguard PNG "..\Graphics\names_blindguard.png" +CRDTS_blindy PNG "..\Graphics\names_blindy.png" +CRDTS_canni PNG "..\Graphics\names_canni.png" +CRDTS_commandio PNG "..\Graphics\names_commandio.png" +CRDTS_lazyjoker PNG "..\Graphics\names_lazyjoker.png" +CRDTS_mog PNG "..\Graphics\names_mog.png" +CRDTS_mota PNG "..\Graphics\names_mota.png" +CRDTS_skillmaster PNG "..\Graphics\names_skillmaster.png" +CRDTS_whiteshark PNG "..\Graphics\names_whiteshark.png" +INTRO_L01 PNG "..\Graphics\intro-l-01.png" +INTRO_L02 PNG "..\Graphics\intro-l-02.png" +INTRO_L03 PNG "..\Graphics\intro-l-03.png" +INTRO_L04 PNG "..\Graphics\intro-l-04.png" +INTRO_L05 PNG "..\Graphics\intro-l-05.png" +INTRO_L06 PNG "..\Graphics\intro-l-06.png" +INTRO_L07 PNG "..\Graphics\intro-l-07.png" +INTRO_L08 PNG "..\Graphics\intro-l-08.png" +INTRO_L09 PNG "..\Graphics\intro-l-09.png" +OUTRO_BG PNG "..\Graphics\outro-bg.png" +OUTRO_ESC PNG "..\Graphics\outro-esc.png" +OUTRO_EXD PNG "..\Graphics\outro-exit-dark.png" \ No newline at end of file diff --git a/Game/Graphics/credits_v5_bg.png b/Game/Graphics/credits_v5_bg.png new file mode 100644 index 00000000..23dfedd7 Binary files /dev/null and b/Game/Graphics/credits_v5_bg.png differ diff --git a/Game/Graphics/credits_v5_overlay.png b/Game/Graphics/credits_v5_overlay.png new file mode 100644 index 00000000..6dad2a4f Binary files /dev/null and b/Game/Graphics/credits_v5_overlay.png differ diff --git a/Game/Graphics/intro-l-01.png b/Game/Graphics/intro-l-01.png new file mode 100644 index 00000000..91561598 Binary files /dev/null and b/Game/Graphics/intro-l-01.png differ diff --git a/Game/Graphics/intro-l-02.png b/Game/Graphics/intro-l-02.png new file mode 100644 index 00000000..57a63175 Binary files /dev/null and b/Game/Graphics/intro-l-02.png differ diff --git a/Game/Graphics/intro-l-03.png b/Game/Graphics/intro-l-03.png new file mode 100644 index 00000000..d4d0757e Binary files /dev/null and b/Game/Graphics/intro-l-03.png differ diff --git a/Game/Graphics/intro-l-04.png b/Game/Graphics/intro-l-04.png new file mode 100644 index 00000000..8c98b00a Binary files /dev/null and b/Game/Graphics/intro-l-04.png differ diff --git a/Game/Graphics/intro-l-05.png b/Game/Graphics/intro-l-05.png new file mode 100644 index 00000000..c613925e Binary files /dev/null and b/Game/Graphics/intro-l-05.png differ diff --git a/Game/Graphics/intro-l-06.png b/Game/Graphics/intro-l-06.png new file mode 100644 index 00000000..c8e55c01 Binary files /dev/null and b/Game/Graphics/intro-l-06.png differ diff --git a/Game/Graphics/intro-l-07.png b/Game/Graphics/intro-l-07.png new file mode 100644 index 00000000..dd6286ae Binary files /dev/null and b/Game/Graphics/intro-l-07.png differ diff --git a/Game/Graphics/intro-l-08.png b/Game/Graphics/intro-l-08.png new file mode 100644 index 00000000..034f9d24 Binary files /dev/null and b/Game/Graphics/intro-l-08.png differ diff --git a/Game/Graphics/intro-l-09.png b/Game/Graphics/intro-l-09.png new file mode 100644 index 00000000..7cd1f7f5 Binary files /dev/null and b/Game/Graphics/intro-l-09.png differ diff --git a/Game/Graphics/names_blindguard.png b/Game/Graphics/names_blindguard.png new file mode 100644 index 00000000..a236548c Binary files /dev/null and b/Game/Graphics/names_blindguard.png differ diff --git a/Game/Graphics/names_blindy.png b/Game/Graphics/names_blindy.png new file mode 100644 index 00000000..2d2a0a01 Binary files /dev/null and b/Game/Graphics/names_blindy.png differ diff --git a/Game/Graphics/names_canni.png b/Game/Graphics/names_canni.png new file mode 100644 index 00000000..7dee63da Binary files /dev/null and b/Game/Graphics/names_canni.png differ diff --git a/Game/Graphics/names_commandio.png b/Game/Graphics/names_commandio.png new file mode 100644 index 00000000..e0d39f89 Binary files /dev/null and b/Game/Graphics/names_commandio.png differ diff --git a/Game/Graphics/names_lazyjoker.png b/Game/Graphics/names_lazyjoker.png new file mode 100644 index 00000000..6d76cfe7 Binary files /dev/null and b/Game/Graphics/names_lazyjoker.png differ diff --git a/Game/Graphics/names_mog.png b/Game/Graphics/names_mog.png new file mode 100644 index 00000000..7521c647 Binary files /dev/null and b/Game/Graphics/names_mog.png differ diff --git a/Game/Graphics/names_mota.png b/Game/Graphics/names_mota.png new file mode 100644 index 00000000..a55a33cb Binary files /dev/null and b/Game/Graphics/names_mota.png differ diff --git a/Game/Graphics/names_skillmaster.png b/Game/Graphics/names_skillmaster.png new file mode 100644 index 00000000..9f440846 Binary files /dev/null and b/Game/Graphics/names_skillmaster.png differ diff --git a/Game/Graphics/names_whiteshark.png b/Game/Graphics/names_whiteshark.png new file mode 100644 index 00000000..2eda5f04 Binary files /dev/null and b/Game/Graphics/names_whiteshark.png differ diff --git a/Game/Graphics/outro-bg.png b/Game/Graphics/outro-bg.png new file mode 100644 index 00000000..f12d5826 Binary files /dev/null and b/Game/Graphics/outro-bg.png differ diff --git a/Game/Graphics/outro-esc.png b/Game/Graphics/outro-esc.png new file mode 100644 index 00000000..16ca2158 Binary files /dev/null and b/Game/Graphics/outro-esc.png differ diff --git a/Game/Graphics/outro-exit-dark.png b/Game/Graphics/outro-exit-dark.png new file mode 100644 index 00000000..306ad638 Binary files /dev/null and b/Game/Graphics/outro-exit-dark.png differ diff --git a/Sounds/credits-outro-tune.mp3 b/Sounds/credits-outro-tune.mp3 new file mode 100644 index 00000000..fc23561c Binary files /dev/null and b/Sounds/credits-outro-tune.mp3 differ diff --git a/Sounds/wome-credits-tune.mp3 b/Sounds/wome-credits-tune.mp3 new file mode 100644 index 00000000..564e8d6f Binary files /dev/null and b/Sounds/wome-credits-tune.mp3 differ -- cgit v1.2.3 From 4e6d87048c178dcbcd45d8ca8ac5da0f6e5d3354 Mon Sep 17 00:00:00 2001 From: b1indy Date: Fri, 20 Jul 2007 21:57:15 +0000 Subject: just something for the credits screen (forgot this piece) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@310 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMusic.pas | 1 + 1 file changed, 1 insertion(+) diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index 3fcd2a21..4e647ed3 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -407,6 +407,7 @@ procedure TMusic.Play; begin if Loaded then begin // MediaPlayer.Play; + if Loop then BASS_ChannelPlay(Bass, True); // start from beginning... actually bass itself does not loop, nor does this TMusic Class BASS_ChannelPlay(Bass, False); // for setting position before playing end; end; -- cgit v1.2.3 From 75fd5d6e84319dccc367441704566aa704817699 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 22 Jul 2007 14:35:39 +0000 Subject: DX skin: funky, shiny blue loading pic, with bevel on logo Classic skin: fugly, ugly button for key [M] added git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@317 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/[button]m.jpg | Bin 0 -> 889 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Skins/Classic/[button]m.jpg diff --git a/Skins/Classic/[button]m.jpg b/Skins/Classic/[button]m.jpg new file mode 100644 index 00000000..ebb7156e Binary files /dev/null and b/Skins/Classic/[button]m.jpg differ -- cgit v1.2.3 From 2785a93305dc8574b9dd7ec909cc8aa71c91ab61 Mon Sep 17 00:00:00 2001 From: b1indy Date: Sun, 22 Jul 2007 14:40:26 +0000 Subject: again some fixes in reflection code for buttons and statics git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@318 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Menu/UMenuButton.pas | 6 +++--- Game/Code/Menu/UMenuStatic.pas | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index fde808e2..919a18c9 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -418,7 +418,7 @@ begin Spacing := Reflectionspacing else Spacing := DeSelectReflectionspacing; - + with Texture do begin //Bind Tex and GL Attributes @@ -440,13 +440,13 @@ begin //Bottom Left glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); - glTexCoord2f(TexX1*TexW, {TexY1*TexH*}0.5); + glTexCoord2f(TexX1*TexW, TexY1+TexH*0.5); glVertex3f(x, y+h*scaleH + h*scaleH/2 + Spacing, z); //Bottom Right glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); - glTexCoord2f(TexX2*TexW, {TexY1*TexH*}0.5); + glTexCoord2f(TexX2*TexW, TexY1+TexH*0.5); glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Spacing, z); //Top Right diff --git a/Game/Code/Menu/UMenuStatic.pas b/Game/Code/Menu/UMenuStatic.pas index 2a5e1e93..5f19fbf3 100644 --- a/Game/Code/Menu/UMenuStatic.pas +++ b/Game/Code/Menu/UMenuStatic.pas @@ -52,13 +52,13 @@ begin //Bottom Left glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); - glTexCoord2f(TexX1*TexW, 0.5); + glTexCoord2f(TexX1*TexW, 0.5*TexH+TexY1); glVertex3f(x, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); //Bottom Right glColor4f(ColR * Int, ColG * Int, ColB * Int, 0); - glTexCoord2f(TexX2*TexW, 0.5); + glTexCoord2f(TexX2*TexW, 0.5*TexH+TexY1); glVertex3f(x+w*scaleW, y+h*scaleH + h*scaleH/2 + Reflectionspacing, z); //Top Right @@ -68,7 +68,7 @@ begin glEnd; glDisable(GL_TEXTURE_2D); - glDisable(GL_DEPTH_TEST); + glDisable(GL_DEPTH_TEST); glDisable(GL_BLEND); end; end; -- cgit v1.2.3 From c438be267b23c63a635f584c0b8379d8808aea45 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 22 Jul 2007 16:10:45 +0000 Subject: Classic theme: All Legends in done! Fixed bg bug in Score Screen Fixed some mispositioning with Dutch language Some changes made on Songscreen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@319 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Classic.ini | 1198 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 833 insertions(+), 365 deletions(-) diff --git a/Themes/Classic.ini b/Themes/Classic.ini index d9f1c0f2..8e6d693a 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -6,6 +6,7 @@ [Theme] Name=Classic Creator=Ultrastar Deluxe Team +US_Version=USD 100 [Colors] White = 255 255 255 @@ -58,7 +59,7 @@ Align=0 [MainText2] X =226 -Y =574 +Y =553 Color=Gray Font =1 Size =7 @@ -67,7 +68,7 @@ Align=0 [MainText3] X =380 -Y =574 +Y =553 Color=Gray Font =1 Size =7 @@ -75,8 +76,8 @@ Text=SING_LEGEND_SELECT Align=0 [MainText4] -X =535 -Y =574 +X =540 +Y =553 Color=Gray Font =1 Size =7 @@ -129,8 +130,8 @@ TexY2=1 [MainStatic3] Tex =ButtonNavi -X =190 -Y =574 +X =196 +Y =553 W =22 H =22 Color =White @@ -143,7 +144,7 @@ TexY2=1 [MainStatic4] Tex =ButtonEnter X =350 -Y =574 +Y =553 W =22 H =22 Color =White @@ -156,7 +157,7 @@ TexY2=1 [MainStatic5] Tex =ButtonE X =510 -Y =574 +Y =553 W =22 H =22 Color =White @@ -264,7 +265,7 @@ Visible=1 Direction=1 Color =Black Alpha=1 -X=320 +X=378 Y=488 Z=1 PieceW=8 @@ -283,29 +284,11 @@ Color=White Tex =VideoIcon Type=Font Black -[SongText1] -X =30 -Y =455 -Color=GrayLight -Font =1 -Size =15 -Text=SING_SONG_SELECTION -Align=0 - -[SongText2] -X =50 -Y =500 -Color=GrayDark -Font =1 -Size =8 -Text=SING_SONG_SELECTION_DESC -Align=0 - [SongStatic1] X =0 Y =100 W =800 -H =450 +H =350 Color=Black Tex =SongFade Type=Font Black @@ -332,6 +315,7 @@ X =270 Y =120 W =260 H =240 +Z =0.45 Color =Gray Tex =SongSelection Type=Font Black @@ -341,7 +325,7 @@ TexX2=1 TexY2=1 [SongStatic4] -X =320 +X =378 Y =463 Z = 0.8 W =44 @@ -382,8 +366,8 @@ Align =1 Text= [SongTextCat] -X =100 -Y =15 +X =67 +Y =524 Color=Gray Font =1 Size =7 @@ -403,6 +387,207 @@ Text= #TexX2=1 #TexY2=1 +#Variable statics and texts for song-screen in sing- and partymode +# There can be an unlimited Number of Statics and Texts, As long +# as the numbers are in order. +# Statics that are shown in PartyMode Only are Named_ +# SongStaticParty[No] +# Texts that are shown in PartyMode Only are Named_ +# SongTextParty[No] +# Statics that are shown in Normal Mode Only are Named_ +# SongStaticNonParty[No] +# Texts that are shown in Normal Mode Only are Named_ +# SongTextNonParty[No] +#Here are the ones for singmode + +[SongStaticNonParty1] +X =120 +Y =553 +W =22 +H =22 +Tex=ButtonAlt +Color =White +Type=Plain + +[SongStaticNonParty2] +X =156 +Y =553 +W =22 +H =22 +Tex=ButtonAZ +Color =White +Type=Plain + +[SongStaticNonParty3] +X =298 +Y =553 +W =22 +H =22 +Tex=ButtonM +Color =White +Type=Plain + +[SongStaticNonParty4] +X =414 +Y =553 +W =22 +H =22 +Tex=ButtonJ +Color =White +Type=Plain + +[SongStaticNonParty5] +X =585 +Y =553 +W =22 +H =22 +Tex=ButtonP +Color =White +Type=Plain + +#Texts Non Party +[SongTextNonParty1] +X =30 +Y =455 +Color=GrayLight +Font =1 +Size =15 +Text=SING_SONG_SELECTION +Align=0 + +[SongTextNonParty2] +X =50 +Y =500 +Color=GrayDark +Font =1 +Size =8 +Text=SING_SONG_SELECTION_DESC +Align=0 + +[SongTextNonParty3] +X =144 +Y =556 +Color=Black +Font =1 +Size =5 +Text=+ + +[SongTextNonParty4] +X =186 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_SONG_SELECTION_GOTO + +[SongTextNonParty5] +X =328 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_SONG_SELECTION_MENU + +[SongTextNonParty6] +X =444 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SONG_JUMPTO_DESC + +[SongTextNonParty7] +X =615 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SING_SONG_SELECTION_PLAYLIST + + +#and theese are the ones for partymode + + +[SongStaticParty1] +X =187 +Y =553 +W =22 +H =22 +Tex=Button13 +Color =White +Type=Plain + +[SongStaticParty2] +X =363 +Y =553 +W =22 +H =22 +Tex=ButtonM +Color =White +Type=Plain + +[SongStaticParty3] +X =525 +Y =553 +W =22 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +#Texts for Party Mode + +[SongTextParty1] +X =30 +Y =455 +Color=GrayLight +Font =1 +Size =15 +Align=0 +Text=PARTY_MODE + +[SongTextParty2] +X =50 +Y =500 +Color=GrayDark +Font =1 +Size =8 +Align=0 +Text=PARTY_SONG_WHEREAMI + +[SongTextParty3] +X =217 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=SONG_MENU_NAME_PARTY_JOKER + +[SongTextParty4] +X =393 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=PARTY_SONG_MENU + +[SongTextParty5] +X =555 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=PARTY_SONG_LEGEND_CONTINUE + +#variable statics end + # Jokers, 5 for each team, only shown in party Mode [SongStaticTeam1Joker1] Tex =Joker @@ -841,7 +1026,7 @@ Align=0 Texts =1 [ScoreBackground] -Tex=ScoreBG +Tex=ScoresBG [ScoreText1] X =90 @@ -849,7 +1034,29 @@ Y =500 Color =GrayDark Font =1 Size =17 -Text =song score +Text =SONG_SCORE_WHEREAMI +Align=0 + +[ScoreStatic1] +Tex =ButtonEnter +X =350 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[ScoreText2] +X =380 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_CONTINUE Align=0 [ScoreTextArtist] @@ -2203,22 +2410,6 @@ Font = 1 Size = 25 Text = SING_OPTIONS -[OptionsText2] -X = 250 -Y = 550 -Color=Gray -Font = 1 -Size = 8 -Text=SING_LEGEND_NAVIGATE - -[OptionsText3] -X = 500 -Y = 550 -Color=Gray -Font = 1 -Size = 8 -Text=SING_LEGEND_SELECT - [OptionsStatic1] Tex=MainIcon X=40 @@ -2228,6 +2419,72 @@ H=32 Color=ColorDark Type=Font Black +[OptionsStatic2] +Tex =ButtonNavi +X =196 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[OptionsStatic3] +Tex =ButtonEnter +X =350 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[OptionsStatic4] +Tex =ButtonEsc +X =510 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[OptionsText2] +X =226 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_NAVIGATE +Align=0 + +[OptionsText3] +X =380 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_SELECT +Align=0 + +[OptionsText4] +X =540 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_ESC +Align=0 + [OptionsTextDescription] X = 70 Y = 248 @@ -2420,7 +2677,7 @@ Texts = 3 Tex=OptionsBG [OptionsGameStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -2430,7 +2687,7 @@ Type=Plain Style=5 [OptionsGameStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -2438,18 +2695,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsGameText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text=SING_OPTIONS_GAME_WHEREAMI - [OptionsGameText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -2458,7 +2705,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsGameText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -2466,6 +2713,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsGameText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_GAME_WHEREAMI + [OptionsGameSelectPlayers] Tex = MainBar TexSBG = MainBar @@ -2605,7 +2862,7 @@ Texts = 3 Tex=OptionsBG [OptionsGraphicsStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -2615,7 +2872,7 @@ Type=Plain Style=5 [OptionsGraphicsStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -2623,18 +2880,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsGraphicsText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text=SING_OPTIONS_GRAPHICS_WHEREAMI - [OptionsGraphicsText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -2643,7 +2890,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsGraphicsText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -2651,6 +2898,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsGraphicsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_GRAPHICS_WHEREAMI + [OptionsGraphicsSelectSlideResolution] Tex =MainBar TexSBG =MainBar @@ -2769,7 +3026,7 @@ Texts = 3 Tex=OptionsBG [OptionsSoundStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -2779,7 +3036,7 @@ Type=Plain Style=5 [OptionsSoundStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -2787,18 +3044,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsSoundText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text =SING_OPTIONS_SOUND_WHEREAMI - [OptionsSoundText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -2807,7 +3054,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsSoundText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -2815,6 +3062,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsSoundText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_SOUND_WHEREAMI + [OptionsSoundSelectMicBoost] Tex =MainBar TexSBG =MainBar @@ -2973,7 +3230,7 @@ Texts = 3 Tex=OptionsBG [OptionsLyricsStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -2983,7 +3240,7 @@ Type=Plain Style=5 [OptionsLyricsStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -2991,18 +3248,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsLyricsText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text =SING_OPTIONS_LYRICS_WHEREAMI - [OptionsLyricsText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -3011,7 +3258,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsLyricsText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -3019,6 +3266,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsLyricsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_LYRICS_WHEREAMI + [OptionsLyricsSelectLyricsFont] Tex =MainBar TexSBG =MainBar @@ -3097,7 +3354,7 @@ Texts = 5 Tex=OptionsBG [OptionsThemesStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -3107,7 +3364,7 @@ Type=Plain Style=5 [OptionsThemesStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -3115,18 +3372,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsThemesText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text =SING_OPTIONS_THEMES_WHEREAMI - [OptionsThemesText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -3135,7 +3382,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsThemesText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -3143,6 +3390,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsThemesText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text =SING_OPTIONS_THEMES_WHEREAMI + [OptionsThemesSelectTheme] Tex =MainBar TexSBG =MainBar @@ -3221,7 +3478,7 @@ Texts = 3 Tex=OptionsBG [OptionsRecordStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -3231,7 +3488,7 @@ Type=Plain Style=5 [OptionsRecordStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -3239,18 +3496,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsRecordText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text=SING_OPTIONS_RECORD_WHEREAMI - [OptionsRecordText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -3259,7 +3506,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsRecordText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -3267,6 +3514,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsRecordText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_RECORD_WHEREAMI + [OptionsRecordSelectSlideCard] Tex = MainBar TexSBG = MainBar @@ -3369,7 +3626,7 @@ Texts = 3 Tex=OptionsBG [OptionsAdvancedStatic1] -X =260 +X =275 Y =553 W =22 H =22 @@ -3379,7 +3636,7 @@ Type=Plain Style=5 [OptionsAdvancedStatic2] -X =388 +X =435 Y =553 W =22 H =22 @@ -3387,18 +3644,8 @@ Tex=ButtonEsc Color =White Type=Plain -[OptionsAdvancedText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text=SING_OPTIONS_ADVANCED_WHEREAMI - [OptionsAdvancedText2] -X =294 +X =305 Y =552 Color=Gray Font =1 @@ -3407,7 +3654,7 @@ Align=0 Text=SING_LEGEND_NAVIGATE [OptionsAdvancedText3] -X =418 +X =465 Y =552 Color=Gray Font =1 @@ -3415,6 +3662,16 @@ Size =7 Align=0 Text=SING_LEGEND_ESC +[OptionsAdvancedText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=SING_OPTIONS_ADVANCED_WHEREAMI + [OptionsAdvancedSelectLoadAnimation] Tex =MainBar TexSBG =MainBar @@ -3572,6 +3829,27 @@ Texts=1 [Top5Background] Tex=Top5BG +[Top5Static2] +Tex =ButtonEnter +X =350 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[Top5Text2] +X =380 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_CONTINUE +Align=0 [Top5Text1] X =100 @@ -3821,6 +4099,72 @@ Texts=2 [LevelBackground] Tex=MainBG +[LevelStatic2] +Tex =ButtonNavi +X =196 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[LevelStatic3] +Tex =ButtonEnter +X =350 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[LevelStatic4] +Tex =ButtonEsc +X =510 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[LevelText3] +X =226 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_NAVIGATE +Align=0 + +[LevelText4] +X =380 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_SELECT +Align=0 + +[LevelText5] +X =540 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_ESC +Align=0 + [LevelStatic1] X=20 Y=250 @@ -3925,41 +4269,107 @@ Texts=2 [NameBackground] Tex=MainBG -[NameStatic1] -X=20 -Y=250 -W=32 -H=32 -Tex=MainIcon -Type=Font Black -Color=ColorDark +[NameStatic2] +Tex =ButtonNavi +X =176 +Y =553 +W =22 +H =22 +Color =White +Type=Plain TexX1=0 TexY1=0 TexX2=1 TexY2=1 -[NameText1] -X=30 -Y=180 -Font=1 -Size=22 -Align=0 -Text=SING_PLAYER_WHEREAMI -Color=GrayLight - -[NameText2] -X=50 -Y=248 -Font=1 -Size=10 -Align=0 -Text=SING_PLAYER_DESC -Color=GrayDark +[NameStatic3] +Tex =ButtonAZ +X =330 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 -[NameButtonPlayer1] -Tex=Button -X=25 -Y=310 +[NameStatic4] +Tex =ButtonEnter +X =532 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[NameText3] +X =206 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_NAVIGATE +Align=0 + +[NameText4] +X =360 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_PLAYER_ENTER_NAME +Align=0 + +[NameText5] +X =562 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_CONTINUE +Align=0 + +[NameStatic1] +X=20 +Y=250 +W=32 +H=32 +Tex=MainIcon +Type=Font Black +Color=ColorDark +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[NameText1] +X=30 +Y=180 +Font=1 +Size=22 +Align=0 +Text=SING_PLAYER_WHEREAMI +Color=GrayLight + +[NameText2] +X=50 +Y=248 +Font=1 +Size=10 +Align=0 +Text=SING_PLAYER_DESC +Color=GrayDark + +[NameButtonPlayer1] +Tex=Button +X=25 +Y=310 W=250 H=70 Type=Font Black @@ -4090,51 +4500,80 @@ Texts = 3 Tex=PartyBG [PartyOptionsStatic1] -X =260 +Tex =ButtonNavi +X =196 Y =553 W =22 H =22 -Tex=ButtonNavi Color =White Type=Plain -Style=5 +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 [PartyOptionsStatic2] -X =388 +Tex =ButtonEnter +X =350 Y =553 W =22 H =22 -Tex=ButtonEnter Color =White Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 -[PartyOptionsText1] -X = 50 -Y = 10 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 1 -Size = 25 -Text=PARTY_OPTIONS_WHEREAMI +[PartyOptionsStatic3] +Tex =ButtonEsc +X =510 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 [PartyOptionsText2] -X =294 -Y =552 +X =226 +Y =553 Color=Gray Font =1 Size =7 -Align=0 Text=SING_LEGEND_NAVIGATE +Align=0 [PartyOptionsText3] -X =418 -Y =552 +X =380 +Y =553 Color=Gray Font =1 Size =7 -Align=0 Text=SING_LEGEND_CONTINUE +Align=0 + +[PartyOptionsText4] +X =540 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_ESC +Align=0 + +[PartyOptionsText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=PARTY_OPTIONS_WHEREAMI [PartyOptionsSelectLevel] Tex = MainBar @@ -4312,28 +4751,6 @@ Texts=6 Tex=PartyBG [PartyPlayerStatic1] -X =0 -Y =549 -W =252 -H =28 -Tex=Leiste1 -Color =White -Type=Plain -Reflection=1 -ReflectionSpacing=1 - -[PartyPlayerStatic2] -X =254 -Y =549 -W =548 -H =28 -Tex=Leiste2 -Color =White -Type=Plain -Reflection=1 -ReflectionSpacing=1 - -[PartyPlayerStatic3] X =40 Y =22 W =27 @@ -4342,91 +4759,81 @@ Color =White Tex =PartyIcon Type=Font Black -[PartyPlayerStatic4] -X =260 +[PartyPlayerText1] +X = 50 +Y = 10 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 25 +Text=PARTY_PLAYER_WHEREAMI + +[PartyPlayerStatic2] +Tex =ButtonNavi +X =176 Y =553 W =22 H =22 -Tex=ButtonNavi Color =White Type=Plain -Style=5 +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 -[PartyPlayerStatic5] -X =388 +[PartyPlayerStatic3] +Tex =ButtonAZ +X =330 Y =553 W =22 H =22 -Tex=ButtonAZ Color =White Type=Plain -Style=5 +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 -[PartyPlayerStatic6] -X =556 +[PartyPlayerStatic4] +Tex =ButtonEnter +X =532 Y =553 W =22 H =22 -Tex=ButtonEnter Color =White Type=Plain -Style=5 - -[PartyPlayerText1] -X =70 -Y =6 -ColR = 0.7 -ColG = 0.7 -ColB = 0.7 -Font = 0 -Size = 20 -Color =White -Text=PARTY_MODE +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 [PartyPlayerText2] -X =70 -Y =53 -Color=White -Font =0 -Size =10 -Align =0 -Text=PARTY_PLAYER_DESC - -[PartyPlayerText3] -X =238 -Y =552 -Color=Black -Font =0 -Size =7 -Align=2 -Text=PARTY_PLAYER_WHEREAMI - -[PartyPlayerText4] -X =294 -Y =552 -Color=Black -Font =0 +X =206 +Y =553 +Color=Gray +Font =1 Size =7 -Align=0 Text=SING_LEGEND_NAVIGATE +Align=0 -[PartyPlayerText5] -X =418 -Y =552 -Color=Black -Font =0 +[PartyPlayerText3] +X =360 +Y =553 +Color=Gray +Font =1 Size =7 +Text=SING_PLAYER_ENTER_NAME Align=0 -Text=PARTY_PLAYER_ENTER_NAME -[PartyPlayerText6] -X =586 -Y =552 -Color=Black -Font =0 +[PartyPlayerText4] +X =562 +Y =553 +Color=Gray +Font =1 Size =7 +Text=SING_LEGEND_CONTINUE Align=0 -Text=PARTY_PLAYER_LEGEND_CONTINUE [PartyPlayerTeam1Name] Tex=PartyTeamButton2 @@ -4744,7 +5151,7 @@ Color =ColorDark DColor = Gray Type=Font Black Texts=1 -Z = 0.98 +Z = 0.988 [SongMenuButton1Text1] X =110 @@ -4766,7 +5173,7 @@ Color =ColorDark DColor = Gray Type=Font Black Texts=1 -Z = 0.98 +Z = 0.988 [SongMenuButton2Text1] X =110 @@ -4788,7 +5195,7 @@ Color =ColorDark DColor = Gray Type=Font Black Texts=1 -Z = 0.98 +Z = 0.988 [SongMenuButton3Text1] X =110 @@ -4810,7 +5217,7 @@ Color =ColorDark DColor = Gray Type=Font Black Texts=1 -Z = 0.98 +Z = 0.988 [SongMenuButton4Text1] X =110 @@ -4830,7 +5237,7 @@ X = 505 Y = 255 W = 0 H = 25 -Z = 0.98 +Z = 0.988 SkipX = 0 SBGW=220 @@ -4859,8 +5266,9 @@ Z=0.99 [SongMenuStatic1] X =400 Y =100 -W =400 +W =200 H =262 +Z =0.45 Color=White Tex =Rectangle Type=Font Black @@ -4872,14 +5280,15 @@ TexY2=0.9 [SongMenuStatic2] X =400 Y =100 -W =400 +W =200 H =262 +Z =0.45 Color=Black Tex =SongFade Type=Font Black -TexX1=0.1 +TexX1=0.5 TexY1=0.1 -TexX2=0.9 +TexX2=0.7 TexY2=0.7 [SongMenuStatic3] @@ -4888,7 +5297,7 @@ X =500 Y =140 W =230 H =200 -Z =0.94 +Z =0.985 Int=1 Color =White Type=Font Black @@ -4898,6 +5307,7 @@ X =705 Y =120 W =42 H =240 +Z=0.985 Color =Gray Tex =SongMenuBorder Type=Font Black @@ -4912,6 +5322,72 @@ Statics=6 [StatMainBackground] Tex=MainBG +[StatMainStatic5] +Tex =ButtonNavi +X =196 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[StatMainStatic6] +Tex =ButtonEnter +X =350 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[StatMainStatic7] +Tex =ButtonEsc +X =510 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[StatMainText3] +X =226 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_NAVIGATE +Align=0 + +[StatMainText4] +X =380 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_SELECT +Align=0 + +[StatMainText5] +X =540 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_ESC +Align=0 + [StatMainButtonScores] X =589 Y =120 @@ -5041,26 +5517,8 @@ Color =ColorDark Tex =MainIcon Type=Font Black -[StatMainStatic2] -X =260 -Y =553 -W =22 -H =22 -Tex=ButtonNavi -Color =White -Type=Plain -Style=5 -[StatMainStatic3] -X =388 -Y =553 -W =22 -H =22 -Tex=ButtonEsc -Color =White -Type=Plain - -[StatMainStatic4] +[StatMainStatic2] X =40 Y =120 W =520 @@ -5069,7 +5527,7 @@ Tex=StatMainBG1 Color =ColorLight Type=Font Black -[StatMainStatic5] +[StatMainStatic3] X =40 Y =140 W =520 @@ -5078,7 +5536,7 @@ Tex=StatMainBG2 Color =ColorDark Type=Font Black -[StatMainStatic6] +[StatMainStatic4] X =40 Y =440 W =520 @@ -5105,24 +5563,6 @@ Size =10 Align =0 Text=STAT_MAIN_DESC -[StatMainText3] -X =294 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_LEGEND_NAVIGATE - -[StatMainText4] -X =418 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_LEGEND_ESC - [StatDetail] Texts=0 @@ -5131,6 +5571,72 @@ Statics=0 [StatDetailBackground] Tex=MainBG +[StatDetailStatic5] +Tex =ButtonNavi +X =196 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[StatDetailStatic6] +Tex =ButtonEnter +X =350 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[StatDetailStatic7] +Tex =ButtonEsc +X =510 +Y =553 +W =22 +H =22 +Color =White +Type=Plain +TexX1=0 +TexY1=0 +TexX2=1 +TexY2=1 + +[StatDetailText2] +X =226 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_NAVIGATE +Align=0 + +[StatDetailText3] +X =380 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_SELECT +Align=0 + +[StatDetailText4] +X =540 +Y =553 +Color=Gray +Font =1 +Size =7 +Text=SING_LEGEND_ESC +Align=0 + [StatDetailButtonNext] X =589 Y =120 @@ -5326,27 +5832,7 @@ Color =ColorDark Tex =MainIcon Type=Font Black - [StatDetailStatic2] -X =260 -Y =553 -W =22 -H =22 -Tex=ButtonNavi -Color =White -Type=Plain -Style=5 - -[StatDetailStatic3] -X =388 -Y =553 -W =22 -H =22 -Tex=ButtonEsc -Color =White -Type=Plain - -[StatDetailStatic4] X =40 Y =120 W =520 @@ -5355,7 +5841,7 @@ Tex=StatDetailBG1 Color =ColorLight Type=Font Black -[StatDetailStatic5] +[StatDetailStatic3] X =40 Y =144 W =520 @@ -5364,7 +5850,7 @@ Tex=StatMainBG2 Color =ColorDark Type=Font Black -[StatDetailStatic6] +[StatDetailStatic4] X =40 Y =523 W =520 @@ -5383,24 +5869,6 @@ Size =22 Text=STAT_DETAIL Align=0 -[StatDetailText2] -X =294 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_LEGEND_NAVIGATE - -[StatDetailText3] -X =418 -Y =552 -Color=Black -Font =0 -Size =7 -Align=0 -Text=SING_LEGEND_ESC - # # # # OnScreen PopUp Error / Question Messages # # # # [CheckPopup] -- cgit v1.2.3 From b912a15b29e20fabecbb887760395359844e8739 Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 23 Jul 2007 11:39:24 +0000 Subject: Final work on credits (done :P - fuckings to the cia readers) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@322 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenCredits.pas | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index 43a9a3ca..fd80f1f5 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -67,24 +67,11 @@ type const Funky_Text: AnsiString = -{ 'Hey doodz, we made it! You had to wait very long cause we wanted it to be perfect. So here it is, the most perfect UltraStar you`ll ever get. We have this awesome stars, we have this awesome party mode with plugins, we have the best skins and yes we´re '+ - 'the best :P Whiteshark tried his best to fix all the bugs, and he has done an awesome job! Mota and Mog fired up their Photoshops to create this stunning skins, Blindy has brought you this massive stars and Canni did the documentation. BlindGuard hosts '+ - 'the forum, and oh my gosh he spends a lot of time fucking with all the wankers asking for mp3s. We also want to thank the people in the forum for their massive support and their patience xD Blindy and Mog also want to thank www.demoscene.tv for '+ - 'inspiration (yay Kewlerz suck, but we suck more) - also big shout outs to Einsiedler for brewing our favourite beer and dnbradio.com for the music. Big greetings from Mog to Antje too, I love you baby :X'; -} - 'So here we are, grandma deluxe has arrived. It´s Mog on the keyboard, but I speak for all of us teamers :P Took us '+ - 'longer than expected to come up with this, but hey you know good things take their time ;) As we tried to put in as '+ - 'many features as we have seen on the board (and our`s aswell), like the neat eyecandy (stars h00ray), the party mode, '+ - 'new awesome skins, fucking bugfixes (poor Whiteshark) and a hell lot of other stuff. I´m also proud to announce that '+ - 'we´re the only UltraStar with all this stuff, nice hu? ;) Maybe it´s about time to explain why it took so long, I just '+ - 'strip the part with lazy joker (has he done _anything_?) and all the other people who joined #ultra-star.dl.am on '+ - 'QuakeNet just to beg for a beta or wanted to "help" (hey I´m from a big newspaper). Actually there was a lot of code '+ - 'that had to be written up from scratch (party mode anyone?), and some of the stuff was pretty new to us (OpenGL h00ray). '+ - 'And it reallly didn´t help when people on the board didn´t stop arguing about the release date (I don´t say wankers), so '+ - 'next time some real help would be apprechiated - send us beer if you´re unskilled xD It´s almost sunset outside, time '+ - 'for the thanks then. We want to thank sourceforge for the hosting, BlindGuard for the board support (bet he has some '+ - 'grey hairs now), Wome for the tune you hear right now (thanks mate :X), Corvus5 for the work on UltraStar, our friends '+ - 'on the board (ultra-star.dl.am the place to be!), Einsiedler for the beer, the demoscene and weed for some inspiration...'; + 'Grandma Deluxe has arrived! Thanks to Corvus5 for the massive work on UltraStar, Wome for the nice tune you´re hearing, '+ + 'all the people who put massive effort and work in new songs (don´t forget UltraStar w/o songs would be nothing), ppl from '+ + 'irc helping us - eBandit and Gabari, scene ppl who really helped instead of compiling and running away. Greetings to '+ + 'Demoscene.tv, scene.org, KakiArts, Sourceforge,..'; + Timings: array[0..21] of Cardinal=( 20, // 0 Delay vor Start @@ -972,7 +959,7 @@ Data := Music.GetFFTData; k:=0; for j:=0 to 40 do if Data[j]>=Data[k] then k:=j; - if Data[k]>0.25 then begin + if Data[k]>0.2 then begin l:=RandomRange(6,16); j:=RandomRange(0,27); GoldenRec.Spawn(myLogoCoords[j,0], myLogoCoords[j,1], 16-l, l, 0, -1, PerfectNote, 0); @@ -1025,6 +1012,7 @@ Data := Music.GetFFTData; Music.Stop; Music.Open(soundpath + 'credits-outro-tune.mp3'); Music.Play; + Music.SetVolume(20); Music.SetLoop(True); end; if CTime > 231 then begin -- cgit v1.2.3 From 5d726d0f9ce0f3cc6892d6831813abd9c1e9d79a Mon Sep 17 00:00:00 2001 From: mogguh Date: Mon, 23 Jul 2007 12:23:29 +0000 Subject: Really final work on credits (done! - stop reading cia, get rl) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@323 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenCredits.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index fd80f1f5..b69c17aa 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -69,8 +69,8 @@ const Funky_Text: AnsiString = 'Grandma Deluxe has arrived! Thanks to Corvus5 for the massive work on UltraStar, Wome for the nice tune you´re hearing, '+ 'all the people who put massive effort and work in new songs (don´t forget UltraStar w/o songs would be nothing), ppl from '+ - 'irc helping us - eBandit and Gabari, scene ppl who really helped instead of compiling and running away. Greetings to '+ - 'Demoscene.tv, scene.org, KakiArts, Sourceforge,..'; + 'irc helping us - eBandit and Gabari, scene ppl who really helped instead of compiling and running away. Greetings to DennisTheMenace for betatesting, '+ + 'Demoscene.tv, pouet.net, KakiArts, Sourceforge,..'; Timings: array[0..21] of Cardinal=( -- cgit v1.2.3 From 6c3d2faf77d4b411fbca90299fc186b4a55ad596 Mon Sep 17 00:00:00 2001 From: b1indy Date: Mon, 23 Jul 2007 13:49:35 +0000 Subject: fixed positions in advanced options screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@324 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index b85c05db..8c8b7d93 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -4153,32 +4153,34 @@ Size =7 Align=0 Text=SING_LEGEND_ESC -[OptionsAdvancedSelectLoadAnimation] -Tex =MainBar -TexSBG =SelectBG -Text=SING_OPTIONS_ADVANCED_LOADANIMATION -X = 40 -Y = 85 -W = 230 -H = 70 -SkipX = 50 -Color = ColorDark -DColor = Gray -TColor = White -TDColor = White -SBGTex =MainBar -SBGColor = ColorDark -SBGDColor = Gray -STColor = White -STDColor = GrayDark +#########unused at the moment######### +#[OptionsAdvancedSelectLoadAnimation] +#Tex =MainBar +#TexSBG =SelectBG +#Text=SING_OPTIONS_ADVANCED_LOADANIMATION +#X = 40 +#Y = 85 +#W = 230 +#H = 70 +#SkipX = 50 + +#Color = ColorDark +#DColor = Gray +#TColor = White +#TDColor = White +#SBGTex =MainBar +#SBGColor = ColorDark +#SBGDColor = Gray +#STColor = White +#STDColor = GrayDark [OptionsAdvancedSelectScreenFade] Tex =MainBar TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_SCREENFADE X = 40 -Y = 140 +Y = 85 W = 230 H = 70 SkipX = 50 @@ -4198,7 +4200,7 @@ Tex =MainBar TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_EFFECTSING X = 40 -Y = 195 +Y = 140 W = 230 H = 70 SkipX = 50 @@ -4218,7 +4220,7 @@ Tex =MainBar TexSBG =SelectBG Text =SING_OPTIONS_GRAPHICS_LINEBONUS X = 40 -Y = 250 +Y = 195 W = 230 H = 70 SkipX = 50 @@ -4238,7 +4240,7 @@ Tex =MainBar TexSBG =SelectBG Text=SING_OPTIONS_ADVANCED_ONSONGCLICK X = 40 -Y = 305 +Y = 250 W = 230 H = 70 SkipX = 50 @@ -4258,7 +4260,7 @@ Tex =MainBar TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_ASKBEFOREDEL X = 40 -Y = 360 +Y = 305 W = 230 H = 70 SkipX = 50 @@ -4278,7 +4280,7 @@ Tex =MainBar TexSBG =SelectBG Text =SING_OPTIONS_ADVANCED_PARTYPOPUP X = 40 -Y = 415 +Y = 360 W = 230 H = 70 SkipX = 50 @@ -4295,7 +4297,7 @@ STDColor = GrayDark [OptionsAdvancedButtonExit] X = 40 -Y = 470 +Y = 415 W = 230 H = 70 Tex =MainBar -- cgit v1.2.3 From 90726939633b3b9fb53094af8e1ea4a869f1e7c5 Mon Sep 17 00:00:00 2001 From: elBandito07 Date: Tue, 24 Jul 2007 15:59:41 +0000 Subject: Classic Skin: - Added missed party screens in Classic.ini (Party New Round/ Party Score / Party Win) - Changed some file associations in Star.ini - Added missed party images in Classic directory git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@326 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Star.ini | 8 +- Skins/Classic/[party]playerButton.jpg | Bin 0 -> 1519 bytes Skins/Classic/[party]roundBG1.jpg | Bin 0 -> 1043 bytes Skins/Classic/[party]roundBG2.jpg | Bin 0 -> 978 bytes Skins/Classic/[party]roundBG3.jpg | Bin 0 -> 1251 bytes Skins/Classic/[party]roundBG4.jpg | Bin 0 -> 1229 bytes Skins/Classic/[party]roundTeamButton.jpg | Bin 0 -> 2887 bytes Skins/Classic/[party]scoreBG1.jpg | Bin 0 -> 1226 bytes Skins/Classic/[party]scoreBG2.jpg | Bin 0 -> 653 bytes Skins/Classic/[party]scoreDecoration.jpg | Bin 0 -> 6179 bytes Skins/Classic/[party]teamPoints.jpg | Bin 0 -> 729 bytes Skins/Classic/[party]winDecoration.jpg | Bin 0 -> 3878 bytes Skins/Classic/[party]winTeamButton1.jpg | Bin 0 -> 1925 bytes Skins/Classic/[party]winTeamButton2.jpg | Bin 0 -> 1783 bytes Skins/Classic/[party]winTeamButton3.jpg | Bin 0 -> 1458 bytes Themes/Classic.ini | 1287 +++++++++++++++++++++++++++++- 16 files changed, 1290 insertions(+), 5 deletions(-) create mode 100644 Skins/Classic/[party]playerButton.jpg create mode 100644 Skins/Classic/[party]roundBG1.jpg create mode 100644 Skins/Classic/[party]roundBG2.jpg create mode 100644 Skins/Classic/[party]roundBG3.jpg create mode 100644 Skins/Classic/[party]roundBG4.jpg create mode 100644 Skins/Classic/[party]roundTeamButton.jpg create mode 100644 Skins/Classic/[party]scoreBG1.jpg create mode 100644 Skins/Classic/[party]scoreBG2.jpg create mode 100644 Skins/Classic/[party]scoreDecoration.jpg create mode 100644 Skins/Classic/[party]teamPoints.jpg create mode 100644 Skins/Classic/[party]winDecoration.jpg create mode 100644 Skins/Classic/[party]winTeamButton1.jpg create mode 100644 Skins/Classic/[party]winTeamButton2.jpg create mode 100644 Skins/Classic/[party]winTeamButton3.jpg diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index 0abf8f48..5884a5bd 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -107,12 +107,12 @@ PartyRoundBG3 =[party]roundBG3.jpg PartyRoundBG4 =[party]roundBG4.jpg HDL_Pointer =[party]pointer.bmp PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreDeco =[party]scoreDecoration.jpg PartyScoreBG1 =[party]scoreBG1.jpg PartyScoreBG2 =[party]scoreBG2.jpg -PartyWinDeco1 =x_[party]winDecoration1.jpg -PartyWinDeco2 =x_[party]winDecoration1.jpg -PartyWinDeco3 =x_[party]winDecoration1.jpg +PartyWinDeco1 =[party]winDecoration.jpg +PartyWinDeco2 =[party]winDecoration.jpg +PartyWinDeco3 =[party]winDecoration.jpg # # # S T A T S # # # StatMainBG1 = [stat]mainBG1.jpg diff --git a/Skins/Classic/[party]playerButton.jpg b/Skins/Classic/[party]playerButton.jpg new file mode 100644 index 00000000..15a34c66 Binary files /dev/null and b/Skins/Classic/[party]playerButton.jpg differ diff --git a/Skins/Classic/[party]roundBG1.jpg b/Skins/Classic/[party]roundBG1.jpg new file mode 100644 index 00000000..464aabea Binary files /dev/null and b/Skins/Classic/[party]roundBG1.jpg differ diff --git a/Skins/Classic/[party]roundBG2.jpg b/Skins/Classic/[party]roundBG2.jpg new file mode 100644 index 00000000..3413958f Binary files /dev/null and b/Skins/Classic/[party]roundBG2.jpg differ diff --git a/Skins/Classic/[party]roundBG3.jpg b/Skins/Classic/[party]roundBG3.jpg new file mode 100644 index 00000000..c6b53caf Binary files /dev/null and b/Skins/Classic/[party]roundBG3.jpg differ diff --git a/Skins/Classic/[party]roundBG4.jpg b/Skins/Classic/[party]roundBG4.jpg new file mode 100644 index 00000000..5e4da0ac Binary files /dev/null and b/Skins/Classic/[party]roundBG4.jpg differ diff --git a/Skins/Classic/[party]roundTeamButton.jpg b/Skins/Classic/[party]roundTeamButton.jpg new file mode 100644 index 00000000..692db1bd Binary files /dev/null and b/Skins/Classic/[party]roundTeamButton.jpg differ diff --git a/Skins/Classic/[party]scoreBG1.jpg b/Skins/Classic/[party]scoreBG1.jpg new file mode 100644 index 00000000..f558425d Binary files /dev/null and b/Skins/Classic/[party]scoreBG1.jpg differ diff --git a/Skins/Classic/[party]scoreBG2.jpg b/Skins/Classic/[party]scoreBG2.jpg new file mode 100644 index 00000000..47239d85 Binary files /dev/null and b/Skins/Classic/[party]scoreBG2.jpg differ diff --git a/Skins/Classic/[party]scoreDecoration.jpg b/Skins/Classic/[party]scoreDecoration.jpg new file mode 100644 index 00000000..49204e19 Binary files /dev/null and b/Skins/Classic/[party]scoreDecoration.jpg differ diff --git a/Skins/Classic/[party]teamPoints.jpg b/Skins/Classic/[party]teamPoints.jpg new file mode 100644 index 00000000..96855bc9 Binary files /dev/null and b/Skins/Classic/[party]teamPoints.jpg differ diff --git a/Skins/Classic/[party]winDecoration.jpg b/Skins/Classic/[party]winDecoration.jpg new file mode 100644 index 00000000..1d48ddb3 Binary files /dev/null and b/Skins/Classic/[party]winDecoration.jpg differ diff --git a/Skins/Classic/[party]winTeamButton1.jpg b/Skins/Classic/[party]winTeamButton1.jpg new file mode 100644 index 00000000..10c8d80f Binary files /dev/null and b/Skins/Classic/[party]winTeamButton1.jpg differ diff --git a/Skins/Classic/[party]winTeamButton2.jpg b/Skins/Classic/[party]winTeamButton2.jpg new file mode 100644 index 00000000..fbd85056 Binary files /dev/null and b/Skins/Classic/[party]winTeamButton2.jpg differ diff --git a/Skins/Classic/[party]winTeamButton3.jpg b/Skins/Classic/[party]winTeamButton3.jpg new file mode 100644 index 00000000..e8dd9566 Binary files /dev/null and b/Skins/Classic/[party]winTeamButton3.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 8e6d693a..0793f7a8 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -15,6 +15,9 @@ GrayLight = 191 191 191 Gray = 127 127 127 GrayDark = 63 63 63 Black = 0 0 0 +Gold = 255 223 31 +Silver = 223 223 223 +Bronze = 205 127 50 [Loading] Texts =2 @@ -3822,7 +3825,6 @@ Color = ColorDark DColor = Gray Type = Font Black - [Top5] Texts=1 @@ -4492,6 +4494,1289 @@ Align=1 Text= Color=White +[PartyNewRound] +Texts =7 + +[PartyNewRoundStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =Gray +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyNewRoundStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =Gray +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyNewRoundStatic3] +X =37 +Y =72 +W =27 +H =27 +Color =ColorDark +Tex =MainIcon +Type=Font Black + +[PartyNewRoundText1] +X =40 +Y =4 +Font = 1 +Size = 22 +Color =GrayLight +Text=PARTY_MODE + +[PartyNewRoundText2] +X =62 +Y =67 +Color=Black +Font =1 +Size =9 +Align =0 +Text=PARTY_ROUND_DESC + +[PartyNewRoundText3] +X =398 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=2 +Text=PARTY_ROUND_WHEREAMI + +[PartyNewRoundText4] +X =450 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=PARTY_ROUND_LEGEND_CONTINUE + +[PartyNewRoundText5] +X =460 +Y =100 +Color =White +Font =0 +Size =10 +Text =PARTY_ROUND +Align=0 + +[PartyNewRoundText6] +X =600 +Y =100 +Color =White +Font =0 +Size =10 +Text =PARTY_ROUND_WINNER +Align=0 + +[PartyNewRoundText7] +X =448 +Y =350 +Color =White +Font =0 +Size =18 +Text =PARTY_ROUND +Align=2 + +[PartyNewRoundTextTeam1Players] +X =30 +Y =137 +Color=White +Font =0 +Size =7 +Align=0 +Text=Dummytext, Player2, Player3, Player4 + +[PartyNewRoundTextTeam2Players] +X =30 +Y =218 +Color=White +Font =0 +Size =7 +Align=0 +Text=Dummytext, Player2, Player3, Player4 + +[PartyNewRoundTextTeam3Players] +X =30 +Y =299 +Color=White +Font =0 +Size =7 +Align=0 +Text=Dummytext, Player2, Player3, Player4 + +[PartyNewRoundStatic4] +Tex =PartyRoundBG1 +X =450 +Y =103 +W = 330 +H = 24 +Int=1 +Color =Gray +Type=Font Black + +[PartyNewRoundStatic5] +X =420 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[PartyNewRoundStatic6] +Tex =PartyRoundBG3 +X =250 +Y =350 +W = 300 +H = 50 +Int=1 +Color =Gray +Type=Font Black + +[PartyNewRoundStatic7] +Tex =PartyRoundBG4 +X =50 +Y =495 +W = 700 +H = 30 +Int=1 +Color =GrayLight +Type=Font Black + +[PartyNewRoundStaticTeam1] +Tex =PartyTeamButton1 +X =20 +Y =110 +W =400 +H =50 +Int=1 +Color =P1Dark +Type=Font Black +Reflection=0 + +[PartyNewRoundStaticTeam2] +Tex =PartyTeamButton1 +X =20 +Y =191 +W =400 +H =50 +Int=1 +Color =P2Dark +Type=Font Black +Reflection=0 + +[PartyNewRoundStaticTeam3] +Tex =PartyTeamButton1 +X =20 +Y =272 +W =400 +H =50 +Int=1 +Color =P3Dark +Type=Font Black +Reflection=0 + +[PartyNewRoundStaticNextPlayer1] +Tex=PartyPlayerButton +X=155 +Y=415 +W=150 +H=50 +Type=Font Black +Texts=1 +Color =P1Light +Reflection=1 +ReflectionSpacing=2 + +[PartyNewRoundStaticNextPlayer2] +Tex=PartyPlayerButton +X=325 +Y=415 +W=150 +H=50 +Type=Font Black +Texts=1 +Color =P2Light +Reflection=1 +ReflectionSpacing=2 + +[PartyNewRoundStaticNextPlayer3] +Tex=PartyPlayerButton +X=495 +Y=415 +W=150 +H=50 +Type=Font Black +Texts=1 +Color =P3Light +Reflection=1 +ReflectionSpacing=2 + +[PartyNewRoundTextRound1] +X =460 +Y =133 +Color =White +Font =0 +Size =8 +Text =Round 1 +Align=0 + +[PartyNewRoundTextRound2] +X =460 +Y =162 +Color =White +Font =0 +Size =8 +Text =Round 2 +Align=0 + +[PartyNewRoundTextRound3] +X =460 +Y =191 +Color =White +Font =0 +Size =8 +Text =Round 3 +Align=0 + +[PartyNewRoundTextRound4] +X =460 +Y =220 +Color =White +Font =0 +Size =8 +Text =Round 4 +Align=0 + +[PartyNewRoundTextRound5] +X =460 +Y =249 +Color =White +Font =0 +Size =8 +Text =Round 5 +Align=0 + +[PartyNewRoundTextRound6] +X =460 +Y =278 +Color =White +Font =0 +Size =8 +Text =Round 6 +Align=0 + +[PartyNewRoundTextRound7] +X =460 +Y =307 +Color =White +Font =0 +Size =8 +Text =Round 7 +Align=0 + +[PartyNewRoundTextWinner1] +X =600 +Y =133 +Color =White +Font =0 +Size =8 +Text =Winner 1 +Align=0 + +[PartyNewRoundTextWinner2] +X =600 +Y =162 +Color =White +Font =0 +Size =8 +Text =Winner 2 +Align=0 + +[PartyNewRoundTextWinner3] +X =600 +Y =191 +Color =White +Font =0 +Size =8 +Text =Winner 3 +Align=0 + +[PartyNewRoundTextWinner4] +X =600 +Y =220 +Color =White +Font =0 +Size =8 +Text =Winner 4 +Align=0 + +[PartyNewRoundTextWinner5] +X =600 +Y =249 +Color =White +Font =0 +Size =8 +Text =Winner 5 +Align=0 + +[PartyNewRoundTextWinner6] +X =600 +Y =278 +Color =White +Font =0 +Size =8 +Text =Winner 6 +Align=0 + +[PartyNewRoundTextWinner7] +X =600 +Y =307 +Color =White +Font =0 +Size =8 +Text =Winner 7 +Align=0 + +[PartyNewRoundStaticRound1] +Tex =PartyRoundBG2 +X =450 +Y =135 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundStaticRound2] +Tex =PartyRoundBG2 +X =450 +Y =164 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundStaticRound3] +Tex =PartyRoundBG2 +X =450 +Y =193 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundStaticRound4] +Tex =PartyRoundBG2 +X =450 +Y =222 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundStaticRound5] +Tex =PartyRoundBG2 +X =450 +Y =251 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundStaticRound6] +Tex =PartyRoundBG2 +X =450 +Y =280 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundStaticRound7] +Tex =PartyRoundBG2 +X =450 +Y =309 +W = 330 +H = 20 +Color =GrayLight +Type =Font Black + +[PartyNewRoundTextNextRound] +X =400 +Y =495 +Color =White +Font =0 +Size =10 +Text =Next Round +Align=1 + +[PartyNewRoundTextNextRoundNo] +X =457 +Y =350 +Color =White +Font =0 +Size =18 +Text =99 +Align=0 + +[PartyNewRoundTextScoreTeam1] +X =390 +Y =110 +Color =White +Font =0 +Size =17 +Text =3000 +Align=1 + +[PartyNewRoundTextScoreTeam2] +X =390 +Y =191 +Color =White +Font =0 +Size =17 +Text =2000 +Align=1 + +[PartyNewRoundTextScoreTeam3] +X =390 +Y =272 +Color =White +Font =0 +Size =17 +Text =1000 +Align=1 + +[PartyNewRoundTextNameTeam1] +X =30 +Y =108 +Color =White +Font =0 +Size =12 +Text =Team 1 +Align=0 + +[PartyNewRoundTextNameTeam2] +X =30 +Y =189 +Color =White +Font =0 +Size =12 +Text =Team 2 +Align=0 + +[PartyNewRoundTextNameTeam3] +X =30 +Y =270 +Color =White +Font =0 +Size =12 +Text =Team 3 +Align=0 + +[PartyNewRoundTextNextPlayer1] +X =230 +Y =425 +Color =White +Font =0 +Size =10 +Text =Player 1 +Align=1 + +[PartyNewRoundTextNextPlayer2] +X =400 +Y =425 +Color =White +Font =0 +Size =10 +Text =Player 2 +Align=1 + +[PartyNewRoundTextNextPlayer3] +X =570 +Y =425 +Color =White +Font =0 +Size =10 +Text =Player 3 +Align=1 + +[PartyScore] +Texts=5 + +[PartyScoreBackground] +Tex=PartyBG + +[PartyScoreDecoTextures] +ChangeTextures =1 + +FirstTexture =PartyScoreDeco +FirstTyp =Font Black +FirstColor =Gold + +SecondTexture =PartyScoreDeco +SecondTyp =Font Black +SecondColor =Silver + +ThirdTexture =PartyScoreDeco +ThirdTyp =Font Black +ThirdColor =Bronze + +[PartyScoreStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyScoreStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyScoreStatic3] +X =37 +Y =72 +W =27 +H =27 +Color =ColorDark +Tex =MainIcon +Type=Font Black + +[PartyScoreStatic4] +X =410 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[PartyScoreText1] +X =40 +Y =4 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 22 +Color =GrayLight +Text=PARTY_MODE + +[PartyScoreText2] +X =62 +Y =67 +Color=Black +Font =1 +Size =9 +Align =0 +Text=PARTY_SCORE_DESC + +[PartyScoreText3] +X =388 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=2 +Text=PARTY_SCORE_WHEREAMI + +[PartyScoreText4] +X =440 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=PARTY_LEGEND_CONTINUE + +[PartyScoreStatic5] +Tex =PartyScoreBG1 +X =50 +Y =100 +W = 700 +H = 80 +Int=1 +Color =Gray +Type=Font Black + +[PartyScoreStatic6] +Tex =PartyScoreBG2 +X =50 +Y =495 +W = 700 +H = 20 +Int=1 +Color =GrayLight +Type=Font Black + +[PartyScoreText5] +X =400 +Y =136 +Color =White +Font =0 +Size =18 +Text =PARTY_SCORE_WINS2 +Align=1 + +[PartyScoreTextWinner] +X =400 +Y =98 +Color =White +Font =0 +Size =18 +Text =The Winner is... +Align=1 + +[PartyScoreTextScoreTeam1] +X =568 +Y =198 +Color =White +Font =0 +Size =12 +Text =3000 +Align=2 + +[PartyScoreTextScoreTeam2] +X =568 +Y =298 +Color =White +Font =0 +Size =12 +Text =2000 +Align=2 + +[PartyScoreTextScoreTeam3] +X =568 +Y =398 +Color =White +Font =0 +Size =12 +Text =1000 +Align=2 + +[PartyScoreTextNameTeam1] +X =188 +Y =198 +Font=0 +Size=12 +Align=0 +Text=Team 1 +Color=White + +[PartyScoreTextNameTeam2] +X =188 +Y =298 +Color =White +Font =0 +Size =12 +Text =Team 2 +Align=0 + +[PartyScoreTextNameTeam3] +X =188 +Y =398 +Color =White +Font =0 +Size =12 +Text =Team 3 +Align=0 + +[PartyScoreStaticTeam1] +X =188 +Y =230 +W =380 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyScoreStaticTeam1BG] +Tex=PartyTeamButton2 +X=178 +Y=200 +W=400 +H=50 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyScoreStaticTeam1Deco] +Tex =PartyScoreDeco +X = 563 +Y = 191 +W = 64 +H = 64 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=-5 + +[PartyScoreStaticTeam2] +X =188 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P2Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyScoreStaticTeam2BG] +Tex=PartyTeamButton2 +X=178 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyScoreStaticTeam2Deco] +Tex =PartyScoreDeco +X = 563 +Y = 291 +W = 64 +H = 64 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=-5 + +[PartyScoreStaticTeam3] +X =188 +Y =430 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyScoreStaticTeam3BG] +Tex=PartyTeamButton2 +X=178 +Y=400 +W=400 +H=50 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyScoreStaticTeam3Deco] +Tex =PartyScoreDeco +X = 563 +Y = 391 +W = 64 +H = 64 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=-5 + +[PartyWin] +Texts=4 + +[PartyWinBackground] +Tex=PartyBG + +[PartyWinStatic1] +X =0 +Y =549 +W =252 +H =28 +Tex=Leiste1 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyWinStatic2] +X =254 +Y =549 +W =548 +H =28 +Tex=Leiste2 +Color =White +Type=Plain +Reflection=1 +ReflectionSpacing=1 + +[PartyWinStatic3] +X =37 +Y =72 +W =27 +H =27 +Color =ColorDark +Tex =MainIcon +Type=Font Black + +[PartyWinStatic4] +X =380 +Y =553 +W =26 +H =22 +Tex=ButtonEnter +Color =White +Type=Plain + +[PartyWinText1] +X =40 +Y =4 +ColR = 0.7 +ColG = 0.7 +ColB = 0.7 +Font = 1 +Size = 22 +Color =GrayLight +Text=PARTY_MODE + +[PartyWinText2] +X =62 +Y =67 +Color=Black +Font =1 +Size =9 +Align =0 +Text=PARTY_WIN_DESC + +[PartyWinText3] +X =358 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=2 +Text=PARTY_WIN_WHEREAMI + +[PartyWinText4] +X =410 +Y =552 +Color=Gray +Font =1 +Size =7 +Align=0 +Text=PARTY_WIN_LEGEND_CONTINUE + +#[PartyWinTextWinner] +#X =150 +#Y =120 +#Color =White +#Font =1 +#Size =14 +#Text =The Winner is... +#Align=0 + +[PartyWinTextScoreTeam1] +X =699 +Y =183 +Color =White +Font =0 +Size =19 +Text =3000 +Align=2 + +[PartyWinTextScoreTeam2] +X =669 +Y =298 +Color =White +Font =0 +Size =12 +Text =2000 +Align=2 + +[PartyWinTextScoreTeam3] +X =649 +Y =398 +Color =White +Font =0 +Size =9 +Text =1000 +Align=2 + +[PartyWinTextNameTeam1] +X =169 +Y =183 +Font=0 +Size=19 +Align=0 +Text=Team 1 +Color=White + +[PartyWinTextNameTeam2] +X =289 +Y =298 +Color =White +Font =0 +Size =12 +Text =Team 2 +Align=0 + +[PartyWinTextNameTeam3] +X =369 +Y =398 +Color =White +Font =0 +Size =9 +Text =Team 3 +Align=0 + +[PartyWinStaticTeam1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =TeamColor +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BG] +Tex=PartyTeamButton3 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =TeamColor +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam1Rank1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BGRank1] +Tex=PartyTeamButton3 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam1Rank2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BGRank2] +Tex=PartyTeamButton3 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam1Rank3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P1Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam1BGRank3] +Tex=PartyTeamButton3 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =P1Dark +Reflection=1 +ReflectionSpacing=2 + + +[PartyWinStaticTeam1Deco] +Tex =PartyWinDeco1 +X = 91 +Y = 176 +W = 79 +H = 79 +Type =Font Black +Color =Gold +Reflection=1 +ReflectionSpacing=3 + +[PartyWinStaticTeam2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =TeamColor +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BG] +Tex=PartyTeamButton4 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =TeamColor +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Rank1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamButton3 +Color =P2Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BGRank1] +Tex=PartyTeamButton4 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Rank2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P2Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BGRank2] +Tex=PartyTeamButton4 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P2Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Rank3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =TeamColor +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam2BGRank3] +Tex=PartyTeamButton4 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =TeamColor +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam2Deco] +Tex =PartyWinDeco2 +X = 226 +Y = 291 +W = 64 +H = 64 +Type =Font Black +Color =Silver +Reflection=1 +ReflectionSpacing=3 + +[PartyWinStaticTeam3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =TeamColor +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BG] +Tex=PartyTeamButton5 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =TeamColor +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam3Rank1] +X =169 +Y =230 +W =530 +H =16 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BGRank1] +Tex=PartyTeamButton3 +X=159 +Y=185 +W=550 +H=65 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam3Rank2] +X =289 +Y =330 +W =380 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BGRank2] +Tex=PartyTeamButton5 +X=279 +Y=300 +W=400 +H=50 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam3Rank3] +X =369 +Y =420 +W =280 +H =15 +Z =1 +Tex=PartyTeamPoints +Color =P3Dark +Int = 1 +Type=Font Black +Reflection=1 +ReflectionSpacing=12 + +[PartyWinStaticTeam3BGRank3] +Tex=PartyTeamButton5 +X=359 +Y=400 +W=300 +H=40 +Type=Font Black +Color =P3Dark +Reflection=1 +ReflectionSpacing=2 + +[PartyWinStaticTeam3Deco] +Tex =PartyWinDeco3 +X = 316 +Y = 391 +W = 54 +H = 54 +Type =Font Black +Color =Bronze +Reflection=1 +ReflectionSpacing=3 [PartyOptions] Texts = 3 -- cgit v1.2.3 From c4d678a0a1d498d2ce548f31b6846682f3c9abef Mon Sep 17 00:00:00 2001 From: elBandito07 Date: Tue, 24 Jul 2007 17:29:04 +0000 Subject: Classic Skin: - added SongJumpTo Screen - added missed image to Skin/Classic directory git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@327 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/[menu]jumpToBg.jpg | Bin 0 -> 1870 bytes Themes/Classic.ini | 77 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 Skins/Classic/[menu]jumpToBg.jpg diff --git a/Skins/Classic/[menu]jumpToBg.jpg b/Skins/Classic/[menu]jumpToBg.jpg new file mode 100644 index 00000000..a8b93e10 Binary files /dev/null and b/Skins/Classic/[menu]jumpToBg.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index 0793f7a8..e5a0b195 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -6598,6 +6598,83 @@ Tex =SongMenuBorder Type=Font Black Z=0.98 +# # # # Song Jump to # # # # + +[SongJumpto] +Texts=0 +Statics=1 + +[SongJumptoStatic1] +Tex =JumpToBG +X =221 +Y =175 +W =355 +H =175 +Z =0.98 +Int=1 +Color =GrayDark +Type=Font Black + +[SongJumptoStatic2] +X =234 +Y =185 +W =21 +H =21 +Color =White +Tex =MainSearch +Type=Font Black +Z=0.99 + +[SongJumptoText1] +X =260 +Y =175 +Color=White +Font =0 +Size =14 +Text=SONG_JUMPTO_TYPE_DESC +Align=0 +Z=0.99 + +[SongJumptoSelectSlideType] +Tex = button +TexSBG = mainicon +#Text = SONG_JUMPTO_TYPE_DESC +Font=1 +X = 242 +Y = 205 +Z = 0.99 +W = 0 +H = 30 +SkipX = 4 +SBGW= 300 +Fields=2 +DColor = LightBlue +TColor = White +TDColor = White +SBGTex = button +SBGDColor = LightBlue +STColor = White +STDColor = LightBlue + +[SongJumptoButtonSearchText] +X = 250 +Y = 215 +Z = 0.99 +W = 160 +H = 50 +Size=14 +Font=1 +Align=0 + +[SongJumptoTextFound] +X =234 +Y =295 +Color=White +Font =0 +Size =8 +Text=SONG_JUMPTO_HELP +Align=0 +Z=0.99 # # # # Statistic Screens # # # # [StatMain] -- cgit v1.2.3 From 38ceb41c1814ecaebf072926a0c452140bc2d137 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Jul 2007 17:44:47 +0000 Subject: re-did some changes that were lost during transition from rev.293 to rev.302 (songmenu cover positions, etc.) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@328 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 114 +++++++++++++++++++++++++++--------------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 8c8b7d93..91595ac3 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -319,7 +319,7 @@ Texts =3 Tex=SongBG [SongCover] -X=252 +X=303 Y=125 W=320 H=190 @@ -331,7 +331,7 @@ Visible=1 Direction=1 Color=White Alpha=1 -X=205 +X=255 Y=514 Z=1 PieceW=6 @@ -341,7 +341,7 @@ Bands=6 Length=18 [SongVideoIcon] -X =249 +X =299 Y =487 W =32 H =32 @@ -373,7 +373,7 @@ Reflection=1 ReflectionSpacing=1 [SongStatic3] -X =200 +X =250 Y =120 W =300 H =200 @@ -383,7 +383,7 @@ Tex =SongSelection1 Type=Font Black [SongStatic4] -X =248 +X =298 Y =320 W =200 H =200 @@ -402,7 +402,7 @@ Align =0 Text=SING_SONG_SELECTION_DESC [SongTextArtist] -X =350 +X =400 Y =320 W = 190 Color=White @@ -412,7 +412,7 @@ Align =1 Text= [SongTextTitle] -X =350 +X =400 Y =380 W = 190 Color=White @@ -422,7 +422,7 @@ Align =1 Text= [SongTextNumber] -X =440 +X =490 Y =495 Color=White Font =0 @@ -655,7 +655,7 @@ Text=PARTY_SONG_LEGEND_CONTINUE # Jokers, 5 for each team, only shown in party Mode [SongStaticTeam1Joker1] Tex =Joker -X =480 +X =530 Y =400 W =40 H =40 @@ -683,7 +683,7 @@ TexY2=1 [SongStaticTeam1Joker3] Tex =Joker -X =580 +X =630 Y =400 W =40 H =40 @@ -697,7 +697,7 @@ TexY2=1 [SongStaticTeam1Joker4] Tex =Joker -X =630 +X =680 Y =400 W =40 H =40 @@ -711,7 +711,7 @@ TexY2=1 [SongStaticTeam1Joker5] Tex =Joker -X =680 +X =730 Y =400 W =40 H =40 @@ -725,7 +725,7 @@ TexY2=1 [SongStaticTeam2Joker1] Tex =Joker -X =480 +X =530 Y =450 W =40 H =40 @@ -739,7 +739,7 @@ TexY2=1 [SongStaticTeam2Joker2] Tex =Joker -X =530 +X =580 Y =450 W =40 H =40 @@ -753,7 +753,7 @@ TexY2=1 [SongStaticTeam2Joker3] Tex =Joker -X =580 +X =630 Y =450 W =40 H =40 @@ -767,7 +767,7 @@ TexY2=1 [SongStaticTeam2Joker4] Tex =Joker -X =630 +X =680 Y =450 W =40 H =40 @@ -781,7 +781,7 @@ TexY2=1 [SongStaticTeam2Joker5] Tex =Joker -X =680 +X =730 Y =450 W =40 H =40 @@ -795,7 +795,7 @@ TexY2=1 [SongStaticTeam3Joker1] Tex =Joker -X =480 +X =530 Y =500 W =40 H =40 @@ -809,7 +809,7 @@ TexY2=1 [SongStaticTeam3Joker2] Tex =Joker -X =530 +X =580 Y =500 W =40 H =40 @@ -823,7 +823,7 @@ TexY2=1 [SongStaticTeam3Joker3] Tex =Joker -X =580 +X =630 Y =500 W =40 H =40 @@ -837,7 +837,7 @@ TexY2=1 [SongStaticTeam3Joker4] Tex =Joker -X =630 +X =680 Y =500 W =40 H =40 @@ -851,7 +851,7 @@ TexY2=1 [SongStaticTeam3Joker5] Tex =Joker -X =680 +X =730 Y =500 W =40 H =40 @@ -1269,7 +1269,7 @@ Text=SING_LEGEND_CONTINUE # # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # # [ScoreTextName1] -X =150 +X =175 Y =260 Font =0 Size =14 @@ -1278,7 +1278,7 @@ Color =White Align=0 [ScoreTextScore1] -X =150 +X =175 Y =430 Color=White Font =1 @@ -1287,7 +1287,7 @@ Text =Tone Deaf Align=0 [ScoreTextNotes1] -X =150 +X =175 Y =340 Color=White Font =0 @@ -1296,7 +1296,7 @@ Text=SING_NOTES Align=0 [ScoreTextNotesScore1] -X =440 +X =465 Y =340 Color=White Font =0 @@ -1305,7 +1305,7 @@ Align =2 Text =0 [ScoreTextLineBonus1] -X =150 +X =175 Y =370 Color=White Font =0 @@ -1314,7 +1314,7 @@ Text =SING_PHRASE_BONUS Align=0 [ScoreTextLineBonusScore1] -X =440 +X =465 Y =370 Color=White Font =0 @@ -1323,7 +1323,7 @@ Align =2 Text =0 [ScoreTextGoldenNotes1] -X =150 +X =175 Y =400 Color=White Font =0 @@ -1332,7 +1332,7 @@ Text =SING_GOLDEN_NOTES Align=0 [ScoreTextGoldenNotesScore1] -X =440 +X =465 Y =400 Color=White Font =0 @@ -1341,7 +1341,7 @@ Align =2 Text =0 [ScoreTextTotal1] -X =180 +X =205 Y =460 Color=White Font =0 @@ -1350,7 +1350,7 @@ Text=SING_TOTAL Align=0 [ScoreTextTotalSCore1] -X =440 +X =465 Y =460 Color=White Font =0 @@ -1361,7 +1361,7 @@ Text =0 #Lines [ScorePlayer1Static1] Tex =ScoreLine -X =148 +X =173 Y =338 W =295 H =2 @@ -1370,7 +1370,7 @@ Type =Font Black [ScorePlayer1Static2] Tex =ScoreLine -X =148 +X =173 Y =368 W =295 H =2 @@ -1379,7 +1379,7 @@ Type =Font Black [ScorePlayer1Static3] Tex =ScoreLine -X =148 +X =173 Y =398 W =295 H =2 @@ -1388,7 +1388,7 @@ Type =Font Black [ScorePlayer1Static4] Tex =ScoreLine -X =148 +X =173 Y =428 W =295 H =2 @@ -1406,7 +1406,7 @@ Color =White [ScoreStaticBoxDark1] Tex =PlayerNumberBox -X =150 +X =175 Y =467 W =25 H =25 @@ -1421,7 +1421,7 @@ Reflection=1 ReflectionSpacing=4 [ScorePlayer1Text1] -X =154 +X =179 Y =472 W =30 H =30 @@ -1435,7 +1435,7 @@ Text=P1 #ScoreBar [ScoreStaticBackLevel1] Tex =ScoreLevel -X =450 +X =475 Y =160 W =150 H =300 @@ -1448,7 +1448,7 @@ TexY2=0.9 [ScoreStaticBackLevelRound1] Tex =ScoreLevelRound -X =450 +X =475 Y =130 W =150 H =30 @@ -1461,7 +1461,7 @@ TexY2=0.5 [ScoreStaticLevel1] Tex =ScoreLevel -X =450 +X =475 Y =410 W =150 H =30 @@ -1474,7 +1474,7 @@ TexY2=0.9 [ScoreStaticLevelRound1] Tex =ScoreLevelRound -X =450 +X =475 Y =380 W =150 H =30 @@ -1487,7 +1487,7 @@ TexY2=1 [ScorePlayer1Static6] Tex =ScoreEndCap -X =469 +X =494 Y =460 W =112 H =30 @@ -1502,7 +1502,7 @@ ReflectionSpacing=4 [ScorePlayer1Static7] Tex =ScoreLine -X =468 +X =493 Y =460 W =114 H =2 @@ -7039,7 +7039,7 @@ Texts=0 Statics=1 [SongMenuButton1] -X = 460 +X = 510 Y = 165 W = 270 H = 25 @@ -7062,7 +7062,7 @@ Align=0 Z=0.99 [SongMenuButton2] -X = 460 +X = 510 Y = 195 W = 270 H = 25 @@ -7085,7 +7085,7 @@ Align=0 Z=0.99 [SongMenuButton3] -X = 460 +X = 510 Y = 225 W = 270 H = 25 @@ -7108,7 +7108,7 @@ Align=0 Z=0.99 [SongMenuButton4] -X = 460 +X = 510 Y = 255 W = 270 H = 25 @@ -7154,7 +7154,7 @@ STColor = White STDColor = GrayDark [SongMenuTextMenu] -X =489 +X =539 Y =125 Color=White Font =0 @@ -7164,7 +7164,7 @@ Align=0 Z=0.99 [SongMenuStatic2] -X =463 +X =513 Y =135 W =21 H =21 @@ -7175,7 +7175,7 @@ Z=0.98 [SongMenuStatic1] Tex =SongMenuBG -X =448 +X =498 Y =120 W =300 H =200 @@ -7190,7 +7190,7 @@ Statics=1 [SongJumptoStatic1] Tex =JumpToBG -X =171 +X =221 Y =175 W =355 H =175 @@ -7200,7 +7200,7 @@ Color =DarkBlue Type=Font Black [SongJumptoStatic2] -X =184 +X =234 Y =185 W =21 H =21 @@ -7210,7 +7210,7 @@ Type=Font Black Z=0.99 [SongJumptoText1] -X =210 +X =310 Y =175 Color=White Font =0 @@ -7224,7 +7224,7 @@ Tex = button TexSBG = mainicon #Text = SONG_JUMPTO_TYPE_DESC Font=1 -X = 192 +X = 242 Y = 205 Z = 0.99 W = 0 @@ -7241,7 +7241,7 @@ STColor = White STDColor = LightBlue [SongJumptoButtonSearchText] -X = 200 +X = 250 Y = 215 Z = 0.99 W = 160 @@ -7251,7 +7251,7 @@ Font=1 Align=0 [SongJumptoTextFound] -X =184 +X =234 Y =295 Color=White Font =0 -- cgit v1.2.3 From b3b3858fe2b3e76374a288cfff60a945bd964c10 Mon Sep 17 00:00:00 2001 From: b1indy Date: Tue, 24 Jul 2007 17:53:59 +0000 Subject: well... seems, my changes were not entirely complete, now they should be git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@329 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Deluxe.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Themes/Deluxe.ini b/Themes/Deluxe.ini index 91595ac3..67009b22 100644 --- a/Themes/Deluxe.ini +++ b/Themes/Deluxe.ini @@ -669,7 +669,7 @@ TexY2=1 [SongStaticTeam1Joker2] Tex =Joker -X =530 +X =580 Y =400 W =40 H =40 @@ -1397,7 +1397,7 @@ Type =Font Black [ScorePlayer1Static5] Tex =ScoreLine -X =148 +X =173 Y =458 W =295 H =4 @@ -7133,7 +7133,7 @@ Z=0.99 Tex = Rectangle TexSBG = SongMenuSelectBG Text = -X = 460 +X = 510 Y = 225 W = 0 H = 25 -- cgit v1.2.3 From a04ca2dc4762bde3d9a0549b15b7b573427adf61 Mon Sep 17 00:00:00 2001 From: b1indy Date: Wed, 25 Jul 2007 12:45:29 +0000 Subject: fixed some minor glitches in the credits screen (transparent texture was not totally transparent, which could be seen with now working transparency in trunk) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@330 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenCredits.pas | 21 ++++++++++----------- Game/Graphics/outro-esc.png | Bin 82249 -> 75369 bytes 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index b69c17aa..7e91ee3b 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -15,7 +15,7 @@ type Credits_Time: Cardinal; Credits_Alpha: Cardinal; CTime: Cardinal; - CTime_hold: array of Cardinal; + CTime_hold: Cardinal; ESC_Alpha: Integer; credits_entry_tex: TTexture; @@ -115,12 +115,12 @@ begin FadeTo(@ScreenMain); Music.PlayBack; end; - SDLK_SPACE: +{ SDLK_SPACE: begin setlength(CTime_hold,length(CTime_hold)+1); CTime_hold[high(CTime_hold)]:=CTime; end; - +} end;//esac end; //fi end; @@ -169,11 +169,9 @@ begin Credits_X := 580; deluxe_slidein := 0; Credits_Alpha := 0; - //Music.SetLoop(true); Loop looped ned, so ne scheisse Music.Open(soundpath + 'wome-credits-tune.mp3'); //danke kleinster liebster weeeetüüüüü!! -// Music.Play; CTime:=0; - setlength(CTime_hold,0); +// setlength(CTime_hold,0); end; procedure TScreenCredits.onHide; @@ -220,7 +218,7 @@ begin inc(CurrentScrollEnd); end; end; - // timing hack +{ // timing hack X:=5; SetFontStyle (2); SetFontItalic(False); @@ -231,7 +229,7 @@ begin SetFontPos (500, X); glPrint (Addr(visibleText[0])); X:=X+20; - end; + end;} end; procedure Start3D; @@ -285,6 +283,7 @@ Data := Music.GetFFTData; begin Credits_Time := T; inc(CTime); + inc(CTime_hold); Credits_X := Credits_X-2; if (CRDTS_Stage=InitialDelay) and (CTime=Timings[0]) then begin @@ -1008,16 +1007,16 @@ Data := Music.GetFFTData; if (CRDTS_Stage=Outro) then begin if CTime=Timings[20] then begin - CTime:=0; + CTime_hold:=0; Music.Stop; Music.Open(soundpath + 'credits-outro-tune.mp3'); Music.Play; Music.SetVolume(20); Music.SetLoop(True); end; - if CTime > 231 then begin + if CTime_hold > 231 then begin Music.Play; - Ctime:=0; + Ctime_hold:=0; end; glClearColor(0,0,0,0); glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); diff --git a/Game/Graphics/outro-esc.png b/Game/Graphics/outro-esc.png index 16ca2158..01ce735a 100644 Binary files a/Game/Graphics/outro-esc.png and b/Game/Graphics/outro-esc.png differ -- cgit v1.2.3 From 64c9095bc2151aa03cc080092c136ac71d779015 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sat, 28 Jul 2007 12:33:18 +0000 Subject: Theme/Skin: Renaming autumn to fall (blue is now default skin on 1st start) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@331 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Deluxe/Autumn.ini | 155 --------------------------------------- Skins/Deluxe/Fall.ini | 155 +++++++++++++++++++++++++++++++++++++++ Skins/Deluxe/[bg-load]autumn.jpg | Bin 138204 -> 0 bytes Skins/Deluxe/[bg-load]fall.jpg | Bin 0 -> 138204 bytes Skins/Deluxe/[bg-main]autumn.jpg | Bin 157407 -> 0 bytes Skins/Deluxe/[bg-main]fall.jpg | Bin 0 -> 157407 bytes 6 files changed, 155 insertions(+), 155 deletions(-) delete mode 100644 Skins/Deluxe/Autumn.ini create mode 100644 Skins/Deluxe/Fall.ini delete mode 100644 Skins/Deluxe/[bg-load]autumn.jpg create mode 100644 Skins/Deluxe/[bg-load]fall.jpg delete mode 100644 Skins/Deluxe/[bg-main]autumn.jpg create mode 100644 Skins/Deluxe/[bg-main]fall.jpg diff --git a/Skins/Deluxe/Autumn.ini b/Skins/Deluxe/Autumn.ini deleted file mode 100644 index 0e95f031..00000000 --- a/Skins/Deluxe/Autumn.ini +++ /dev/null @@ -1,155 +0,0 @@ -;0.5.1 -;experimental version -;if you are using this as a sample for your theme -;don't be suprised it doesn't work good with newer releases - -[Skin] -Theme=Deluxe -Name=Autumn -Color=Orange - -[Textures] - - -# # # M A I N # # # -Button = [main]button.jpg -ButtonF = [main]buttonf.jpg -MainBar = [main]mainBar.jpg -SelectBG = [main]selectbg.jpg - -#Backgrounds -LoadingBG = [bg-load]autumn.jpg -MainBG = [bg-main]autumn.jpg -SongBG = [bg-main]autumn.jpg -ScoreScreenBG = [bg-main]autumn.jpg -Top5BG = [bg-main]autumn.jpg -OptionsBG = [bg-main]autumn.jpg -PartyBG = [bg-main]autumn.jpg - -#Icons on screen -SongCD = [icon]cd.jpg -MainIcon = [icon]main.jpg -MainSearch = [icon]search.jpg -IconOption = [icon]options.jpg -IconSongMenu = [icon]songmenu.jpg -ScoreIcon = [icon]score.jpg -PartyIcon = [icon]party.jpg -StatIcon = [icon]stats.jpg -VideoIcon = [icon]video.jpg - -IconError = [icon]error.jpg -IconQuestion = [icon]question.jpg - - -# # # S O N G S E L E C E T # # # -SongSelection1 = [main]songSelection1.jpg -SongSelection2 = [main]songSelection2.jpg -SongCover = [main]songCover.jpg - - -# # # S I N G # # # -#the bar where the lyrics reside -LyricBar = [sing]textBar.jpg - -#this one slides in, to tell you that singing starts immediately -LyricHelpBar = [sing]lyricsHelpBar.bmp - -#the time progress bar (not skinned in this theme :P ) -TimeBar1 = [sing]timeBarBG.jpg - -#the bar behind the timestuff -TimeBar2 = [sing]timeBar.jpg - -#linebonus, the thing that pop ups at the score -LineBonusBack = [sing]lineBonusPopUp.jpg - -#Singbar (the thing beneath the scores) -SingBarBack = [sing]singBarBack.jpg -SingBarBar = [sing]singBarBar.jpg -SingBarFront = [sing]singBarFront.jpg - -#Background for scores -ScoreBG = [sing]scoreBg.jpg - -#Background for the P1, P2 and so on -P = [sing]p.jpg - -#Pointer for lyrics -Ball = [sing]LyricsBall.bmp - - -# # # S C O R E / T O P 5 # # # -ScoreBox = [score]box.jpg -ScoreLevel = [score]level.jpg -ScoreLevelRound = [score]levelRound.jpg -ScoreEndCap = [score]endcap.jpg -ScoreLine = [score]line.jpg -PlayerNumberBox = [main]playerNumberBox.jpg - - -# # # P A R T Y # # # -Joker =[party]Joker.jpg -PartyPlayerButton =[party]playerButton.jpg -PartyTeamButton1 =[party]roundTeamButton.jpg -PartyTeamButton2 =[party]playerTeamButton.jpg -PartyTeamButton3 =[party]winTeamButton1.jpg -PartyTeamButton4 =[party]winTeamButton2.jpg -PartyTeamButton5 =[party]winTeamButton3.jpg -PartyRoundBG1 =[party]roundBG1.jpg -PartyRoundBG2 =[party]roundBG2.jpg -PartyRoundBG3 =[party]roundBG3.jpg -PartyRoundBG4 =[party]roundBG4.jpg -HDL_Pointer =[party]pointer.bmp -PartyTeamPoints =[party]teamPoints.jpg -PartyScoreDeco =x_[party]scoreDecoration.jpg -PartyScoreBG1 =[party]scoreBG1.jpg -PartyScoreBG2 =[party]scoreBG2.jpg -PartyWinDeco1 =x_[party]winDecoration1.jpg -PartyWinDeco2 =x_[party]winDecoration1.jpg -PartyWinDeco3 =x_[party]winDecoration1.jpg - -# # # S T A T S # # # -StatMainBG1 = [stat]mainBG1.jpg -StatMainBG2 = [stat]mainBG2.jpg -StatMainBG3 = [stat]mainBG3.jpg -StatDetailBG1 = [stat]detailBG1.jpg - - -# # # N A V I # # # -ButtonP = [button]p.jpg -ButtonM = [button]m.jpg -ButtonJ = [button]j.jpg -ButtonAlt = [button]alt.jpg -ButtonAZ = [button]az.jpg -ButtonEnter = [button]enter.jpg -ButtonNavi = [button]navi.jpg -ButtonEsc = [button]esc.jpg -Button13 = [button]13.jpg - -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg -SongMenuBG = [menu]songMenuBg.jpg -SongMenuSelectBG = [menu]songMenuSelectBg.jpg -PopUpBG = [menu]popUpBG.jpg -PopUpFG = [menu]popUpFG.jpg - - -# # # N O T E S # # # -GrayLeft = [sing]notesLeft.bmp -GrayMid = [sing]notesMid.bmp -GrayRight = [sing]notesRight.bmp -NoteBGLeft = [sing]notesBgLeft.bmp -NoteBGMid = [sing]notesBgMid.bmp -NoteBGRight = [sing]notesBgRight.bmp - - -# # # E F F E C T S # # # -NoteStar = [effect]goldenNoteStar.jpg -NotePerfectStar = [effect]perfectNoteStar.jpg - - -# # # dirty helpers # # # -Rectangle = [helper]rectangle.jpg -ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/Fall.ini b/Skins/Deluxe/Fall.ini new file mode 100644 index 00000000..d8614486 --- /dev/null +++ b/Skins/Deluxe/Fall.ini @@ -0,0 +1,155 @@ +;0.5.1 +;experimental version +;if you are using this as a sample for your theme +;don't be suprised it doesn't work good with newer releases + +[Skin] +Theme=Deluxe +Name=Fall +Color=Orange + +[Textures] + + +# # # M A I N # # # +Button = [main]button.jpg +ButtonF = [main]buttonf.jpg +MainBar = [main]mainBar.jpg +SelectBG = [main]selectbg.jpg + +#Backgrounds +LoadingBG = [bg-load]fall.jpg +MainBG = [bg-main]fall.jpg +SongBG = [bg-main]fall.jpg +ScoreScreenBG = [bg-main]fall.jpg +Top5BG = [bg-main]fall.jpg +OptionsBG = [bg-main]fall.jpg +PartyBG = [bg-main]fall.jpg + +#Icons on screen +SongCD = [icon]cd.jpg +MainIcon = [icon]main.jpg +MainSearch = [icon]search.jpg +IconOption = [icon]options.jpg +IconSongMenu = [icon]songmenu.jpg +ScoreIcon = [icon]score.jpg +PartyIcon = [icon]party.jpg +StatIcon = [icon]stats.jpg +VideoIcon = [icon]video.jpg + +IconError = [icon]error.jpg +IconQuestion = [icon]question.jpg + + +# # # S O N G S E L E C E T # # # +SongSelection1 = [main]songSelection1.jpg +SongSelection2 = [main]songSelection2.jpg +SongCover = [main]songCover.jpg + + +# # # S I N G # # # +#the bar where the lyrics reside +LyricBar = [sing]textBar.jpg + +#this one slides in, to tell you that singing starts immediately +LyricHelpBar = [sing]lyricsHelpBar.bmp + +#the time progress bar (not skinned in this theme :P ) +TimeBar1 = [sing]timeBarBG.jpg + +#the bar behind the timestuff +TimeBar2 = [sing]timeBar.jpg + +#linebonus, the thing that pop ups at the score +LineBonusBack = [sing]lineBonusPopUp.jpg + +#Singbar (the thing beneath the scores) +SingBarBack = [sing]singBarBack.jpg +SingBarBar = [sing]singBarBar.jpg +SingBarFront = [sing]singBarFront.jpg + +#Background for scores +ScoreBG = [sing]scoreBg.jpg + +#Background for the P1, P2 and so on +P = [sing]p.jpg + +#Pointer for lyrics +Ball = [sing]LyricsBall.bmp + + +# # # S C O R E / T O P 5 # # # +ScoreBox = [score]box.jpg +ScoreLevel = [score]level.jpg +ScoreLevelRound = [score]levelRound.jpg +ScoreEndCap = [score]endcap.jpg +ScoreLine = [score]line.jpg +PlayerNumberBox = [main]playerNumberBox.jpg + + +# # # P A R T Y # # # +Joker =[party]Joker.jpg +PartyPlayerButton =[party]playerButton.jpg +PartyTeamButton1 =[party]roundTeamButton.jpg +PartyTeamButton2 =[party]playerTeamButton.jpg +PartyTeamButton3 =[party]winTeamButton1.jpg +PartyTeamButton4 =[party]winTeamButton2.jpg +PartyTeamButton5 =[party]winTeamButton3.jpg +PartyRoundBG1 =[party]roundBG1.jpg +PartyRoundBG2 =[party]roundBG2.jpg +PartyRoundBG3 =[party]roundBG3.jpg +PartyRoundBG4 =[party]roundBG4.jpg +HDL_Pointer =[party]pointer.bmp +PartyTeamPoints =[party]teamPoints.jpg +PartyScoreDeco =x_[party]scoreDecoration.jpg +PartyScoreBG1 =[party]scoreBG1.jpg +PartyScoreBG2 =[party]scoreBG2.jpg +PartyWinDeco1 =x_[party]winDecoration1.jpg +PartyWinDeco2 =x_[party]winDecoration1.jpg +PartyWinDeco3 =x_[party]winDecoration1.jpg + +# # # S T A T S # # # +StatMainBG1 = [stat]mainBG1.jpg +StatMainBG2 = [stat]mainBG2.jpg +StatMainBG3 = [stat]mainBG3.jpg +StatDetailBG1 = [stat]detailBG1.jpg + + +# # # N A V I # # # +ButtonP = [button]p.jpg +ButtonM = [button]m.jpg +ButtonJ = [button]j.jpg +ButtonAlt = [button]alt.jpg +ButtonAZ = [button]az.jpg +ButtonEnter = [button]enter.jpg +ButtonNavi = [button]navi.jpg +ButtonEsc = [button]esc.jpg +Button13 = [button]13.jpg + +Leiste1 = [special]bar1.jpg +Leiste2 = [special]bar2.jpg + +JumpToBG = [menu]jumpToBg.jpg +SongMenuBG = [menu]songMenuBg.jpg +SongMenuSelectBG = [menu]songMenuSelectBg.jpg +PopUpBG = [menu]popUpBG.jpg +PopUpFG = [menu]popUpFG.jpg + + +# # # N O T E S # # # +GrayLeft = [sing]notesLeft.bmp +GrayMid = [sing]notesMid.bmp +GrayRight = [sing]notesRight.bmp +NoteBGLeft = [sing]notesBgLeft.bmp +NoteBGMid = [sing]notesBgMid.bmp +NoteBGRight = [sing]notesBgRight.bmp + + +# # # E F F E C T S # # # +NoteStar = [effect]goldenNoteStar.jpg +NotePerfectStar = [effect]perfectNoteStar.jpg + + +# # # dirty helpers # # # +Rectangle = [helper]rectangle.jpg +ButtonFade = [helper]buttonFade.jpg \ No newline at end of file diff --git a/Skins/Deluxe/[bg-load]autumn.jpg b/Skins/Deluxe/[bg-load]autumn.jpg deleted file mode 100644 index 51ee048c..00000000 Binary files a/Skins/Deluxe/[bg-load]autumn.jpg and /dev/null differ diff --git a/Skins/Deluxe/[bg-load]fall.jpg b/Skins/Deluxe/[bg-load]fall.jpg new file mode 100644 index 00000000..51ee048c Binary files /dev/null and b/Skins/Deluxe/[bg-load]fall.jpg differ diff --git a/Skins/Deluxe/[bg-main]autumn.jpg b/Skins/Deluxe/[bg-main]autumn.jpg deleted file mode 100644 index ae29b9bd..00000000 Binary files a/Skins/Deluxe/[bg-main]autumn.jpg and /dev/null differ diff --git a/Skins/Deluxe/[bg-main]fall.jpg b/Skins/Deluxe/[bg-main]fall.jpg new file mode 100644 index 00000000..ae29b9bd Binary files /dev/null and b/Skins/Deluxe/[bg-main]fall.jpg differ -- cgit v1.2.3 From 9a320ab2638ba5cf09408903554a65de2d674752 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 28 Jul 2007 14:14:16 +0000 Subject: French language file added git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@333 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/French.ini | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 Languages/French.ini diff --git a/Languages/French.ini b/Languages/French.ini new file mode 100644 index 00000000..d9f6ca57 --- /dev/null +++ b/Languages/French.ini @@ -0,0 +1,300 @@ +[Text] +SING_LOADING=Charge... + +SING_CHOOSE_MODE=Choisir le mode +SING_SING=Chanter +SING_SING_DESC=Chanter + +SING_MULTI=Groupe +SING_MULTI_DESC=Chanter en mode groupe + +SING_TOOLS=Outils + +SING_STATS=Statistiques +SING_STATS_DESC=Visualiser les statistiques + +SING_EDITOR=Éditeur +SING_EDITOR_DESC=Créer vos propre chansons + +SING_GAME_OPTIONS=Options de jeu +SING_GAME_OPTIONS_DESC=Changer les options de jeu + +SING_EXIT=Quitter +SING_EXIT_DESC=Quitter le jeu + +SING_OPTIONS=Options +SING_OPTIONS_DESC=Changer les paramètres +SING_OPTIONS_WHEREAMI=Options + +SING_OPTIONS_GAME=Jeu +SING_OPTIONS_GRAPHICS=Graphiques +SING_OPTIONS_SOUND=Son +SING_OPTIONS_LYRICS=Paroles +SING_OPTIONS_THEMES=Titres +SING_OPTIONS_RECORD=Enregistrem. +SING_OPTIONS_ADVANCED=Avancé +SING_OPTIONS_EXIT=Retour + +SING_OPTIONS_GAME_WHEREAMI=Options de jeu +SING_OPTIONS_GAME_DESC=Options générales de jeu +SING_OPTIONS_GAME_PLAYERS=Joueurs +SING_OPTIONS_GAME_DIFFICULTY=Difficulté +SING_OPTIONS_GAME_LANGUAGE=Langue +SING_OPTIONS_GAME_TABS=Dossier +SING_OPTIONS_GAME_SORTING=Triage +SING_OPTIONS_GAME_DEBUG=Débogue + +SING_OPTIONS_GRAPHICS_WHEREAMI=Options de graphiques +SING_OPTIONS_GRAPHICS_DESC=Paramètres de graphiques +SING_OPTIONS_GRAPHICS_RESOLUTION=Résolution +SING_OPTIONS_GRAPHICS_FULLSCREEN=Ècran total +SING_OPTIONS_GRAPHICS_DEPTH=Intensité couleur +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope +SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de phrase +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Dimension vidéo + +SING_OPTIONS_SOUND_WHEREAMI=Options de son +SING_OPTIONS_SOUND_DESC=Paramètres de son +SING_OPTIONS_SOUND_MIC_BOOST=Poussée de mic +SING_OPTIONS_SOUND_CLICK_ASSIST=Clic-Assistant +SING_OPTIONS_SOUND_BEAT_CLICK=Clic de battement +SING_OPTIONS_SOUND_THRESHOLD=Suppression bruit +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode 2 joueurs +SING_OPTIONS_SOUND_PREVIEWVOLUME=Prévision de son +SING_OPTIONS_SOUND_PREVIEWFADING=Prévision éffacer + +SING_OPTIONS_LYRICS_WHEREAMI=Options de paroles +SING_OPTIONS_LYRICS_DESC=Paramètres de paroles +SING_OPTIONS_LYRICS_FONT=Caractères +SING_OPTIONS_LYRICS_EFFECT=Effet +SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation + +SING_OPTIONS_THEMES_WHEREAMI=Options de Titres +SING_OPTIONS_THEMES_DESC=Paramètres de titres +SING_OPTIONS_THEMES_THEME=Titres +SING_OPTIONS_THEMES_SKIN=Aspect +SING_OPTIONS_THEMES_COLOR=Couleur + +SING_OPTIONS_RECORD_WHEREAMI=Options d'enregistrement +SING_OPTIONS_RECORD_DESC=Paramètres micros +SING_OPTIONS_RECORD_CARD=Carte son +SING_OPTIONS_RECORD_INPUT=Entrée +SING_OPTIONS_RECORD_CHANNELL=Canal gauche +SING_OPTIONS_RECORD_CHANNELR=Canal droit + +SING_OPTIONS_ADVANCED_WHEREAMI=Options avancées +SING_OPTIONS_ADVANCED_DESC=Paramètres avancés +SING_OPTIONS_ADVANCED_EFFECTSING=Effet de chant +SING_OPTIONS_ADVANCED_SCREENFADE=Écran éffacé +SING_OPTIONS_ADVANCED_LOADANIMATION=Charge animation +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Questions séc. +SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de phrase +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Compteur de titres chantés +SING_OPTIONS_ADVANCED_ONSONGCLICK=Choix ap. chanson +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto menu groupe + +SING_LEGEND_SELECT=Choisir +SING_LEGEND_NAVIGATE=Naviguer +SING_LEGEND_CONTINUE=Suivant +SING_LEGEND_ESC=Retour + +SING_PLAYER_DESC=Entrer nom de joueur +SING_PLAYER_WHEREAMI=Noms de joueurs +SING_PLAYER_ENTER_NAME=Entrer nom + +SING_DIFFICULTY_DESC=Choisir la difficulté +SING_DIFFICULTY_WHEREAMI=Difficulté +SING_DIFFICULTY_CONTINUE=á "Choix de chanson" +SING_EASY=Facile +SING_MEDIUM=Moyen +SING_HARD=Difficile + +SING_SONG_SELECTION_DESC=Choisis ta chanson +SING_SONG_SELECTION_WHEREAMI=Choix de chanson +SING_SONG_SELECTION_GOTO=Atteindre .. +SING_SONG_SELECTION=Choix de chanson +SING_SONG_SELECTION_MENU=Menu +SING_SONG_SELECTION_PLAYLIST=Liste de titres +SING_SONGS_IN_CAT=Chansons +PLAYLIST_CATTEXT=Playlist: %s + +SING_TIME=TEMPS +SING_TOTAL=Total +SING_MODE=Mode de chant +SING_NOTES=Notes +SING_GOLDEN_NOTES=Son doré +SING_PHRASE_BONUS=Bonus de phrase + +SING_MENU=Menu Général + +SONG_SCORE=Points de chanson +SONG_SCORE_WHEREAMI=Points + +SING_SCORE_TONE_DEAF=Anti Talent +SING_SCORE_AMATEUR=Amateur +SING_SCORE_RISING_STAR=Crâneur +SING_SCORE_LEAD_SINGER=Starlette +SING_SCORE_HIT_ARTIST=artiste de tube +SING_SCORE_SUPERSTAR=Superstar +SING_SCORE_ULTRASTAR=Ultrastar + +SING_TOP_5_CHARTS=Joueurs Top-5 +SING_TOP_5_CHARTS_WHEREAMI=Top-5 +SING_TOP_5_CHARTS_CONTINUE=vers "Choix de chanson" + +POPUP_PERFECT=Parfait! +POPUP_AWESOME=Cool! +POPUP_GREAT=Grandiose! +POPUP_GOOD=Bien! +POPUP_NOTBAD=O.K.! +POPUP_BAD=Mal! +POPUP_POOR=Mauvais! +POPUP_AWFUL=Cruel! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= et + +SONG_MENU_NAME_MAIN=Menu +SONG_MENU_PLAY=Chantez +SONG_MENU_CHANGEPLAYERS=Échanger le joueur +SONG_MENU_EDIT=Éditeur +SONG_MENU_MODI=Chantez un mode +SONG_MENU_CANCEL=Interrompre + +SONG_MENU_NAME_PLAYLIST=Menu +SONG_MENU_PLAYLIST_ADD=Ajouter une chanson +SONG_MENU_PLAYLIST_DEL=Supprimer la chanson + +SONG_MENU_NAME_PLAYLIST_ADD=Ajouter chanson +SONG_MENU_PLAYLIST_ADD_NEW=À la nouvelle Playlist +SONG_MENU_PLAYLIST_ADD_EXISTING=Aller vers liste de titres existent +SONG_MENU_PLAYLIST_NOEXISTING=Pas de liste de titres + +SONG_MENU_NAME_PLAYLIST_NEW=Nouvelle liste +SONG_MENU_PLAYLIST_NEW_CREATE=Créer +SONG_MENU_PLAYLIST_NEW_UNNAMED=Innome + +SONG_MENU_NAME_PLAYLIST_DELITEM=Supprimer vraiment ? +SONG_MENU_YES=Oui +SONG_MENU_NO=Non + +SONG_MENU_NAME_PLAYLIST_DEL=Supprimez la liste de titres? + + +SONG_MENU_NAME_PLAYLIST_LOAD=Ouvrez une liste +SONG_MENU_PLAYLIST_LOAD=Ouvrir +SONG_MENU_PLAYLIST_DELCURRENT=Supprimez la liste de titres actuel + +SONG_MENU_NAME_PARTY_MAIN=Menu de la fête +SONG_MENU_JOKER=Joker + +SONG_MENU_NAME_PARTY_JOKER=Joue un Joker + +SONG_JUMPTO_DESC=Chercher +SONG_JUMPTO_TYPE_DESC=Chercher du: +SONG_JUMPTO_TYPE1=Tout +SONG_JUMPTO_TYPE2=Titre +SONG_JUMPTO_TYPE3=Artiste +SONG_JUMPTO_SONGSFOUND=%d Chanson(s) trouvé +SONG_JUMPTO_NOSONGSFOUND=Pas de chanson trouvé +SONG_JUMPTO_HELP=Entrez le texte pour chercher +SONG_JUMPTO_CATTEXT=Recherche: %s + +PARTY_MODE=Mode de la fête +PARTY_DIFFICULTY=Difficulté +PARTY_PLAYLIST=Liste de titres +PARTY_PLAYLIST_ALL=Toutes les chansons +PARTY_PLAYLIST_CATEGORY=Dossier +PARTY_PLAYLIST_PLAYLIST=liste de titres +PARTY_ROUNDS=Rondes +PARTY_TEAMS=Équipes +PARTY_TEAMS_PLAYER1=Joueur Équipe 1 +PARTY_TEAMS_PLAYER2=Joueur Équipe 2 +PARTY_TEAMS_PLAYER3=Joueur Équipe 3 + +PARTY_LEGEND_CONTINUE=Suivant + +PARTY_OPTIONS_DESC=Réglages pour le jeu de la fête +PARTY_OPTIONS_WHEREAMI=Options de la fête + +PARTY_PLAYER_DESC=Entrez le nom d´équipe et des joueurs +PARTY_PLAYER_WHEREAMI=Fête: Nom de joueur +PARTY_PLAYER_ENTER_NAME=Entrez le nom +PARTY_PLAYER_LEGEND_CONTINUE=Commencez un jeu de fête + +PARTY_ROUND_DESC=Les prochains joueurs aux microphones! +PARTY_ROUND_WHEREAMI=Fête: Prochaine partie +PARTY_ROUND_LEGEND_CONTINUE=Commencez la partie + +PARTY_SONG_WHEREAMI=Fête: Choix de chansons +PARTY_SONG_LEGEND_CONTINUE=Chantez +PARTY_SONG_MENU=Menu de la fête + +PARTY_SCORE_DESC=Points de la dernière partie. +PARTY_SCORE_WHEREAMI=Fête: Points + +PARTY_WIN_DESC=Gagnant du jeu de fête +PARTY_WIN_WHEREAMI=Fête: Gagnant +PARTY_WIN_LEGEND_CONTINUE=Retour au menu générale + +PARTY_ROUND=Partie +PARTY_ROUND_WINNER=Gagnant +PARTY_NOTPLAYEDYET=Pas encore joué +PARTY_NOBODY=Personne +NEXT_ROUND=Prochaine partie: + +PARTY_DISMISSED=Rétrogradé +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=a gagné! + +PLUGIN_HDL_NAME=Tenez la barre +PLUGIN_HDL_DESC=Tenez la barre dans le secteur indiqué + +PLUGIN_UNTIL5000_NAME=à 5000 +PLUGIN_UNTIL5000_DESC=Celui qui a 5000 points en premier a gagné. + +PLUGIN_DUELL_NAME=Duel +PLUGIN_DUELL_DESC=Jeu normal.Le plus grand nombre de points gagne. + +PLUGIN_BLIND_NAME=Mode aveugle +PLUGIN_BLIND_DESC=Gagne le plus grad nombre de points aveugle. + +STAT_MAIN=Statistiques +STAT_MAIN_DESC=Général +STAT_MAIN_WHEREAMI=Statistiques + +STAT_OVERVIEW_INTRO=%0:s Statistiques. \n Dernières reset á %1:.2d.%2:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d chanson(s) (%3:d avec une vidéo), %1:d ont été chantés déjà une fois et %2:d pas encore. \n La chanson la plus chantée est %5:s de %4:s. +STAT_OVERVIEW_PLAYER=Depuis la dernière reset %0:d différents joueurs ont chanté. \n Le meilleur joueur est %1:s avec %2:d points. \n Nombre de points maximal, %4:d, atteint de %3:s. + +STAT_DETAIL=Les statistiques +STAT_DETAIL_WHEREAMI=Statistiques détaillée + +STAT_NEXT=Page suivante +STAT_PREV=Page précédent +STAT_REVERSE=Inverser +STAT_PAGE=Page %0:d de %1:d \n (%2:d de %3:d Entrées) + +STAT_DESC_SCORES=Highscores +STAT_DESC_SCORES_REVERSED=Lowscores +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Meilleurs chant. +STAT_DESC_SINGERS_REVERSED=Mauvais chanteurs +STAT_FORMAT_SINGERS=%0:s \n Nombre de points moyen: %1:d + +STAT_DESC_SONGS=Chansons populaires +STAT_DESC_SONGS_REVERSED=Chansons impopulaires +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx chanté + +STAT_DESC_BANDS=Les bands populaires +STAT_DESC_BANDS_REVERSED=Les bands impopulaires +STAT_FORMAT_BANDS=%0:s \n Chansons chantées: %1:d + +MSG_ERROR_TITLE=Erreur +MSG_QUESTION_TITLE=Question +MSG_QUIT_USDX=Quittez UltraStar pour de bon? +MSG_END_PARTY=Quittez le mode de la fête? +ERROR_NO_SONGS=Pas de chansons existant. +ERROR_NO_PLUGINS=Pas de plugins existant . +ERROR_CORRUPT_SONG=La chanson ne pouvait pas être chargée. \ No newline at end of file -- cgit v1.2.3 From 642ed64bf406fd007bc5507c5ca02ea499a34f56 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 28 Jul 2007 18:42:19 +0000 Subject: Classic Skin Done - Fixed some mispositioned Statics in MainScreen - Add JumptoScreen - Some minor fixes git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@335 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Skins/Classic/Star.ini | 19 +++---- Skins/Classic/[icon]cd.jpg | Bin 1175 -> 0 bytes Skins/Classic/[icon]main.jpg | Bin 1153 -> 0 bytes Skins/Classic/[icon]options.jpg | Bin 1063 -> 0 bytes Skins/Classic/[icon]party.jpg | Bin 1528 -> 0 bytes Skins/Classic/[icon]score.jpg | Bin 1150 -> 0 bytes Skins/Classic/[icon]search.jpg | Bin 759 -> 0 bytes Skins/Classic/[icon]songmenu.jpg | Bin 1659 -> 0 bytes Skins/Classic/[menu]jumpToBg.jpg | Bin 1870 -> 885 bytes Themes/Classic.ini | 116 ++++++++++++++++++--------------------- 10 files changed, 60 insertions(+), 75 deletions(-) delete mode 100644 Skins/Classic/[icon]cd.jpg delete mode 100644 Skins/Classic/[icon]main.jpg delete mode 100644 Skins/Classic/[icon]options.jpg delete mode 100644 Skins/Classic/[icon]party.jpg delete mode 100644 Skins/Classic/[icon]score.jpg delete mode 100644 Skins/Classic/[icon]search.jpg delete mode 100644 Skins/Classic/[icon]songmenu.jpg diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index 5884a5bd..336af00c 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -18,13 +18,13 @@ MainBar = [main]Bar.jpg Logo = [main]Logo.jpg #Backgrounds -LoadingBG = [bg-load]summer.jpg -MainBG = [bg-main]summer.jpg -SongBG = [bg-main]summer.jpg -ScoreScreenBG = [bg-main]summer.jpg -Top5BG = [bg-main]summer.jpg -OptionsBG = [bg-main]summer.jpg -PartyBG = [bg-main]summer.jpg +#LoadingBG = #Placeholder for new Classic Skins +#MainBG = +#SongBG = +#ScoresBG = +#Top5BG = +#OptionsBG = +#PartyBG = #Icons on screen MainIcon = [icon]Star.jpg @@ -133,10 +133,7 @@ ButtonNavi = [button]navi.jpg ButtonEsc = [button]esc.jpg Button13 = [button]13.jpg -Leiste1 = [special]bar1.jpg -Leiste2 = [special]bar2.jpg - -JumpToBG = [menu]jumpToBg.jpg +JumpToBG = [menu]JumptoBg.jpg SongMenuBG = [menu]songMenuBg.jpg SongMenuBorder = [menu]songMenuBorder.jpg SongMenuButton = [menu]songMenuButtonBG.jpg diff --git a/Skins/Classic/[icon]cd.jpg b/Skins/Classic/[icon]cd.jpg deleted file mode 100644 index d48dc4ff..00000000 Binary files a/Skins/Classic/[icon]cd.jpg and /dev/null differ diff --git a/Skins/Classic/[icon]main.jpg b/Skins/Classic/[icon]main.jpg deleted file mode 100644 index 5941256a..00000000 Binary files a/Skins/Classic/[icon]main.jpg and /dev/null differ diff --git a/Skins/Classic/[icon]options.jpg b/Skins/Classic/[icon]options.jpg deleted file mode 100644 index 278f0adc..00000000 Binary files a/Skins/Classic/[icon]options.jpg and /dev/null differ diff --git a/Skins/Classic/[icon]party.jpg b/Skins/Classic/[icon]party.jpg deleted file mode 100644 index 2bccd403..00000000 Binary files a/Skins/Classic/[icon]party.jpg and /dev/null differ diff --git a/Skins/Classic/[icon]score.jpg b/Skins/Classic/[icon]score.jpg deleted file mode 100644 index 6402fa9a..00000000 Binary files a/Skins/Classic/[icon]score.jpg and /dev/null differ diff --git a/Skins/Classic/[icon]search.jpg b/Skins/Classic/[icon]search.jpg deleted file mode 100644 index b5870592..00000000 Binary files a/Skins/Classic/[icon]search.jpg and /dev/null differ diff --git a/Skins/Classic/[icon]songmenu.jpg b/Skins/Classic/[icon]songmenu.jpg deleted file mode 100644 index 35f4b440..00000000 Binary files a/Skins/Classic/[icon]songmenu.jpg and /dev/null differ diff --git a/Skins/Classic/[menu]jumpToBg.jpg b/Skins/Classic/[menu]jumpToBg.jpg index a8b93e10..d0cd1da8 100644 Binary files a/Skins/Classic/[menu]jumpToBg.jpg and b/Skins/Classic/[menu]jumpToBg.jpg differ diff --git a/Themes/Classic.ini b/Themes/Classic.ini index e5a0b195..f234f0bf 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -53,7 +53,7 @@ Tex=MainBG [MainText1] X =30 -Y =200 +Y =170 Color=GrayLight Font =1 Size =22 @@ -89,7 +89,7 @@ Align=0 [MainTextDescription] X =63 -Y =263 +Y =233 Color=GrayDark Font =1 Size =10 @@ -98,7 +98,7 @@ Text= [MainTextDescriptionLong] X =63 -Y =295 +Y =265 Color=Black Font =0 Size =10 @@ -108,7 +108,7 @@ Text= [MainStatic1] Tex =Logo X =30 -Y =300 +Y =270 W =740 H =283 Color =ColorDark @@ -121,7 +121,7 @@ TexY2=1 [MainStatic2] Tex =MainIcon X =30 -Y =265 +Y =235 W =32 H =32 Color =ColorDark @@ -137,8 +137,8 @@ X =196 Y =553 W =22 H =22 -Color =White -Type=Plain +Color =Black +Type=Font Black TexX1=0 TexY1=0 TexX2=1 @@ -150,8 +150,8 @@ X =350 Y =553 W =22 H =22 -Color =White -Type=Plain +Color =Black +Type=Font Black TexX1=0 TexY1=0 TexX2=1 @@ -163,8 +163,8 @@ X =510 Y =553 W =22 H =22 -Color =White -Type=Plain +Color =Black +Type=Font Black TexX1=0 TexY1=0 TexX2=1 @@ -172,7 +172,7 @@ TexY2=1 [MainButtonSolo] X =472 -Y =250 +Y =220 W =58 H =56 Tex =ButtonSolo @@ -185,7 +185,7 @@ Texts=0 [MainButtonMulti] X =532 -Y =250 +Y =220 W =58 H =56 Tex =ButtonMulti @@ -198,7 +198,7 @@ Texts=0 [MainButtonStats] X =592 -Y =250 +Y =220 W =58 H =56 Tex =ButtonStats @@ -211,7 +211,7 @@ Texts=0 [MainButtonEditor] X =592 -Y =250 +Y =220 W =58 H =56 Tex =ButtonEditor @@ -225,7 +225,7 @@ Visible=0 [MainButtonOptions] X =652 -Y =250 +Y =220 W =58 H =56 Tex =ButtonOptions @@ -238,7 +238,7 @@ Texts=0 [MainButtonExit] X =712 -Y =250 +Y =220 W =58 H =56 Tex =ButtonExit @@ -6598,39 +6598,17 @@ Tex =SongMenuBorder Type=Font Black Z=0.98 -# # # # Song Jump to # # # # - +# # # # Song Jump to Menu # # # # [SongJumpto] Texts=0 Statics=1 -[SongJumptoStatic1] -Tex =JumpToBG -X =221 -Y =175 -W =355 -H =175 -Z =0.98 -Int=1 -Color =GrayDark -Type=Font Black - -[SongJumptoStatic2] -X =234 -Y =185 -W =21 -H =21 -Color =White -Tex =MainSearch -Type=Font Black -Z=0.99 - [SongJumptoText1] -X =260 -Y =175 -Color=White -Font =0 -Size =14 +X =30 +Y =7 +Color=Black +Font =1 +Size =10 Text=SONG_JUMPTO_TYPE_DESC Align=0 Z=0.99 @@ -6640,42 +6618,52 @@ Tex = button TexSBG = mainicon #Text = SONG_JUMPTO_TYPE_DESC Font=1 -X = 242 -Y = 205 +X = 160 +Y = 10 Z = 0.99 W = 0 H = 30 -SkipX = 4 -SBGW= 300 +SkipX = 0 +SBGW= 120 Fields=2 -DColor = LightBlue -TColor = White -TDColor = White +DColor = White +TColor = Gray +TDColor = Gray SBGTex = button -SBGDColor = LightBlue -STColor = White -STDColor = LightBlue +SBGDColor = White +STColor = Gray +STDColor = White [SongJumptoButtonSearchText] -X = 250 -Y = 215 +X = 30 +Y = 40 Z = 0.99 -W = 160 -H = 50 -Size=14 -Font=1 +W = 208 +H = 25 +Tex=JumpToBG +Type=Font Black +Color=Black +Texts=1 + +[SongJumptoButtonSearchTextText1] +X = 2 +Y = -1 +Size=9 +Font=0 +Color=Black Align=0 [SongJumptoTextFound] -X =234 -Y =295 -Color=White +X =30 +Y =70 +Color=Black Font =0 Size =8 Text=SONG_JUMPTO_HELP Align=0 Z=0.99 + # # # # Statistic Screens # # # # [StatMain] Texts=4 -- cgit v1.2.3 From 7e4e6a06fb04002501b3146ff8a61341f538501e Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 28 Jul 2007 19:56:47 +0000 Subject: Some little changes on Braches Star.ini Changes on Create ur Language readme.txt: -Add infos about Statistic Wild-Cards -Add some structur git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@336 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/readme.txt | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++ Skins/Classic/Star.ini | 7 ----- 2 files changed, 80 insertions(+), 7 deletions(-) diff --git a/Languages/readme.txt b/Languages/readme.txt index a5bb7f18..79413b7e 100644 --- a/Languages/readme.txt +++ b/Languages/readme.txt @@ -1,5 +1,85 @@ +.o0 Ultrastar Deluxe in your Language 0o. + +----------------------- + Table of Contents +----------------------- +1. Introduction +2. Statistic Wild-Cards +3. Texts to Add + + + +----------------------- +1. Introduction: +----------------------- To translate USD to a new language, take the English Language File, or another one that is up to date and Edit the Texts behind the Equal Mark(=). +----------------------- +2. Statistic Wild-Cards: +----------------------- +Here are some Information about the Wild-Cars in the Language Texts for the Statistic Screens (STAT_...): +Information that will replace the Wild-Cards: + +STAT_OVERVIEW_INTRO: + Format: + %0:d Ultrastar Version + %1:d Day of Reset (A1) + %2:d Month of Reset (A2) + %3:d Year of Reset (A3) + +STAT_OVERVIEW_SONG: + Format: + %0:d Count Songs (A1) + %1:d Count of Sung Songs (A2) + %2:d Count of UnSung Songs + %3:d Count of Songs with Video (A3) + %4:s Name of the most popular Song + +STAT_OVERVIEW_PLAYER: + Format: + %0:d Count Players (A1) + %1:s Best Player (Result) + %2:d Best Players Score + %3:s Best Score Player (Result2) + %4:d Best Score + +STAT_FORMAT_SCORES: + Format: + %0:s Singer + %1:d Score + %2:s Difficulty + %3:s Song Artist + %4:s Song Title + +STAT_FORMAT_SINGERS: + Format: + %0:s Singer + %1:d Average Score + + +STAT_FORMAT_SONGS: + Format: + %0:s Artist + %1:s Title + %2:d Times Sung + +STAT_FORMAT_BANDS: + Format: + %0:s Artist Name + %1:d Times Sung + +Some further Explantation about the Wild-Cards: +%x:[.y]z + +Where X is the Number of the Wildcard, +Y is optional, it is the number of digits for Decimal Numbers (Z=d). So if y is 2 there and the number is only 0 to 9 there will be a Zero added in front of the number. +z can be d for Numbers and s for texts + +For the date thing in STAT_OVERVIEW_INTRO you may use %1:.2d for the day and %2:.2d for the Month. + +----------------------- +3. Texts to Add: +----------------------- To port a LanguageFile from Ultrastar 0.5.2 or Higher add the following Texts to the end of the file: #Main Screen diff --git a/Skins/Classic/Star.ini b/Skins/Classic/Star.ini index 336af00c..314fac01 100644 --- a/Skins/Classic/Star.ini +++ b/Skins/Classic/Star.ini @@ -28,13 +28,6 @@ Logo = [main]Logo.jpg #Icons on screen MainIcon = [icon]Star.jpg -MainSearch = [icon]Search.jpg -IconOption = [icon]Options.jpg -IconSongMenu = [icon]SongMenu.jpg -ScoreIcon = [icon]Score.jpg -PartyIcon = [icon]Party.jpg -StatIcon = [icon]Stats.jpg -SongCD = [icon]cd.jpg IconQuestion = [icon]question.jpg IconError = [icon]error.jpg VideoIcon = [icon]video.jpg -- cgit v1.2.3 From 74c3c52b849e12c9692d7653430d969b7cb4fcf1 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sat, 28 Jul 2007 21:21:21 +0000 Subject: Language: Added one of the best languages available, SWEDISH! Thanks JakobO and Spearedge :D git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@337 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Swedish.ini | 299 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 Languages/Swedish.ini diff --git a/Languages/Swedish.ini b/Languages/Swedish.ini new file mode 100644 index 00000000..6508c22d --- /dev/null +++ b/Languages/Swedish.ini @@ -0,0 +1,299 @@ +[Text] +SING_LOADING=Laddar... + +SING_CHOOSE_MODE=välj spelläge +SING_SING=sjung +SING_SING_DESC=snabb-spel: sjung solo eller duett + +SING_MULTI=party +SING_MULTI_DESC=sjung i party-läge + +SING_TOOLS=verktyg + +SING_STATS=statistik +SING_STATS_DESC=visa statistiken + +SING_EDITOR=redigerare +SING_EDITOR_DESC=skapa egna låtar + +SING_GAME_OPTIONS=spelinställningar +SING_GAME_OPTIONS_DESC=ändra spelinställningarna + +SING_EXIT=avsluta +SING_EXIT_DESC=avsluta spelet + +SING_OPTIONS=inställningar +SING_OPTIONS_DESC=ändra inställningarna +SING_OPTIONS_WHEREAMI=Inställningar + +SING_OPTIONS_GAME=spel +SING_OPTIONS_GRAPHICS=grafik +SING_OPTIONS_SOUND=ljud +SING_OPTIONS_LYRICS=låttexter +SING_OPTIONS_THEMES=teman +SING_OPTIONS_RECORD=inspelning +SING_OPTIONS_ADVANCED=avancerat +SING_OPTIONS_EXIT=tillbaka + +SING_OPTIONS_GAME_WHEREAMI=Inställningar Spel +SING_OPTIONS_GAME_DESC=allmänna spelinställningar +SING_OPTIONS_GAME_PLAYERS=Spelare +SING_OPTIONS_GAME_DIFFICULTY=Svårighetsgrad +SING_OPTIONS_GAME_LANGUAGE=Språk +SING_OPTIONS_GAME_TABS=Flikar +SING_OPTIONS_GAME_SORTING=Sortering efter +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_WHEREAMI=Inställningar Grafik +SING_OPTIONS_GRAPHICS_DESC=grafikinställningar +SING_OPTIONS_GRAPHICS_RESOLUTION=Upplösning +SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullskärm +SING_OPTIONS_GRAPHICS_DEPTH=Färgdjup +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskåp +SING_OPTIONS_GRAPHICS_LINEBONUS=Radbonus +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Filmstorlek + +SING_OPTIONS_SOUND_WHEREAMI=Inställningar Ljud +SING_OPTIONS_SOUND_DESC=ljudinställningar +SING_OPTIONS_SOUND_MIC_BOOST=Öka mikrofonljudet +SING_OPTIONS_SOUND_CLICK_ASSIST=Hjälpljud +SING_OPTIONS_SOUND_BEAT_CLICK=Taktljud +SING_OPTIONS_SOUND_THRESHOLD=Ljudtröskel +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tvåspelarläge +SING_OPTIONS_SOUND_PREVIEWVOLUME=Volym i låtvalsmeny +SING_OPTIONS_SOUND_PREVIEWFADING=Borttoning i låtvalsmeny + +SING_OPTIONS_LYRICS_WHEREAMI=Inställningar Sångtext +SING_OPTIONS_LYRICS_DESC=sångtextsinställningar +SING_OPTIONS_LYRICS_FONT=Textstil +SING_OPTIONS_LYRICS_EFFECT=Effekt +SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation + +SING_OPTIONS_THEMES_WHEREAMI=Inställningar Teman +SING_OPTIONS_THEMES_DESC=tema- och skalinställningar +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Skal +SING_OPTIONS_THEMES_COLOR=Färg + +SING_OPTIONS_RECORD_WHEREAMI=Inställningar Inspelning +SING_OPTIONS_RECORD_DESC=mikrofoninställningar +SING_OPTIONS_RECORD_CARD=Ljudkort +SING_OPTIONS_RECORD_INPUT=Input +SING_OPTIONS_RECORD_CHANNELL=Vänster kanal +SING_OPTIONS_RECORD_CHANNELR=Höger kanal + +SING_OPTIONS_ADVANCED_WHEREAMI=Inställningar Avancerat +SING_OPTIONS_ADVANCED_DESC=avancerade inställningar +SING_OPTIONS_ADVANCED_EFFECTSING=Sångeffekt +SING_OPTIONS_ADVANCED_SCREENFADE=Rutblekning +SING_OPTIONS_ADVANCED_LOADANIMATION=Ladda animation +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Säkerhetsfråga +SING_OPTIONS_ADVANCED_LINEBONUS=Radbonus +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= +SING_OPTIONS_ADVANCED_ONSONGCLICK=Vid låtval +SING_OPTIONS_ADVANCED_PARTYPOPUP=Automatisk partymeny + +SING_LEGEND_SELECT=välj +SING_LEGEND_NAVIGATE=navigera +SING_LEGEND_CONTINUE=fortsätt +SING_LEGEND_ESC=tillbaka + +SING_PLAYER_DESC=skriv spelarens/nas namn +SING_PLAYER_WHEREAMI=Spelarnamn +SING_PLAYER_ENTER_NAME=skriv namn + +SING_DIFFICULTY_DESC=välj svårighetsgrad +SING_DIFFICULTY_WHEREAMI=Svårighetsgrad +SING_DIFFICULTY_CONTINUE=fortsätt till låtval +SING_EASY=Lätt +SING_MEDIUM=Medel +SING_HARD=Svår + +SING_SONG_SELECTION_DESC=välj låt +SING_SONG_SELECTION_WHEREAMI=Låtval +SING_SONG_SELECTION_GOTO=gå till .. +SING_SONG_SELECTION=låtval +SING_SONG_SELECTION_MENU=meny +SING_SONG_SELECTION_PLAYLIST=spellista +SING_SONGS_IN_CAT=Låtar +PLAYLIST_CATTEXT=Spellista: %s + +SING_TIME=Tid +SING_TOTAL=total +SING_MODE=sing solo +SING_NOTES=noter +SING_GOLDEN_NOTES=gyllene noter +SING_PHRASE_BONUS=radbonus + +SING_MENU=Huvudmenyn + +SONG_SCORE=sångpoäng +SONG_SCORE_WHEREAMI=Poäng + +SING_SCORE_TONE_DEAF=Tondöv +SING_SCORE_AMATEUR=Amatör +SING_SCORE_RISING_STAR=Stigande stjärna +SING_SCORE_LEAD_SINGER=Lead Singer +SING_SCORE_HIT_ARTIST=Hitartist +SING_SCORE_SUPERSTAR=Superstjärna +SING_SCORE_ULTRASTAR=Ultrastar + +SING_TOP_5_CHARTS=topp 5 Spelare +SING_TOP_5_CHARTS_WHEREAMI=topp 5 +SING_TOP_5_CHARTS_CONTINUE=till låtval + +POPUP_PERFECT=perfekt! +POPUP_AWESOME=storartat! +POPUP_GREAT=riktigt bra! +POPUP_GOOD=bra! +POPUP_NOTBAD=godkänt! +POPUP_BAD=dåligt! +POPUP_POOR=usel! +POPUP_AWFUL=avskyvärt! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= och + +SONG_MENU_NAME_MAIN=låtmeny +SONG_MENU_PLAY=Sjung +SONG_MENU_CHANGEPLAYERS=Ändra spelare +SONG_MENU_EDIT=Redigera +SONG_MENU_MODI=Sjung en mod +SONG_MENU_CANCEL=Annulera + +SONG_MENU_NAME_PLAYLIST=Låtmeny +SONG_MENU_PLAYLIST_ADD=Lägg till en låt +SONG_MENU_PLAYLIST_DEL=Ta bort en låt + +SONG_MENU_NAME_PLAYLIST_ADD=Lägg till en låt +SONG_MENU_PLAYLIST_ADD_NEW=till en ny spellista +SONG_MENU_PLAYLIST_ADD_EXISTING=till en existerande spellista +SONG_MENU_PLAYLIST_NOEXISTING=Det finns ingen tillgänglig spellista + +SONG_MENU_NAME_PLAYLIST_NEW=Ny spellist +SONG_MENU_PLAYLIST_NEW_CREATE=Skapa +SONG_MENU_PLAYLIST_NEW_UNNAMED=Namnlös + +SONG_MENU_NAME_PLAYLIST_DEL=Vill du verkligen ta bort? +SONG_MENU_YES=Ja +SONG_MENU_NO=Nej + +SONG_MENU_NAME_PLAYLIST_LOAD=Öppna spellista +SONG_MENU_PLAYLIST_LOAD=öppna +SONG_MENU_PLAYLIST_DELCURRENT=ta bort nuvarande spellista + +SONG_MENU_NAME_PLAYLIST_DEL=Ta bort spellista? + +SONG_MENU_NAME_PARTY_MAIN=Partymeny +SONG_MENU_JOKER=Joker + +SONG_MENU_NAME_PARTY_JOKER=ta joker + +SONG_JUMPTO_DESC=sök upp en låt +SONG_JUMPTO_TYPE_DESC=Sök efter: +SONG_JUMPTO_TYPE1=Alla +SONG_JUMPTO_TYPE2=Titel +SONG_JUMPTO_TYPE3=Artist +SONG_JUMPTO_SONGSFOUND=%d Låt(ar) hittade +SONG_JUMPTO_NOSONGSFOUND=Inga låtar hittade +SONG_JUMPTO_HELP=Skriv text för att söka +SONG_JUMPTO_CATTEXT=Sök efter: %s + +PARTY_MODE=partyläge +PARTY_DIFFICULTY=Svårighestagrad +PARTY_PLAYLIST=Spellistsläge +PARTY_PLAYLIST_ALL=Alla låtar +PARTY_PLAYLIST_CATEGORY=Mapp +PARTY_PLAYLIST_PLAYLIST=Spellista +PARTY_ROUNDS=Omgångar +PARTY_TEAMS=Lag +PARTY_TEAMS_PLAYER1=Spelare Lag1 +PARTY_TEAMS_PLAYER2=Spelare Lag2 +PARTY_TEAMS_PLAYER3=Spelare Lag3 + +PARTY_LEGEND_CONTINUE=fortsätt + +PARTY_OPTIONS_DESC=inställningar för partyspel +PARTY_OPTIONS_WHEREAMI=Partyinställningar + +PARTY_PLAYER_DESC=skriv spelar- och lagnamn +PARTY_PLAYER_WHEREAMI=Partynamn +PARTY_PLAYER_ENTER_NAME=skriv namn +PARTY_PLAYER_LEGEND_CONTINUE=starta partyspel + +PARTY_ROUND_DESC=nästa spelare till mikrofonerna +PARTY_ROUND_WHEREAMI=Party Nästa omgång +PARTY_ROUND_LEGEND_CONTINUE=starta omgång + +PARTY_SONG_WHEREAMI=Party Låtval +PARTY_SONG_LEGEND_CONTINUE=sjung +PARTY_SONG_MENU=partymeny + +PARTY_SCORE_DESC=poäng från senaste omgången +PARTY_SCORE_WHEREAMI=Partypoäng + +PARTY_WIN_DESC=vinnare av partyspelet +PARTY_WIN_WHEREAMI=Partyvinnare +PARTY_WIN_LEGEND_CONTINUE=tillbaka till huvudmenyn + +PARTY_ROUND=Omgång +PARTY_ROUND_WINNER=Vinnare +PARTY_NOTPLAYEDYET=inte spelad än +PARTY_NOBODY=ingen +NEXT_ROUND=Nästa omgång: + +PARTY_DISMISSED=Avbrytet! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=vinster! + +PLUGIN_HDL_NAME=Håll stånd +PLUGIN_HDL_DESC=Bli inte sämre än vad pekararen på omdömesmätaren visar + +PLUGIN_UNTIL5000_NAME=Tills 5000 +PLUGIN_UNTIL5000_DESC=Den som får 5000 poäng först vinner matchen + +PLUGIN_DUELL_NAME=Duell +PLUGIN_DUELL_DESC=Sjung en duell tills 10000 poäng + +PLUGIN_BLIND_NAME=Blindläge +PLUGIN_BLIND_DESC=Duell utan att se noterna. + +STAT_MAIN=Statistik +STAT_MAIN_DESC=Allmän +STAT_MAIN_WHEREAMI=Statistik + +STAT_OVERVIEW_INTRO=%0:s Statistik. \n Senast återställd %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Låtar(%3:d med Video), varav %1:d redan har spelats och %2:d inte har spelats än.\n Den mest populära Låten är %5:s av %4:s. +STAT_OVERVIEW_PLAYER=Sedan den senaste återställningen var %0:d olika spelare.\n Den bästa spelaren är %1:s med en genomsnittligt resultat på %2:d poäng.\n %3:s har sjungit bäst med %4:d poäng. + +STAT_DETAIL=Statistik +STAT_DETAIL_WHEREAMI=Detaljerad statistik + +STAT_NEXT=Nästa sida +STAT_PREV=Föregående sida +STAT_REVERSE=Omvänd ordning +STAT_PAGE=Sida %0:d av %1:d Sidor\n (%2:d av %3:d Poster) + +STAT_DESC_SCORES=Högsta resultaten +STAT_DESC_SCORES_REVERSED=Lägsta resultaten +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Bästa Låtarna +STAT_DESC_SINGERS_REVERSED=Sämsta Låtarna +STAT_FORMAT_SINGERS=%0:s \n Genomsnittlig poäng: %1:d + +STAT_DESC_SONGS=Mest populära Låtarna +STAT_DESC_SONGS_REVERSED=Minst populära Låtarna +STAT_FORMAT_SONGS=%0:s - %1:s \n Sjungen %2:d gånger + +STAT_DESC_BANDS=Mest populära arrtisterna +STAT_DESC_BANDS_REVERSED=Minst populära arrtisterna +STAT_FORMAT_BANDS=%0:s \n %1:dx sjungna + +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Fråga +MSG_QUIT_USDX=Vill du verkligen lämna UltraStar? +MSG_END_PARTY=Vill du verkligen avsluta party-läge? +ERROR_NO_SONGS=Inga Låtar laddade +ERROR_NO_PLUGINS=No Plugins loaded +ERROR_CORRUPT_SONG=Song could not be loaded. \ No newline at end of file -- cgit v1.2.3 From c5640ba3baca3c70e7c0226b62023b4fc82a8fec Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 29 Jul 2007 11:17:56 +0000 Subject: Readd SingBar to Classic Theme git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@338 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Themes/Classic.ini | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Themes/Classic.ini b/Themes/Classic.ini index f234f0bf..a56b6f71 100644 --- a/Themes/Classic.ini +++ b/Themes/Classic.ini @@ -893,6 +893,24 @@ Size =10 Color =White Align=0 +[SingP1SingBar] +X =75 +Y =95 +W =100 +H =8 + +[SingP1TwoPSingBar] +X =75 +Y =95 +W =100 +H =8 + +[SingP1ThreePSingBar] +X =75 +Y =95 +W =100 +H =8 + [SingP2RStatic] Tex =P X =739 @@ -937,6 +955,12 @@ Size =10 Color =White Align=0 +[SingP2RSingBar] +X =620 +Y =95 +W =100 +H =8 + [SingP2MStatic] Tex =P X =311 @@ -981,6 +1005,12 @@ Size =10 Color =White Align=0 +[SingP2MSingBar] +X =370 +Y =95 +W =100 +H =8 + [SingP3RStatic] Tex =P X =611 @@ -1025,6 +1055,12 @@ Size =10 Color =White Align=0 +[SingP3SingBar] +X =670 +Y =95 +W =100 +H =8 + [Score] Texts =1 -- cgit v1.2.3 From c2a79c5ca774093e34cd96e584da25cdc2b4b047 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 29 Jul 2007 12:08:01 +0000 Subject: Changed Version to 1.00 (ready 4 Release xD) Credits Screen now loads on demand ( S0me loading speed improvement) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@339 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UGraphic.pas | 5 +++-- Game/Code/Screens/UScreenMain.pas | 31 +++++++++++++++++++++++++------ Game/Code/UltraStar.dpr | 2 +- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index cf1a0c5a..105dcfd7 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -475,8 +475,9 @@ begin Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Main', 3); Log.BenchmarkStart(3); ScreenStatDetail := TScreenStatDetail.Create; Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Stat Detail', 3); Log.BenchmarkStart(3); - ScreenCredits := TScreenCredits.Create; - Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Credits', 3); Log.BenchmarkStart(3); + //Now Created when needed + //ScreenCredits := TScreenCredits.Create; + //Log.BenchmarkEnd(3); Log.LogBenchmark('====> Screen Credits', 3); Log.BenchmarkStart(3); end; diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 085f253d..af27b9b1 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -25,7 +25,7 @@ type implementation -uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager, UScreenCredits, USkins; +uses Windows, UGraphic, UMain, UIni, UTexture, USongs, Textgl, opengl, ULanguage, UParty, UDLLManager, UScreenCredits, USkins, ULog; function TScreenMain.ParseInput(PressedKey: Cardinal; ScanCode: byte; PressedDown: Boolean): Boolean; @@ -62,11 +62,30 @@ begin begin if (SDL_ModState = KMOD_LALT) then begin - //Credits_Y := 600; - //Credits_Alpha := 0; - //Credits_Visible := True; - Music.PlayStart; - FadeTo(@ScreenCredits); + //If CreditsScreen is not Created -> Then Create + If (ScreenCredits = nil) then + begin + try + //Display White Loading Text + SetFontStyle(2); //Font: Outlined1 + SetFontSize(12); + SetFontItalic(False); + SetFontPos (400 - glTextWidth ('Loading Credits ...')/2, 250); //Position + glColor4f(1,1,1,1); + glPrint('Loading Credits ...'); + SwapBuffers; + + ScreenCredits := TScreenCredits.Create; + except + Log.LogError ('Couldn''t Create Credits Screen'); + end; + end; + + If (ScreenCredits <> nil) then + begin + Music.PlayStart; + FadeTo(@ScreenCredits); + end; end; end; SDLK_M: diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index a49d43c2..8ea7c0e0 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -106,7 +106,7 @@ uses SysUtils; const - Version = 'UltraStar Deluxe V 1.00 RC1'; + Version = 'UltraStar Deluxe V 1.00'; var WndTitle: string; -- cgit v1.2.3 From 84d581cdb87bee59692d9ad20ae9fba94948ad69 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 29 Jul 2007 12:42:06 +0000 Subject: Translators are now in the credits git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@340 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenCredits.pas | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index 7e91ee3b..4d908597 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -69,8 +69,8 @@ const Funky_Text: AnsiString = 'Grandma Deluxe has arrived! Thanks to Corvus5 for the massive work on UltraStar, Wome for the nice tune you´re hearing, '+ 'all the people who put massive effort and work in new songs (don´t forget UltraStar w/o songs would be nothing), ppl from '+ - 'irc helping us - eBandit and Gabari, scene ppl who really helped instead of compiling and running away. Greetings to DennisTheMenace for betatesting, '+ - 'Demoscene.tv, pouet.net, KakiArts, Sourceforge,..'; + 'irc helping us - eBandit and Gabari, scene ppl who really helped instead of compiling and running away. Thank for the translations to Jakob0 and Spearedge (Swedish), Pino (Dutch) and Canni (French). Greetings to DennisTheMenace for betatesting, '+ + 'Demoscene.tv, KakiArts, Sourceforge,..'; Timings: array[0..21] of Cardinal=( -- cgit v1.2.3 From 70cd1e142c206c377cb76cd95c20f290c252cc6d Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 29 Jul 2007 12:44:57 +0000 Subject: Credits, fix for deaf Whiteshark git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@341 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenCredits.pas | 1 + 1 file changed, 1 insertion(+) diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index 4d908597..0176e329 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -170,6 +170,7 @@ begin deluxe_slidein := 0; Credits_Alpha := 0; Music.Open(soundpath + 'wome-credits-tune.mp3'); //danke kleinster liebster weeeetüüüüü!! + Music.SetVolume(100); //Whiteshark, you hear me now? :P CTime:=0; // setlength(CTime_hold,0); end; -- cgit v1.2.3 From 7f37b457c7dd7d193e021abf6870ca9aa2b5200f Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 29 Jul 2007 13:38:48 +0000 Subject: Fixed another really important orthographic mistake in German language file git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@342 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Languages/German.ini b/Languages/German.ini index 287dcdcc..c7d9574c 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -36,7 +36,7 @@ SING_OPTIONS_ADVANCED=Erweitert SING_OPTIONS_EXIT=zurück SING_OPTIONS_GAME_WHEREAMI=Optionen Spiel -SING_OPTIONS_GAME_DESC=Allgemeine Spiel Einstellungen +SING_OPTIONS_GAME_DESC=Allgemeine Spieleinstellungen SING_OPTIONS_GAME_PLAYERS=Spieler SING_OPTIONS_GAME_DIFFICULTY=Schwierigkeit SING_OPTIONS_GAME_LANGUAGE=Sprache -- cgit v1.2.3 From 6626ffd67b1f11b445a501867d7ddb84c2c714d5 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 29 Jul 2007 14:10:46 +0000 Subject: Fixed even more really important orthographic mistake in German language file (ty solino) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@343 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/German.ini | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Languages/German.ini b/Languages/German.ini index c7d9574c..24d78ea4 100644 --- a/Languages/German.ini +++ b/Languages/German.ini @@ -50,12 +50,12 @@ SING_OPTIONS_GRAPHICS_RESOLUTION=Aufl SING_OPTIONS_GRAPHICS_FULLSCREEN=Vollbild SING_OPTIONS_GRAPHICS_DEPTH=Farbtiefe SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oszilloskop -SING_OPTIONS_GRAPHICS_LINEBONUS=Phrasen Bonus -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Video Größe +SING_OPTIONS_GRAPHICS_LINEBONUS=Phrasenbonus +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videogröße SING_OPTIONS_SOUND_WHEREAMI=Optionen Sound SING_OPTIONS_SOUND_DESC=Einstellungen für den Sound -SING_OPTIONS_SOUND_MIC_BOOST=Mic Anhebung +SING_OPTIONS_SOUND_MIC_BOOST=Mic-Anhebung SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdr. @@ -84,12 +84,12 @@ SING_OPTIONS_RECORD_CHANNELR=Rechter Kanal SING_OPTIONS_ADVANCED_WHEREAMI=Optionen Erweitert SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen -SING_OPTIONS_ADVANCED_EFFECTSING=Sing Effekte -SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm Fade -SING_OPTIONS_ADVANCED_LOADANIMATION=Lade Animation +SING_OPTIONS_ADVANCED_EFFECTSING=Singeffekte +SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm-Fade +SING_OPTIONS_ADVANCED_LOADANIMATION=Lade-Animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr. -SING_OPTIONS_ADVANCED_LINEBONUS=Phrasen Bonus -SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mit zählen +SING_OPTIONS_ADVANCED_LINEBONUS=Phrasenbonus +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Wie oft gesungen mitzählen SING_OPTIONS_ADVANCED_ONSONGCLICK=nach Song-Wahl SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menü @@ -130,11 +130,11 @@ SING_MENU=Hauptmen SONG_SCORE=Song Punkte SONG_SCORE_WHEREAMI=Punkte -SING_SCORE_TONE_DEAF=Anti Talent +SING_SCORE_TONE_DEAF=Anti-Talent SING_SCORE_AMATEUR=Amateur SING_SCORE_RISING_STAR=Möchtegern SING_SCORE_LEAD_SINGER=Sternchen -SING_SCORE_HIT_ARTIST=Hit Künstler +SING_SCORE_HIT_ARTIST=Hit-Künstler SING_SCORE_SUPERSTAR=Superstar SING_SCORE_ULTRASTAR=UltraStar @@ -158,7 +158,7 @@ SONG_MENU_NAME_MAIN=Men SONG_MENU_PLAY=Singen SONG_MENU_CHANGEPLAYERS=Spieler Wechseln SONG_MENU_EDIT=Editor -SONG_MENU_MODI=Ein Modi singen +SONG_MENU_MODI=Einen Modus singen SONG_MENU_CANCEL=Abbrechen SONG_MENU_NAME_PLAYLIST=Menü @@ -200,9 +200,9 @@ SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden SONG_JUMPTO_HELP=Text eingeben um zu suchen SONG_JUMPTO_CATTEXT=Suche nach: %s -PARTY_MODE=Party Modus +PARTY_MODE=Party-Modus PARTY_DIFFICULTY=Schwierigkeit -PARTY_PLAYLIST=Playlist Modus +PARTY_PLAYLIST=Playlist-Modus PARTY_PLAYLIST_ALL=Alle Lieder PARTY_PLAYLIST_CATEGORY=Ordner PARTY_PLAYLIST_PLAYLIST=Playlist @@ -248,7 +248,7 @@ PARTY_SCORE_WINS=%s PARTY_SCORE_WINS2=hat gewonnen! PLUGIN_HDL_NAME=Balken halten -PLUGIN_HDL_DESC=Halte die Bewertungsanzeige im angezeigten Bereich +PLUGIN_HDL_DESC=Halte die Bewertungsanzeige im angezeigten Bereich. PLUGIN_UNTIL5000_NAME=Bis 5000 PLUGIN_UNTIL5000_DESC=Wer zuerst 5000 Punkte hat gewinnt. @@ -294,7 +294,7 @@ STAT_FORMAT_BANDS=%0:s \n Gesungene Songs: %1:d MSG_ERROR_TITLE=Fehler MSG_QUESTION_TITLE=Frage MSG_QUIT_USDX=UltraStar wirklich verlassen? -MSG_END_PARTY=Party Modus beenden? +MSG_END_PARTY=Party-Modus beenden? ERROR_NO_SONGS=Keine Songs vorhanden. ERROR_NO_PLUGINS=Keine Plugins vorhanden. ERROR_CORRUPT_SONG=Song konnte nicht geladen werden. \ No newline at end of file -- cgit v1.2.3 From 2ecca65db85218ac5c3c2dad50469725c99db6f5 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 4 Aug 2007 15:54:06 +0000 Subject: Swedish Language File Updated. thx to JakobO git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@344 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Swedish.ini | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Languages/Swedish.ini b/Languages/Swedish.ini index 6508c22d..fde45c22 100644 --- a/Languages/Swedish.ini +++ b/Languages/Swedish.ini @@ -29,7 +29,7 @@ SING_OPTIONS_WHEREAMI=Inst SING_OPTIONS_GAME=spel SING_OPTIONS_GRAPHICS=grafik SING_OPTIONS_SOUND=ljud -SING_OPTIONS_LYRICS=låttexter +SING_OPTIONS_LYRICS=text SING_OPTIONS_THEMES=teman SING_OPTIONS_RECORD=inspelning SING_OPTIONS_ADVANCED=avancerat @@ -49,7 +49,7 @@ SING_OPTIONS_GRAPHICS_DESC=grafikinst SING_OPTIONS_GRAPHICS_RESOLUTION=Upplösning SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullskärm SING_OPTIONS_GRAPHICS_DEPTH=Färgdjup -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskåp +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop SING_OPTIONS_GRAPHICS_LINEBONUS=Radbonus SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Filmstorlek @@ -60,11 +60,11 @@ SING_OPTIONS_SOUND_CLICK_ASSIST=Hj SING_OPTIONS_SOUND_BEAT_CLICK=Taktljud SING_OPTIONS_SOUND_THRESHOLD=Ljudtröskel SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tvåspelarläge -SING_OPTIONS_SOUND_PREVIEWVOLUME=Volym i låtvalsmeny -SING_OPTIONS_SOUND_PREVIEWFADING=Borttoning i låtvalsmeny +SING_OPTIONS_SOUND_PREVIEWVOLUME=Menyljud +SING_OPTIONS_SOUND_PREVIEWFADING=Menytoning -SING_OPTIONS_LYRICS_WHEREAMI=Inställningar Sångtext -SING_OPTIONS_LYRICS_DESC=sångtextsinställningar +SING_OPTIONS_LYRICS_WHEREAMI=Inställningar Text +SING_OPTIONS_LYRICS_DESC=textinställningar SING_OPTIONS_LYRICS_FONT=Textstil SING_OPTIONS_LYRICS_EFFECT=Effekt SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation @@ -90,7 +90,7 @@ SING_OPTIONS_ADVANCED_LOADANIMATION=Ladda animation SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Säkerhetsfråga SING_OPTIONS_ADVANCED_LINEBONUS=Radbonus SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= -SING_OPTIONS_ADVANCED_ONSONGCLICK=Vid låtval +SING_OPTIONS_ADVANCED_ONSONGCLICK=Efter låtval SING_OPTIONS_ADVANCED_PARTYPOPUP=Automatisk partymeny SING_LEGEND_SELECT=välj @@ -125,7 +125,7 @@ SING_NOTES=noter SING_GOLDEN_NOTES=gyllene noter SING_PHRASE_BONUS=radbonus -SING_MENU=Huvudmenyn +SING_MENU=Huvudmeny SONG_SCORE=sångpoäng SONG_SCORE_WHEREAMI=Poäng @@ -264,7 +264,7 @@ STAT_MAIN_WHEREAMI=Statistik STAT_OVERVIEW_INTRO=%0:s Statistik. \n Senast återställd %2:.2d.%1:.2d.%3:d STAT_OVERVIEW_SONG=%0:d Låtar(%3:d med Video), varav %1:d redan har spelats och %2:d inte har spelats än.\n Den mest populära Låten är %5:s av %4:s. -STAT_OVERVIEW_PLAYER=Sedan den senaste återställningen var %0:d olika spelare.\n Den bästa spelaren är %1:s med en genomsnittligt resultat på %2:d poäng.\n %3:s har sjungit bäst med %4:d poäng. +STAT_OVERVIEW_PLAYER=Sedan den senaste återställningen var %0:d olika spelare.\n Den bästa spelaren är %1:s med ett snittresultat på %2:d poäng.\n %3:s har sjungit bäst med %4:d poäng. STAT_DETAIL=Statistik STAT_DETAIL_WHEREAMI=Detaljerad statistik @@ -282,17 +282,17 @@ STAT_DESC_SINGERS=B STAT_DESC_SINGERS_REVERSED=Sämsta Låtarna STAT_FORMAT_SINGERS=%0:s \n Genomsnittlig poäng: %1:d -STAT_DESC_SONGS=Mest populära Låtarna +STAT_DESC_SONGS=Populäraste Låtarna STAT_DESC_SONGS_REVERSED=Minst populära Låtarna STAT_FORMAT_SONGS=%0:s - %1:s \n Sjungen %2:d gånger -STAT_DESC_BANDS=Mest populära arrtisterna -STAT_DESC_BANDS_REVERSED=Minst populära arrtisterna +STAT_DESC_BANDS=Populäraste artisterna +STAT_DESC_BANDS_REVERSED=Minst populära artisterna STAT_FORMAT_BANDS=%0:s \n %1:dx sjungna MSG_ERROR_TITLE=Error MSG_QUESTION_TITLE=Fråga -MSG_QUIT_USDX=Vill du verkligen lämna UltraStar? +MSG_QUIT_USDX=Vill du verkligen avsluta UltraStar? MSG_END_PARTY=Vill du verkligen avsluta party-läge? ERROR_NO_SONGS=Inga Låtar laddade ERROR_NO_PLUGINS=No Plugins loaded -- cgit v1.2.3 From a9269039e38eadcde5b0e4efb291f91ba4e41b9c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sat, 4 Aug 2007 21:09:38 +0000 Subject: Spanish Languagefile added. Thx to Ralsis git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@346 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Spanish.ini | 298 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 Languages/Spanish.ini diff --git a/Languages/Spanish.ini b/Languages/Spanish.ini new file mode 100644 index 00000000..e1602312 --- /dev/null +++ b/Languages/Spanish.ini @@ -0,0 +1,298 @@ +[Text] +SING_LOADING=Cargando... + +SING_CHOOSE_MODE=Escoge +SING_SING=¡Canta! +SING_SING_DESC=Cantar + +SING_MULTI=Grupo +SING_MULTI_DESC=Cantar en grupos + +SING_TOOLS=Utilidades + +SING_STATS=Estadisticas +SING_STATS_DESC=Ver las estadisticas + +SING_EDITOR=Editor +SING_EDITOR_DESC=Crea tus propias canciones + +SING_GAME_OPTIONS=Opciones +SING_GAME_OPTIONS_DESC=Cambia las opciones del juego + +SING_EXIT=Salir +SING_EXIT_DESC=Salir del juego + +SING_OPTIONS=Opciones +SING_OPTIONS_DESC=Cambia las opciones +SING_OPTIONS_WHEREAMI=Opciones + +SING_OPTIONS_GAME=Juego +SING_OPTIONS_GRAPHICS=Gráficos +SING_OPTIONS_SOUND=Sonido +SING_OPTIONS_LYRICS=Letras +SING_OPTIONS_THEMES=Temas +SING_OPTIONS_RECORD=Grabación +SING_OPTIONS_ADVANCED=Avanzadas +SING_OPTIONS_EXIT=Regresar + +SING_OPTIONS_GAME_WHEREAMI=Opciones del juego +SING_OPTIONS_GAME_DESC=Opciones generales del juego +SING_OPTIONS_GAME_PLAYERS=Jugadores +SING_OPTIONS_GAME_DIFFICULTY=Dificultad +SING_OPTIONS_GAME_LANGUAGE=Idioma +SING_OPTIONS_GAME_TABS=Etiquetas +SING_OPTIONS_GAME_SORTING=Clasificar por +SING_OPTIONS_GAME_DEBUG=Modo depuración + +SING_OPTIONS_GRAPHICS_WHEREAMI=Opciones gráficas +SING_OPTIONS_GRAPHICS_DESC=Opciones gráficas +SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa +SING_OPTIONS_GRAPHICS_DEPTH=Calidad de color +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio +SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de línea +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño del vídeo + +SING_OPTIONS_SOUND_WHEREAMI=Opciones de sonido +SING_OPTIONS_SOUND_DESC=Opciones de sonido +SING_OPTIONS_SOUND_MIC_BOOST=Potenciar micro. +SING_OPTIONS_SOUND_CLICK_ASSIST=Asist. de notas +SING_OPTIONS_SOUND_BEAT_CLICK=Asist. de golpes +SING_OPTIONS_SOUND_THRESHOLD=Atenuar micro. +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo dos jugadores +SING_OPTIONS_SOUND_PREVIEWVOLUME=Volum. de avance +SING_OPTIONS_SOUND_PREVIEWFADING=Desvanecimiento + +SING_OPTIONS_LYRICS_WHEREAMI=Opciones de letras +SING_OPTIONS_LYRICS_DESC=Opciones de letras +SING_OPTIONS_LYRICS_FONT=Fuente +SING_OPTIONS_LYRICS_EFFECT=Efecto +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo + +SING_OPTIONS_THEMES_WHEREAMI=Opciones de temas +SING_OPTIONS_THEMES_DESC=Opciones de temas +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Piel +SING_OPTIONS_THEMES_COLOR=Color + +SING_OPTIONS_RECORD_WHEREAMI=Opciones de grabación +SING_OPTIONS_RECORD_DESC=Opciones del micrófono +SING_OPTIONS_RECORD_CARD=Tarjeta de sonido +SING_OPTIONS_RECORD_INPUT=Captura +SING_OPTIONS_RECORD_CHANNELL=Canal izquierdo +SING_OPTIONS_RECORD_CHANNELR=Canal derecho + +SING_OPTIONS_ADVANCED_WHEREAMI=Opciones avanzadas +SING_OPTIONS_ADVANCED_DESC=Opciones avanzadas +SING_OPTIONS_ADVANCED_EFFECTSING=Efectos al cantar +SING_OPTIONS_ADVANCED_SCREENFADE=Desvanecimiento +SING_OPTIONS_ADVANCED_LOADANIMATION=Animación de carga +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Preguntar +SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de línea +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= +SING_OPTIONS_ADVANCED_ONSONGCLICK=Al selecionar canción +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto menú de grupo + +SING_LEGEND_SELECT=Seleccionar +SING_LEGEND_NAVIGATE=Navegar +SING_LEGEND_CONTINUE=continuar +SING_LEGEND_ESC=Regresar + +SING_PLAYER_DESC=Nombre(s) de jugador(es) +SING_PLAYER_WHEREAMI=Nombre(s) de jugador(es) +SING_PLAYER_ENTER_NAME=Escribe el nombre + +SING_DIFFICULTY_DESC=Selecciona la dificultad +SING_DIFFICULTY_WHEREAMI=Dificultad +SING_DIFFICULTY_CONTINUE=Siguiente +SING_EASY=Fácil +SING_MEDIUM=Normal +SING_HARD=Difícil + +SING_SONG_SELECTION_DESC=Selecciona tu canción +SING_SONG_SELECTION_WHEREAMI=Selección de canción +SING_SONG_SELECTION_GOTO=Ir a... +SING_SONG_SELECTION=Selección de canción +SING_SONG_SELECTION_MENU=Menú +SING_SONG_SELECTION_PLAYLIST=Lista +SING_SONGS_IN_CAT=Canciones +PLAYLIST_CATTEXT=Lista: %s + +SING_TIME=Tiempo +SING_TOTAL=Total +SING_MODE=Solo +SING_NOTES=Notas +SING_GOLDEN_NOTES=Notas doradas +SING_PHRASE_BONUS=Bonus de línea + +SING_MENU=Menú principal + +SONG_SCORE=Puntaje +SONG_SCORE_WHEREAMI= + +SING_SCORE_TONE_DEAF=Desafinado +SING_SCORE_AMATEUR=Aficionado +SING_SCORE_RISING_STAR=Progresando +SING_SCORE_LEAD_SINGER=Cantante +SING_SCORE_HIT_ARTIST=Gran cantante +SING_SCORE_SUPERSTAR=Superestrella +SING_SCORE_ULTRASTAR=Ultraestrella + +SING_TOP_5_CHARTS=Los mejores +SING_TOP_5_CHARTS_WHEREAMI= +SING_TOP_5_CHARTS_CONTINUE=Continuar + +POPUP_PERFECT=¡Perfecto! +POPUP_AWESOME=¡Asombroso! +POPUP_GREAT=¡Genial! +POPUP_GOOD=¡Bien! +POPUP_NOTBAD=¡No está mal! +POPUP_BAD=¡Mal! +POPUP_POOR=¡Pésimo! +POPUP_AWFUL=¡Horrible! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= y + +SONG_MENU_NAME_MAIN=Menú de canto +SONG_MENU_PLAY=Cantar +SONG_MENU_CHANGEPLAYERS=Escoger jugador +SONG_MENU_EDIT=Editar +SONG_MENU_MODI=Cantar una Modi +SONG_MENU_CANCEL=Cancelar + +SONG_MENU_NAME_PLAYLIST=Menú +SONG_MENU_PLAYLIST_ADD=Añadir Canción +SONG_MENU_PLAYLIST_DEL=Eliminar Canción + +SONG_MENU_NAME_PLAYLIST_ADD=Añadir canción +SONG_MENU_PLAYLIST_ADD_NEW=A nueva lista +SONG_MENU_PLAYLIST_ADD_EXISTING=A lista existente +SONG_MENU_PLAYLIST_NOEXISTING=No hay listas + +SONG_MENU_NAME_PLAYLIST_NEW=Nueva lista +SONG_MENU_PLAYLIST_NEW_CREATE=Crear +SONG_MENU_PLAYLIST_NEW_UNNAMED=Sin nombre + +SONG_MENU_NAME_PLAYLIST_DEL=¿Suprimir? +SONG_MENU_YES=Sí +SONG_MENU_NO=No + +SONG_MENU_NAME_PLAYLIST_LOAD=Abrir lista +SONG_MENU_PLAYLIST_LOAD=Abrir +SONG_MENU_PLAYLIST_DELCURRENT=Borrar la lista actual +SONG_MENU_NAME_PLAYLIST_DEL=¿Suprimir? + +SONG_MENU_NAME_PARTY_MAIN=Menú +SONG_MENU_JOKER=Aleatorio + +SONG_MENU_NAME_PARTY_JOKER=Aleatorio + +SONG_JUMPTO_DESC=Buscar +SONG_JUMPTO_TYPE_DESC=Buscar por: +SONG_JUMPTO_TYPE1=Todo +SONG_JUMPTO_TYPE2=Título +SONG_JUMPTO_TYPE3=Artista +SONG_JUMPTO_SONGSFOUND=%d Canción(es) encontrada(as) +SONG_JUMPTO_NOSONGSFOUND=Sin resultados +SONG_JUMPTO_HELP=Escribe palabra(s) clave(s) +SONG_JUMPTO_CATTEXT=Buscar por: %s + +PARTY_MODE=Modo Grupo +PARTY_DIFFICULTY=Dificultad +PARTY_PLAYLIST=Modo lista +PARTY_PLAYLIST_ALL=Todo +PARTY_PLAYLIST_CATEGORY=Carpeta +PARTY_PLAYLIST_PLAYLIST=Lista +PARTY_ROUNDS=Rondas +PARTY_TEAMS=Equipos +PARTY_TEAMS_PLAYER1=Miembros Eq. 1 +PARTY_TEAMS_PLAYER2=Miembros Eq .2 +PARTY_TEAMS_PLAYER3=Miembros Eq. 3 + +PARTY_LEGEND_CONTINUE=Continuar + +PARTY_OPTIONS_DESC=Opciones del modo grupo +PARTY_OPTIONS_WHEREAMI= + +PARTY_PLAYER_DESC=Escribe los nombre de jugadores y de equipos +PARTY_PLAYER_WHEREAMI=Nombre equipos +PARTY_PLAYER_ENTER_NAME=Digita un nombre +PARTY_PLAYER_LEGEND_CONTINUE=Comenzar + +PARTY_ROUND_DESC=Siguientes jugadores +PARTY_ROUND_WHEREAMI=Siguiente ronda +PARTY_ROUND_LEGEND_CONTINUE=Iniciar ronda + +PARTY_SONG_WHEREAMI=Selección de cacnión +PARTY_SONG_LEGEND_CONTINUE=Cantar +PARTY_SONG_MENU=Menú + +PARTY_SCORE_DESC=Puntaje de la última ronda +PARTY_SCORE_WHEREAMI= + +PARTY_WIN_DESC=Equipo ganador +PARTY_WIN_WHEREAMI= +PARTY_WIN_LEGEND_CONTINUE=Regresar al menú principal + +PARTY_ROUND=Ronda +PARTY_ROUND_WINNER=Ganador +PARTY_NOTPLAYEDYET=Aún no jugado +PARTY_NOBODY=Nadie +NEXT_ROUND=Siguiente ronda: + +PARTY_DISMISSED=¡Perdió! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=¡Ganó! + +PLUGIN_HDL_NAME=Mantén la línea +PLUGIN_HDL_DESC=¡No te sientas mal que eres el primero! + +PLUGIN_UNTIL5000_NAME=Hasta 5000 +PLUGIN_UNTIL5000_DESC=Gana quién obtenga 5000 puntos. + +PLUGIN_DUELL_NAME=Duelo +PLUGIN_DUELL_DESC=Canta un duelo hasta 10000 puntos. + +PLUGIN_BLIND_NAME=Modo a ciegas +PLUGIN_BLIND_DESC=Duelo sin mirar las notas. + +STAT_MAIN=Estadisticas +STAT_MAIN_DESC=General +STAT_MAIN_WHEREAMI=Estadisticas + +STAT_OVERVIEW_INTRO=%0:s Estadisticas. \n Último reinicio el %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=Hay %0:d canciones (%3:d con Vídeo), de las cuales %1:d han sido cantadas y %2:d aún no.\n La canción más popular es "%5:s" de %4:s. +STAT_OVERVIEW_PLAYER=Hay registrados %0:d diferentes jugador(es).\n El mejor es %1:s con un puntaje promedio de %2:d puntos.\n %3:s ha hecho el mejor puntaje: %4:d puntos. + +STAT_DETAIL=Estadisticas +STAT_DETAIL_WHEREAMI=Estadisticas detalladas + +STAT_NEXT=Siguiente +STAT_PREV=Anterior +STAT_REVERSE=Invertir +STAT_PAGE=Página %0:d de %1:d \n (%2:d of %3:d Entrys) + +STAT_DESC_SCORES=Mejores puntajes +STAT_DESC_SCORES_REVERSED=Peores puntajes +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Mejores jugadores +STAT_DESC_SINGERS_REVERSED=Peores jugadores +STAT_FORMAT_SINGERS=%0:s \n Puntaje promedio: %1:d + +STAT_DESC_SONGS=Canciones más populares +STAT_DESC_SONGS_REVERSED=Canciones menos populares +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:d veces cantada + +STAT_DESC_BANDS=Bandas más populares +STAT_DESC_BANDS_REVERSED=Bandas menos populares +STAT_FORMAT_BANDS=%0:s \n %1:d veces cantada + +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Pregunta +MSG_QUIT_USDX=¿Realmente quieres salir? +MSG_END_PARTY=¿Realmente quieres terminar? +ERROR_NO_SONGS=Sin canciones +ERROR_NO_PLUGINS=Sin plugins +ERROR_CORRUPT_SONG=Imposible cargar canciones \ No newline at end of file -- cgit v1.2.3 From a1ce3eba22a1fa55dd8649b26891a23e705074af Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 6 Aug 2007 11:59:44 +0000 Subject: Spanish languagefile updated git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@347 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Spanish.ini | 594 +++++++++++++++++++++++++------------------------- 1 file changed, 297 insertions(+), 297 deletions(-) diff --git a/Languages/Spanish.ini b/Languages/Spanish.ini index e1602312..0eae1d36 100644 --- a/Languages/Spanish.ini +++ b/Languages/Spanish.ini @@ -1,298 +1,298 @@ -[Text] -SING_LOADING=Cargando... - -SING_CHOOSE_MODE=Escoge -SING_SING=¡Canta! -SING_SING_DESC=Cantar - -SING_MULTI=Grupo -SING_MULTI_DESC=Cantar en grupos - -SING_TOOLS=Utilidades - -SING_STATS=Estadisticas -SING_STATS_DESC=Ver las estadisticas - -SING_EDITOR=Editor -SING_EDITOR_DESC=Crea tus propias canciones - -SING_GAME_OPTIONS=Opciones -SING_GAME_OPTIONS_DESC=Cambia las opciones del juego - -SING_EXIT=Salir -SING_EXIT_DESC=Salir del juego - -SING_OPTIONS=Opciones -SING_OPTIONS_DESC=Cambia las opciones -SING_OPTIONS_WHEREAMI=Opciones - -SING_OPTIONS_GAME=Juego -SING_OPTIONS_GRAPHICS=Gráficos -SING_OPTIONS_SOUND=Sonido -SING_OPTIONS_LYRICS=Letras -SING_OPTIONS_THEMES=Temas -SING_OPTIONS_RECORD=Grabación -SING_OPTIONS_ADVANCED=Avanzadas -SING_OPTIONS_EXIT=Regresar - -SING_OPTIONS_GAME_WHEREAMI=Opciones del juego -SING_OPTIONS_GAME_DESC=Opciones generales del juego -SING_OPTIONS_GAME_PLAYERS=Jugadores -SING_OPTIONS_GAME_DIFFICULTY=Dificultad -SING_OPTIONS_GAME_LANGUAGE=Idioma -SING_OPTIONS_GAME_TABS=Etiquetas -SING_OPTIONS_GAME_SORTING=Clasificar por -SING_OPTIONS_GAME_DEBUG=Modo depuración - -SING_OPTIONS_GRAPHICS_WHEREAMI=Opciones gráficas -SING_OPTIONS_GRAPHICS_DESC=Opciones gráficas -SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución -SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa -SING_OPTIONS_GRAPHICS_DEPTH=Calidad de color -SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio -SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de línea -SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño del vídeo - -SING_OPTIONS_SOUND_WHEREAMI=Opciones de sonido -SING_OPTIONS_SOUND_DESC=Opciones de sonido -SING_OPTIONS_SOUND_MIC_BOOST=Potenciar micro. -SING_OPTIONS_SOUND_CLICK_ASSIST=Asist. de notas -SING_OPTIONS_SOUND_BEAT_CLICK=Asist. de golpes -SING_OPTIONS_SOUND_THRESHOLD=Atenuar micro. -SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo dos jugadores -SING_OPTIONS_SOUND_PREVIEWVOLUME=Volum. de avance -SING_OPTIONS_SOUND_PREVIEWFADING=Desvanecimiento - -SING_OPTIONS_LYRICS_WHEREAMI=Opciones de letras -SING_OPTIONS_LYRICS_DESC=Opciones de letras -SING_OPTIONS_LYRICS_FONT=Fuente -SING_OPTIONS_LYRICS_EFFECT=Efecto -SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo - -SING_OPTIONS_THEMES_WHEREAMI=Opciones de temas -SING_OPTIONS_THEMES_DESC=Opciones de temas -SING_OPTIONS_THEMES_THEME=Tema -SING_OPTIONS_THEMES_SKIN=Piel -SING_OPTIONS_THEMES_COLOR=Color - -SING_OPTIONS_RECORD_WHEREAMI=Opciones de grabación -SING_OPTIONS_RECORD_DESC=Opciones del micrófono -SING_OPTIONS_RECORD_CARD=Tarjeta de sonido -SING_OPTIONS_RECORD_INPUT=Captura -SING_OPTIONS_RECORD_CHANNELL=Canal izquierdo -SING_OPTIONS_RECORD_CHANNELR=Canal derecho - -SING_OPTIONS_ADVANCED_WHEREAMI=Opciones avanzadas -SING_OPTIONS_ADVANCED_DESC=Opciones avanzadas -SING_OPTIONS_ADVANCED_EFFECTSING=Efectos al cantar -SING_OPTIONS_ADVANCED_SCREENFADE=Desvanecimiento -SING_OPTIONS_ADVANCED_LOADANIMATION=Animación de carga -SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Preguntar -SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de línea -SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= -SING_OPTIONS_ADVANCED_ONSONGCLICK=Al selecionar canción -SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto menú de grupo - -SING_LEGEND_SELECT=Seleccionar -SING_LEGEND_NAVIGATE=Navegar -SING_LEGEND_CONTINUE=continuar -SING_LEGEND_ESC=Regresar - -SING_PLAYER_DESC=Nombre(s) de jugador(es) -SING_PLAYER_WHEREAMI=Nombre(s) de jugador(es) -SING_PLAYER_ENTER_NAME=Escribe el nombre - -SING_DIFFICULTY_DESC=Selecciona la dificultad -SING_DIFFICULTY_WHEREAMI=Dificultad -SING_DIFFICULTY_CONTINUE=Siguiente -SING_EASY=Fácil -SING_MEDIUM=Normal -SING_HARD=Difícil - -SING_SONG_SELECTION_DESC=Selecciona tu canción -SING_SONG_SELECTION_WHEREAMI=Selección de canción -SING_SONG_SELECTION_GOTO=Ir a... -SING_SONG_SELECTION=Selección de canción -SING_SONG_SELECTION_MENU=Menú -SING_SONG_SELECTION_PLAYLIST=Lista -SING_SONGS_IN_CAT=Canciones -PLAYLIST_CATTEXT=Lista: %s - -SING_TIME=Tiempo -SING_TOTAL=Total -SING_MODE=Solo -SING_NOTES=Notas -SING_GOLDEN_NOTES=Notas doradas -SING_PHRASE_BONUS=Bonus de línea - -SING_MENU=Menú principal - -SONG_SCORE=Puntaje -SONG_SCORE_WHEREAMI= - -SING_SCORE_TONE_DEAF=Desafinado -SING_SCORE_AMATEUR=Aficionado -SING_SCORE_RISING_STAR=Progresando -SING_SCORE_LEAD_SINGER=Cantante -SING_SCORE_HIT_ARTIST=Gran cantante -SING_SCORE_SUPERSTAR=Superestrella -SING_SCORE_ULTRASTAR=Ultraestrella - -SING_TOP_5_CHARTS=Los mejores -SING_TOP_5_CHARTS_WHEREAMI= -SING_TOP_5_CHARTS_CONTINUE=Continuar - -POPUP_PERFECT=¡Perfecto! -POPUP_AWESOME=¡Asombroso! -POPUP_GREAT=¡Genial! -POPUP_GOOD=¡Bien! -POPUP_NOTBAD=¡No está mal! -POPUP_BAD=¡Mal! -POPUP_POOR=¡Pésimo! -POPUP_AWFUL=¡Horrible! - -IMPLODE_GLUE1=, -IMPLODE_GLUE2= y - -SONG_MENU_NAME_MAIN=Menú de canto -SONG_MENU_PLAY=Cantar -SONG_MENU_CHANGEPLAYERS=Escoger jugador -SONG_MENU_EDIT=Editar -SONG_MENU_MODI=Cantar una Modi -SONG_MENU_CANCEL=Cancelar - -SONG_MENU_NAME_PLAYLIST=Menú -SONG_MENU_PLAYLIST_ADD=Añadir Canción -SONG_MENU_PLAYLIST_DEL=Eliminar Canción - -SONG_MENU_NAME_PLAYLIST_ADD=Añadir canción -SONG_MENU_PLAYLIST_ADD_NEW=A nueva lista -SONG_MENU_PLAYLIST_ADD_EXISTING=A lista existente -SONG_MENU_PLAYLIST_NOEXISTING=No hay listas - -SONG_MENU_NAME_PLAYLIST_NEW=Nueva lista -SONG_MENU_PLAYLIST_NEW_CREATE=Crear -SONG_MENU_PLAYLIST_NEW_UNNAMED=Sin nombre - -SONG_MENU_NAME_PLAYLIST_DEL=¿Suprimir? -SONG_MENU_YES=Sí -SONG_MENU_NO=No - -SONG_MENU_NAME_PLAYLIST_LOAD=Abrir lista -SONG_MENU_PLAYLIST_LOAD=Abrir -SONG_MENU_PLAYLIST_DELCURRENT=Borrar la lista actual -SONG_MENU_NAME_PLAYLIST_DEL=¿Suprimir? - -SONG_MENU_NAME_PARTY_MAIN=Menú -SONG_MENU_JOKER=Aleatorio - -SONG_MENU_NAME_PARTY_JOKER=Aleatorio - -SONG_JUMPTO_DESC=Buscar -SONG_JUMPTO_TYPE_DESC=Buscar por: -SONG_JUMPTO_TYPE1=Todo -SONG_JUMPTO_TYPE2=Título -SONG_JUMPTO_TYPE3=Artista -SONG_JUMPTO_SONGSFOUND=%d Canción(es) encontrada(as) -SONG_JUMPTO_NOSONGSFOUND=Sin resultados -SONG_JUMPTO_HELP=Escribe palabra(s) clave(s) -SONG_JUMPTO_CATTEXT=Buscar por: %s - -PARTY_MODE=Modo Grupo -PARTY_DIFFICULTY=Dificultad -PARTY_PLAYLIST=Modo lista -PARTY_PLAYLIST_ALL=Todo -PARTY_PLAYLIST_CATEGORY=Carpeta -PARTY_PLAYLIST_PLAYLIST=Lista -PARTY_ROUNDS=Rondas -PARTY_TEAMS=Equipos -PARTY_TEAMS_PLAYER1=Miembros Eq. 1 -PARTY_TEAMS_PLAYER2=Miembros Eq .2 -PARTY_TEAMS_PLAYER3=Miembros Eq. 3 - -PARTY_LEGEND_CONTINUE=Continuar - -PARTY_OPTIONS_DESC=Opciones del modo grupo -PARTY_OPTIONS_WHEREAMI= - -PARTY_PLAYER_DESC=Escribe los nombre de jugadores y de equipos -PARTY_PLAYER_WHEREAMI=Nombre equipos -PARTY_PLAYER_ENTER_NAME=Digita un nombre -PARTY_PLAYER_LEGEND_CONTINUE=Comenzar - -PARTY_ROUND_DESC=Siguientes jugadores -PARTY_ROUND_WHEREAMI=Siguiente ronda -PARTY_ROUND_LEGEND_CONTINUE=Iniciar ronda - -PARTY_SONG_WHEREAMI=Selección de cacnión -PARTY_SONG_LEGEND_CONTINUE=Cantar -PARTY_SONG_MENU=Menú - -PARTY_SCORE_DESC=Puntaje de la última ronda -PARTY_SCORE_WHEREAMI= - -PARTY_WIN_DESC=Equipo ganador -PARTY_WIN_WHEREAMI= -PARTY_WIN_LEGEND_CONTINUE=Regresar al menú principal - -PARTY_ROUND=Ronda -PARTY_ROUND_WINNER=Ganador -PARTY_NOTPLAYEDYET=Aún no jugado -PARTY_NOBODY=Nadie -NEXT_ROUND=Siguiente ronda: - -PARTY_DISMISSED=¡Perdió! -PARTY_SCORE_WINS=%s -PARTY_SCORE_WINS2=¡Ganó! - -PLUGIN_HDL_NAME=Mantén la línea -PLUGIN_HDL_DESC=¡No te sientas mal que eres el primero! - -PLUGIN_UNTIL5000_NAME=Hasta 5000 -PLUGIN_UNTIL5000_DESC=Gana quién obtenga 5000 puntos. - -PLUGIN_DUELL_NAME=Duelo -PLUGIN_DUELL_DESC=Canta un duelo hasta 10000 puntos. - -PLUGIN_BLIND_NAME=Modo a ciegas -PLUGIN_BLIND_DESC=Duelo sin mirar las notas. - -STAT_MAIN=Estadisticas -STAT_MAIN_DESC=General -STAT_MAIN_WHEREAMI=Estadisticas - -STAT_OVERVIEW_INTRO=%0:s Estadisticas. \n Último reinicio el %2:.2d.%1:.2d.%3:d -STAT_OVERVIEW_SONG=Hay %0:d canciones (%3:d con Vídeo), de las cuales %1:d han sido cantadas y %2:d aún no.\n La canción más popular es "%5:s" de %4:s. -STAT_OVERVIEW_PLAYER=Hay registrados %0:d diferentes jugador(es).\n El mejor es %1:s con un puntaje promedio de %2:d puntos.\n %3:s ha hecho el mejor puntaje: %4:d puntos. - -STAT_DETAIL=Estadisticas -STAT_DETAIL_WHEREAMI=Estadisticas detalladas - -STAT_NEXT=Siguiente -STAT_PREV=Anterior -STAT_REVERSE=Invertir -STAT_PAGE=Página %0:d de %1:d \n (%2:d of %3:d Entrys) - -STAT_DESC_SCORES=Mejores puntajes -STAT_DESC_SCORES_REVERSED=Peores puntajes -STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) - -STAT_DESC_SINGERS=Mejores jugadores -STAT_DESC_SINGERS_REVERSED=Peores jugadores -STAT_FORMAT_SINGERS=%0:s \n Puntaje promedio: %1:d - -STAT_DESC_SONGS=Canciones más populares -STAT_DESC_SONGS_REVERSED=Canciones menos populares -STAT_FORMAT_SONGS=%0:s - %1:s \n %2:d veces cantada - -STAT_DESC_BANDS=Bandas más populares -STAT_DESC_BANDS_REVERSED=Bandas menos populares -STAT_FORMAT_BANDS=%0:s \n %1:d veces cantada - -MSG_ERROR_TITLE=Error -MSG_QUESTION_TITLE=Pregunta -MSG_QUIT_USDX=¿Realmente quieres salir? -MSG_END_PARTY=¿Realmente quieres terminar? -ERROR_NO_SONGS=Sin canciones -ERROR_NO_PLUGINS=Sin plugins +[Text] +SING_LOADING=Cargando... + +SING_CHOOSE_MODE=Escoge +SING_SING=¡Canta! +SING_SING_DESC=Cantar + +SING_MULTI=Grupo +SING_MULTI_DESC=Cantar en grupos + +SING_TOOLS=Utilidades + +SING_STATS=Estadisticas +SING_STATS_DESC=Ver las estadisticas + +SING_EDITOR=Editor +SING_EDITOR_DESC=Crea tus propias canciones + +SING_GAME_OPTIONS=Opciones +SING_GAME_OPTIONS_DESC=Cambia las opciones del juego + +SING_EXIT=Salir +SING_EXIT_DESC=Salir del juego + +SING_OPTIONS=Opciones +SING_OPTIONS_DESC=Cambia las opciones +SING_OPTIONS_WHEREAMI=Opciones + +SING_OPTIONS_GAME=Juego +SING_OPTIONS_GRAPHICS=Gráficos +SING_OPTIONS_SOUND=Sonido +SING_OPTIONS_LYRICS=Letras +SING_OPTIONS_THEMES=Temas +SING_OPTIONS_RECORD=Grabación +SING_OPTIONS_ADVANCED=Avanzadas +SING_OPTIONS_EXIT=Regresar + +SING_OPTIONS_GAME_WHEREAMI=Opciones del juego +SING_OPTIONS_GAME_DESC=Opciones generales del juego +SING_OPTIONS_GAME_PLAYERS=Jugadores +SING_OPTIONS_GAME_DIFFICULTY=Dificultad +SING_OPTIONS_GAME_LANGUAGE=Idioma +SING_OPTIONS_GAME_TABS=Etiquetas +SING_OPTIONS_GAME_SORTING=Clasificar por +SING_OPTIONS_GAME_DEBUG=Modo depuración + +SING_OPTIONS_GRAPHICS_WHEREAMI=Opciones gráficas +SING_OPTIONS_GRAPHICS_DESC=Opciones gráficas +SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa +SING_OPTIONS_GRAPHICS_DEPTH=Calidad de color +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio +SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de línea +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño del vídeo + +SING_OPTIONS_SOUND_WHEREAMI=Opciones de sonido +SING_OPTIONS_SOUND_DESC=Opciones de sonido +SING_OPTIONS_SOUND_MIC_BOOST=Potenciar micro. +SING_OPTIONS_SOUND_CLICK_ASSIST=Asist. de notas +SING_OPTIONS_SOUND_BEAT_CLICK=Asist. de golpes +SING_OPTIONS_SOUND_THRESHOLD=Atenuar micro. +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo dos jugadores +SING_OPTIONS_SOUND_PREVIEWVOLUME=Volum. de avance +SING_OPTIONS_SOUND_PREVIEWFADING=Desvanecimiento + +SING_OPTIONS_LYRICS_WHEREAMI=Opciones de letras +SING_OPTIONS_LYRICS_DESC=Opciones de letras +SING_OPTIONS_LYRICS_FONT=Fuente +SING_OPTIONS_LYRICS_EFFECT=Efecto +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo + +SING_OPTIONS_THEMES_WHEREAMI=Opciones de temas +SING_OPTIONS_THEMES_DESC=Opciones de temas +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Piel +SING_OPTIONS_THEMES_COLOR=Color + +SING_OPTIONS_RECORD_WHEREAMI=Opciones de grabación +SING_OPTIONS_RECORD_DESC=Opciones del micrófono +SING_OPTIONS_RECORD_CARD=Tarjeta de sonido +SING_OPTIONS_RECORD_INPUT=Captura +SING_OPTIONS_RECORD_CHANNELL=Canal izquierdo +SING_OPTIONS_RECORD_CHANNELR=Canal derecho + +SING_OPTIONS_ADVANCED_WHEREAMI=Opciones avanzadas +SING_OPTIONS_ADVANCED_DESC=Opciones avanzadas +SING_OPTIONS_ADVANCED_EFFECTSING=Efectos al cantar +SING_OPTIONS_ADVANCED_SCREENFADE=Desvanecimiento +SING_OPTIONS_ADVANCED_LOADANIMATION=Animación de carga +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Preguntar +SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de línea +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= +SING_OPTIONS_ADVANCED_ONSONGCLICK=Al selecionar canción +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto menú de grupo + +SING_LEGEND_SELECT=Seleccionar +SING_LEGEND_NAVIGATE=Navegar +SING_LEGEND_CONTINUE=continuar +SING_LEGEND_ESC=Regresar + +SING_PLAYER_DESC=Nombre(s) de jugador(es) +SING_PLAYER_WHEREAMI=Nombre(s) de jugador(es) +SING_PLAYER_ENTER_NAME=Escribe el nombre + +SING_DIFFICULTY_DESC=Selecciona la dificultad +SING_DIFFICULTY_WHEREAMI=Dificultad +SING_DIFFICULTY_CONTINUE=Siguiente +SING_EASY=Fácil +SING_MEDIUM=Normal +SING_HARD=Difícil + +SING_SONG_SELECTION_DESC=Selecciona tu canción +SING_SONG_SELECTION_WHEREAMI=Selección de canción +SING_SONG_SELECTION_GOTO=Ir a... +SING_SONG_SELECTION=Selección de canción +SING_SONG_SELECTION_MENU=Menú +SING_SONG_SELECTION_PLAYLIST=Lista +SING_SONGS_IN_CAT=Canciones +PLAYLIST_CATTEXT=Lista: %s + +SING_TIME=Tiempo +SING_TOTAL=Total +SING_MODE=Solo +SING_NOTES=Notas +SING_GOLDEN_NOTES=Notas doradas +SING_PHRASE_BONUS=Bonus de línea + +SING_MENU=Menú principal + +SONG_SCORE=Puntaje +SONG_SCORE_WHEREAMI= + +SING_SCORE_TONE_DEAF=Desafinado +SING_SCORE_AMATEUR=Aficionado +SING_SCORE_RISING_STAR=Progresando +SING_SCORE_LEAD_SINGER=Cantante +SING_SCORE_HIT_ARTIST=Gran cantante +SING_SCORE_SUPERSTAR=Superestrella +SING_SCORE_ULTRASTAR=Ultraestrella + +SING_TOP_5_CHARTS=Los mejores +SING_TOP_5_CHARTS_WHEREAMI= +SING_TOP_5_CHARTS_CONTINUE=Continuar + +POPUP_PERFECT=¡Perfecto! +POPUP_AWESOME=¡Asombroso! +POPUP_GREAT=¡Genial! +POPUP_GOOD=¡Bien! +POPUP_NOTBAD=¡No está mal! +POPUP_BAD=¡Mal! +POPUP_POOR=¡Pésimo! +POPUP_AWFUL=¡Horrible! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= y + +SONG_MENU_NAME_MAIN=Menú de canto +SONG_MENU_PLAY=Cantar +SONG_MENU_CHANGEPLAYERS=Escoger jugador +SONG_MENU_EDIT=Editar +SONG_MENU_MODI=Cantar una Modi +SONG_MENU_CANCEL=Cancelar + +SONG_MENU_NAME_PLAYLIST=Menú +SONG_MENU_PLAYLIST_ADD=Añadir Canción +SONG_MENU_PLAYLIST_DEL=Eliminar Canción + +SONG_MENU_NAME_PLAYLIST_ADD=Añadir canción +SONG_MENU_PLAYLIST_ADD_NEW=A nueva lista +SONG_MENU_PLAYLIST_ADD_EXISTING=A lista existente +SONG_MENU_PLAYLIST_NOEXISTING=No hay listas + +SONG_MENU_NAME_PLAYLIST_NEW=Nueva lista +SONG_MENU_PLAYLIST_NEW_CREATE=Crear +SONG_MENU_PLAYLIST_NEW_UNNAMED=Sin nombre + +SONG_MENU_NAME_PLAYLIST_DEL=¿Suprimir? +SONG_MENU_YES=Sí +SONG_MENU_NO=No + +SONG_MENU_NAME_PLAYLIST_LOAD=Abrir lista +SONG_MENU_PLAYLIST_LOAD=Abrir +SONG_MENU_PLAYLIST_DELCURRENT=Borrar la lista actual +SONG_MENU_NAME_PLAYLIST_DEL=¿Suprimir? + +SONG_MENU_NAME_PARTY_MAIN=Menú +SONG_MENU_JOKER=Aleatorio + +SONG_MENU_NAME_PARTY_JOKER=Aleatorio + +SONG_JUMPTO_DESC=Buscar +SONG_JUMPTO_TYPE_DESC=Buscar por: +SONG_JUMPTO_TYPE1=Todo +SONG_JUMPTO_TYPE2=Título +SONG_JUMPTO_TYPE3=Artista +SONG_JUMPTO_SONGSFOUND=%d Canción(es) encontrada(as) +SONG_JUMPTO_NOSONGSFOUND=Sin resultados +SONG_JUMPTO_HELP=Escribe palabra(s) clave(s) +SONG_JUMPTO_CATTEXT=Buscar por: %s + +PARTY_MODE=Modo Grupo +PARTY_DIFFICULTY=Dificultad +PARTY_PLAYLIST=Modo lista +PARTY_PLAYLIST_ALL=Todo +PARTY_PLAYLIST_CATEGORY=Carpeta +PARTY_PLAYLIST_PLAYLIST=Lista +PARTY_ROUNDS=Rondas +PARTY_TEAMS=Equipos +PARTY_TEAMS_PLAYER1=Miembros Eq. 1 +PARTY_TEAMS_PLAYER2=Miembros Eq .2 +PARTY_TEAMS_PLAYER3=Miembros Eq. 3 + +PARTY_LEGEND_CONTINUE=Continuar + +PARTY_OPTIONS_DESC=Opciones del modo grupo +PARTY_OPTIONS_WHEREAMI= + +PARTY_PLAYER_DESC=Escribe los nombre de jugadores y de equipos +PARTY_PLAYER_WHEREAMI=Nombre equipos +PARTY_PLAYER_ENTER_NAME=Digita un nombre +PARTY_PLAYER_LEGEND_CONTINUE=Comenzar + +PARTY_ROUND_DESC=Siguientes jugadores +PARTY_ROUND_WHEREAMI=Siguiente ronda +PARTY_ROUND_LEGEND_CONTINUE=Iniciar ronda + +PARTY_SONG_WHEREAMI=Selección de cacnión +PARTY_SONG_LEGEND_CONTINUE=Cantar +PARTY_SONG_MENU=Menú + +PARTY_SCORE_DESC=Puntaje de la última ronda +PARTY_SCORE_WHEREAMI= + +PARTY_WIN_DESC=Equipo ganador +PARTY_WIN_WHEREAMI= +PARTY_WIN_LEGEND_CONTINUE=Regresar al menú principal + +PARTY_ROUND=Ronda +PARTY_ROUND_WINNER=Ganador +PARTY_NOTPLAYEDYET=Aún no jugado +PARTY_NOBODY=Nadie +NEXT_ROUND=Siguiente ronda: + +PARTY_DISMISSED=¡Perdió! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=¡Ganó! + +PLUGIN_HDL_NAME=Mantén la línea +PLUGIN_HDL_DESC=¡No bajes tu puntaje del mostrado en pantalla! + +PLUGIN_UNTIL5000_NAME=Hasta 5000 +PLUGIN_UNTIL5000_DESC=Gana quién obtenga 5000 puntos. + +PLUGIN_DUELL_NAME=Duelo +PLUGIN_DUELL_DESC=Canta un duelo hasta 10000 puntos. + +PLUGIN_BLIND_NAME=Modo a ciegas +PLUGIN_BLIND_DESC=Duelo sin mirar las notas. + +STAT_MAIN=Estadisticas +STAT_MAIN_DESC=General +STAT_MAIN_WHEREAMI=Estadisticas + +STAT_OVERVIEW_INTRO=%0:s Estadisticas. \n Último reinicio el %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=Hay %0:d canciones (%3:d con Vídeo), de las cuales %1:d han sido cantadas y %2:d aún no.\n La canción más popular es "%5:s" de %4:s. +STAT_OVERVIEW_PLAYER=Hay registrados %0:d diferentes jugador(es).\n El mejor es %1:s con un puntaje promedio de %2:d puntos.\n %3:s ha hecho el mejor puntaje: %4:d puntos. + +STAT_DETAIL=Estadisticas +STAT_DETAIL_WHEREAMI=Estadisticas detalladas + +STAT_NEXT=Siguiente +STAT_PREV=Anterior +STAT_REVERSE=Invertir +STAT_PAGE=Página %0:d de %1:d \n (%2:d of %3:d Entrys) + +STAT_DESC_SCORES=Mejores puntajes +STAT_DESC_SCORES_REVERSED=Peores puntajes +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Mejores jugadores +STAT_DESC_SINGERS_REVERSED=Peores jugadores +STAT_FORMAT_SINGERS=%0:s \n Puntaje promedio: %1:d + +STAT_DESC_SONGS=Canciones más populares +STAT_DESC_SONGS_REVERSED=Canciones menos populares +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:d veces cantada + +STAT_DESC_BANDS=Bandas más populares +STAT_DESC_BANDS_REVERSED=Bandas menos populares +STAT_FORMAT_BANDS=%0:s \n %1:d veces cantada + +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Pregunta +MSG_QUIT_USDX=¿Realmente quieres salir? +MSG_END_PARTY=¿Realmente quieres terminar? +ERROR_NO_SONGS=Sin canciones +ERROR_NO_PLUGINS=Sin plugins ERROR_CORRUPT_SONG=Imposible cargar canciones \ No newline at end of file -- cgit v1.2.3 From 49f787fee459f7262a9fc7ce77f6638044ffc4b8 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 12 Aug 2007 20:06:24 +0000 Subject: =?UTF-8?q?Translations:=20=20-=20Catalan=20translation=20(Traducc?= =?UTF-8?q?i=C3=B2=20al=20catal=C3=A0)=20done=20by=20Bres=20=20-=20Norwegi?= =?UTF-8?q?an=20translation=20(norsk=20oversettelse)=20done=20by=20LarsO?= =?UTF-8?q?=20aka=20zapper81=20Thanks=20mates!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@349 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Catalan.ini | 299 ++++++++++++++++++++++++++++++++++++++++++++++++ Languages/Norwegian.ini | 298 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 597 insertions(+) create mode 100644 Languages/Catalan.ini create mode 100644 Languages/Norwegian.ini diff --git a/Languages/Catalan.ini b/Languages/Catalan.ini new file mode 100644 index 00000000..713aec51 --- /dev/null +++ b/Languages/Catalan.ini @@ -0,0 +1,299 @@ +[Text] +SING_LOADING=Carregant... + +SING_CHOOSE_MODE=Triar mode +SING_SING=cantar +SING_SING_DESC=joc ràpid: cantar un solo o un duet + +SING_MULTI=festa +SING_MULTI_DESC=cantar en mode festa + +SING_TOOLS=eines + +SING_STATS=estadístiques +SING_STATS_DESC=veure estadístiques + +SING_EDITOR=editor +SING_EDITOR_DESC=crea les teves propies cançons + +SING_GAME_OPTIONS=opcions de joc +SING_GAME_OPTIONS_DESC=canviar preferències de joc + +SING_EXIT=sortir +SING_EXIT_DESC=sortir del joc + +SING_OPTIONS=opcions +SING_OPTIONS_DESC=canviar preferències +SING_OPTIONS_WHEREAMI=Opcions + +SING_OPTIONS_GAME=joc +SING_OPTIONS_GRAPHICS=gràfics +SING_OPTIONS_SOUND=so +SING_OPTIONS_LYRICS=lletres +SING_OPTIONS_THEMES=aparença +SING_OPTIONS_RECORD=gravar +SING_OPTIONS_ADVANCED=avançat +SING_OPTIONS_EXIT=enrere + +SING_OPTIONS_GAME_WHEREAMI=Opcions de joc +SING_OPTIONS_GAME_DESC=opcions generals del joc +SING_OPTIONS_GAME_PLAYERS=Jugadors +SING_OPTIONS_GAME_DIFFICULTY=Dificultat +SING_OPTIONS_GAME_LANGUAGE=Idioma +SING_OPTIONS_GAME_TABS=Pestanyes +SING_OPTIONS_GAME_SORTING=Ordenació +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_WHEREAMI=Opcions Gràfiques +SING_OPTIONS_GRAPHICS_DESC=configurar gràfics +SING_OPTIONS_GRAPHICS_RESOLUTION=Resoluciò +SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla complerta +SING_OPTIONS_GRAPHICS_DEPTH=Profunditat +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscil·loscopi +SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de línia +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Mida pel·lícula + +SING_OPTIONS_SOUND_WHEREAMI=Opcions de so +SING_OPTIONS_SOUND_DESC=configurar so +SING_OPTIONS_SOUND_MIC_BOOST=Ampli Micro +SING_OPTIONS_SOUND_CLICK_ASSIST=Assistència Click +SING_OPTIONS_SOUND_BEAT_CLICK=Clic de ritme +SING_OPTIONS_SOUND_THRESHOLD=Llindar +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode dos jugadors +SING_OPTIONS_SOUND_PREVIEWVOLUME=Volum previsualitzar +SING_OPTIONS_SOUND_PREVIEWFADING=Fos previsualitzar + +SING_OPTIONS_LYRICS_WHEREAMI=Opcions Lletra +SING_OPTIONS_LYRICS_DESC=configuració de lletres +SING_OPTIONS_LYRICS_FONT=Font +SING_OPTIONS_LYRICS_EFFECT=Efecte +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeig + +SING_OPTIONS_THEMES_WHEREAMI=Options d'Aparença +SING_OPTIONS_THEMES_DESC=Configuració d'aparença +SING_OPTIONS_THEMES_THEME=Aparença +SING_OPTIONS_THEMES_SKIN=Pell +SING_OPTIONS_THEMES_COLOR=Color + +SING_OPTIONS_RECORD_WHEREAMI=Opcions de micro +SING_OPTIONS_RECORD_DESC=configuració del micro +SING_OPTIONS_RECORD_CARD=Tarjeta de so +SING_OPTIONS_RECORD_INPUT=Entrada +SING_OPTIONS_RECORD_CHANNELL=Canal esquerre +SING_OPTIONS_RECORD_CHANNELR=Canal dret + +SING_OPTIONS_ADVANCED_WHEREAMI=Opcions Avançades +SING_OPTIONS_ADVANCED_DESC=opcions avançades +SING_OPTIONS_ADVANCED_EFFECTSING=Efectes de cantar +SING_OPTIONS_ADVANCED_SCREENFADE=Fos de pantalla +SING_OPTIONS_ADVANCED_LOADANIMATION=Animació càrrega +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Prequnta abans d'esborrar +SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de línia +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Quantes vegades cantada +SING_OPTIONS_ADVANCED_ONSONGCLICK=després de triar cançó +SING_OPTIONS_ADVANCED_PARTYPOPUP=Menú Automàtic de festa + +SING_LEGEND_SELECT=seleccionar +SING_LEGEND_NAVIGATE=navegar +SING_LEGEND_CONTINUE=continuar +SING_LEGEND_ESC=enrere + +SING_PLAYER_DESC=entrar nom de jugador/s +SING_PLAYER_WHEREAMI=Nom dels jugadors +SING_PLAYER_ENTER_NAME=introduir nom + +SING_DIFFICULTY_DESC=triar dificultat +SING_DIFFICULTY_WHEREAMI=Dificultat +SING_DIFFICULTY_CONTINUE=a selecció de cançó +SING_EASY=Fàcil +SING_MEDIUM=Mitjà +SING_HARD=Difícil + +SING_SONG_SELECTION_DESC=triar cançó +SING_SONG_SELECTION_WHEREAMI=Selecció de cançons +SING_SONG_SELECTION_GOTO=Anar a .. +SING_SONG_SELECTION=selecció de cançons +SING_SONG_SELECTION_MENU=menú +SING_SONG_SELECTION_PLAYLIST=llista +SING_SONGS_IN_CAT=Cançons +PLAYLIST_CATTEXT=Playlist: %s + +SING_TIME=TEMPS +SING_TOTAL=total +SING_MODE=cantar sol +SING_NOTES=notes +SING_GOLDEN_NOTES=notes daurades +SING_PHRASE_BONUS=bonus de línia + +SING_MENU=Menú principal + +SONG_SCORE=puntuació cançó +SONG_SCORE_WHEREAMI=Puntuació + +SING_SCORE_TONE_DEAF=Sense oïda +SING_SCORE_AMATEUR=Aficionat +SING_SCORE_RISING_STAR=Futura estrella +SING_SCORE_LEAD_SINGER=Bon cantant +SING_SCORE_HIT_ARTIST=Líder de grup +SING_SCORE_SUPERSTAR=Super estrella +SING_SCORE_ULTRASTAR=Ultra estrella + +SING_TOP_5_CHARTS=millors 5 jugadors +SING_TOP_5_CHARTS_WHEREAMI=millors 5 +SING_TOP_5_CHARTS_CONTINUE=a selecció de cançó + +POPUP_PERFECT=perfecte! +POPUP_AWESOME=genial! +POPUP_GREAT=molt bo! +POPUP_GOOD=esta bé! +POPUP_NOTBAD=pots millorar! +POPUP_BAD=malament! +POPUP_POOR=pobre! +POPUP_AWFUL=boo fora! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= i + +SONG_MENU_NAME_MAIN=menú de cançons +SONG_MENU_PLAY=Cantar +SONG_MENU_CHANGEPLAYERS=Canviar jugadors +SONG_MENU_EDIT=Editar +SONG_MENU_MODI=Cantar un Modi +SONG_MENU_CANCEL=Cancel·lar + +SONG_MENU_NAME_PLAYLIST=Menú de cançons +SONG_MENU_PLAYLIST_ADD=Afegir Cançó +SONG_MENU_PLAYLIST_DEL=Esborrar Cançó + +SONG_MENU_NAME_PLAYLIST_ADD=Afegir Song +SONG_MENU_PLAYLIST_ADD_NEW=a nova llista +SONG_MENU_PLAYLIST_ADD_EXISTING=a llista existent +SONG_MENU_PLAYLIST_NOEXISTING=No hi ha llistes + +SONG_MENU_NAME_PLAYLIST_NEW=Nova llista +SONG_MENU_PLAYLIST_NEW_CREATE=Crear +SONG_MENU_PLAYLIST_NEW_UNNAMED=Sense nom + +SONG_MENU_NAME_PLAYLIST_DEL=Segur que vols esborrar? +SONG_MENU_YES=Si +SONG_MENU_NO=No + +SONG_MENU_NAME_PLAYLIST_LOAD=Obrir llista +SONG_MENU_PLAYLIST_LOAD=obrir +SONG_MENU_PLAYLIST_DELCURRENT=esborrar llista + +SONG_MENU_NAME_PLAYLIST_DEL=Esborrar llista? + +SONG_MENU_NAME_PARTY_MAIN=Menú festa +SONG_MENU_JOKER=Comodí + +SONG_MENU_NAME_PARTY_JOKER=utilitzar comodí + +SONG_JUMPTO_DESC=buscar cançó +SONG_JUMPTO_TYPE_DESC=Buscar: +SONG_JUMPTO_TYPE1=Tot +SONG_JUMPTO_TYPE2=Títol +SONG_JUMPTO_TYPE3=Artista +SONG_JUMPTO_SONGSFOUND=%d Cançons trobades +SONG_JUMPTO_NOSONGSFOUND=No s'han trobat cançons +SONG_JUMPTO_HELP=Introduir text a cercar +SONG_JUMPTO_CATTEXT=Cercant: %s + +PARTY_MODE=mode festa +PARTY_DIFFICULTY=Dificultat +PARTY_PLAYLIST=Mode llista +PARTY_PLAYLIST_ALL=Tot +PARTY_PLAYLIST_CATEGORY=Directori +PARTY_PLAYLIST_PLAYLIST=llista +PARTY_ROUNDS=Rondes +PARTY_TEAMS=Equips +PARTY_TEAMS_PLAYER1=Player Team1 +PARTY_TEAMS_PLAYER2=Player Team2 +PARTY_TEAMS_PLAYER3=Player Team3 + +PARTY_LEGEND_CONTINUE=continuar + +PARTY_OPTIONS_DESC=opcions mode festa +PARTY_OPTIONS_WHEREAMI=Opcions Festa + +PARTY_PLAYER_DESC=introduïr noms de jugadors i equips +PARTY_PLAYER_WHEREAMI=Noms +PARTY_PLAYER_ENTER_NAME=introduïr noms +PARTY_PLAYER_LEGEND_CONTINUE=iniciar festa + +PARTY_ROUND_DESC=següent jugador al micro +PARTY_ROUND_WHEREAMI=Següent Ronda +PARTY_ROUND_LEGEND_CONTINUE=iniciar ronda + +PARTY_SONG_WHEREAMI=Selecció de cançó mode festa +PARTY_SONG_LEGEND_CONTINUE=cantar +PARTY_SONG_MENU=menú festa + +PARTY_SCORE_DESC=puntuació de l'última ronda +PARTY_SCORE_WHEREAMI=Punts mode festa + +PARTY_WIN_DESC=guanyador de la festa +PARTY_WIN_WHEREAMI=Guanyador +PARTY_WIN_LEGEND_CONTINUE=tornar al menú principal + +PARTY_ROUND=Ronda +PARTY_ROUND_WINNER=Guanyador +PARTY_NOTPLAYEDYET=no s'ha jugat encara +PARTY_NOBODY=ningú +NEXT_ROUND=Següent ronda: + +PARTY_DISMISSED=Abandona! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=guanya! + +PLUGIN_HDL_NAME=Aguantar la línia +PLUGIN_HDL_DESC=No baixis de la fletxa a la barra de qualitat + +PLUGIN_UNTIL5000_NAME=Fins a 5000 +PLUGIN_UNTIL5000_DESC=El primer a arribar a 5000 punts guanya + +PLUGIN_DUELL_NAME=Duel +PLUGIN_DUELL_DESC=Cantar un duela fins a 10000 punts + +PLUGIN_BLIND_NAME=Mode cec +PLUGIN_BLIND_DESC=Duel sense veure les notes + +STAT_MAIN=Estadístiques +STAT_MAIN_DESC=General +STAT_MAIN_WHEREAMI=Estadístiques + +STAT_OVERVIEW_INTRO=%0:s Estadístiques\nÚltima reinicialització %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Cançons(%3:d amb Video), de les que %1:d ya han sonat i %2:d encara no s'han jugat mai.\n La cançó més popular és %5:s de %4:s. +STAT_OVERVIEW_PLAYER=Des de l'última reinicialització hi han hagut %0:d jugadors diferents.\n El millor jugador és %1:s amb una mitjana de %2:d Punts.\n %3:s ha fet la màxima puntuació amb %4:d Punts. + +STAT_DETAIL=Estadístques +STAT_DETAIL_WHEREAMI=Estadístiques + +STAT_NEXT=Següent pàgina +STAT_PREV=Pàgina anterior +STAT_REVERSE=Ordre invers +STAT_PAGE=%0:d de %1:d Pàgines\n (%2:d de %3:d Entrades) + +STAT_DESC_SCORES=Màximes puntuacions +STAT_DESC_SCORES_REVERSED=Mínimes puntuacions +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Millors cantants +STAT_DESC_SINGERS_REVERSED=Pitjors cantants +STAT_FORMAT_SINGERS=%0:s \n Puntuació mitjana: %1:d + +STAT_DESC_SONGS=Cançons més populars +STAT_DESC_SONGS_REVERSED=Cançons menys populars +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx cantades + +STAT_DESC_BANDS=Grups més populars +STAT_DESC_BANDS_REVERSED=Grups menys populars +STAT_FORMAT_BANDS=%0:s \n %1:dx Cantades + +MSG_ERROR_TITLE=Error +MSG_QUESTION_TITLE=Qüestió +MSG_QUIT_USDX=Realment vols sortir d'UltraStar? +MSG_END_PARTY=Realment vols sortir del mode festa? +ERROR_NO_SONGS=No hi ha cançons +ERROR_NO_PLUGINS=No hi ha Plugins +ERROR_CORRUPT_SONG=No es poden carregar les cançons \ No newline at end of file diff --git a/Languages/Norwegian.ini b/Languages/Norwegian.ini new file mode 100644 index 00000000..b08db4a8 --- /dev/null +++ b/Languages/Norwegian.ini @@ -0,0 +1,298 @@ +[Text] +SING_LOADING=Laster... + +SING_CHOOSE_MODE=velg modus +SING_SING=syng +SING_SING_DESC=hurtigspill: syng solo eller duett + +SING_MULTI=party +SING_MULTI_DESC=syng i party-modus + +SING_TOOLS=verktøy + +SING_STATS=statistikk +SING_STATS_DESC=vis statistikk + +SING_EDITOR=editor +SING_EDITOR_DESC=lag dine egne sanger + +SING_GAME_OPTIONS=spillinnstillinger +SING_GAME_OPTIONS_DESC=endre spillinstillinger +SING_EXIT=avslutt +SING_EXIT_DESC=avslutt spillet + +SING_OPTIONS=innstillinger +SING_OPTIONS_DESC=endre innstillinger +SING_OPTIONS_WHEREAMI=Innstillinger + +SING_OPTIONS_GAME=spill +SING_OPTIONS_GRAPHICS=grafikk +SING_OPTIONS_SOUND=lyd +SING_OPTIONS_LYRICS=tekst +SING_OPTIONS_THEMES=utseende +SING_OPTIONS_RECORD=opptak +SING_OPTIONS_ADVANCED=avansert +SING_OPTIONS_EXIT=tilbake + +SING_OPTIONS_GAME_WHEREAMI=Innstillinger Spill +SING_OPTIONS_GAME_DESC=hovedspillinnstillinger +SING_OPTIONS_GAME_PLAYERS=Spillere +SING_OPTIONS_GAME_DIFFICULTY=Vanskelighet +SING_OPTIONS_GAME_LANGUAGE=Språk +SING_OPTIONS_GAME_TABS=Mappeinndeling +SING_OPTIONS_GAME_SORTING=Sortering +SING_OPTIONS_GAME_DEBUG=Feilsøking + +SING_OPTIONS_GRAPHICS_WHEREAMI=Innstillinger Grafikk +SING_OPTIONS_GRAPHICS_DESC=Grafiske innstillinger +SING_OPTIONS_GRAPHICS_RESOLUTION=Oppløsning +SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullskjerm +SING_OPTIONS_GRAPHICS_DEPTH=Fargedybde +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop +SING_OPTIONS_GRAPHICS_LINEBONUS=Linjebonus +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Filmstørrelse + +SING_OPTIONS_SOUND_WHEREAMI=Innstillinger Lyd +SING_OPTIONS_SOUND_DESC=lydinnstillinger +SING_OPTIONS_SOUND_MIC_BOOST=Mikrofon-gain +SING_OPTIONS_SOUND_CLICK_ASSIST=Klikke-assistanse +SING_OPTIONS_SOUND_BEAT_CLICK=Beat-klikk +SING_OPTIONS_SOUND_THRESHOLD=Toleransegrense +SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tospiller-modus +SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview-volum +SING_OPTIONS_SOUND_PREVIEWFADING=Preview-fading + +SING_OPTIONS_LYRICS_WHEREAMI=Innstillinger Tekst +SING_OPTIONS_LYRICS_DESC=tekstinnstillinger +SING_OPTIONS_LYRICS_FONT=Fonter +SING_OPTIONS_LYRICS_EFFECT=Effekter +SING_OPTIONS_LYRICS_SOLMIZATION=Solmisasjon + +SING_OPTIONS_THEMES_WHEREAMI=Innstillinger Utseende +SING_OPTIONS_THEMES_DESC=tema og skin-innstillinger +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Farge + +SING_OPTIONS_RECORD_WHEREAMI=Innstillinger Opptak +SING_OPTIONS_RECORD_DESC=mikrofoninnstillinger +SING_OPTIONS_RECORD_CARD=Lydkort +SING_OPTIONS_RECORD_INPUT=Input +SING_OPTIONS_RECORD_CHANNELL=Venstre kanal +SING_OPTIONS_RECORD_CHANNELR=Høyre kanal + +SING_OPTIONS_ADVANCED_WHEREAMI=Innstillinger Avansert +SING_OPTIONS_ADVANCED_DESC=avanserte innstillinger +SING_OPTIONS_ADVANCED_EFFECTSING=Sangeffekter +SING_OPTIONS_ADVANCED_SCREENFADE=Skjermfading +SING_OPTIONS_ADVANCED_LOADANIMATION=Animasjonslasting +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sikkerhetsspørsmål +SING_OPTIONS_ADVANCED_LINEBONUS=Linjebonus +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG= +SING_OPTIONS_ADVANCED_ONSONGCLICK=Etter sang: +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto partymeny + +SING_LEGEND_SELECT=velg +SING_LEGEND_NAVIGATE=naviger +SING_LEGEND_CONTINUE=fortsett +SING_LEGEND_ESC=tilbake + +SING_PLAYER_DESC=velg spillernavn +SING_PLAYER_WHEREAMI=Spillernavn +SING_PLAYER_ENTER_NAME=velg navn + +SING_DIFFICULTY_DESC=velg vanskelighetsgrad +SING_DIFFICULTY_WHEREAMI=Vanskelighet +SING_DIFFICULTY_CONTINUE=til sangvalg +SING_EASY=Lett +SING_MEDIUM=Moderat +SING_HARD=Vanskelig + +SING_SONG_SELECTION_DESC=velg sang +SING_SONG_SELECTION_WHEREAMI=Sangvalg +SING_SONG_SELECTION_GOTO=gå til .. +SING_SONG_SELECTION=Sangvalg +SING_SONG_SELECTION_MENU=meny +SING_SONG_SELECTION_PLAYLIST=spilleliste +SING_SONGS_IN_CAT=Sanger +PLAYLIST_CATTEXT=Spilleliste: %s + +SING_TIME=TID +SING_TOTAL=total +SING_MODE=syng solo +SING_NOTES=toner +SING_GOLDEN_NOTES=gyldne noter +SING_PHRASE_BONUS=linjebonus + +SING_MENU=Hovedmeny + +SONG_SCORE=sangscore +SONG_SCORE_WHEREAMI=Score + +SING_SCORE_TONE_DEAF=Tonedøv +SING_SCORE_AMATEUR=Amatør +SING_SCORE_RISING_STAR=Stigende stjerne +SING_SCORE_LEAD_SINGER=Toppvokalist +SING_SCORE_HIT_ARTIST=Hitartist +SING_SCORE_SUPERSTAR=Superstjerne +SING_SCORE_ULTRASTAR=Ultrastjerne + +SING_TOP_5_CHARTS=topp 5 spillere +SING_TOP_5_CHARTS_WHEREAMI=topp 5 +SING_TOP_5_CHARTS_CONTINUE=til sangvalg + +POPUP_PERFECT=perfekt! +POPUP_AWESOME=fantastisk! +POPUP_GREAT=kjempebra! +POPUP_GOOD=bra! +POPUP_NOTBAD=brukbart! +POPUP_BAD=dårlig! +POPUP_POOR=elendig! +POPUP_AWFUL=grusomt! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= og + +SONG_MENU_NAME_MAIN=sangmeny +SONG_MENU_PLAY=Syng +SONG_MENU_CHANGEPLAYERS=Endre spillere +SONG_MENU_EDIT=Endre +SONG_MENU_MODI=Syng en modus +SONG_MENU_CANCEL=AVbryt + +SONG_MENU_NAME_PLAYLIST=Sangmeny +SONG_MENU_PLAYLIST_ADD=Legg til sang +SONG_MENU_PLAYLIST_DEL=Ta bort sang + +SONG_MENU_NAME_PLAYLIST_ADD=Legg til sang +SONG_MENU_PLAYLIST_ADD_NEW=til ny spilleliste +SONG_MENU_PLAYLIST_ADD_EXISTING=til eksisterende spilleliste +SONG_MENU_PLAYLIST_NOEXISTING=ingen spilleliste eksisterer + +SONG_MENU_NAME_PLAYLIST_NEW=Ny spilleliste +SONG_MENU_PLAYLIST_NEW_CREATE=Opprett +SONG_MENU_PLAYLIST_NEW_UNNAMED=Uten navn + +SONG_MENU_NAME_PLAYLIST_DEL=Virkelig slette? +SONG_MENU_YES=Ja +SONG_MENU_NO=Nei + +SONG_MENU_NAME_PLAYLIST_LOAD=Åpne spilleliste +SONG_MENU_PLAYLIST_LOAD=åpne +SONG_MENU_PLAYLIST_DELCURRENT=slett nåværende spilleliste + +SONG_MENU_NAME_PLAYLIST_DEL=Slett spilleliste? + +SONG_MENU_NAME_PARTY_MAIN=Partymeny +SONG_MENU_JOKER=Joker + +SONG_MENU_NAME_PARTY_JOKER=bruk joker + +SONG_JUMPTO_DESC=søk etter sang +SONG_JUMPTO_TYPE_DESC=Søk etter: +SONG_JUMPTO_TYPE1=Alt +SONG_JUMPTO_TYPE2=Tittel +SONG_JUMPTO_TYPE3=Artist +SONG_JUMPTO_SONGSFOUND=%d Sang(er) funnet +SONG_JUMPTO_NOSONGSFOUND=Ingen funnet +SONG_JUMPTO_HELP=Skriv inn tekst å lete etter +SONG_JUMPTO_CATTEXT=Søk etter: %s + +PARTY_MODE=Partymodus +PARTY_DIFFICULTY=Vanskelighetsgrad +PARTY_PLAYLIST=Spilleliste-modus +PARTY_PLAYLIST_ALL=Alle sanger +PARTY_PLAYLIST_CATEGORY=Mappe +PARTY_PLAYLIST_PLAYLIST=Spillelist +PARTY_ROUNDS=Runder +PARTY_TEAMS=Lag +PARTY_TEAMS_PLAYER1=Spiller Lag1 +PARTY_TEAMS_PLAYER2=Spiller Lag2 +PARTY_TEAMS_PLAYER3=Spiller Lag3 + +PARTY_LEGEND_CONTINUE=Fortsett + +PARTY_OPTIONS_DESC=Innstillinger for party-spillet +PARTY_OPTIONS_WHEREAMI=Party-innstillinger + +PARTY_PLAYER_DESC=skriv spiller- og lagnavn! +PARTY_PLAYER_WHEREAMI=Party-navn +PARTY_PLAYER_ENTER_NAME=skriv navn +PARTY_PLAYER_LEGEND_CONTINUE=start party-game + +PARTY_ROUND_DESC=neste spillere til mikrofonene +PARTY_ROUND_WHEREAMI=Party neste runde +PARTY_ROUND_LEGEND_CONTINUE=start runden + +PARTY_SONG_WHEREAMI=Party sangvalg +PARTY_SONG_LEGEND_CONTINUE=syng +PARTY_SONG_MENU=partymeny + +PARTY_SCORE_DESC=Siste rundes poengsum +PARTY_SCORE_WHEREAMI=Partypoeng + +PARTY_WIN_DESC=vinner av partyspillet +PARTY_WIN_WHEREAMI=Party-vinner +PARTY_WIN_LEGEND_CONTINUE=tilbake til hovedmenyen + +PARTY_ROUND=Runde +PARTY_ROUND_WINNER=Vinner +PARTY_NOTPLAYEDYET=Ikke spilt ennå +PARTY_NOBODY=ingen +NEXT_ROUND=Neste runde: + +PARTY_DISMISSED=Avbrutt! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=Vinner! + +PLUGIN_HDL_NAME=Hold linja +PLUGIN_HDL_DESC=Ikke syng dårligere enn hva markøren på statuslinja viser. + +PLUGIN_UNTIL5000_NAME=Først til 5000 +PLUGIN_UNTIL5000_DESC=Førstemann til 5000 poeng vinner. + +PLUGIN_DUELL_NAME=Duell +PLUGIN_DUELL_DESC=Syng en duell - først til 10000. + +PLUGIN_BLIND_NAME=Blindemodus +PLUGIN_BLIND_DESC=Duell der notene ikke vises + +STAT_MAIN=Statistikk +STAT_MAIN_DESC=Hoved +STAT_MAIN_WHEREAMI=Statistikk + +STAT_OVERVIEW_INTRO=%0:s Statistikk. \n Siste avslutning ved %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_SONG=%0:d Sanger(%3:d med video), hvorav %1:d allerede har vært sunget og %2:d ennå ikke har vært sunget.\n Den mest populære sangen er %5:s av %4:s. +STAT_OVERVIEW_PLAYER=Siden den siste avlutningen var det %0:d ulike spillere.\n Den beste spilleren er %1:s med en gjennomsnitts-score på %2:d poeng.\n %3:s fikk høyeste score med %4:d poeng. + +STAT_DETAIL=Statistikk +STAT_DETAIL_WHEREAMI=Detaljert statistikk + +STAT_NEXT=Neste side +STAT_PREV=Forrige side +STAT_REVERSE=Bytt rekkefølge +STAT_PAGE=Side %0:d av %1:d Sider\n (%2:d av %3:d ) + +STAT_DESC_SCORES=Toppscore +STAT_DESC_SCORES_REVERSED=Bunnscore +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Beste sangere +STAT_DESC_SINGERS_REVERSED=Dårligste sangere +STAT_FORMAT_SINGERS=%0:s \n Gjennomsnitts-score: %1:d + +STAT_DESC_SONGS=Mest populære sang +STAT_DESC_SONGS_REVERSED=Minst populære sang +STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sunget + +STAT_DESC_BANDS=Mest populære artist +STAT_DESC_BANDS_REVERSED=Minst populære artist +STAT_FORMAT_BANDS=%0:s \n %1:dx Sunget + +MSG_ERROR_TITLE=Feil +MSG_QUESTION_TITLE=Spørsmål +MSG_QUIT_USDX=Vil du virkelig avslutte UltraStar? +MSG_END_PARTY=Vil du virkelig forlate party-modusen? +ERROR_NO_SONGS=Ingen sanger lastet +ERROR_NO_PLUGINS=Ingen plug-ins lastet +ERROR_CORRUPT_SONG=Sangen kunne ikke lastes \ No newline at end of file -- cgit v1.2.3 From f2e504967c7dbde88306cb85e908e1d31b3ab1c5 Mon Sep 17 00:00:00 2001 From: mogguh Date: Sun, 26 Aug 2007 07:05:32 +0000 Subject: Translation: - Italian translation (Traduzione in italiano v1) done by Dadone Thank you!! git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0x@354 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Languages/Italian.ini | 301 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 Languages/Italian.ini diff --git a/Languages/Italian.ini b/Languages/Italian.ini new file mode 100644 index 00000000..e56effe9 --- /dev/null +++ b/Languages/Italian.ini @@ -0,0 +1,301 @@ +[Text] +SING_LOADING=Caricamento... + +SING_CHOOSE_MODE=Scegli la modalità +SING_SING=canta +SING_SING_DESC=gioco veloce: canta da solo o in gruppo + +SING_MULTI=Party +SING_MULTI_DESC=canta in modalità party + +SING_TOOLS=Strumenti + +SING_STATS=statistiche +SING_STATS_DESC=vedi le statistiche + +SING_EDITOR=editor +SING_EDITOR_DESC=crea le tue canzoni + +SING_GAME_OPTIONS=opzioni di gioco +SING_GAME_OPTIONS_DESC=cambia le opzioni + +SING_EXIT=uscita +SING_EXIT_DESC=esci dal gioco + +SING_OPTIONS=optzioni +SING_OPTIONS_DESC=cambia le opzioni +SING_OPTIONS_WHEREAMI=Opzioni + +SING_OPTIONS_GAME=gioco +SING_OPTIONS_GRAPHICS=grafica +SING_OPTIONS_SOUND=suoco +SING_OPTIONS_LYRICS=testi +SING_OPTIONS_THEMES=temi +SING_OPTIONS_RECORD=record +SING_OPTIONS_ADVANCED=avanzate +SING_OPTIONS_EXIT=indietro + +SING_OPTIONS_GAME_WHEREAMI=Optzioni di gioco +SING_OPTIONS_GAME_DESC=opzioni generali +SING_OPTIONS_GAME_GiocatoreS=Giocatori +SING_OPTIONS_GAME_DIFFICULTY=Difficoltà +SING_OPTIONS_GAME_LANGUAGE=Lingua +SING_OPTIONS_GAME_TABS=Tab +SING_OPTIONS_GAME_SORTING=Ordinamento +SING_OPTIONS_GAME_DEBUG=Debug + +SING_OPTIONS_GRAPHICS_WHEREAMI=Opzioni grafica +SING_OPTIONS_GRAPHICS_DESC=Opzioni grafica +SING_OPTIONS_GRAPHICS_RESOLUTION=Risoluzione +SING_OPTIONS_GRAPHICS_FULLSCREEN=Schermo pieno +SING_OPTIONS_GRAPHICS_DEPTH=Profondità colore +SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscopio +SING_OPTIONS_GRAPHICS_LINEBONUS=Line Bonus +SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Dimensione filmati + +SING_OPTIONS_SOUND_WHEREAMI=Opzioni suono +SING_OPTIONS_SOUND_DESC=Opzioni suono +SING_OPTIONS_SOUND_MIC_BOOST=Amplificazione Microfono +SING_OPTIONS_SOUND_CLICK_ASSIST=Aiuto-click +SING_OPTIONS_SOUND_BEAT_CLICK=Battito-click +SING_OPTIONS_SOUND_THRESHOLD=Soglia +SING_OPTIONS_SOUND_TWO_GiocatoreS_MODE=Modalità a due +SING_OPTIONS_SOUND_PREVIEWVOLUME=Volume Anteprima +SING_OPTIONS_SOUND_PREVIEWFADING=Fading Anteprima + +SING_OPTIONS_LYRICS_WHEREAMI=Opzioni Testi +SING_OPTIONS_LYRICS_DESC=Opzioni Testi +SING_OPTIONS_LYRICS_FONT=Carattere +SING_OPTIONS_LYRICS_EFFECT=Effetto +SING_OPTIONS_LYRICS_SOLMIZATION=Solfeggio + +SING_OPTIONS_THEMES_WHEREAMI=Opzioni Temi +SING_OPTIONS_THEMES_DESC=Opzioni Temi ed effetti +SING_OPTIONS_THEMES_THEME=Tema +SING_OPTIONS_THEMES_SKIN=Skin +SING_OPTIONS_THEMES_COLOR=Colore + +SING_OPTIONS_RECORD_WHEREAMI=Opzioni Record +SING_OPTIONS_RECORD_DESC=Opzioni microfono +SING_OPTIONS_RECORD_CARD=Scheda sonora +SING_OPTIONS_RECORD_INPUT=Input +SING_OPTIONS_RECORD_CHANNELL=Canale sinistro +SING_OPTIONS_RECORD_CHANNELR=Canale destro + +SING_OPTIONS_ADVANCED_WHEREAMI=Opzioni avanzate +SING_OPTIONS_ADVANCED_DESC=Opzioni avanzate +SING_OPTIONS_ADVANCED_EFFECTSING=Opzioni cantante +SING_OPTIONS_ADVANCED_SCREENFADE=Fading Schermo +SING_OPTIONS_ADVANCED_LOADANIMATION=Animazioni caricamento +SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Domanda di sicurezza +SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus +SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=Contatore canzoni cantate +SING_OPTIONS_ADVANCED_ONcanzoneCLICK=Solezione a fine canzone +SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu + +SING_LEGEND_SELECT=seleziona +SING_LEGEND_NAVIGATE=scegli +SING_LEGEND_CONTINUE=continua +SING_LEGEND_ESC=indietro + +SING_Giocatore_DESC=insersci nome/i +SING_Giocatore_WHEREAMI=Nomi giocatori +SING_Giocatore_ENTER_NAME=inserisci nome + +SING_DIFFICULTY_DESC=seleziona dfficoltà +SING_DIFFICULTY_WHEREAMI=Difficoltà +SING_DIFFICULTY_CONTINUE=selezione canzone +SING_EASY=Facile +SING_MEDIUM=Medio +SING_HARD=Difficile + +SING_canzone_SELECTION_DESC=scegli canzone +SING_canzone_SELECTION_WHEREAMI=Selezione canzone +SING_canzone_SELECTION_GOTO=vai a .. +SING_canzone_SELECTION=selezione canzone +SING_canzone_SELECTION_MENU=Menu +SING_canzone_SELECTION_PLAYLIST=playlist +SING_canzoneS_IN_CAT=Canzoni +PLAYLIST_CATTEXT=Playlist: %s + +SING_TIME=Tempo +SING_TOTAL=totale +SING_MODE=singolo +SING_NOTES=note +SING_GOLDEN_NOTES=golden notes +SING_PHRASE_BONUS=line bonus + +SING_MENU=Menu pricipale + +canzone_SCORE=punteggio canzone +canzone_SCORE_WHEREAMI=Punteggio + +SING_SCORE_TONE_DEAF=Stonato +SING_SCORE_AMATEUR=Amatore +SING_SCORE_RISING_STAR=Stella nascente +SING_SCORE_LEAD_SINGER=Prima voce +SING_SCORE_HIT_ARTIST=Artista da Hit +SING_SCORE_SUPERSTAR=Superstar +SING_SCORE_ULTRASTAR=Ultrastar + +SING_TOP_5_CHARTS=Migliori 5 giocatori +SING_TOP_5_CHARTS_WHEREAMI=migliori 5 +SING_TOP_5_CHARTS_CONTINUE=vai a selezione canzoni + +POPUP_PERFECT=perfetto! +POPUP_AWESOME=incredibile! +POPUP_GREAT=grande! +POPUP_GOOD=buono! +POPUP_NOTBAD=non male! +POPUP_BAD=male! +POPUP_POOR=pessimo! +POPUP_AWFUL=terribile! + +IMPLODE_GLUE1=, +IMPLODE_GLUE2= e + +canzone_MENU_NAME_MAIN=menu canzone +canzone_MENU_PLAY=Canta +canzone_MENU_CHANGEGiocatoreS=Cambia giocatori +canzone_MENU_EDIT=Modifica +canzone_MENU_MODI=Canta a Modi +canzone_MENU_CANCEL=Cancella + +canzone_MENU_NAME_PLAYLIST=Menu Canzone +canzone_MENU_PLAYLIST_ADD=Aggiungi canzone +canzone_MENU_PLAYLIST_DEL=Cancella canzone + +canzone_MENU_NAME_PLAYLIST_ADD=Aggiungi canzone +canzone_MENU_PLAYLIST_ADD_NEW=nuova playlist +canzone_MENU_PLAYLIST_ADD_EXISTING=playlist esistente +canzone_MENU_PLAYLIST_NOEXISTING=Non ci sono playlist + +canzone_MENU_NAME_PLAYLIST_NEW=Nuova Playlist +canzone_MENU_PLAYLIST_NEW_CREATE=Crea +canzone_MENU_PLAYLIST_NEW_UNNAMED=Senza nome + +canzone_MENU_NAME_PLAYLIST_DEL=Confermi cancellazione? +canzone_MENU_YES=Si +canzone_MENU_NO=No + +canzone_MENU_NAME_PLAYLIST_LOAD=Apri Playlist +canzone_MENU_PLAYLIST_LOAD=apri +canzone_MENU_PLAYLIST_DELCURRENT=cancella Playlist corrente + +canzone_MENU_NAME_PLAYLIST_DEL=Cancelli Playlist? + +canzone_MENU_NAME_PARTY_MAIN=Party Menu +canzone_MENU_JOKER=Jolly + +canzone_MENU_NAME_PARTY_JOKER=prendi jolly + +canzone_JUMPTO_DESC=cerca canzone +canzone_JUMPTO_TYPE_DESC=Cerca: +canzone_JUMPTO_TYPE1=Tutto +canzone_JUMPTO_TYPE2=Titolo +canzone_JUMPTO_TYPE3=Artista +canzone_JUMPTO_canzoneStrovato=%d canzoni(s) trovate +canzone_JUMPTO_NOcanzoneStrovato=Nessuna canzone trovata +canzone_JUMPTO_HELP=Testo da cercare +canzone_JUMPTO_CATTEXT=Cerca: %s + +PARTY_MODE=modo party +PARTY_DIFFICULTY=Difficultà +PARTY_PLAYLIST=Modo Playlist +PARTY_PLAYLIST_ALL=Tutte le canzoni +PARTY_PLAYLIST_CATEGORY=Cartella +PARTY_PLAYLIST_PLAYLIST=Playlist +PARTY_ROUNDS=Round +PARTY_TEAMS=Team +PARTY_TEAMS_PLAYER1= Team1 +PARTY_TEAMS_PLAYER2=Team2 +PARTY_TEAMS_PLAYER3=Team3 + +PARTY_LEGEND_CONTINUE=continua + +PARTY_OPTIONS_DESC=opzioni per il gioco party +PARTY_OPTIONS_WHEREAMI=Opzioni party + +PARTY_Giocatore_DESC=inserisci nome Giocatore e Team! +PARTY_Giocatore_WHEREAMI=Nomi Party +PARTY_Giocatore_ENTER_NAME=inserisci nomi +PARTY_Giocatore_LEGEND_CONTINUE=inzia gioco party + +PARTY_ROUND_DESC=Prossimo Giocatore al Mic +PARTY_ROUND_WHEREAMI=Prossimo round Party +PARTY_ROUND_LEGEND_CONTINUE=inizia round + +PARTY_canzone_WHEREAMI=Selezione canzone Party +PARTY_canzone_LEGEND_CONTINUE=canta +PARTY_canzone_MENU=party menu + +PARTY_SCORE_DESC=punteggio ultimo round +PARTY_SCORE_WHEREAMI=Punti Party + +PARTY_WIN_DESC=vincitore gioco party +PARTY_WIN_WHEREAMI=Vincitore Party +PARTY_WIN_LEGEND_CONTINUE=indietro al menu principale + +PARTY_ROUND=Round +PARTY_ROUND_WINNER=Vincitore +PARTY_NOTPLAYEDYET=non ancora giocato +PARTY_NOBODY=nessuno +NEXT_ROUND=Prossimo round: + +PARTY_DISMISSED=Abbandonato! +PARTY_SCORE_WINS=%s +PARTY_SCORE_WINS2=vince! + +PLUGIN_HDL_NAME=Tieni duro +PLUGIN_HDL_DESC=Non fare peggio del puntatore che ti mostra la barra del punteggio. + +PLUGIN_UNTIL5000_NAME=Fino a 5000 +PLUGIN_UNTIL5000_DESC=Chi fa 5000 punti per primo vince la partita. + +PLUGIN_DUELL_NAME=Duello +PLUGIN_DUELL_DESC=Canta in duello fino a 10000 punti. + +PLUGIN_BLIND_NAME=Modo Cieco +PLUGIN_BLIND_DESC=Duello senza vedere le note. + +STAT_MAIN=Statistiche +STAT_MAIN_DESC=Generale +STAT_MAIN_WHEREAMI=Statistiche + +STAT_OVERVIEW_INTRO=%0: Statistiche. \n Ultimo Reset alle %2:.2d.%1:.2d.%3:d +STAT_OVERVIEW_canzone=%0:d canzoni(%3: con Video), di cui %1:d già cantate e %2:d non cantate.\n La canzone più po popolare è %5:s from %4:s. +STAT_OVERVIEW_Giocatore=Dall'ultimo Reset ci sono stati %0:d differenti Giocatori.\n Il miglior Giocatore è %1:s con un punteggio medio di %2:d + +punti.\n %3:d ha fatto il miglior punteggio con %4:s punti. + +STAT_DETAIL=Statistiche +STAT_DETAIL_WHEREAMI=Statistics dettagliate + +STAT_NEXT=Prossima pagina +STAT_PREV=Pagina precedente +STAT_REVERSE=Ordine inverso +STAT_PAGE=pagina %0:d di %1:d Pagine\n (%2:s of %3:s elementi) + +STAT_DESC_SCORES=Punteggi migliori +STAT_DESC_SCORES_REVERSED=Punteggi peggiori +STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s) + +STAT_DESC_SINGERS=Migliroi cantanti +STAT_DESC_SINGERS_REVERSED=Peggiori cantanti +STAT_FORMAT_SINGERS=%0:s \n Punteggio medio: %1:d + +STAT_DESC_canzoneS=Canzoni più popolari +STAT_DESC_canzoneS_REVERSED=Canzoni meno popolari +STAT_FORMAT_canzoneS=%0:s - %1:s \n %2:dx cantate + +STAT_DESC_BANDS=Band più popolari +STAT_DESC_BANDS_REVERSED=Band meno popolari +STAT_FORMAT_BANDS=%0:s \n %1:dx cantate + +MSG_ERROR_TITLE=Errore +MSG_QUESTION_TITLE=Domanda +MSG_QUIT_USDX=Esci veramente da UltraStar? +MSG_END_PARTY=Esci veramente dal modo Party? +ERROR_NO_canzoneS=Nessuna canzone caricata +ERROR_NO_PLUGINS=Nessun Plugins caricato +ERROR_CORRUPT_canzone=La canzone non può essere caricata. \ No newline at end of file -- cgit v1.2.3