diff --git a/.gitignore b/.gitignore
index d675d82b..4b8d2072 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,5 +51,9 @@ Thumbs.db
/Installer/setup-SetupFiles
/Installer/vocaluxe-*-setup.exe
/Installer/Vocaluxe*.rar
+/Installer/Prerequisites/GStreamer x64/gstreamer-1.0-x86_64-1.4.1.msi
+/Installer/Prerequisites/GStreamer x86/gstreamer-1.0-x86-1.4.1.msi
/WebserverInitalConfig/bin
-/PhoneGap/
\ No newline at end of file
+/PhoneGap/
+/TestResults
+/VocaluxeTests/bin
diff --git a/HowToBuildWin.md b/HowToBuildWin.md
new file mode 100644
index 00000000..95285b79
--- /dev/null
+++ b/HowToBuildWin.md
@@ -0,0 +1,58 @@
+# Build Vocaluxe - HowTo (Windows)
+
+* Navigate to the right repository: usually [Vocaluxe Main](https://github.com/Vocaluxe/Vocaluxe)
+* Navigate to the right branch: usually [develop](https://github.com/Vocaluxe/Vocaluxe/tree/develop) (The main branch of Vocaluxe)
+
+ 
+
+* Copy the `URL` of the corresponding git file
+
+ 
+
+* Make sure [Visual Studio 2012/2013(?)](http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop) is installed
+
+* Clone the repository and open it
+
+ **Method A: Use Visual Studio (2013+)'s git client:**
+ * Start Visual Studio
+ * `VIEW`->`Team Explorer`
+ * Click on the `Connect to a Team Project` button inside the `Team Explorer`
+ * Click on `Clone` under `Local Git Repositories`
+ * Enter `[theCopiedGitUrl]` in the first field
+ * Enter a target folder in the second field
+ * Click clone
+ 
+
+ **Method B: Use commandline git client:**
+ * Make sure git is installed [git-scm](http://git-scm.com/)
+ * Open a `git bash` (there should be a link in the start menu)
+ or a normal commandline if you have added git to the `PATH` variable
+ * Navigate to the folder where git should create the Vocaluxe project folder
+
+ ```
+ cd [PathToYourFolder]
+ ```
+ * Clone the repository (could take some time...)
+ ```
+ git clone [theCopiedGitUrl]
+ ```
+ 
+
+ * Now you should find a Folder `Vocaluxe` in the given directory -> navigate into it
+
+ * Open the file `Vocaluxe.sln` with Visual Studio
+
+* Configure the build target to `ReleaseWin` and `x86` or `x64` (if unsure -> select `x86`)
+* Build the projects by clicking `"Build"->"Build solution"` or just press `Control`+`Shift`+`B`
+
+ 
+
+* Check if your build was successful
+ 
+
+* YOUR build should have appeared here:
+ ```
+ [PathToYourFolder]\Vocaluxe\Output
+ ```
+* Run `Vocaluxe.exe` or copy the whole folder to a location of your choice
+* Have fun!
diff --git a/Installer/setup.aip b/Installer/setup.aip
index 853fa2ce..246b2193 100644
--- a/Installer/setup.aip
+++ b/Installer/setup.aip
@@ -19,7 +19,7 @@
-
+
@@ -35,23 +35,29 @@
+
+
+
+
-
-
+
+
+
+
-
+
@@ -61,25 +67,25 @@
-
-
+
+
+
+
-
-
+
-
+
+
-
-
-
+
+
+
-
-
@@ -87,7 +93,6 @@
-
@@ -98,41 +103,46 @@
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
@@ -149,23 +159,33 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
@@ -177,15 +197,17 @@
-
-
+
+
+
+
-
-
-
+
+
+
@@ -193,14 +215,11 @@
-
-
-
-
-
-
-
+
+
+
+
@@ -224,11 +243,8 @@
-
-
-
@@ -238,460 +254,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
@@ -700,52 +265,34 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -755,11 +302,11 @@
-
-
+
+
-
+
@@ -780,78 +327,61 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -859,74 +389,57 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
-
-
-
-
@@ -935,10 +448,8 @@
-
-
-
-
+
+
@@ -960,36 +471,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -997,7 +486,6 @@
-
@@ -1006,59 +494,47 @@
-
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
-
+
-
-
-
-
@@ -1069,26 +545,13 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1096,7 +559,6 @@
-
@@ -1112,489 +574,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1603,7 +599,7 @@
-
+
@@ -1663,13 +659,8 @@
-
-
-
-
-
@@ -1732,9 +723,6 @@
-
-
-
@@ -1742,30 +730,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1773,7 +741,6 @@
-
@@ -1789,6 +756,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1798,7 +792,6 @@
-
@@ -1809,17 +802,13 @@
-
-
-
-
@@ -1836,7 +825,7 @@
-
+
@@ -1871,7 +860,6 @@
-
@@ -1891,10 +879,6 @@
-
-
-
-
@@ -1903,30 +887,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1934,7 +898,6 @@
-
@@ -1949,6 +912,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1957,17 +947,13 @@
-
-
-
-
@@ -2007,12 +993,14 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -2021,12 +1009,11 @@
-
+
+
+
-
-
-
diff --git a/Output/Cover/Ambient Blue.xml b/Output/Cover/Ambient Blue.xml
new file mode 100644
index 00000000..f1f91328
--- /dev/null
+++ b/Output/Cover/Ambient Blue.xml
@@ -0,0 +1,166 @@
+
+
+
+ Ambient Blue
+ Ambient Blue
+ flokuep
+
+
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.675
+ 0.890
+ 0.969
+ 0.8
+
+
+
+ 24
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.675
+ 0.890
+ 0.969
+ 0.8
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.675
+ 0.890
+ 0.969
+ 0.8
+
+
+
+ 150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 120
+
+
+
+
+ 0.675
+ 0.890
+ 0.969
+ 0.8
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
diff --git a/Output/Cover/Ambient Blue/No Cover.png b/Output/Cover/Ambient Blue/No Cover.png
new file mode 100644
index 00000000..73a0e4b1
Binary files /dev/null and b/Output/Cover/Ambient Blue/No Cover.png differ
diff --git a/Output/Cover/Ambient Blue/Normal.png b/Output/Cover/Ambient Blue/Normal.png
new file mode 100644
index 00000000..73a0e4b1
Binary files /dev/null and b/Output/Cover/Ambient Blue/Normal.png differ
diff --git a/Output/Cover/Ambient Blue/Resources/Normal.psd b/Output/Cover/Ambient Blue/Resources/Normal.psd
new file mode 100644
index 00000000..5cc517a3
Binary files /dev/null and b/Output/Cover/Ambient Blue/Resources/Normal.psd differ
diff --git a/Output/Cover/Ambient Green.xml b/Output/Cover/Ambient Green.xml
new file mode 100644
index 00000000..3e652377
--- /dev/null
+++ b/Output/Cover/Ambient Green.xml
@@ -0,0 +1,166 @@
+
+
+
+ Ambient Green
+ Ambient Green
+ flokuep
+
+
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.709
+ 0.968
+ 0.674
+ 0.9
+
+
+
+ 24
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.709
+ 0.968
+ 0.674
+ 0.9
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.709
+ 0.968
+ 0.674
+ 0.9
+
+
+
+ 150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 120
+
+
+
+
+ 0.709
+ 0.968
+ 0.674
+ 0.9
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
diff --git a/Output/Cover/Ambient Green/No Cover.png b/Output/Cover/Ambient Green/No Cover.png
new file mode 100644
index 00000000..2a1612cb
Binary files /dev/null and b/Output/Cover/Ambient Green/No Cover.png differ
diff --git a/Output/Cover/Ambient Green/Normal.png b/Output/Cover/Ambient Green/Normal.png
new file mode 100644
index 00000000..2a1612cb
Binary files /dev/null and b/Output/Cover/Ambient Green/Normal.png differ
diff --git a/Output/Cover/Ambient Green/Resources/Normal.psd b/Output/Cover/Ambient Green/Resources/Normal.psd
new file mode 100644
index 00000000..8f973d02
Binary files /dev/null and b/Output/Cover/Ambient Green/Resources/Normal.psd differ
diff --git a/Output/Cover/Ambient Red.xml b/Output/Cover/Ambient Red.xml
new file mode 100644
index 00000000..fa65f01d
--- /dev/null
+++ b/Output/Cover/Ambient Red.xml
@@ -0,0 +1,166 @@
+
+
+
+ Ambient Red
+ Ambient Red
+ flokuep
+
+
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.968
+ 0.674
+ 0.674
+ 0.9
+
+
+
+ 24
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.968
+ 0.674
+ 0.674
+ 0.9
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.968
+ 0.674
+ 0.674
+ 0.9
+
+
+
+ 150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 120
+
+
+
+
+ 0.968
+ 0.674
+ 0.674
+ 0.9
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
diff --git a/Output/Cover/Ambient Red/No Cover.png b/Output/Cover/Ambient Red/No Cover.png
new file mode 100644
index 00000000..1bf01057
Binary files /dev/null and b/Output/Cover/Ambient Red/No Cover.png differ
diff --git a/Output/Cover/Ambient Red/Normal.png b/Output/Cover/Ambient Red/Normal.png
new file mode 100644
index 00000000..1bf01057
Binary files /dev/null and b/Output/Cover/Ambient Red/Normal.png differ
diff --git a/Output/Cover/Ambient Red/Resources/Normal.psd b/Output/Cover/Ambient Red/Resources/Normal.psd
new file mode 100644
index 00000000..db9fb4ed
Binary files /dev/null and b/Output/Cover/Ambient Red/Resources/Normal.psd differ
diff --git a/Output/Cover/Ambient Yellow.xml b/Output/Cover/Ambient Yellow.xml
new file mode 100644
index 00000000..7636b2fa
--- /dev/null
+++ b/Output/Cover/Ambient Yellow.xml
@@ -0,0 +1,166 @@
+
+
+
+ Ambient Yellow
+ Ambient Yellow
+ flokuep
+
+
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.968
+ 0.956
+ 0.674
+ 0.9
+
+
+
+ 24
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 550
+
+
+
+
+ 0.968
+ 0.956
+ 0.674
+ 0.9
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Outline
+
+
+
+ 550
+
+
+
+
+ 0.968
+ 0.956
+ 0.674
+ 0.9
+
+
+
+ 150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
+
+
+ %TEXT%
+
+ Normal
+
+
+
+ 120
+
+
+
+
+ 0.968
+ 0.956
+ 0.674
+ 0.9
+
+
+
+ -150
+
+
+ 100
+
+
+ 1
+ 1
+ 1
+ 1
+
+
+ Normal.png
+
+ 1.0
+
+ True
+
+
diff --git a/Output/Cover/Ambient Yellow/No Cover.png b/Output/Cover/Ambient Yellow/No Cover.png
new file mode 100644
index 00000000..e7be3e62
Binary files /dev/null and b/Output/Cover/Ambient Yellow/No Cover.png differ
diff --git a/Output/Cover/Ambient Yellow/Normal.png b/Output/Cover/Ambient Yellow/Normal.png
new file mode 100644
index 00000000..e7be3e62
Binary files /dev/null and b/Output/Cover/Ambient Yellow/Normal.png differ
diff --git a/Output/Cover/Ambient Yellow/Resources/Normal.psd b/Output/Cover/Ambient Yellow/Resources/Normal.psd
new file mode 100644
index 00000000..ebc648a0
Binary files /dev/null and b/Output/Cover/Ambient Yellow/Resources/Normal.psd differ
diff --git a/Output/Cover/Blue.xml b/Output/Cover/Blue.xml
deleted file mode 100644
index 9befe7d3..00000000
--- a/Output/Cover/Blue.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- Blue
- Blue
- flokuep
-
-
diff --git a/Output/Cover/Blue/#.png b/Output/Cover/Blue/#.png
deleted file mode 100644
index d9f726f3..00000000
Binary files a/Output/Cover/Blue/#.png and /dev/null differ
diff --git a/Output/Cover/Blue/1900 - 1909.png b/Output/Cover/Blue/1900 - 1909.png
deleted file mode 100644
index ee800066..00000000
Binary files a/Output/Cover/Blue/1900 - 1909.png and /dev/null differ
diff --git a/Output/Cover/Blue/1910 - 1919.png b/Output/Cover/Blue/1910 - 1919.png
deleted file mode 100644
index 184cf61b..00000000
Binary files a/Output/Cover/Blue/1910 - 1919.png and /dev/null differ
diff --git a/Output/Cover/Blue/1920 - 1929.png b/Output/Cover/Blue/1920 - 1929.png
deleted file mode 100644
index ee016622..00000000
Binary files a/Output/Cover/Blue/1920 - 1929.png and /dev/null differ
diff --git a/Output/Cover/Blue/1930 - 1939.png b/Output/Cover/Blue/1930 - 1939.png
deleted file mode 100644
index 8c03d86b..00000000
Binary files a/Output/Cover/Blue/1930 - 1939.png and /dev/null differ
diff --git a/Output/Cover/Blue/1940 - 1949.png b/Output/Cover/Blue/1940 - 1949.png
deleted file mode 100644
index 6768cac7..00000000
Binary files a/Output/Cover/Blue/1940 - 1949.png and /dev/null differ
diff --git a/Output/Cover/Blue/1950 - 1959.png b/Output/Cover/Blue/1950 - 1959.png
deleted file mode 100644
index 9630d5a4..00000000
Binary files a/Output/Cover/Blue/1950 - 1959.png and /dev/null differ
diff --git a/Output/Cover/Blue/1960 - 1969.png b/Output/Cover/Blue/1960 - 1969.png
deleted file mode 100644
index b05aa1da..00000000
Binary files a/Output/Cover/Blue/1960 - 1969.png and /dev/null differ
diff --git a/Output/Cover/Blue/1970 - 1979.png b/Output/Cover/Blue/1970 - 1979.png
deleted file mode 100644
index 7fe3b891..00000000
Binary files a/Output/Cover/Blue/1970 - 1979.png and /dev/null differ
diff --git a/Output/Cover/Blue/1980 - 1989.png b/Output/Cover/Blue/1980 - 1989.png
deleted file mode 100644
index f8d8334c..00000000
Binary files a/Output/Cover/Blue/1980 - 1989.png and /dev/null differ
diff --git a/Output/Cover/Blue/1990 - 1999.png b/Output/Cover/Blue/1990 - 1999.png
deleted file mode 100644
index 0baeaa1c..00000000
Binary files a/Output/Cover/Blue/1990 - 1999.png and /dev/null differ
diff --git a/Output/Cover/Blue/2000 - 2009.png b/Output/Cover/Blue/2000 - 2009.png
deleted file mode 100644
index c3b778b4..00000000
Binary files a/Output/Cover/Blue/2000 - 2009.png and /dev/null differ
diff --git a/Output/Cover/Blue/2010 - 2019.png b/Output/Cover/Blue/2010 - 2019.png
deleted file mode 100644
index 466d8ccf..00000000
Binary files a/Output/Cover/Blue/2010 - 2019.png and /dev/null differ
diff --git a/Output/Cover/Blue/A.png b/Output/Cover/Blue/A.png
deleted file mode 100644
index 4270b335..00000000
Binary files a/Output/Cover/Blue/A.png and /dev/null differ
diff --git a/Output/Cover/Blue/All Songs.png b/Output/Cover/Blue/All Songs.png
deleted file mode 100644
index ffe61d44..00000000
Binary files a/Output/Cover/Blue/All Songs.png and /dev/null differ
diff --git a/Output/Cover/Blue/Alle Songs.png b/Output/Cover/Blue/Alle Songs.png
deleted file mode 100644
index 3191816b..00000000
Binary files a/Output/Cover/Blue/Alle Songs.png and /dev/null differ
diff --git a/Output/Cover/Blue/B.png b/Output/Cover/Blue/B.png
deleted file mode 100644
index 9a3fd26a..00000000
Binary files a/Output/Cover/Blue/B.png and /dev/null differ
diff --git a/Output/Cover/Blue/C.png b/Output/Cover/Blue/C.png
deleted file mode 100644
index 5a4b7c7b..00000000
Binary files a/Output/Cover/Blue/C.png and /dev/null differ
diff --git a/Output/Cover/Blue/D.png b/Output/Cover/Blue/D.png
deleted file mode 100644
index da7174d6..00000000
Binary files a/Output/Cover/Blue/D.png and /dev/null differ
diff --git a/Output/Cover/Blue/E.png b/Output/Cover/Blue/E.png
deleted file mode 100644
index 26be0535..00000000
Binary files a/Output/Cover/Blue/E.png and /dev/null differ
diff --git a/Output/Cover/Blue/EmptyCover.png b/Output/Cover/Blue/EmptyCover.png
deleted file mode 100644
index 048a8dc0..00000000
Binary files a/Output/Cover/Blue/EmptyCover.png and /dev/null differ
diff --git a/Output/Cover/Blue/English.png b/Output/Cover/Blue/English.png
deleted file mode 100644
index 7a0887c6..00000000
Binary files a/Output/Cover/Blue/English.png and /dev/null differ
diff --git a/Output/Cover/Blue/F.png b/Output/Cover/Blue/F.png
deleted file mode 100644
index 3cd57ef2..00000000
Binary files a/Output/Cover/Blue/F.png and /dev/null differ
diff --git a/Output/Cover/Blue/French.png b/Output/Cover/Blue/French.png
deleted file mode 100644
index 74b32d23..00000000
Binary files a/Output/Cover/Blue/French.png and /dev/null differ
diff --git a/Output/Cover/Blue/G.png b/Output/Cover/Blue/G.png
deleted file mode 100644
index ed912058..00000000
Binary files a/Output/Cover/Blue/G.png and /dev/null differ
diff --git a/Output/Cover/Blue/German.png b/Output/Cover/Blue/German.png
deleted file mode 100644
index d2252175..00000000
Binary files a/Output/Cover/Blue/German.png and /dev/null differ
diff --git a/Output/Cover/Blue/H.png b/Output/Cover/Blue/H.png
deleted file mode 100644
index c49edd70..00000000
Binary files a/Output/Cover/Blue/H.png and /dev/null differ
diff --git a/Output/Cover/Blue/I.png b/Output/Cover/Blue/I.png
deleted file mode 100644
index 8c8996fd..00000000
Binary files a/Output/Cover/Blue/I.png and /dev/null differ
diff --git a/Output/Cover/Blue/Italian.png b/Output/Cover/Blue/Italian.png
deleted file mode 100644
index 3529aa80..00000000
Binary files a/Output/Cover/Blue/Italian.png and /dev/null differ
diff --git a/Output/Cover/Blue/J.png b/Output/Cover/Blue/J.png
deleted file mode 100644
index de1242b7..00000000
Binary files a/Output/Cover/Blue/J.png and /dev/null differ
diff --git a/Output/Cover/Blue/K.png b/Output/Cover/Blue/K.png
deleted file mode 100644
index 7212965a..00000000
Binary files a/Output/Cover/Blue/K.png and /dev/null differ
diff --git a/Output/Cover/Blue/L.png b/Output/Cover/Blue/L.png
deleted file mode 100644
index 5c5b3064..00000000
Binary files a/Output/Cover/Blue/L.png and /dev/null differ
diff --git a/Output/Cover/Blue/M.png b/Output/Cover/Blue/M.png
deleted file mode 100644
index 8c7cc450..00000000
Binary files a/Output/Cover/Blue/M.png and /dev/null differ
diff --git a/Output/Cover/Blue/N.png b/Output/Cover/Blue/N.png
deleted file mode 100644
index e35faf8c..00000000
Binary files a/Output/Cover/Blue/N.png and /dev/null differ
diff --git a/Output/Cover/Blue/No Cover.png b/Output/Cover/Blue/No Cover.png
deleted file mode 100644
index d57d9e73..00000000
Binary files a/Output/Cover/Blue/No Cover.png and /dev/null differ
diff --git a/Output/Cover/Blue/No Edition.png b/Output/Cover/Blue/No Edition.png
deleted file mode 100644
index 4904af08..00000000
Binary files a/Output/Cover/Blue/No Edition.png and /dev/null differ
diff --git a/Output/Cover/Blue/No Genre.png b/Output/Cover/Blue/No Genre.png
deleted file mode 100644
index 51223f63..00000000
Binary files a/Output/Cover/Blue/No Genre.png and /dev/null differ
diff --git a/Output/Cover/Blue/No Language.png b/Output/Cover/Blue/No Language.png
deleted file mode 100644
index fc485860..00000000
Binary files a/Output/Cover/Blue/No Language.png and /dev/null differ
diff --git a/Output/Cover/Blue/No Year.png b/Output/Cover/Blue/No Year.png
deleted file mode 100644
index 5d1af2c5..00000000
Binary files a/Output/Cover/Blue/No Year.png and /dev/null differ
diff --git a/Output/Cover/Blue/O.png b/Output/Cover/Blue/O.png
deleted file mode 100644
index a6850856..00000000
Binary files a/Output/Cover/Blue/O.png and /dev/null differ
diff --git a/Output/Cover/Blue/Ohne Edition.png b/Output/Cover/Blue/Ohne Edition.png
deleted file mode 100644
index b8fe90ee..00000000
Binary files a/Output/Cover/Blue/Ohne Edition.png and /dev/null differ
diff --git a/Output/Cover/Blue/Ohne Genre.png b/Output/Cover/Blue/Ohne Genre.png
deleted file mode 100644
index 15a93467..00000000
Binary files a/Output/Cover/Blue/Ohne Genre.png and /dev/null differ
diff --git a/Output/Cover/Blue/Ohne Jahr.png b/Output/Cover/Blue/Ohne Jahr.png
deleted file mode 100644
index 031a5549..00000000
Binary files a/Output/Cover/Blue/Ohne Jahr.png and /dev/null differ
diff --git a/Output/Cover/Blue/Ohne Sprache.png b/Output/Cover/Blue/Ohne Sprache.png
deleted file mode 100644
index c07ab84c..00000000
Binary files a/Output/Cover/Blue/Ohne Sprache.png and /dev/null differ
diff --git a/Output/Cover/Blue/P.png b/Output/Cover/Blue/P.png
deleted file mode 100644
index 0aaac9b0..00000000
Binary files a/Output/Cover/Blue/P.png and /dev/null differ
diff --git a/Output/Cover/Blue/Polish.png b/Output/Cover/Blue/Polish.png
deleted file mode 100644
index 831af907..00000000
Binary files a/Output/Cover/Blue/Polish.png and /dev/null differ
diff --git a/Output/Cover/Blue/Q.png b/Output/Cover/Blue/Q.png
deleted file mode 100644
index 5ef1045a..00000000
Binary files a/Output/Cover/Blue/Q.png and /dev/null differ
diff --git a/Output/Cover/Blue/R.png b/Output/Cover/Blue/R.png
deleted file mode 100644
index 637f6831..00000000
Binary files a/Output/Cover/Blue/R.png and /dev/null differ
diff --git a/Output/Cover/Blue/Resources/decades.xcf b/Output/Cover/Blue/Resources/decades.xcf
deleted file mode 100644
index 4b951b1f..00000000
Binary files a/Output/Cover/Blue/Resources/decades.xcf and /dev/null differ
diff --git a/Output/Cover/Blue/Resources/language.xcf b/Output/Cover/Blue/Resources/language.xcf
deleted file mode 100644
index 4c7b6a7c..00000000
Binary files a/Output/Cover/Blue/Resources/language.xcf and /dev/null differ
diff --git a/Output/Cover/Blue/Resources/letter.xcf b/Output/Cover/Blue/Resources/letter.xcf
deleted file mode 100644
index e58b2f5f..00000000
Binary files a/Output/Cover/Blue/Resources/letter.xcf and /dev/null differ
diff --git a/Output/Cover/Blue/Resources/no_cover.xcf b/Output/Cover/Blue/Resources/no_cover.xcf
deleted file mode 100644
index b1ea09eb..00000000
Binary files a/Output/Cover/Blue/Resources/no_cover.xcf and /dev/null differ
diff --git a/Output/Cover/Blue/S.png b/Output/Cover/Blue/S.png
deleted file mode 100644
index 0366292f..00000000
Binary files a/Output/Cover/Blue/S.png and /dev/null differ
diff --git a/Output/Cover/Blue/Spanish.png b/Output/Cover/Blue/Spanish.png
deleted file mode 100644
index 810b5150..00000000
Binary files a/Output/Cover/Blue/Spanish.png and /dev/null differ
diff --git a/Output/Cover/Blue/T.png b/Output/Cover/Blue/T.png
deleted file mode 100644
index 5f7e1816..00000000
Binary files a/Output/Cover/Blue/T.png and /dev/null differ
diff --git a/Output/Cover/Blue/U.png b/Output/Cover/Blue/U.png
deleted file mode 100644
index e9627049..00000000
Binary files a/Output/Cover/Blue/U.png and /dev/null differ
diff --git a/Output/Cover/Blue/V.png b/Output/Cover/Blue/V.png
deleted file mode 100644
index 888d3fb3..00000000
Binary files a/Output/Cover/Blue/V.png and /dev/null differ
diff --git a/Output/Cover/Blue/W.png b/Output/Cover/Blue/W.png
deleted file mode 100644
index dd10d126..00000000
Binary files a/Output/Cover/Blue/W.png and /dev/null differ
diff --git a/Output/Cover/Blue/X.png b/Output/Cover/Blue/X.png
deleted file mode 100644
index 26354523..00000000
Binary files a/Output/Cover/Blue/X.png and /dev/null differ
diff --git a/Output/Cover/Blue/Y.png b/Output/Cover/Blue/Y.png
deleted file mode 100644
index 10e671d7..00000000
Binary files a/Output/Cover/Blue/Y.png and /dev/null differ
diff --git a/Output/Cover/Blue/Z.png b/Output/Cover/Blue/Z.png
deleted file mode 100644
index 30582dba..00000000
Binary files a/Output/Cover/Blue/Z.png and /dev/null differ
diff --git a/Output/CreditsRessourcesDB.sqlite b/Output/CreditsRessourcesDB.sqlite
index 5701709f..d5dbafb9 100644
Binary files a/Output/CreditsRessourcesDB.sqlite and b/Output/CreditsRessourcesDB.sqlite differ
diff --git a/Output/Fonts/Fonts.xml b/Output/Fonts/Fonts.xml
index 2bbf61c3..9b8f2e33 100644
--- a/Output/Fonts/Fonts.xml
+++ b/Output/Fonts/Fonts.xml
@@ -3,11 +3,13 @@
Normal
- 0,00
- 0,00
- 0,00
- 0,00
- 1,00
+ 0.00
+
+ 0.00
+ 0.00
+ 0.00
+ 1.00
+
FreeSans
FreeSans.ttf
FreeSansBold.ttf
@@ -16,11 +18,13 @@
Outline
- 0,10
- 0,00
- 0,00
- 0,00
- 1,00
+ 0.10
+
+ 0.00
+ 0.00
+ 0.00
+ 1.00
+
FreeSans
FreeSans.ttf
FreeSansBold.ttf
diff --git a/Output/Languages/Czech.xml b/Output/Languages/Czech.xml
index b1a67a15..89639fd6 100644
--- a/Output/Languages/Czech.xml
+++ b/Output/Languages/Czech.xml
@@ -76,6 +76,7 @@
Vlastní hudba a hudba na pozadí
Žádná vlastní hudba
Pouze vlastní hudba
+ Jen vybraná píseň
Vše
Pouze jména a zastupující obrázky
Nic
@@ -210,8 +211,6 @@
Kamery
Rozlišení kamery
Přizpůsobení obrazovky
- Stiskněte Ctrl + Alt + Shift + šipky pro upravení obrazovky
- Ctrl + Alt + Shift + 0 pro vrácení úprav zpět na výchozí hodnoty
Nahoře vlevo
Nahoře vpravo
Dole vlevo
diff --git a/Output/Languages/English.xml b/Output/Languages/English.xml
index cd7cccae..0a2840a4 100644
--- a/Output/Languages/English.xml
+++ b/Output/Languages/English.xml
@@ -46,10 +46,9 @@
Level 2
Level 3
Max
- List
+ Song List
Dreidel
TileBoard
- Song List
Book
On Demand
At Startup
@@ -94,6 +93,7 @@
Party
Options
Profiles
+ No profiles found!
Party Mode Selection
Party Mode
Description
@@ -212,8 +212,8 @@
Webcams
Webcam-Resolution
Screen adjustments
- Press CTR + ALT + SHIFT + Arrows to adjust screen
- CTR + ALT + SHIFT + 0 to reset
+ Press CTR + ALT (+ SHIFT) + Arrows|\"+\" to adjust screen
+ CTR + ALT + 0 to reset
Top left
Top right
Bottom left
diff --git a/Output/Languages/French.xml b/Output/Languages/French.xml
index 149f908c..6261dd64 100644
--- a/Output/Languages/French.xml
+++ b/Output/Languages/French.xml
@@ -30,7 +30,7 @@
Invité
Utilisateur normal
Administrateur
- Clavier d\'Utilisateur
+ Clavier d'Utilisateur
Logiciel
OpenGL
Direct3D
@@ -57,7 +57,7 @@
Aléatoire
Dossier
Artiste
- Initiale d\'Artiste
+ Initiale d'Artiste
Initiale de Titre
Edition
Genre
@@ -76,6 +76,7 @@
Musique personnelle et Musique de fond
Pas de Musique personnelle
Seulement la Musique personnelle
+ Seulement les chansons sélectionnées
Tout
Seulement noms et avatars
Rien
@@ -92,16 +93,17 @@
Mode Fête
Options
Profils
+ Aucun profil trouvé !
Sélection du mode Fête
Mode Fête
Description
Auteur
Version
Impossible de charger ce mode Fête.
- Aucun micro n\'est configuré !
+ Aucun micro n'est configuré !
Personnes visées
- Pas d\'équipes
- Nombre d\'équipes
+ Pas d'équipes
+ Nombre d'équipes
Nombre de joueurs
Sélection des joueurs
Joueur
@@ -111,10 +113,10 @@
4 joueurs
5 joueurs
6 joueurs
- Attention: Aucun micro n\'est assigné au joueur %v!
- Attention: Aucun micro n\'est assigné aux joueurs %v!
- Attention: Aucun profil n\'est assigné au joueur %v!
- Attention: Aucun profil n\'est assigné aux joueurs %v!
+ Attention: Aucun micro n'est assigné au joueur %v!
+ Attention: Aucun micro n'est assigné aux joueurs %v!
+ Attention: Aucun profil n'est assigné au joueur %v!
+ Attention: Aucun profil n'est assigné aux joueurs %v!
Choix de la chanson
Chanter
Ajouter à la playlist
@@ -131,9 +133,9 @@
Options de la chanson
Rechercher:
Pas de Langue
- Pas d\'Année
+ Pas d'Année
Pas de Genre
- Pas d\'Edition
+ Pas d'Edition
Toutes les chansons
(%v Chansons)
(%v Chanson)
@@ -152,7 +154,7 @@
Nom du Joueur
Difficulté du jeu
Avatar
- Role de l\'utilisateur
+ Role de l'utilisateur
Actif
Nouveau
Supprimer
@@ -176,7 +178,7 @@
Dossiers
Difficulté du Jeu
Mode du Minuteur
- Options d\'Enregistrement
+ Options d'Enregistrement
Appareil
Entrée
Canal 1
@@ -195,7 +197,7 @@
Environnement graphique
Thème des Couvertures
Afficher les portées
- Afficher l\'aide pour la Tonalité
+ Afficher l'aide pour la Tonalité
Apparence du Minuteur
Dégradé des infos des joueurs
Chargement des couvertures
@@ -205,13 +207,13 @@
Options Vidéo
Vidéo en arrière plan
Prévisualisation des Vidéos
- Vidéos pendant que l\'on chante
+ Vidéos pendant que l'on chante
Afficher la vidéo de la musique de fond
Webcams
Résolution de la Webcam
- Ajustements de l\'écran
- Appuyer sur CTR + ALT + SHIFT + Flèches pour ajuster l\'écran
- CTR + ALT + SHIFT + 0 pour réinitialiser
+ Ajustements de l'écran
+ Appuyer sur CTRL + ALT (+ Maj) + Flèches|"+" pour ajuster l'écran
+ CTRL + ALT + 0 pour annuler
Haut gauche
Haut droit
Bas gauche
diff --git a/Output/Languages/German.xml b/Output/Languages/German.xml
index 36078c2b..39cc1c09 100644
--- a/Output/Languages/German.xml
+++ b/Output/Languages/German.xml
@@ -46,10 +46,9 @@
Level 2
Level 3
Maximal
- Liste
+ Songliste
Dreidel
TileBoard
- Songliste
Book
Bei Bedarf
Bei Programmstart
@@ -77,6 +76,7 @@
Eigene Musik und Hintergrundmusik
Keine eigene Musik
Nur eigene Musik
+ Nur bei gewähltem Song
Alle
Nur Namen und Avatar
Keine
@@ -93,6 +93,7 @@
Party
Optionen
Profile
+ Keine Profile gefunden!
Party-Modus Auswahl
Party-Modus
Beschreibung
@@ -211,8 +212,8 @@
Webcams
Webcam-Auflösung
Anzeigeanpassungen
- STRG + ALT + SHIFT + Pfeiltasten drücken um den Bildschirm anzupassen
- STRG + ALT + SHIFT + 0 um die Anpassungen zurückzusetzen
+ STRG + ALT (+ SHIFT) + Pfeiltasten oder "+" drücken um den Bildschirm zu justieren.
+ STRG + ALT + 0 um die Änderungen zurückzusetzen.
Oben links
Oben rechts
Unten links
diff --git a/Output/Languages/Italian.xml b/Output/Languages/Italian.xml
index 8c899d6e..ca474c09 100644
--- a/Output/Languages/Italian.xml
+++ b/Output/Languages/Italian.xml
@@ -14,6 +14,7 @@
Volume massimo
Canzoni caricate
Mouse
+ Uso della Memoria
Normale
Duetto
Medley
@@ -29,6 +30,7 @@
Ospite
Utente normale
Amministratore
+ Tasti Utente
Software
OpenGL
Direct3D
@@ -46,6 +48,7 @@
Max
Elenco
Dreidel
+ Scacchiera
Libro
Su richiesta
All\'avvio
@@ -61,6 +64,7 @@
Anno
Decade
Lingua
+ Inserimento Data
Facile
Normale
Difficile
@@ -72,9 +76,13 @@
Musica personale e musica di sfondo
Nessuna musica personale
Solo musica personale
+ Solo la canzone selezionata
Tutto
Solo nomi e avatar
Niente
+ Sotto
+ Sopra
+ Sopra e sotto
Dinamico
Caricamento
Totale
@@ -91,6 +99,7 @@
Autore
Versione
Impossibile caricare questa modalità festa.
+ Nessun microfono configurato!
Target di riferimento
Nessuna squadra
Numero di squadre
@@ -116,6 +125,7 @@
Canta tutte le canzoni
Canta tutte le canzoni visibili
Apri playlist
+ Selezione
Canta un medley casuale
Canta canzoni medley
Nuova playlist
@@ -188,11 +198,24 @@
Mostra note-linee
Mostra Aiuto-Tono
Look timer
+ Aumenta-Diminuisci info Giocatore
+ Modo di Caricamento Cover
Opzioni testi
Stile
Posizione testi
Opzioni video
+ Video di Sfondo
Anteprima video
+ Video durante il canto
+ Mostra il video attuale sullo sfondo
+ Webcam
+ Risoluzione-Webcam
+ Sistemazione schermo
+ Sopra a sinistra
+ Sopra a destra
+ Sotto a sinistra
+ Sotto a destra
Volume
Indirizzo server
+ Il server non sta funzionando. Per favore controlla il file config.xml!
diff --git a/Output/Languages/Swedish.xml b/Output/Languages/Swedish.xml
index 2b364a94..92c72192 100644
--- a/Output/Languages/Swedish.xml
+++ b/Output/Languages/Swedish.xml
@@ -76,6 +76,7 @@
Egen Musik och Bakgrundsmusik
Ingen egen Musik
Endast egen Musik
+ Endast vald låt
Alla
Endast namn och avatarer
Ingenting
diff --git a/Output/PartyModes/Challenge/Languages/Italian.xml b/Output/PartyModes/Challenge/Languages/Italian.xml
index 936ed185..8bb7714c 100644
--- a/Output/PartyModes/Challenge/Languages/Italian.xml
+++ b/Output/PartyModes/Challenge/Languages/Italian.xml
@@ -1,18 +1,30 @@
Italiano
+ Modalità Sfida
+ Gioca alcuni turni di sfida.
+ Per tutti quelli interessati ai duelli.
Prossimo
Indietro
Inizia
Esci
Si
No
+ Prossimo Turno
+ Modalità Sfida: Configurazione
Numero di giocatori
Numero di microfoni
+ Numero di turni
+ Modalità Sfida: Scegli il Giocatore
Selezione casuale
+ Modalità Sfida: Panoramica
Pos
Nome
+ Turni
Vittorie
+ Punti Canto
Punteggio
Vuoi davvero uscire?
+ Giocatore del prossimo turno:
+ Tutti i turni di canto completati! E il vincitore è...
diff --git a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeConfig.xml b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeConfig.xml
deleted file mode 100644
index 1623eba7..00000000
--- a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeConfig.xml
+++ /dev/null
@@ -1,458 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_TITLE
-
-
-
-
-
-
- 75
- 105
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMPLAYERS
-
-
-
-
-
-
- 75
- 165
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMMICS
-
-
-
-
-
-
- 75
- 225
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMROUNDS
-
-
-
-
-
-
- Button
-
- Button
-
- 985
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 145
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 9
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 2
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 10
-
-
-
diff --git a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml
deleted file mode 100644
index 45a1eed7..00000000
--- a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml
+++ /dev/null
@@ -1,985 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- PopupBG
-
- 0
- 0
- -1,00
- 1280
- 720
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 0
- 0
- 0,00
- 100
- 100
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TITLE
-
-
-
-
-
-
- 640
- 515
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_NEXT_PLAYER
-
-
-
-
-
-
- 640
- 520
-
- 0,00
-
- 44
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_FINISH
-
-
-
-
-
-
- 640
- 575
-
- 0,00
-
- 31
-
- 770
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 40
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_POS
-
-
-
-
-
-
- 50
- 102
-
- 0,00
-
- 27
-
- 130
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_PLAYERNAME
-
-
-
-
-
-
- 260
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_NUMPLAYED
-
-
-
-
-
-
- 340
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_WON
-
-
-
-
-
-
- 490
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_SINGPOINTS
-
-
-
-
-
-
- 590
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_GAMEPOINTS
-
-
-
-
-
-
- 0
- 0
-
- 0,00
-
- 27
-
- 100
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 0
- 0
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 660
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 0
- 0
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 640
- 265
-
- -1,01
-
- 27
-
- 380
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_POPUP_REALLYEXIT
-
-
-
-
-
-
- Button
-
- Button
-
- 1030
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT_ROUND
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 100
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 100
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_EXIT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 665
- 360
- -1,01
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_YES
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 465
- 360
- -1,01
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NO
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- ScrollUp
-
- ScrollUp
-
- 281
- 94
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- ScrollDown
-
- ScrollDown
-
- 281
- 515
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- ScrollUp
-
- ScrollUp
-
- 954
- 94
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- ScrollDown
-
- ScrollDown
-
- 954
- 515
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml
deleted file mode 100644
index 1715fc94..00000000
--- a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml
+++ /dev/null
@@ -1,607 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENNAMES_TITLE
-
-
-
-
-
-
- Button
-
- Button
-
- 985
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 145
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 565
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENNAMES_BUTTON_RANDOM
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Plus
-
- Plus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Minus
-
- Minus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Plus
-
- Plus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Minus
-
- Minus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 40
- 100
- 0,00
- 1200
- 50
-
- 45
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
- Outline
-
- Bold
-
- 2
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlidePlayer
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlidePlayer
-
- 40
- 160
- 0,00
- 1200
- 150
-
- 45
- 210
- 0,00
- 40
- 40
-
- 1170
- 210
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
- -5,00
-
- 205,33
-
- Outline
-
- Bold
-
- 8
-
-
-
- 42
- 327
- 0,00
- 1200
- 393
-
- CoverTile
-
-
- 1,00
- 1,00
- 1,00
- 0,20
-
- PlayerSelector
-
-
-
- 100
- 100
-
- 10
- 2
-
- 20,71
- 30,00
-
-
-
- 2,0
-
- Outline
-
- TextColor
-
-
-
- 17
-
-
-
-
-
diff --git a/Output/PartyModes/Challenge/Textures/Button.png b/Output/PartyModes/Challenge/Textures/Button.png
deleted file mode 100644
index 58685b3e..00000000
Binary files a/Output/PartyModes/Challenge/Textures/Button.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/CoverTile.png b/Output/PartyModes/Challenge/Textures/CoverTile.png
deleted file mode 100644
index 7db093e7..00000000
Binary files a/Output/PartyModes/Challenge/Textures/CoverTile.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/Invisible.png b/Output/PartyModes/Challenge/Textures/Invisible.png
deleted file mode 100644
index b2ff36e9..00000000
Binary files a/Output/PartyModes/Challenge/Textures/Invisible.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/Menu.png b/Output/PartyModes/Challenge/Textures/Menu.png
deleted file mode 100644
index 25fc125e..00000000
Binary files a/Output/PartyModes/Challenge/Textures/Menu.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/Minus.png b/Output/PartyModes/Challenge/Textures/Minus.png
deleted file mode 100644
index 9bdede57..00000000
Binary files a/Output/PartyModes/Challenge/Textures/Minus.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/PlayerSelector.png b/Output/PartyModes/Challenge/Textures/PlayerSelector.png
deleted file mode 100644
index c57ab300..00000000
Binary files a/Output/PartyModes/Challenge/Textures/PlayerSelector.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/Plus.png b/Output/PartyModes/Challenge/Textures/Plus.png
deleted file mode 100644
index 5b813c53..00000000
Binary files a/Output/PartyModes/Challenge/Textures/Plus.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/Popup.png b/Output/PartyModes/Challenge/Textures/Popup.png
deleted file mode 100644
index 80868001..00000000
Binary files a/Output/PartyModes/Challenge/Textures/Popup.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/ScrollDown.png b/Output/PartyModes/Challenge/Textures/ScrollDown.png
deleted file mode 100644
index 94bd2e14..00000000
Binary files a/Output/PartyModes/Challenge/Textures/ScrollDown.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/ScrollUp.png b/Output/PartyModes/Challenge/Textures/ScrollUp.png
deleted file mode 100644
index c3b4c6b9..00000000
Binary files a/Output/PartyModes/Challenge/Textures/ScrollUp.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/SelectSlide.png b/Output/PartyModes/Challenge/Textures/SelectSlide.png
deleted file mode 100644
index 46b86a23..00000000
Binary files a/Output/PartyModes/Challenge/Textures/SelectSlide.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/SelectSlideArrowLeft.png b/Output/PartyModes/Challenge/Textures/SelectSlideArrowLeft.png
deleted file mode 100644
index 313fe280..00000000
Binary files a/Output/PartyModes/Challenge/Textures/SelectSlideArrowLeft.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/SelectSlideArrowRight.png b/Output/PartyModes/Challenge/Textures/SelectSlideArrowRight.png
deleted file mode 100644
index 7dfd68c0..00000000
Binary files a/Output/PartyModes/Challenge/Textures/SelectSlideArrowRight.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/SelectSlidePlayer.png b/Output/PartyModes/Challenge/Textures/SelectSlidePlayer.png
deleted file mode 100644
index 4fb9a6df..00000000
Binary files a/Output/PartyModes/Challenge/Textures/SelectSlidePlayer.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/Skin.xml b/Output/PartyModes/Challenge/Textures/Skin.xml
deleted file mode 100644
index b2ea588c..00000000
--- a/Output/PartyModes/Challenge/Textures/Skin.xml
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
- 3
-
- Blue
- brunzel
- 0
- 1
-
-
-
- 0,000
- 0,000
- 0,750
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,300
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 0,300
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 1,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 1,000
- 1,000
- 1,000
- 1,000
-
-
- 1,000
- 1,000
- 1,000
- 0,000
-
-
-
- [Blue]BG_Default.png
-
-
- CoverTile.png
- SelectSlide.png
- SelectSlidePlayer.png
- SelectSlideArrowLeft.png
- SelectSlideArrowRight.png
- Popup.png
- ScrollUp.png
- ScrollDown.png
- Invisible.png
- PlayerSelector.png
- Plus.png
- Minus.png
-
-
- [Blue]BG_Video.mp4
-
-
diff --git a/Output/PartyModes/Challenge/Textures/[Blue]BG_Default.png b/Output/PartyModes/Challenge/Textures/[Blue]BG_Default.png
deleted file mode 100644
index 53bd3603..00000000
Binary files a/Output/PartyModes/Challenge/Textures/[Blue]BG_Default.png and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Textures/[Blue]BG_Video.mp4 b/Output/PartyModes/Challenge/Textures/[Blue]BG_Video.mp4
deleted file mode 100644
index c4fc7b24..00000000
Binary files a/Output/PartyModes/Challenge/Textures/[Blue]BG_Video.mp4 and /dev/null differ
diff --git a/Output/PartyModes/Challenge/Theme.xml b/Output/PartyModes/Challenge/Theme.xml
deleted file mode 100644
index 7a106892..00000000
--- a/Output/PartyModes/Challenge/Theme.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
- 5
-
- Ambient
- brunzel
- Textures
- 0
- 1
-
-
\ No newline at end of file
diff --git a/Output/PartyModes/Challenge/Themes/Default.xml b/Output/PartyModes/Challenge/Themes/Default.xml
new file mode 100644
index 00000000..5999e8cc
--- /dev/null
+++ b/Output/PartyModes/Challenge/Themes/Default.xml
@@ -0,0 +1,10 @@
+
+
+ 5
+
+ Default
+ brunzel
+ 0
+ 1
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/Challenge/Themes/Default/Default.xml b/Output/PartyModes/Challenge/Themes/Default/Default.xml
new file mode 100644
index 00000000..f4299579
--- /dev/null
+++ b/Output/PartyModes/Challenge/Themes/Default/Default.xml
@@ -0,0 +1,16 @@
+
+
+ 4
+
+ Default
+ brunzel
+ 0
+ 1
+
+
+
+
+
+
+
+
diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml
new file mode 100644
index 00000000..da365e48
--- /dev/null
+++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml
@@ -0,0 +1,295 @@
+
+
+
+ PartyScreenChallengeConfig
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENCONFIG_TITLE
+
+
+ 75
+ 105
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMPLAYERS
+
+
+ 75
+ 165
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMMICS
+
+
+ 75
+ 225
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMROUNDS
+
+
+
+
+
+
+
+
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 9
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 2
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 10
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml
new file mode 100644
index 00000000..3edf6ca5
--- /dev/null
+++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml
@@ -0,0 +1,557 @@
+
+
+
+ PartyScreenChallengeMain
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+ PopupBG
+
+
+ 0
+ 0
+ 1280
+ 720
+ -1
+
+
+
+
+
+
+ 0
+ 0
+ 100
+ 100
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_TITLE
+
+
+ 40
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_POS
+
+
+ 50
+ 102
+ 0
+ 27
+ 130
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_PLAYERNAME
+
+
+ 260
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_NUMPLAYED
+
+
+ 340
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_WON
+
+
+ 490
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_SINGPOINTS
+
+
+ 590
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_GAMEPOINTS
+
+
+ 0
+ 0
+ 0
+ 27
+ 100
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 265
+ -1.01
+ 27
+ 380
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_POPUP_REALLYEXIT
+
+
+ 660
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ 1)
+
+
+ 0
+ 0
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 0
+ 0
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 520
+ 0
+ 44
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_FINISH
+
+
+ 640
+ 575
+ 0
+ 31
+ 770
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 515
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_NEXT_PLAYER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml
new file mode 100644
index 00000000..a3bd1919
--- /dev/null
+++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml
@@ -0,0 +1,387 @@
+
+
+
+ PartyScreenChallengeNames
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENNAMES_TITLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 100
+ 1200
+ 50
+ 0
+
+
+ 45
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 2
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlidePlayer
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 160
+ 1200
+ 150
+ 0
+
+
+ 45
+ 210
+ 40
+ 40
+ 0
+
+
+ 1170
+ 210
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ -5
+ 205.33
+ Outline
+ Bold
+ 8
+
+
+
+
+
+
+ 42
+ 327
+ 1200
+ 393
+ 0
+
+ CoverTile
+
+ 1
+ 1
+ 1
+ 0.2
+
+ PlayerSelector
+
+ 100
+ 100
+ 10
+ 2
+ 20.71
+ 30
+
+ 2
+ 17
+ Outline
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/ChallengeMedley/Languages/Italian.xml b/Output/PartyModes/ChallengeMedley/Languages/Italian.xml
index 7247406d..b3beee0e 100644
--- a/Output/PartyModes/ChallengeMedley/Languages/Italian.xml
+++ b/Output/PartyModes/ChallengeMedley/Languages/Italian.xml
@@ -1,16 +1,30 @@
Italiano
+ Sfida in Modalità Medley
+ Gioca alcuni turni di sfida usando solo un gruppo di 5 canzoni come Medley.
+ Per tutti quelli interessati a scontrarsi con duelli di Medley.
Prossimo
Indietro
Inizia
Esci
Si
No
+ Prossimo Turno
+ Sfida in Modalità Medley: Configurazione
+ Numero di giocatori
+ Numero di microfoni
+ Numero di Turni
+ Sfida in Modalità Medley: Scegli il Giocatore
Selezione casuale
+ Sfida in Modalità Medley: Panoramica
Pos
Nome
+ Turni
Vittorie
+ Punti Canto
Punteggio
Vuoi davvero uscire?
+ Giocatore del prossimo turno:
+ Tutti i turni di canto completati! E il vincitore è...
diff --git a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyConfig.xml b/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyConfig.xml
deleted file mode 100644
index 31c764e5..00000000
--- a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyConfig.xml
+++ /dev/null
@@ -1,458 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_TITLE
-
-
-
-
-
-
- 75
- 105
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMPLAYERS
-
-
-
-
-
-
- 75
- 165
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMMICS
-
-
-
-
-
-
- 75
- 225
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMROUNDS
-
-
-
-
-
-
- Button
-
- Button
-
- 985
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 145
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 9
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 2
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 10
-
-
-
diff --git a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyMain.xml b/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyMain.xml
deleted file mode 100644
index ca6ca079..00000000
--- a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyMain.xml
+++ /dev/null
@@ -1,985 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- PopupBG
-
- 0
- 0
- -1,00
- 1280
- 720
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 0
- 0
- 0,00
- 100
- 100
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TITLE
-
-
-
-
-
-
- 640
- 515
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_NEXT_PLAYER
-
-
-
-
-
-
- 640
- 520
-
- 0,00
-
- 44
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_FINISH
-
-
-
-
-
-
- 640
- 575
-
- 0,00
-
- 31
-
- 770
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 40
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_POS
-
-
-
-
-
-
- 50
- 102
-
- 0,00
-
- 27
-
- 130
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_PLAYERNAME
-
-
-
-
-
-
- 260
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_NUMPLAYED
-
-
-
-
-
-
- 340
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_WON
-
-
-
-
-
-
- 490
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_SINGPOINTS
-
-
-
-
-
-
- 590
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TABLE_GAMEPOINTS
-
-
-
-
-
-
- 0
- 0
-
- 0,00
-
- 27
-
- 100
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 0
- 0
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 660
- 102
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 0
- 0
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 640
- 265
-
- -1,01
-
- 27
-
- 380
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_POPUP_REALLYEXIT
-
-
-
-
-
-
- Button
-
- Button
-
- 1030
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT_ROUND
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 100
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 100
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_EXIT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 665
- 360
- -1,01
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_YES
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 465
- 360
- -1,01
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NO
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- ScrollUp
-
- ScrollUp
-
- 281
- 94
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- ScrollDown
-
- ScrollDown
-
- 281
- 515
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- ScrollUp
-
- ScrollUp
-
- 954
- 94
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- ScrollDown
-
- ScrollDown
-
- 954
- 515
- -0,01
- 28
- 15
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml b/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml
deleted file mode 100644
index e6236e97..00000000
--- a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml
+++ /dev/null
@@ -1,607 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENNAMES_TITLE
-
-
-
-
-
-
- Button
-
- Button
-
- 985
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 145
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 565
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENNAMES_BUTTON_RANDOM
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Plus
-
- Plus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Minus
-
- Minus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Plus
-
- Plus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Minus
-
- Minus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 40
- 100
- 0,00
- 1200
- 50
-
- 45
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
- Outline
-
- Bold
-
- 2
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlidePlayer
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlidePlayer
-
- 40
- 160
- 0,00
- 1200
- 150
-
- 45
- 210
- 0,00
- 40
- 40
-
- 1170
- 210
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
- -5,00
-
- 205,33
-
- Outline
-
- Bold
-
- 8
-
-
-
- 42
- 327
- 0,00
- 1200
- 393
-
- CoverTile
-
-
- 1,00
- 1,00
- 1,00
- 0,20
-
- PlayerSelector
-
-
-
- 100
- 100
-
- 10
- 2
-
- 20,71
- 30,00
-
-
-
- 2,0
-
- Outline
-
- TextColor
-
-
-
- 17
-
-
-
-
-
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Button.png b/Output/PartyModes/ChallengeMedley/Textures/Button.png
deleted file mode 100644
index 58685b3e..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/Button.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/CoverTile.png b/Output/PartyModes/ChallengeMedley/Textures/CoverTile.png
deleted file mode 100644
index 7db093e7..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/CoverTile.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Invisible.png b/Output/PartyModes/ChallengeMedley/Textures/Invisible.png
deleted file mode 100644
index b2ff36e9..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/Invisible.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Menu.png b/Output/PartyModes/ChallengeMedley/Textures/Menu.png
deleted file mode 100644
index 25fc125e..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/Menu.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Minus.png b/Output/PartyModes/ChallengeMedley/Textures/Minus.png
deleted file mode 100644
index 9bdede57..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/Minus.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Plus.png b/Output/PartyModes/ChallengeMedley/Textures/Plus.png
deleted file mode 100644
index 5b813c53..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/Plus.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Popup.png b/Output/PartyModes/ChallengeMedley/Textures/Popup.png
deleted file mode 100644
index 80868001..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/Popup.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/ScrollDown.png b/Output/PartyModes/ChallengeMedley/Textures/ScrollDown.png
deleted file mode 100644
index 94bd2e14..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/ScrollDown.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/ScrollUp.png b/Output/PartyModes/ChallengeMedley/Textures/ScrollUp.png
deleted file mode 100644
index c3b4c6b9..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/ScrollUp.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/SelectSlide.png b/Output/PartyModes/ChallengeMedley/Textures/SelectSlide.png
deleted file mode 100644
index 46b86a23..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/SelectSlide.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/SelectSlideArrowLeft.png b/Output/PartyModes/ChallengeMedley/Textures/SelectSlideArrowLeft.png
deleted file mode 100644
index 313fe280..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/SelectSlideArrowLeft.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/SelectSlideArrowRight.png b/Output/PartyModes/ChallengeMedley/Textures/SelectSlideArrowRight.png
deleted file mode 100644
index 7dfd68c0..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/SelectSlideArrowRight.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/SelectSlidePlayer.png b/Output/PartyModes/ChallengeMedley/Textures/SelectSlidePlayer.png
deleted file mode 100644
index 4fb9a6df..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/SelectSlidePlayer.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Skin.xml b/Output/PartyModes/ChallengeMedley/Textures/Skin.xml
deleted file mode 100644
index e89952f1..00000000
--- a/Output/PartyModes/ChallengeMedley/Textures/Skin.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
- 3
-
- Blue
- brunzel
- 0
- 1
-
-
-
- 0,000
- 0,000
- 0,750
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,300
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 0,300
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 1,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 1,000
- 1,000
- 1,000
- 1,000
-
-
- 1,000
- 1,000
- 1,000
- 0,000
-
-
-
- [Blue]BG_Default.png
-
-
- CoverTile.png
- SelectSlide.png
- SelectSlidePlayer.png
- SelectSlideArrowLeft.png
- SelectSlideArrowRight.png
- Popup.png
- ScrollUp.png
- ScrollDown.png
- Invisible.png
- Plus.png
- Minus.png
-
-
- [Blue]BG_Video.mp4
-
-
diff --git a/Output/PartyModes/ChallengeMedley/Textures/[Blue]BG_Default.png b/Output/PartyModes/ChallengeMedley/Textures/[Blue]BG_Default.png
deleted file mode 100644
index 53bd3603..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/[Blue]BG_Default.png and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/[Blue]BG_Video.mp4 b/Output/PartyModes/ChallengeMedley/Textures/[Blue]BG_Video.mp4
deleted file mode 100644
index c4fc7b24..00000000
Binary files a/Output/PartyModes/ChallengeMedley/Textures/[Blue]BG_Video.mp4 and /dev/null differ
diff --git a/Output/PartyModes/ChallengeMedley/Theme.xml b/Output/PartyModes/ChallengeMedley/Theme.xml
deleted file mode 100644
index 7a106892..00000000
--- a/Output/PartyModes/ChallengeMedley/Theme.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
- 5
-
- Ambient
- brunzel
- Textures
- 0
- 1
-
-
\ No newline at end of file
diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default.xml b/Output/PartyModes/ChallengeMedley/Themes/Default.xml
new file mode 100644
index 00000000..5999e8cc
--- /dev/null
+++ b/Output/PartyModes/ChallengeMedley/Themes/Default.xml
@@ -0,0 +1,10 @@
+
+
+ 5
+
+ Default
+ brunzel
+ 0
+ 1
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Default.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Default.xml
new file mode 100644
index 00000000..f4299579
--- /dev/null
+++ b/Output/PartyModes/ChallengeMedley/Themes/Default/Default.xml
@@ -0,0 +1,16 @@
+
+
+ 4
+
+ Default
+ brunzel
+ 0
+ 1
+
+
+
+
+
+
+
+
diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyConfig.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyConfig.xml
new file mode 100644
index 00000000..02620808
--- /dev/null
+++ b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyConfig.xml
@@ -0,0 +1,295 @@
+
+
+
+ PartyScreenChallengeMedleyConfig
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENCONFIG_TITLE
+
+
+ 75
+ 105
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMPLAYERS
+
+
+ 75
+ 165
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMMICS
+
+
+ 75
+ 225
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMROUNDS
+
+
+
+
+
+
+
+
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 9
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 2
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 10
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyMain.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyMain.xml
new file mode 100644
index 00000000..371c3e14
--- /dev/null
+++ b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyMain.xml
@@ -0,0 +1,557 @@
+
+
+
+ PartyScreenChallengeMedleyMain
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+ PopupBG
+
+
+ 0
+ 0
+ 1280
+ 720
+ -1
+
+
+
+
+
+
+ 0
+ 0
+ 100
+ 100
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_TITLE
+
+
+ 40
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_POS
+
+
+ 50
+ 102
+ 0
+ 27
+ 130
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_PLAYERNAME
+
+
+ 260
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_NUMPLAYED
+
+
+ 340
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_WON
+
+
+ 490
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_SINGPOINTS
+
+
+ 590
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ TR_SCREENMAIN_TABLE_GAMEPOINTS
+
+
+ 0
+ 0
+ 0
+ 27
+ 100
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 265
+ -1.01
+ 27
+ 380
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_POPUP_REALLYEXIT
+
+
+ 660
+ 102
+ 0
+ 27
+ 0
+
+
+ Right
+ Center
+
+ Outline
+ 1)
+
+
+ 0
+ 0
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 0
+ 0
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 520
+ 0
+ 44
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_FINISH
+
+
+ 640
+ 575
+ 0
+ 31
+ 770
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 515
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_NEXT_PLAYER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyNames.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyNames.xml
new file mode 100644
index 00000000..72512c94
--- /dev/null
+++ b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyNames.xml
@@ -0,0 +1,387 @@
+
+
+
+ PartyScreenChallengeMedleyNames
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENNAMES_TITLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 100
+ 1200
+ 50
+ 0
+
+
+ 45
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 2
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlidePlayer
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 160
+ 1200
+ 150
+ 0
+
+
+ 45
+ 210
+ 40
+ 40
+ 0
+
+
+ 1170
+ 210
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ -5
+ 205.33
+ Outline
+ Bold
+ 8
+
+
+
+
+
+
+ 42
+ 327
+ 1200
+ 393
+ 0
+
+ CoverTile
+
+ 1
+ 1
+ 1
+ 0.2
+
+ PlayerSelector
+
+ 100
+ 100
+ 10
+ 2
+ 20.71
+ 30
+
+ 2
+ 17
+ Outline
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/TicTacToe/Languages/Italian.xml b/Output/PartyModes/TicTacToe/Languages/Italian.xml
index 9ef9c84b..b299e22a 100644
--- a/Output/PartyModes/TicTacToe/Languages/Italian.xml
+++ b/Output/PartyModes/TicTacToe/Languages/Italian.xml
@@ -1,7 +1,13 @@
Italiano
- Tic-Tac-Toe
+ Tris
+ Gioca a Tris in un modo speciale
+ Turni di gioco divertenti per strategia, abilità e fortuna
+ Prossimo
+ Indietro
+ Inizia
+ Esci
Si
No
Inizia
@@ -10,8 +16,20 @@
Playlist
Categoria
Tutte le canzoni
+ Tris: Configurazione
+ Numero di giocatori della squadra 1
+ Numero di giocatori della squadra 2
+ Numero di caselle
+ Sorgente della Canzone
+ Modalità di Gioco
+ Tris: Scegli il Giocatore
Squadra 1
Squadra 2
Selezione casuale
- Tic-Tac-Toe
+ Tris
+ Scegli una casella.
+ Prossimo giocatore
+ Vuoi veramente uscire dal Tris?
+ E il vincitore è...
+ Non c\'è nessun vincitore in questo turno...
diff --git a/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeConfig.xml b/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeConfig.xml
deleted file mode 100644
index ab0ac65f..00000000
--- a/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeConfig.xml
+++ /dev/null
@@ -1,588 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_TITLE
-
-
-
-
-
-
- 75
- 105
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_NUMFIELDS
-
-
-
-
-
-
- 75
- 165
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_SONGSOURCE
-
-
-
-
-
-
- 75
- 285
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENCONFIG_GAMEMODE
-
-
-
-
-
-
- Button
-
- Button
-
- 985
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 145
- 600
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 3
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 3
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 1
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 1
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 280
- 0,00
- 700
- 50
-
- 505
- 285
- 0,00
- 40
- 40
-
- 1170
- 285
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- 205,33
-
- Outline
-
- Bold
-
- 1
-
-
-
diff --git a/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeMain.xml b/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeMain.xml
deleted file mode 100644
index 61e5e3a3..00000000
--- a/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeMain.xml
+++ /dev/null
@@ -1,844 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- PopupBG
-
- 0
- 0
- -2,00
- 1280
- 720
-
-
- StaticColor
-
-
-
-
-
-
- PopupBG
-
- 10
- 200
- -1,00
- 100
- 100
-
-
- StaticColor
-
-
-
-
-
-
- PopupBG
-
- 1170
- 200
- -1,00
- 100
- 100
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_TITLE
-
-
-
-
-
-
- 160
- 150
-
- 0,00
-
- 35
-
-
-
- Player1
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_NEXT_PLAYER
-
-
-
-
-
-
- 1120
- 150
-
- 0,00
-
- 35
-
-
-
- Player2
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_NEXT_PLAYER
-
-
-
-
-
-
- 120
- 230
-
- 0,00
-
- 35
-
-
-
- Player1
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 1160
- 230
-
- 0,00
-
- 40
-
-
-
- Player2
-
-
- TextSColor
-
- Right
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 640
- 90
-
- 0,00
-
- 35
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 640
- 90
-
- 0,00
-
- 35
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 640
- 265
-
- -2,01
-
- 27
-
- 380
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENMAIN_POPUP_REALLYEXIT
-
-
-
-
-
-
- Random
-
- Random
-
- 10
- 320
- 0,00
- 100
- 100
-
-
- Player1Dim
-
-
- Player1
-
-
- 50
- 25
-
- 50
-
- 50
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Random
-
- Random
-
- 1170
- 320
- 0,00
- 100
- 100
-
-
- Player2Dim
-
-
- Player2
-
-
- 50
- 25
-
- 50
-
- 50
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- RepeatIcon
-
- RepeatIcon
-
- 110
- 320
- 0,00
- 100
- 100
-
-
- Player1Dim
-
-
- Player1
-
-
- 48
- 25
-
- 50
-
- 50
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- RepeatIcon
-
- RepeatIcon
-
- 1070
- 320
- 0,00
- 100
- 100
-
-
- Player2Dim
-
-
- Player2
-
-
- 48
- 25
-
- 50
-
- 50
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Button
-
- Button
-
- 1030
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT_ROUND
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 100
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 100
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_EXIT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 665
- 360
- -2,01
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_YES
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 465
- 360
- -2,01
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NO
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- CoverTile
-
- CoverTile
-
- 0
- 0
- -1,01
- 100
- 100
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeNames.xml b/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeNames.xml
deleted file mode 100644
index a968b115..00000000
--- a/Output/PartyModes/TicTacToe/Screens/PartyScreenTicTacToeNames.xml
+++ /dev/null
@@ -1,607 +0,0 @@
-
-
-
- 1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
- Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- 640
- 48
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENNAMES_TITLE
-
-
-
-
-
-
- Button
-
- Button
-
- 985
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_NEXT
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 145
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_BUTTON_BACK
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Button
-
- Button
-
- 565
- 625
- 0,00
- 150
- 50
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENNAMES_BUTTON_RANDOM
-
-
-
-
-
- 10
- 26
-
-
-
-
-
- 10
- 26
-
-
-
-
- Plus
-
- Plus
-
- 1210
- 210
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Minus
-
- Minus
-
- 1160
- 210
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Plus
-
- Plus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Minus
-
- Minus
-
- 145
- 1200
- 0,00
- 40
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 75
- 10
-
- 27
-
- 142
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlide
-
- 40
- 100
- 0,00
- 1100
- 50
-
- 45
- 105
- 0,00
- 40
- 40
-
- 1050
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
- Outline
-
- Bold
-
- 2
-
-
-
- Invisible
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlidePlayer
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
- SelectSlidePlayer
-
- 40
- 160
- 0,00
- 1100
- 150
-
- 45
- 210
- 0,00
- 40
- 40
-
- 1050
- 210
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
- -5,00
-
- 205,33
-
- Outline
-
- Bold
-
- 8
-
-
-
- 42
- 327
- 0,00
- 1200
- 393
-
- CoverTile
-
-
- 1,00
- 1,00
- 1,00
- 0,20
-
- PlayerSelector
-
-
-
- 100
- 100
-
- 10
- 2
-
- 20,71
- 30,00
-
-
-
- 2,0
-
- Outline
-
- TextColor
-
-
-
- 17
-
-
-
-
-
diff --git a/Output/PartyModes/TicTacToe/Textures/Button.png b/Output/PartyModes/TicTacToe/Textures/Button.png
deleted file mode 100644
index 58685b3e..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Button.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/CoverTile.png b/Output/PartyModes/TicTacToe/Textures/CoverTile.png
deleted file mode 100644
index 7db093e7..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/CoverTile.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Invisible.png b/Output/PartyModes/TicTacToe/Textures/Invisible.png
deleted file mode 100644
index b2ff36e9..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Invisible.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Menu.png b/Output/PartyModes/TicTacToe/Textures/Menu.png
deleted file mode 100644
index 25fc125e..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Menu.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Minus.png b/Output/PartyModes/TicTacToe/Textures/Minus.png
deleted file mode 100644
index 9bdede57..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Minus.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/PlayerSelector.png b/Output/PartyModes/TicTacToe/Textures/PlayerSelector.png
deleted file mode 100644
index c57ab300..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/PlayerSelector.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Plus.png b/Output/PartyModes/TicTacToe/Textures/Plus.png
deleted file mode 100644
index 5b813c53..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Plus.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Popup.png b/Output/PartyModes/TicTacToe/Textures/Popup.png
deleted file mode 100644
index 80868001..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Popup.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Random.png b/Output/PartyModes/TicTacToe/Textures/Random.png
deleted file mode 100644
index f19c9dc3..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/Random.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/RepeatIcon.png b/Output/PartyModes/TicTacToe/Textures/RepeatIcon.png
deleted file mode 100644
index ecf82df1..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/RepeatIcon.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/ScrollDown.png b/Output/PartyModes/TicTacToe/Textures/ScrollDown.png
deleted file mode 100644
index 94bd2e14..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/ScrollDown.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/ScrollUp.png b/Output/PartyModes/TicTacToe/Textures/ScrollUp.png
deleted file mode 100644
index c3b4c6b9..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/ScrollUp.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/SelectSlide.png b/Output/PartyModes/TicTacToe/Textures/SelectSlide.png
deleted file mode 100644
index 46b86a23..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/SelectSlide.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/SelectSlideArrowLeft.png b/Output/PartyModes/TicTacToe/Textures/SelectSlideArrowLeft.png
deleted file mode 100644
index 313fe280..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/SelectSlideArrowLeft.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/SelectSlideArrowRight.png b/Output/PartyModes/TicTacToe/Textures/SelectSlideArrowRight.png
deleted file mode 100644
index 7dfd68c0..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/SelectSlideArrowRight.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/SelectSlidePlayer.png b/Output/PartyModes/TicTacToe/Textures/SelectSlidePlayer.png
deleted file mode 100644
index 4fb9a6df..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/SelectSlidePlayer.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/Skin.xml b/Output/PartyModes/TicTacToe/Textures/Skin.xml
deleted file mode 100644
index 9145b6bf..00000000
--- a/Output/PartyModes/TicTacToe/Textures/Skin.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-
-
- 3
-
- Blue
- brunzel
- 0
- 1
-
-
-
- 0,000
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,000
- 0,000
- 0,500
-
-
- 0,000
- 1,000
- 0,000
- 0,500
-
-
- 0,500
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,800
- 0,000
- 0,500
-
-
- 1,000
- 0,000
- 0,500
- 0,500
-
-
- 0,000
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,000
- 0,000
- 0,400
-
-
- 0,000
- 1,000
- 0,000
- 0,400
-
-
- 0,500
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,800
- 0,000
- 0,400
-
-
- 1,000
- 0,000
- 0,500
- 0,400
-
-
- 0,000
- 0,000
- 0,750
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,300
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 0,300
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 1,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 1,000
- 1,000
- 1,000
- 1,000
-
-
- 1,000
- 1,000
- 1,000
- 0,000
-
-
-
- [Blue]BG_Default.png
-
-
- CoverTile.png
- SelectSlide.png
- SelectSlidePlayer.png
- SelectSlideArrowLeft.png
- SelectSlideArrowRight.png
- Popup.png
- RepeatIcon.png
- Random.png
- ScrollUp.png
- ScrollDown.png
- Invisible.png
- PlayerSelector.png
- Plus.png
- Minus.png
-
-
- [Blue]BG_Video.mp4
-
-
diff --git a/Output/PartyModes/TicTacToe/Textures/[Blue]BG_Default.png b/Output/PartyModes/TicTacToe/Textures/[Blue]BG_Default.png
deleted file mode 100644
index 53bd3603..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/[Blue]BG_Default.png and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Textures/[Blue]BG_Video.mp4 b/Output/PartyModes/TicTacToe/Textures/[Blue]BG_Video.mp4
deleted file mode 100644
index c4fc7b24..00000000
Binary files a/Output/PartyModes/TicTacToe/Textures/[Blue]BG_Video.mp4 and /dev/null differ
diff --git a/Output/PartyModes/TicTacToe/Theme.xml b/Output/PartyModes/TicTacToe/Theme.xml
deleted file mode 100644
index 7a106892..00000000
--- a/Output/PartyModes/TicTacToe/Theme.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
- 5
-
- Ambient
- brunzel
- Textures
- 0
- 1
-
-
\ No newline at end of file
diff --git a/Output/PartyModes/TicTacToe/Themes/Default.xml b/Output/PartyModes/TicTacToe/Themes/Default.xml
new file mode 100644
index 00000000..5999e8cc
--- /dev/null
+++ b/Output/PartyModes/TicTacToe/Themes/Default.xml
@@ -0,0 +1,10 @@
+
+
+ 5
+
+ Default
+ brunzel
+ 0
+ 1
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Default.xml b/Output/PartyModes/TicTacToe/Themes/Default/Default.xml
new file mode 100644
index 00000000..f4299579
--- /dev/null
+++ b/Output/PartyModes/TicTacToe/Themes/Default/Default.xml
@@ -0,0 +1,16 @@
+
+
+ 4
+
+ Default
+ brunzel
+ 0
+ 1
+
+
+
+
+
+
+
+
diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml
new file mode 100644
index 00000000..1d02431f
--- /dev/null
+++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml
@@ -0,0 +1,379 @@
+
+
+
+ PartyScreenTicTacToeConfig
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENCONFIG_TITLE
+
+
+ 75
+ 105
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_NUMFIELDS
+
+
+ 75
+ 165
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_SONGSOURCE
+
+
+ 75
+ 285
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENCONFIG_GAMEMODE
+
+
+
+
+
+
+
+
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 3
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 3
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 1
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 1
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 500
+ 280
+ 700
+ 50
+ 0
+
+
+ 505
+ 285
+ 40
+ 40
+ 0
+
+
+ 1170
+ 285
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 1
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml
new file mode 100644
index 00000000..f4dd7cad
--- /dev/null
+++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml
@@ -0,0 +1,497 @@
+
+
+
+ PartyScreenTicTacToeMain
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+ PopupBG
+
+
+ 0
+ 0
+ 1280
+ 720
+ -2
+
+
+
+ PopupBG
+
+
+ 10
+ 200
+ 100
+ 100
+ -1
+
+
+
+ PopupBG
+
+
+ 1170
+ 200
+ 100
+ 100
+ -1
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_TITLE
+
+
+ 640
+ 265
+ -2.01
+ 27
+ 380
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_POPUP_REALLYEXIT
+
+
+ 640
+ 90
+ 0
+ 35
+ 0
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 90
+ 0
+ 35
+ 0
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 160
+ 150
+ 0
+ 35
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_NEXT_PLAYER
+
+
+ 1120
+ 150
+ 0
+ 35
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_NEXT_PLAYER
+
+
+ 120
+ 230
+ 0
+ 35
+ 0
+
+
+ Left
+ Center
+
+ Outline
+
+
+
+ 1160
+ 230
+ 0
+ 40
+ 0
+
+
+ Right
+ Center
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml
new file mode 100644
index 00000000..df5bc5db
--- /dev/null
+++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml
@@ -0,0 +1,387 @@
+
+
+
+ PartyScreenTicTacToeNames
+ 1
+
+
+
+ Video
+
+
+ BG_Default
+
+
+
+
+
+ Menu
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+ 640
+ 48
+ 0
+ 27
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENNAMES_TITLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 100
+ 1100
+ 50
+ 0
+
+
+ 45
+ 105
+ 40
+ 40
+ 0
+
+
+ 1050
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
+ Outline
+ Bold
+ 2
+
+
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlidePlayer
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 160
+ 1100
+ 150
+ 0
+
+
+ 45
+ 210
+ 40
+ 40
+ 0
+
+
+ 1050
+ 210
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ -5
+ 205.33
+ Outline
+ Bold
+ 8
+
+
+
+
+
+
+ 42
+ 327
+ 1200
+ 393
+ 0
+
+ CoverTile
+
+ 1
+ 1
+ 1
+ 0.2
+
+ PlayerSelector
+
+ 100
+ 100
+ 10
+ 2
+ 20.71
+ 30
+
+ 2
+ 17
+ Outline
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Profiles/guest1.xml b/Output/Profiles/guest1.xml
index 4a528851..92f0b29d 100644
--- a/Output/Profiles/guest1.xml
+++ b/Output/Profiles/guest1.xml
@@ -1,10 +1,8 @@
-
- Guest 1
- TR_CONFIG_EASY
- Avatar_f.png
- TR_USERROLE_GUEST
- TR_CONFIG_ON
-
+ Guest 1
+ TR_CONFIG_EASY
+ TR_USERROLE_GUEST
+ TR_CONFIG_ON
+ Avatar_f.png
\ No newline at end of file
diff --git a/Output/Profiles/guest2.xml b/Output/Profiles/guest2.xml
index 15437dc4..55c2c971 100644
--- a/Output/Profiles/guest2.xml
+++ b/Output/Profiles/guest2.xml
@@ -1,10 +1,8 @@
-
- Guest 2
- TR_CONFIG_EASY
- Avatar_f.png
- TR_USERROLE_GUEST
- TR_CONFIG_ON
-
+ Guest 2
+ TR_CONFIG_EASY
+ TR_USERROLE_GUEST
+ TR_CONFIG_ON
+ Avatar_f.png
\ No newline at end of file
diff --git a/Output/Profiles/guest3.xml b/Output/Profiles/guest3.xml
index ad1d56f6..ad3c3eb5 100644
--- a/Output/Profiles/guest3.xml
+++ b/Output/Profiles/guest3.xml
@@ -1,10 +1,8 @@
-
- Guest 3
- TR_CONFIG_EASY
- Avatar_m.png
- TR_USERROLE_NORMAL
- TR_CONFIG_ON
-
+ Guest 3
+ TR_CONFIG_EASY
+ TR_USERROLE_NORMAL
+ TR_CONFIG_ON
+ Avatar_m.png
\ No newline at end of file
diff --git a/Output/RequiredSkinElements.xml b/Output/RequiredSkinElements.xml
new file mode 100644
index 00000000..7899e53d
--- /dev/null
+++ b/Output/RequiredSkinElements.xml
@@ -0,0 +1,48 @@
+
+
+
+ BG_Default
+ Menu
+ Button
+ CoverTile
+ SelectSlide
+ SelectSlidePlayer
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ PopupBG
+ Random
+ ScrollUp
+ ScrollDown
+ PlayerSelector
+ Plus
+ Minus
+ RepeatIcon
+
+
+ BG_Video
+
+
+ Player1
+ Player2
+ Player3
+ Player4
+ Player5
+ Player6
+ BackgroundColor
+ StaticColor
+ StaticWarningColor
+ ButtonColor
+ ButtonSelColor
+ ButtonTextColor
+ ButtonTextSelColor
+ SelectSlideColor
+ SelectSlideSelColor
+ ArrowColor
+ ArrowSelColor
+ TextColor
+ TextSelColor
+ TextWarningColor
+ Visible
+ Invisible
+
+
diff --git a/Output/Themes/Ambient.xml b/Output/Themes/Ambient.xml
index 28fbc49b..91b0c674 100644
--- a/Output/Themes/Ambient.xml
+++ b/Output/Themes/Ambient.xml
@@ -4,14 +4,13 @@
Ambient
bohning
- Ambient
- 0
- 2
+ 0
+ 2
Cursor
- 40,000
- 40,000
- StaticColor
+ 40
+ 40
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Invisible.png b/Output/Themes/Ambient/Invisible.png
deleted file mode 100644
index b2ff36e9..00000000
Binary files a/Output/Themes/Ambient/Invisible.png and /dev/null differ
diff --git a/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml b/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml
index a1e0b31f..f4300e82 100644
--- a/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml
+++ b/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml
@@ -1,460 +1,275 @@
-
-
-
+
+
+
+ PopupScreenPlayerControl
1
-
-
+
+
+
+
Menu
-
- 49
- 0
- 0,00
- 1181
- 42
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 49
+ 0
+ 1181
+ 42
+ 0
+
+
+
CoverBackground
-
- 55
- 2
- 0,00
- 38
- 38
-
-
- Visible
-
-
-
-
-
-
+
+
+ 55
+ 2
+ 38
+ 38
+ 0
+
+
+
+
+
410
8
-
- 0,00
-
+ 0
27
-
769
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml b/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml
index 6bf09478..dd0d120f 100644
--- a/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml
+++ b/Output/Themes/Ambient/Screens/PopupScreenServerQR.xml
@@ -1,315 +1,191 @@
-
-
-
+
+
+
+ PopupScreenServerQR
1
-
-
+
+
+
+
SongMenuBG
-
- 0
- 0
- -1,99
- 1280
- 720
-
-
- 1,00
- 1,00
- 1,00
- 0,80
-
-
-
-
-
-
+
+ 1
+ 1
+ 1
+ 0.8
+
+
+ 0
+ 0
+ 1280
+ 720
+ -1.99
+
+
+
Menu
-
- 490
- 210
- -2,00
- 300
- 300
-
-
- Visible
-
-
-
-
-
-
+
+
+ 490
+ 210
+ 300
+ 300
+ -2
+
+
+
Menu
-
- 25
- 25
- -2,00
- 200
- 200
-
-
- Visible
-
-
-
-
-
-
+
+
+ 25
+ 25
+ 200
+ 200
+ -2
+
+
+
Menu
-
- 1055
- 25
- -2,00
- 200
- 200
-
-
- Visible
-
-
-
-
-
-
+
+
+ 1055
+ 25
+ 200
+ 200
+ -2
+
+
+
Menu
-
- 25
- 495
- -2,00
- 200
- 200
-
-
- Visible
-
-
-
-
-
-
+
+
+ 25
+ 495
+ 200
+ 200
+ -2
+
+
+
Menu
-
- 1055
- 495
- -2,00
- 200
- 200
-
-
- Visible
-
-
-
-
-
-
- 640
- 515
-
- -2,00
-
- 35
-
- 300
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
- 640
- 265
-
- -2,00
-
- 45
-
- 600
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_SCREENPSERVERQR_NOTRUNNING
-
-
-
-
-
-
+
+
+ 1055
+ 495
+ 200
+ 200
+ -2
+
+
+
+
+
640
180
-
- -2,00
-
+ -2
35
-
300
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPSERVERQR_ADDRESS
-
-
-
-
-
-
+
+
125
230
-
- -2,00
-
+ -2
27
-
200
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
Android
-
-
-
-
-
-
+
+
1155
230
-
- -2,00
-
+ -2
27
-
200
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
Symbian
-
-
-
-
-
-
+
+
125
460
-
- -2,00
-
+ -2
27
-
200
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
WebOS
-
-
-
-
-
-
+
+
1155
460
-
- -2,00
-
+ -2
27
-
200
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
Windows Phone
-
-
-
-
-
-
+
+
+ 640
+ 515
+ -2
+ 35
+ 300
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+ 640
+ 265
+ -2
+ 45
+ 600
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENPSERVERQR_NOTRUNNING
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/PopupScreenVolumeControl.xml b/Output/Themes/Ambient/Screens/PopupScreenVolumeControl.xml
index 80b47b72..1bb2bfdd 100644
--- a/Output/Themes/Ambient/Screens/PopupScreenVolumeControl.xml
+++ b/Output/Themes/Ambient/Screens/PopupScreenVolumeControl.xml
@@ -1,121 +1,90 @@
-
-
-
+
+
+
+ PopupScreenVolumeControl
1
-
-
+
+
+
+
Menu
-
- 1065
- 672
- -2,00
- 225
- 48
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 1065
+ 672
+ 225
+ 48
+ -2
+
+
+
+
+
1067
682
-
- -2,00
-
+ -2
27
-
80
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPVOLUMECONTROL_VOLUME
-
-
-
-
-
-
- Invisible
-
+
+
+
+
+
+
+
+
Minus
-
Plus
-
- Invisible
-
+
Minus
-
Plus
-
- Invisible
-
- 1090
- 680
- -2,00
- 200
- 50
-
- 1195
- 682
- -2,00
- 30
- 30
-
- 1240
- 682
- -2,00
- 30
- 30
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
- -15,00
-
- -8,00
-
- 500,00
-
+
+ 1090
+ 680
+ 200
+ 50
+ -2
+
+
+ 1195
+ 682
+ 30
+ 30
+ -2
+
+
+ 1240
+ 682
+ 30
+ 30
+ -2
+
+
+
+
+
+
+
+ 27
+ -15
+ -8
+ 500
Outline
-
Bold
-
1
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenHighscore.xml b/Output/Themes/Ambient/Screens/ScreenHighscore.xml
index 2af500cc..4e997947 100644
--- a/Output/Themes/Ambient/Screens/ScreenHighscore.xml
+++ b/Output/Themes/Ambient/Screens/ScreenHighscore.xml
@@ -1,1486 +1,795 @@
-
-
-
+
+
+
+ ScreenHighscore
2
-
-
+
+
+
Video
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
TextBG
-
- 50
- 90
- 0,00
- 1180
- 610
-
-
- Invisible
-
-
-
-
-
-
+
+
+ 50
+ 90
+ 1180
+ 610
+ 0
+
+
+
+
+
60
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENHIGHSCORE_HIGHSCORE
-
-
-
-
-
-
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1220
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
103
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
160
-
- 0,00
-
+ 0
42
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
223
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
283
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
343
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
403
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
463
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
523
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
583
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
120
643
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
103
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
163
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
223
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
283
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
343
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
403
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
463
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
523
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
583
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
200
643
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
103
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
163
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
223
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
283
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
343
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
403
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
463
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
523
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
583
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
800
643
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
103
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
163
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
223
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
283
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
343
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
403
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
463
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
523
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
583
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1000
643
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
Star
-
- 80
- 100
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 100
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 160
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 160
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 220
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 220
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 280
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 280
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 340
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 340
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 400
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 400
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 460
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 460
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 520
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 520
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 580
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 580
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
+
+
Star
-
- 80
- 640
- 1,00
- 1080
- 35
-
-
- StaticColor
-
+
+ 80
+ 640
+ 1080
+ 35
+ 1
+
+
Star
-
- 25,00
-
+ 25
250
-
-
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenLoad.xml b/Output/Themes/Ambient/Screens/ScreenLoad.xml
index 36041ea4..164888a9 100644
--- a/Output/Themes/Ambient/Screens/ScreenLoad.xml
+++ b/Output/Themes/Ambient/Screens/ScreenLoad.xml
@@ -1,120 +1,83 @@
-
-
-
+
+
+
+ ScreenLoad
2
-
-
+
+
+
Texture
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 50
- 644
- 0,00
- 1195
- 50
-
-
- Invisible
-
-
-
-
-
-
+
+
+ 50
+ 644
+ 1195
+ 50
+ 0
+
+
+
+
+
60
655
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
Center
-
-
Outline
-
TR_SCREENLOAD_LOADING
-
-
-
-
-
-
- 640
- 305
-
- 0,00
-
- 101
-
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
- TR_PROGRAM_NAME
-
-
-
-
-
-
+
+
240
655
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
Center
-
-
Outline
-
-
-
-
-
-
-
-
+ Gesamt: 168 Lieder (168 geladen)
+
+
+ 640
+ 305
+ 0
+ 101
+ 0
+
+
+ Center
+ Center
+
+ Outline
+ TR_PROGRAM_NAME
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenMain.xml b/Output/Themes/Ambient/Screens/ScreenMain.xml
index 0d256cd2..a6f426e7 100644
--- a/Output/Themes/Ambient/Screens/ScreenMain.xml
+++ b/Output/Themes/Ambient/Screens/ScreenMain.xml
@@ -1,318 +1,256 @@
-
-
-
- 1
-
-
+
+
+
+ ScreenMain
+ 2
+
+
+
Video
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 49
- 32
- 0,00
- 1181
- 50
-
-
- Invisible
-
-
-
-
-
-
+
+
+ 49
+ 32
+ 1181
+ 50
+ 0
+
+
+
+ TextBG
+
+
+ 150
+ 610
+ 355
+ 30
+ -1.9
+
+
+
+
+
+ 10
+ 690
+ -1
+ 15
+ 0
+
+
+ Left
+ Center
+
+ Normal
+ Vocaluxe "Shining Heaven" v0.3.0 (x64) Beta (0083)
+
+
+ 320
+ 612
+ -2
+ 27
+ 355
+
+
+ Center
+ Center
+
+ Outline
+ TR_SCREENMAIN_TEXT_NOPROFILES
+
+
+
+
-
-
+ 10
+
+
+
-
-
+ 10
+
+
+
-
-
+ 10
+
+
+
-
-
+ 10
+
+
+
-
-
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenNames.xml b/Output/Themes/Ambient/Screens/ScreenNames.xml
index 5d17ebe2..fe44cdc6 100644
--- a/Output/Themes/Ambient/Screens/ScreenNames.xml
+++ b/Output/Themes/Ambient/Screens/ScreenNames.xml
@@ -1,1308 +1,817 @@
-
-
-
+
+
+
+ ScreenNames
3
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 20
- 105
- -3,00
- 108
- 108
-
-
- Visible
-
-
-
-
-
-
- Invisible
-
- 20
- 260
- -3,00
- 108
- 108
-
-
- Visible
-
-
-
-
-
-
- Invisible
-
- 20
- 415
- -3,00
- 108
- 108
-
-
- Visible
-
-
-
-
-
-
- Invisible
-
- 1152
- 105
- -3,00
- 108
- 108
-
-
- Visible
-
-
-
-
-
-
- Invisible
-
- 1152
- 260
- -3,00
- 108
- 108
-
-
- Visible
-
-
-
-
-
-
- Invisible
-
- 1152
- 415
- -3,00
- 108
- 108
-
-
- Visible
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+
+ 20
+ 105
+ 108
+ 108
+ -3
+
+
+
+
+
+
+ 20
+ 260
+ 108
+ 108
+ -3
+
+
+
+
+
+
+ 20
+ 415
+ 108
+ 108
+ -3
+
+
+
+
+
+
+ 1152
+ 105
+ 108
+ 108
+ -3
+
+
+
+
+
+
+ 1152
+ 260
+ 108
+ 108
+ -3
+
+
+
+
+
+
+ 1152
+ 415
+ 108
+ 108
+ -3
+
+
+
PlayerSelector
-
- 15
- 100
- -2,00
- 118
- 118
-
-
- Player1
-
-
-
-
-
-
+
+
+ 15
+ 100
+ 118
+ 118
+ -2
+
+
+
PlayerSelector
-
- 15
- 255
- -2,00
- 118
- 118
-
-
- Player2
-
-
-
-
-
-
+
+
+ 15
+ 255
+ 118
+ 118
+ -2
+
+
+
PlayerSelector
-
- 15
- 410
- -2,00
- 118
- 118
-
-
- Player3
-
-
-
-
-
-
+
+
+ 15
+ 410
+ 118
+ 118
+ -2
+
+
+
PlayerSelector
-
- 1147
- 100
- -2,00
- 118
- 118
-
-
- Player4
-
-
-
-
-
-
+
+
+ 1147
+ 100
+ 118
+ 118
+ -2
+
+
+
PlayerSelector
-
- 1147
- 255
- -2,00
- 118
- 118
-
-
- Player5
-
-
-
-
-
-
+
+
+ 1147
+ 255
+ 118
+ 118
+ -2
+
+
+
PlayerSelector
-
- 1147
- 410
- -2,00
- 118
- 118
-
-
- Player6
-
-
-
-
-
-
- Invisible
-
- 145
- 663
- 0,00
- 990
- 50
-
-
- StaticWarningColor
-
-
-
-
-
-
- Invisible
-
- 145
- 715
- 0,00
- 990
- 50
-
-
- StaticWarningColor
-
-
-
-
-
-
+
+
+ 1147
+ 410
+ 118
+ 118
+ -2
+
+
+
+
+
+
+ 300
+ 603
+ 685
+ 50
+ -1
+
+
+
+
+
+
+ 300
+ 654
+ 685
+ 50
+ -1
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENNAMES_MENU
-
-
-
-
-
-
+
+
640
617
-
- 0,00
-
+ -1.1
27
-
970
-
-
- TextWarningColor
-
-
- TextWarningColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
652
-
- 0,00
-
+ -1.1
27
-
970
-
-
- TextWarningColor
-
-
- TextWarningColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
74
219
-
- 0,00
-
+ 0
20
-
-
-
- Player1
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
74
374
-
- 0,00
-
+ 0
20
-
-
-
- Player2
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
74
529
-
- 0,00
-
+ 0
20
-
-
-
- Player3
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1206
219
-
- 0,00
-
+ 0
20
-
-
-
- Player4
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1206
374
-
- 0,00
-
+ 0
20
-
-
-
- Player5
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1206
529
-
- 0,00
-
+ 0
20
-
-
-
- Player6
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlidePlayer
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlidePlayer
-
- 70
- 548
- 0,00
- 1140
- 45
-
- 75
- 553
- 0,00
- 40
- 40
-
- 1170
- 553
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 186,00
-
+
+ 70
+ 548
+ 1140
+ 45
+ 0
+
+
+ 75
+ 553
+ 40
+ 40
+ 0
+
+
+ 1170
+ 553
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 186
Outline
-
Bold
-
6
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
Button
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- Button
-
- 41
- 105
- -4,00
- 88
- 20
-
- 20
- 105
- -4,01
- 20
- 20
-
- 20
- 105
- -4,01
- 20
- 20
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 20,00
-
-
-
- 86,00
-
+
+ 41
+ 105
+ 88
+ 20
+ -4
+
+
+ 20
+ 105
+ 20
+ 20
+ -4.01
+
+
+ 20
+ 105
+ 20
+ 20
+ -4.01
+
+
+
+
+
+
+
+ 20
+ 0
+ 0
+ 86
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
Button
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- Button
-
- 41
- 260
- -4,00
- 88
- 20
-
- 20
- 260
- -4,01
- 20
- 20
-
- 20
- 260
- -4,01
- 20
- 20
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 20,00
-
-
-
- 86,00
-
+
+ 41
+ 260
+ 88
+ 20
+ -4
+
+
+ 20
+ 260
+ 20
+ 20
+ -4.01
+
+
+ 20
+ 260
+ 20
+ 20
+ -4.01
+
+
+
+
+
+
+
+ 20
+ 0
+ 0
+ 86
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
Button
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- Button
-
- 41
- 415
- -4,00
- 88
- 20
-
- 20
- 415
- -4,01
- 20
- 20
-
- 20
- 415
- -4,01
- 20
- 20
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 20,00
-
-
-
- 86,00
-
+
+ 41
+ 415
+ 88
+ 20
+ -4
+
+
+ 20
+ 415
+ 20
+ 20
+ -4.01
+
+
+ 20
+ 415
+ 20
+ 20
+ -4.01
+
+
+
+
+
+
+
+ 20
+ 0
+ 0
+ 86
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
Button
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- Button
-
- 1152
- 105
- -4,00
- 88
- 20
-
- 1240
- 105
- -4,01
- 20
- 20
-
- 1240
- 105
- -4,01
- 20
- 20
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 20,00
-
-
-
- 86,00
-
+
+ 1152
+ 105
+ 88
+ 20
+ -4
+
+
+ 1240
+ 105
+ 20
+ 20
+ -4.01
+
+
+ 1240
+ 105
+ 20
+ 20
+ -4.01
+
+
+
+
+
+
+
+ 20
+ 0
+ 0
+ 86
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
Button
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- Button
-
- 1152
- 260
- -4,00
- 88
- 20
-
- 1240
- 260
- -4,01
- 20
- 20
-
- 1240
- 260
- -4,01
- 20
- 20
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 20,00
-
-
-
- 86,00
-
+
+ 1152
+ 260
+ 88
+ 20
+ -4
+
+
+ 1240
+ 260
+ 20
+ 20
+ -4.01
+
+
+ 1240
+ 260
+ 20
+ 20
+ -4.01
+
+
+
+
+
+
+
+ 20
+ 0
+ 0
+ 86
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
Button
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- Button
-
- 1152
- 415
- -4,00
- 88
- 20
-
- 1240
- 415
- -4,01
- 20
- 20
-
- 1240
- 415
- -4,01
- 20
- 20
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 20,00
-
-
-
- 86,00
-
+
+ 1152
+ 415
+ 88
+ 20
+ -4
+
+
+ 1240
+ 415
+ 20
+ 20
+ -4.01
+
+
+ 1240
+ 415
+ 20
+ 20
+ -4.01
+
+
+
+
+
+
+
+ 20
+ 0
+ 0
+ 86
Outline
-
Bold
-
1
-
-
-
- 172
- 127
- 0,00
- 945
- 393
-
+
+
+
+
+
+
+ 172
+ 127
+ 945
+ 393
+ 0
+
CoverTile
-
-
- 1,00
- 1,00
- 1,00
- 0,20
-
+
+ 1
+ 1
+ 1
+ 0.2
+
PlayerSelector
-
-
100
100
-
8
3
-
- 20,71
- 30,00
-
+ 20.71
+ 30
-
- 2,0
-
- Outline
-
- TextColor
-
-
-
+ 2
17
+ Outline
+
+
-
-
- Invisible
-
- 21
- 152
- -4,00
- 108
- 60
-
+
+
+
+
+
+ 21
+ 152
+ 108
+ 60
+ -4
+
8
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- Player1Dim2
-
-
- Player1Dim2
-
-
-
-
-
-
- Invisible
-
- 21
- 307
- -4,00
- 108
- 60
-
+ 0.4
+ 0.4
+
+
+
+
+ 21
+ 307
+ 108
+ 60
+ -4
+
8
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- Player2Dim2
-
-
- Player2Dim2
-
-
-
-
-
-
- Invisible
-
- 21
- 467
- -4,00
- 108
- 60
-
+ 0.4
+ 0.4
+
+
+
+
+ 21
+ 467
+ 108
+ 60
+ -4
+
8
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- Player3Dim2
-
-
- Player3Dim2
-
-
-
-
-
-
- Invisible
-
- 1153
- 152
- -4,00
- 108
- 60
-
+ 0.4
+ 0.4
+
+
+
+
+ 1153
+ 152
+ 108
+ 60
+ -4
+
8
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- Player4Dim2
-
-
- Player4Dim2
-
-
-
-
-
-
- Invisible
-
- 1153
- 307
- -4,00
- 108
- 60
-
+ 0.4
+ 0.4
+
+
+
+
+ 1153
+ 307
+ 108
+ 60
+ -4
+
8
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- Player5Dim2
-
-
- Player5Dim2
-
-
-
-
-
-
- Invisible
-
- 1153
- 467
- -4,00
- 108
- 60
-
+ 0.4
+ 0.4
+
+
+
+
+ 1153
+ 467
+ 108
+ 60
+ -4
+
8
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- Player6Dim2
-
-
- Player6Dim2
-
-
-
-
-
-
\ No newline at end of file
+ 0.4
+ 0.4
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Screens/ScreenOptions.xml b/Output/Themes/Ambient/Screens/ScreenOptions.xml
index de798ca2..76ca27d0 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptions.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptions.xml
@@ -1,404 +1,266 @@
-
-
-
+
+
+
+ ScreenOptions
1
-
-
+
+
+
Video
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 50
- 32
- 0,00
- 1180
- 50
-
-
- Invisible
-
-
-
-
-
-
+
+
+ 50
+ 32
+ 1180
+ 50
+ 0
+
+
+
+
+
60
43
-
- 0,00
-
+ 0
27
-
-
-
- Invisible
-
-
- Invisible
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENO_OPTIONS
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml b/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml
index 49c9551a..cd75ed75 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml
@@ -1,848 +1,529 @@
-
-
-
+
+
+
+ ScreenOptionsGame
2
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 100
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 160
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 220
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 280
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 340
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 400
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 100
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 160
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 220
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 280
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 340
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 400
+ 460
+ 50
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_OPTIONS
-
-
-
-
-
-
+
+
75
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_LANGUAGE
-
-
-
-
-
-
+
+
75
167
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_DEBUGLEVEL
-
-
-
-
-
-
+
+
75
227
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_SONGMENU
-
-
-
-
-
-
+
+
75
287
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_SONGSORTING
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_TABS
-
-
-
-
-
-
+
+
75
407
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOGAME_TIMERMODE
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 280
- 0,00
- 700
- 50
-
- 505
- 285
- 0,00
- 40
- 40
-
- 1170
- 285
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 280
+ 700
+ 50
+ 0
+
+
+ 505
+ 285
+ 40
+ 40
+ 0
+
+
+ 1170
+ 285
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 340
- 0,00
- 700
- 50
-
- 505
- 345
- 0,00
- 40
- 40
-
- 1170
- 345
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 308,00
-
+
+ 500
+ 340
+ 700
+ 50
+ 0
+
+
+ 505
+ 345
+ 40
+ 40
+ 0
+
+
+ 1170
+ 345
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 308
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 400
- 0,00
- 700
- 50
-
- 505
- 405
- 0,00
- 40
- 40
-
- 1170
- 405
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 400
+ 700
+ 50
+ 0
+
+
+ 505
+ 405
+ 40
+ 40
+ 0
+
+
+ 1170
+ 405
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml b/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml
index 2fa9d49b..4ad2bbf6 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml
@@ -1,311 +1,204 @@
-
-
-
+
+
+
+ ScreenOptionsLyrics
2
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOLYRICS_OPTIONS
-
-
-
-
-
-
+
+
75
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOLYRICS_STYLE
-
-
-
-
-
-
+
+
75
167
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOLYRICS_POSITION
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
4
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
2
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml b/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml
index 77c04934..f5696725 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml
@@ -1,838 +1,522 @@
-
-
-
+
+
+
+ ScreenOptionsRecord
4
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 100
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 160
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 220
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 280
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 340
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 145
- 530
- 0,00
- 990
- 50
-
-
- StaticWarningColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 100
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 160
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 220
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 280
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 340
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 145
+ 530
+ 990
+ 50
+ 0
+
+
+
EnergyBeam
-
- 390
- 234
- 0,00
- 100
- 16
-
-
- Visible
-
-
-
-
-
-
+
+
+ 390
+ 234
+ 100
+ 16
+ 0
+
+
+
EnergyBeam
-
- 390
- 296
- 0,00
- 100
- 16
-
-
- Visible
-
-
-
-
-
-
+
+
+ 390
+ 296
+ 100
+ 16
+ 0
+
+
+
+
+
640
55
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENORECORD_OPTIONS
-
-
-
-
-
-
+
+
75
106
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENORECORD_DEVICE
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENORECORD_MIC_DELAY
-
-
-
-
-
-
- 75
- 227
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENORECORD_CHANNEL_1
-
-
-
-
-
-
- 75
- 287
-
- 0,00
-
- 27
-
-
-
- StaticColor
-
-
- TextSColor
-
- Left
-
- Center
-
-
-
- Outline
-
- TR_SCREENORECORD_CHANNEL_2
-
-
-
-
-
-
+
+
640
537
-
- 0,00
-
+ 0
27
-
970
-
-
- TextWarningColor
-
-
- TextWarningColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENORECORD_MIC_WARNING
-
-
-
-
-
-
+
+
+ 75
+ 227
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENORECORD_CHANNEL_1
+
+
+ 75
+ 287
+ 0
+ 27
+ 0
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENORECORD_CHANNEL_2
+
+
330
227
-
- -1,00
-
+ -1
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
330
287
-
- -1,00
-
+ -1
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 616,00
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 616
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 154,00
-
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 154
Outline
-
Bold
-
7
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 280
- 0,00
- 700
- 50
-
- 505
- 285
- 0,00
- 40
- 40
-
- 1170
- 285
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 154,00
-
+
+ 500
+ 280
+ 700
+ 50
+ 0
+
+
+ 505
+ 285
+ 40
+ 40
+ 0
+
+
+ 1170
+ 285
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 154
Outline
-
Bold
-
7
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 340
- 0,00
- 700
- 50
-
- 505
- 345
- 0,00
- 40
- 40
-
- 1170
- 345
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 123,20
-
+
+ 500
+ 340
+ 700
+ 50
+ 0
+
+
+ 505
+ 345
+ 40
+ 40
+ 0
+
+
+ 1170
+ 345
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 123.2
Outline
-
Bold
-
5
-
-
-
- Invisible
-
- 50
- 400
- -1,00
- 230
- 150
-
+
+
+
+
+
+
+
+
+ 50
+ 400
+ 230
+ 150
+ -1
+
12
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- ButtonColor
-
-
- ButtonTextColor
-
-
-
+
+
- 10
26
+ 10
-
-
-
- Invisible
-
- 400
- 400
- -1,00
- 230
- 150
-
+
+
+
+
+ 400
+ 400
+ 230
+ 150
+ -1
+
12
-
- 2,00
-
+ 2
-
TR_CONFIG_OFF
-
-
- ButtonColor
-
-
- ButtonTextColor
-
-
-
+
+
- 10
26
+ 10
-
-
-
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml b/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml
index 3472b1ab..ae35c3bc 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml
@@ -1,599 +1,372 @@
-
-
-
+
+
+
+ ScreenOptionsSound
3
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOSOUND_OPTIONS
-
-
-
-
-
-
+
+
75
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOSOUND_BACKGROUNDMUSIC
-
-
-
-
-
-
+
+
75
167
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME
-
-
-
-
-
-
+
+
75
227
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE
-
-
-
-
-
-
+
+
75
287
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOSOUND_PREVIEWMUSICVOLUME
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOSOUND_GAMEMUSICVOLUME
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 500,00
-
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 500
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 280
- 0,00
- 700
- 50
-
- 505
- 285
- 0,00
- 40
- 40
-
- 1170
- 285
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 500,00
-
+
+ 500
+ 280
+ 700
+ 50
+ 0
+
+
+ 505
+ 285
+ 40
+ 40
+ 0
+
+
+ 1170
+ 285
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 500
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 340
- 0,00
- 700
- 50
-
- 505
- 345
- 0,00
- 40
- 40
-
- 1170
- 345
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 500,00
-
+
+ 500
+ 340
+ 700
+ 50
+ 0
+
+
+ 505
+ 345
+ 40
+ 40
+ 0
+
+
+ 1170
+ 345
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 500
Outline
-
Bold
-
3
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml b/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml
index a66566e2..3f0e890c 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml
@@ -1,1015 +1,628 @@
-
-
-
+
+
+
+ ScreenOptionsTheme
3
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 100
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 160
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 220
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 280
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 340
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 400
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 460
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 520
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 100
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 160
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 220
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 280
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 340
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 400
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 460
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 520
+ 460
+ 50
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_OPTIONS
-
-
-
-
-
-
+
+
75
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_THEME
-
-
-
-
-
-
+
+
75
167
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_SKIN
-
-
-
-
-
-
+
+
75
227
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_COVERTHEME
-
-
-
-
-
-
+
+
75
287
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_NOTELINES
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_TONEHELPER
-
-
-
-
-
-
+
+
75
407
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_TIMERLOOK
-
-
-
-
-
-
+
+
75
467
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_FADEINFO
-
-
-
-
-
-
+
+
75
527
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOTHEME_COVERLOADING
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 616,00
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 616
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 616,00
-
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 616
Outline
-
Bold
-
1
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 308,00
-
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 308
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 280
- 0,00
- 700
- 50
-
- 505
- 285
- 0,00
- 40
- 40
-
- 1170
- 285
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 308,00
-
+
+ 500
+ 280
+ 700
+ 50
+ 0
+
+
+ 505
+ 285
+ 40
+ 40
+ 0
+
+
+ 1170
+ 285
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 308
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 340
- 0,00
- 700
- 50
-
- 505
- 345
- 0,00
- 40
- 40
-
- 1170
- 345
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 308,00
-
+
+ 500
+ 340
+ 700
+ 50
+ 0
+
+
+ 505
+ 345
+ 40
+ 40
+ 0
+
+
+ 1170
+ 345
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 308
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 400
- 0,00
- 700
- 50
-
- 505
- 405
- 0,00
- 40
- 40
-
- 1170
- 405
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 308,00
-
+
+ 500
+ 400
+ 700
+ 50
+ 0
+
+
+ 505
+ 405
+ 40
+ 40
+ 0
+
+
+ 1170
+ 405
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 308
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 460
- 0,00
- 700
- 50
-
- 505
- 465
- 0,00
- 40
- 40
-
- 1170
- 465
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 616,00
-
+
+ 500
+ 460
+ 700
+ 50
+ 0
+
+
+ 505
+ 465
+ 40
+ 40
+ 0
+
+
+ 1170
+ 465
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 616
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 520
- 0,00
- 700
- 50
-
- 505
- 525
- 0,00
- 40
- 40
-
- 1170
- 525
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 616,00
-
+
+ 500
+ 520
+ 700
+ 50
+ 0
+
+
+ 505
+ 525
+ 40
+ 40
+ 0
+
+
+ 1170
+ 525
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 616
Outline
-
Bold
-
1
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml b/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml
index cabb55d9..b5740cc5 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml
@@ -1,816 +1,507 @@
-
-
-
+
+
+
+ ScreenOptionsVideo
5
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 100
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 160
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 220
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 550
- 460
- 0,00
- 320
- 240
-
-
- Visible
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 100
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 160
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 220
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 550
+ 460
+ 320
+ 240
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_OPTIONS
-
-
-
-
-
-
+
+
75
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_VIDEOBACKGROUNDS
-
-
-
-
-
-
+
+
75
167
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_VIDEOPREVIEW
-
-
-
-
-
-
+
+
75
227
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_VIDEOINSONGS
-
-
-
-
-
-
+
+
75
287
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_VIDEOSTOBACKGROUND
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_WEBCAMDEVICES
-
-
-
-
-
-
+
+
75
407
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEO_WEBCAMRESOLUTION
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 700
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 160
+ 700
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 220
- 0,00
- 700
- 50
-
- 505
- 225
- 0,00
- 40
- 40
-
- 1170
- 225
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 220
+ 700
+ 50
+ 0
+
+
+ 505
+ 225
+ 40
+ 40
+ 0
+
+
+ 1170
+ 225
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 280
- 0,00
- 700
- 50
-
- 505
- 285
- 0,00
- 40
- 40
-
- 1170
- 285
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 280
+ 700
+ 50
+ 0
+
+
+ 505
+ 285
+ 40
+ 40
+ 0
+
+
+ 1170
+ 285
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 340
- 0,00
- 700
- 50
-
- 505
- 345
- 0,00
- 40
- 40
-
- 1170
- 345
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 205,33
-
+
+ 500
+ 340
+ 700
+ 50
+ 0
+
+
+ 505
+ 345
+ 40
+ 40
+ 0
+
+
+ 1170
+ 345
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 205.33
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 400
- 0,00
- 700
- 50
-
- 505
- 405
- 0,00
- 40
- 40
-
- 1170
- 405
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 150,00
-
+
+ 500
+ 400
+ 700
+ 50
+ 0
+
+
+ 505
+ 405
+ 40
+ 40
+ 0
+
+
+ 1170
+ 405
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 150
Outline
-
Bold
-
3
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsVideoAdjustments.xml b/Output/Themes/Ambient/Screens/ScreenOptionsVideoAdjustments.xml
index e9ffb2eb..28b6f26d 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsVideoAdjustments.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsVideoAdjustments.xml
@@ -1,251 +1,154 @@
-
-
-
+
+
+
+ ScreenOptionsVideoAdjustments
1
-
-
+
+
+
Color
-
+
-
BG_Options
-
-
- 1,00
- 1,00
- 1,00
- 1,00
-
-
-
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+
+
+
0
0
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Top
-
+ Center
-
Outline
-
TR_SCREENOVIDEOADJUSTMENTS_TOPLEFT
-
-
-
-
-
-
+
+
1280
0
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Top
-
+ Center
-
Outline
-
TR_SCREENOVIDEOADJUSTMENTS_TOPRIGHT
-
-
-
-
-
-
+
+
0
693
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Bottom
-
+ Center
-
Outline
-
TR_SCREENOVIDEOADJUSTMENTS_BOTTOMLEFT
-
-
-
-
-
-
+
+
1280
693
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Bottom
-
+ Center
-
Outline
-
TR_SCREENOVIDEOADJUSTMENTS_BOTTOMRIGHT
-
-
-
-
-
-
+
+
640
320
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEOADJUSTMENTS_NOTES
-
-
-
-
-
-
+
+
640
360
-
- 0,00
-
+ 0
35
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENOVIDEOADJUSTMENTS_NOTESRESET
-
-
-
-
-
-
+
+
+
+
-
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenParty.xml b/Output/Themes/Ambient/Screens/ScreenParty.xml
index d725b993..de8283d4 100644
--- a/Output/Themes/Ambient/Screens/ScreenParty.xml
+++ b/Output/Themes/Ambient/Screens/ScreenParty.xml
@@ -1,656 +1,365 @@
-
-
-
+
+
+
+ ScreenParty
1
-
-
+
+
+
Video
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_TITLE
-
-
-
-
-
-
+
+
75
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_MODES
-
-
-
-
-
-
+
+
75
167
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_DESCRIPTION
-
-
-
-
-
-
+
+
75
227
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_TARGETAUDIENCE
-
-
-
-
-
-
+
+
75
287
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_NUMTEAMS
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_NUMPLAYERS
-
-
-
-
-
-
+
+
75
407
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_AUTHOR
-
-
-
-
-
-
+
+
75
467
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_VERSION
-
-
-
-
-
-
+
+
850
167
-
- 0,00
-
+ 0
27
-
600
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
850
227
-
- 0,00
-
+ 0
27
-
600
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
850
287
-
- 0,00
-
+ 0
27
-
600
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
850
347
-
- 0,00
-
+ 0
27
-
600
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
850
407
-
- 0,00
-
+ 0
27
-
600
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
850
467
-
- 0,00
-
+ 0
27
-
600
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
850
527
-
- 0,00
-
+ 0
27
-
600
-
-
- TextWarningColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPARTY_ERROR
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 100
- 0,00
- 700
- 50
-
- 505
- 105
- 0,00
- 40
- 40
-
- 1170
- 105
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 600,00
-
+
+ 500
+ 100
+ 700
+ 50
+ 0
+
+
+ 505
+ 105
+ 40
+ 40
+ 0
+
+
+ 1170
+ 105
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 600
Outline
-
Bold
-
1
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenProfiles.xml b/Output/Themes/Ambient/Screens/ScreenProfiles.xml
index 1fb4ce6f..ca84426b 100644
--- a/Output/Themes/Ambient/Screens/ScreenProfiles.xml
+++ b/Output/Themes/Ambient/Screens/ScreenProfiles.xml
@@ -1,1127 +1,694 @@
-
-
-
+
+
+
+ ScreenProfiles
3
-
-
+
+
+
Video
-
+
-
BG_Options
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 160
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 220
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 280
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 340
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 50
- 400
- 0,00
- 460
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 160
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 220
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 280
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 340
+ 460
+ 50
+ 0
+
+
+
+
+
+
+ 50
+ 400
+ 460
+ 50
+ 0
+
+
+
-
- 85
- 110
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
-
-
-
+
+
+ 85
+ 110
+ 160
+ 160
+ 0
+
+
+
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPROFILES_PROFILES
-
-
-
-
-
-
+
+
75
287
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPROFILES_PLAYERNAME
-
-
-
-
-
-
+
+
75
347
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPROFILES_GAMEDIFFICULTY
-
-
-
-
-
-
+
+
75
407
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPROFILES_AVATAR
-
-
-
-
-
-
+
+
75
467
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPROFILES_USERROLE
-
-
-
-
-
-
+
+
75
527
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENPROFILES_ACTIVE
-
-
-
-
-
-
- Invisible
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 160
- 0,00
- 710
- 50
-
- 505
- 165
- 0,00
- 40
- 40
-
- 1170
- 165
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 219,20
-
+
+ 500
+ 160
+ 710
+ 50
+ 0
+
+
+ 505
+ 165
+ 40
+ 40
+ 0
+
+
+ 1170
+ 165
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 219.2
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 340
- 0,00
- 710
- 50
-
- 505
- 345
- 0,00
- 40
- 40
-
- 1170
- 345
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 208,67
-
+
+ 500
+ 340
+ 710
+ 50
+ 0
+
+
+ 505
+ 345
+ 40
+ 40
+ 0
+
+
+ 1170
+ 345
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 208.67
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 400
- 0,00
- 710
- 50
-
- 505
- 405
- 0,00
- 40
- 40
-
- 1170
- 405
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 208,67
-
+
+ 500
+ 400
+ 710
+ 50
+ 0
+
+
+ 505
+ 405
+ 40
+ 40
+ 0
+
+
+ 1170
+ 405
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 208.67
Outline
-
Bold
-
3
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 460
- 0,00
- 710
- 50
-
- 505
- 465
- 0,00
- 40
- 40
-
- 1170
- 465
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 313,00
-
+
+ 500
+ 460
+ 710
+ 50
+ 0
+
+
+ 505
+ 465
+ 40
+ 40
+ 0
+
+
+ 1170
+ 465
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 313
Outline
-
Bold
-
2
-
-
-
- Invisible
-
+
+
+
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
SelectSlide
-
SelectSlideArrowLeft
-
SelectSlideArrowRight
-
- SelectSlide
-
- 500
- 520
- 0,00
- 710
- 50
-
- 505
- 525
- 0,00
- 40
- 40
-
- 1170
- 525
- 0,00
- 40
- 40
-
-
- SelectSlideColor
-
-
- SelectSlideSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 27,00
-
-
-
- 313,00
-
+
+ 500
+ 520
+ 710
+ 50
+ 0
+
+
+ 505
+ 525
+ 40
+ 40
+ 0
+
+
+ 1170
+ 525
+ 40
+ 40
+ 0
+
+
+
+
+
+
+
+ 27
+ 0
+ 0
+ 313
Outline
-
Bold
-
2
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Screens/ScreenScore.xml b/Output/Themes/Ambient/Screens/ScreenScore.xml
index a07f386c..fec36f43 100644
--- a/Output/Themes/Ambient/Screens/ScreenScore.xml
+++ b/Output/Themes/Ambient/Screens/ScreenScore.xml
@@ -1,3773 +1,2160 @@
-
-
-
+
+
+
+ ScreenScore
3
-
-
+
+
+
Video
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
Menu
-
- 40
- 40
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 1200
+ 50
+ 0
+
+
+
TextBG
-
- 50
- 90
- 0,00
- 1180
- 610
-
-
- 0,00
- 0,00
- 0,00
- 0,00
-
-
-
-
-
-
+
+ 0
+ 0
+ 0
+ 0
+
+
+ 50
+ 90
+ 1180
+ 610
+ 0
+
+
+
PointsBarBG
-
- 560
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 0
+ 1
+ 0.75
+
+
+ 560
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 560
- 180
- 0,00
- 160
- 0
-
-
- Player1
-
-
-
-
-
-
+
+
+ 560
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 560
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 560
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 352
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 0
+ 1
+ 0.75
+
+
+ 352
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 352
- 180
- 0,00
- 160
- 0
-
-
- Player1
-
-
-
-
-
-
+
+
+ 352
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 352
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 352
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 768
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0
+ 0
+ 0.75
+
+
+ 768
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 768
- 180
- 0,00
- 160
- 0
-
-
- Player2
-
-
-
-
-
-
+
+
+ 768
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 768
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 768
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 238
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 0
+ 1
+ 0.75
+
+
+ 238
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 238
- 180
- 0,00
- 160
- 0
-
-
- Player1
-
-
-
-
-
-
+
+
+ 238
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 238
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 238
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 560
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0
+ 0
+ 0.75
+
+
+ 560
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 560
- 180
- 0,00
- 160
- 0
-
-
- Player2
-
-
-
-
-
-
+
+
+ 560
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 560
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 560
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 882
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 1,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 1
+ 0
+ 0.75
+
+
+ 882
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 882
- 180
- 0,00
- 160
- 0
-
-
- Player3
-
-
-
-
-
-
+
+
+ 882
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 882
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 882
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 190
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 0
+ 1
+ 0.75
+
+
+ 190
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 190
- 180
- 0,00
- 160
- 0
-
-
- Player1
-
-
-
-
-
-
+
+
+ 190
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 190
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 190
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 422
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0
+ 0
+ 0.75
+
+
+ 422
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 422
- 180
- 0,00
- 160
- 0
-
-
- Player2
-
-
-
-
-
-
+
+
+ 422
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 422
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 422
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 654
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 1,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 1
+ 0
+ 0.75
+
+
+ 654
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 654
- 180
- 0,00
- 160
- 0
-
-
- Player3
-
-
-
-
-
-
+
+
+ 654
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 654
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 654
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 886
- 180
- 0,00
- 160
- 220
-
-
- 0,50
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0.5
+ 0
+ 1
+ 0.75
+
+
+ 886
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 886
- 180
- 0,00
- 160
- 0
-
-
- Player4
-
-
-
-
-
-
+
+
+ 886
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 886
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 886
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 144
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 0
+ 1
+ 0.75
+
+
+ 144
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 144
- 180
- 0,00
- 160
- 0
-
-
- Player1
-
-
-
-
-
-
+
+
+ 144
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 144
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 144
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 352
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0
+ 0
+ 0.75
+
+
+ 352
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 352
- 180
- 0,00
- 160
- 0
-
-
- Player2
-
-
-
-
-
-
+
+
+ 352
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 352
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 352
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 560
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 1,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 1
+ 0
+ 0.75
+
+
+ 560
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 560
- 180
- 0,00
- 160
- 0
-
-
- Player3
-
-
-
-
-
-
+
+
+ 560
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 560
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 560
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 768
- 180
- 0,00
- 160
- 220
-
-
- 0,50
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0.5
+ 0
+ 1
+ 0.75
+
+
+ 768
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 768
- 180
- 0,00
- 160
- 0
-
-
- Player4
-
-
-
-
-
-
+
+
+ 768
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 768
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 768
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 976
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,80
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0.8
+ 0
+ 0.75
+
+
+ 976
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 976
- 180
- 0,00
- 160
- 0
-
-
- Player5
-
-
-
-
-
-
+
+
+ 976
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 976
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 976
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 45
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 0
+ 1
+ 0.75
+
+
+ 45
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 45
- 180
- 0,00
- 160
- 0
-
-
- Player1
-
-
-
-
-
-
+
+
+ 45
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 45
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 45
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 253
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0
+ 0
+ 0.75
+
+
+ 253
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 253
- 180
- 0,00
- 160
- 0
-
-
- Player2
-
-
-
-
-
-
+
+
+ 253
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 253
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 253
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 461
- 180
- 0,00
- 160
- 220
-
-
- 0,00
- 1,00
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 0
+ 1
+ 0
+ 0.75
+
+
+ 461
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 461
- 180
- 0,00
- 160
- 0
-
-
- Player3
-
-
-
-
-
-
+
+
+ 461
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 461
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 461
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 669
- 180
- 0,00
- 160
- 220
-
-
- 0,50
- 0,00
- 1,00
- 0,75
-
-
-
-
-
-
+
+ 0.5
+ 0
+ 1
+ 0.75
+
+
+ 669
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 669
- 180
- 0,00
- 160
- 0
-
-
- Player4
-
-
-
-
-
-
+
+
+ 669
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 669
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 669
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 877
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,80
- 0,00
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0.8
+ 0
+ 0.75
+
+
+ 877
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 877
- 180
- 0,00
- 160
- 0
-
-
- Player5
-
-
-
-
-
-
+
+
+ 877
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 877
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 877
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
PointsBarBG
-
- 1085
- 180
- 0,00
- 160
- 220
-
-
- 1,00
- 0,00
- 0,50
- 0,75
-
-
-
-
-
-
+
+ 1
+ 0
+ 0.5
+ 0.75
+
+
+ 1085
+ 180
+ 160
+ 220
+ 0
+
+
+
PointsBar
-
- 1085
- 180
- 0,00
- 160
- 0
-
-
- Player6
-
-
-
-
-
-
+
+
+ 1085
+ 180
+ 160
+ 0
+ 0
+
+
+
-
- 1085
- 410
- 0,00
- 160
- 160
-
-
- Visible
-
-
-
+
+
+ 1085
+ 410
+ 160
+ 160
+ 0
+
- 15
40
+ 15
-
-
-
+
+
+
+
60
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENSCORE_SCORES
-
-
-
-
-
-
+
+
640
50
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
858
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
318
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
318
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
318
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
318
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
962
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
962
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
962
107
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
962
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
270
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
270
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
270
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
270
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
502
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
502
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
502
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
502
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
734
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
734
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
734
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
734
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
966
630
-
- 0,00
-
+ 0
44
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
966
142
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
966
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
966
670
-
- 0,00
-
+ 0
28
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
224
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
224
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
224
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
224
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
432
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
848
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1056
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1056
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1056
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1056
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
125
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
125
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
125
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
125
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
333
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
333
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
333
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
333
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
541
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
541
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
541
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
541
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
749
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
749
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
749
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
749
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
957
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
957
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
957
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
957
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1165
630
-
- 0,00
-
+ 0
44
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1165
142
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1165
107
-
- 0,00
-
+ 0
27
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1165
670
-
- 0,00
-
+ 0
28
-
160
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
- Int
-
+
+
+
+
+
+
+
+
+
+
+
+
+
7
-
-
-
Int
-
+
+
4
-
-
-
Int
-
+
+
4
-
-
-
- String
-
+ Int
+
+
Horizontal
-
-
-
\ No newline at end of file
+ String
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenSing.xml b/Output/Themes/Ambient/Screens/ScreenSing.xml
index 22342fca..ed9bcb15 100644
--- a/Output/Themes/Ambient/Screens/ScreenSing.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSing.xml
@@ -1,2803 +1,1903 @@
-
-
-
+
+
+
+ ScreenSing
7
-
-
+
+
+
None
-
+
-
-
-
-
-
-
+
+ 0
+ 0
+ 0
+ 1
+
+
+
+
+
Score
-
- 190
- 10
- -1,00
- 900
- 50
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 190
+ 10
+ 900
+ 50
+ -1
+
+
+
Lyrics
-
- 40
- 600
- -0,75
- 1200
- 90
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 600
+ 1200
+ 90
+ -0.75
+
+
+
Lyrics
-
- 40
- 7
- -0,75
- 1200
- 93
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 7
+ 1200
+ 93
+ -0.75
+
+
+
Lyrics
-
- 40
- 7
- -0,75
- 1200
- 93
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 7
+ 1200
+ 93
+ -0.75
+
+
+
TimeBar
-
- 40
- 696
- -0,75
- 1200
- 21
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 696
+ 1200
+ 21
+ -0.75
+
+
+
TimeLine
-
- 44
- 702
- -1,00
- 1090
- 10
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 50
+ 702
+ 1090
+ 10
+ -1
+
+
+
TimeLine
-
- 44
- 696
- -1,00
- 1090
- 9
-
-
- TimeBar
-
-
-
-
-
-
+
+
+ 50
+ 696
+ 1090
+ 9
+ -1
+
+
+
TimeLine
-
- 44
- 696
- -1,00
- 1090
- 9
-
-
- TimeBarSentence
-
-
-
-
-
-
+
+
+ 50
+ 696
+ 1090
+ 9
+ -1
+
+
+
Pointer
-
- 44
- 702
- -1,25
- 2
- 10
-
-
- 0,00
- 0,00
- 0,00
- 1,00
-
-
-
-
-
-
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 44
+ 702
+ 2
+ 10
+ -1.25
+
+
+
LyricHelper
-
- 40
- 600
- -1,00
- 45
- 45
-
-
- LyricHelper
-
-
-
-
-
-
+
+
+ 40
+ 600
+ 45
+ 45
+ -1
+
+
+
LyricHelper
-
- 40
- 12
- -1,00
- 45
- 45
-
-
- LyricHelper
-
-
-
-
-
-
+
+
+ 40
+ 12
+ 45
+ 45
+ -1
+
+
+
LyricHelper
-
- 40
- 12
- -1,00
- 45
- 45
-
-
- LyricHelper
-
-
-
-
-
-
+
+
+ 40
+ 12
+ 45
+ 45
+ -1
+
+
+
PauseBG
-
- 0
- 0
- -2,10
- 1280
- 720
-
-
- Visible
-
-
-
-
-
-
- Invisible
-
- 1150
- 350
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 360
- -0,75
- 190
- 190
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 150
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 160
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 350
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 360
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 10
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 111
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 210
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 274
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 410
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 442
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 150
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 160
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 350
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 360
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 150
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 160
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 350
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 360
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 10
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 111
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 210
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 274
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 410
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 442
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 150
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 160
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 350
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 360
- -0,75
- 165
- 165
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 10
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 111
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 210
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 274
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 528
- 410
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 40
- 442
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 10
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 111
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 210
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 274
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
- Invisible
-
- 1150
- 410
- -0,75
- 100
- 50
-
-
- StaticColor
-
-
-
-
-
-
- Invisible
-
- 1103
- 442
- -0,75
- 140
- 140
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
-
-
-
-
+
+
+ 0
+ 0
+ 1280
+ 720
+ -2.1
+
+
+
+
+
+
+ 1150
+ 350
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 360
+ 190
+ 190
+ -0.75
+
+
+
+
+
+
+ 1150
+ 150
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 160
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 1150
+ 350
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 360
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 1150
+ 10
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 111
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 1150
+ 210
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 274
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 1150
+ 410
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 442
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 528
+ 150
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 160
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 528
+ 350
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 360
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 1150
+ 150
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 160
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 1150
+ 350
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 360
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 528
+ 10
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 111
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 528
+ 210
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 274
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 528
+ 410
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 442
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 1150
+ 150
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 160
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 1150
+ 350
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 360
+ 165
+ 165
+ -0.75
+
+
+
+
+
+
+ 528
+ 10
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 111
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 528
+ 210
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 274
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 528
+ 410
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 40
+ 442
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 1150
+ 10
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 111
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 1150
+ 210
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 274
+ 140
+ 140
+ -0.75
+
+
+
+
+
+
+ 1150
+ 410
+ 100
+ 50
+ -0.75
+
+
+
+
+
+ 1
+ 1
+ 1
+ 0.4
+
+
+ 1103
+ 442
+ 140
+ 140
+ -0.75
+
+
+
+
+
640
20
-
- -1,00
-
+ -2
27
-
880
-
-
- TextBlack
-
-
- TextBlack
-
+
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1214
697
-
- -1,00
-
+ -1
20
-
-
-
- TextWhite
-
-
- TextWhite
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
640
170
-
- -2,11
-
+ -2.11
90
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Center
-
- Center
-
+ Center
-
Normal
-
TR_SCREENSING_PAUSE
-
-
-
-
-
-
+
+
40
80
-
- -1,00
-
+ -1
30
-
-
-
- TextSColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
40
585
-
- -1,00
-
+ -1
30
-
-
-
- TextSColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
640
20
-
- -1,00
-
+ -1
27
-
-
-
- TextColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1240
355
-
- -1,00
-
+ -1
198
-
-
-
- Player1Dim2
-
-
- TextSColor
-
+ 0
+ 0.4
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
513
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- TextSColor
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1240
155
-
- -1,00
-
+ -1
173
-
-
-
- Player1Dim2
-
-
- Player1
-
+ 0
+ 0.4
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
288
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player1
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1240
355
-
- -1,00
-
+ -1
173
-
-
-
- Player2Dim2
-
-
- Player2
-
+ 0
+ 0.4
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
488
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player2
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1240
106
-
- -1,00
-
+ -1
148
-
-
-
- Player1Dim2
-
-
- Player1
-
+ 0
+ 0.4
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
219
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player1
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1240
269
-
- -1,00
-
+ -1
148
-
-
-
- Player2Dim2
-
-
- Player2
-
+ 0
+ 0.4
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
382
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player2
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1240
437
-
- -1,00
-
+ -1
148
-
-
-
- Player3Dim2
-
-
- Player3
-
+ 0
+ 0.4
+
Right
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
550
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player3
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
155
-
- -1,00
-
+ -1
173
-
-
-
- Player1Dim2
-
-
- Player1
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
288
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player1
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
355
-
- -1,00
-
+ -1
173
-
-
-
- Player2Dim2
-
-
- Player2
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
488
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player2
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
155
-
- -1,00
-
+ -1
173
-
-
-
- Player3Dim2
-
-
- Player3
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
288
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player3
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
355
-
- -1,00
-
+ -1
173
-
-
-
- Player4Dim2
-
-
- Player4
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
488
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player4
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
106
-
- -1,00
-
+ -1
148
-
-
-
- Player1Dim2
-
-
- Player1
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
219
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player1
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
269
-
- -1,00
-
+ -1
148
-
-
-
- Player2Dim2
-
-
- Player2
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
382
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player2
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
437
-
- -1,00
-
+ -1
148
-
-
-
- Player3Dim2
-
-
- Player3
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
550
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player3
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
155
-
- -1,00
-
+ -1
173
-
-
-
- Player4Dim2
-
-
- Player4
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
288
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player4
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
355
-
- -1,00
-
+ -1
173
-
-
-
- Player5Dim2
-
-
- Player5
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
488
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player5
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
106
-
- -1,00
-
+ -1
148
-
-
-
- Player1Dim2
-
-
- Player1
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
219
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player1
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
269
-
- -1,00
-
+ -1
148
-
-
-
- Player2Dim2
-
-
- Player2
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
382
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player2
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
324
437
-
- -1,00
-
+ -1
148
-
-
-
- Player3Dim2
-
-
- Player3
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
110
550
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player3
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
106
-
- -1,00
-
+ -1
148
-
-
-
- Player4Dim2
-
-
- Player4
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
219
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player4
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
269
-
- -1,00
-
+ -1
148
-
-
-
- Player5Dim2
-
-
- Player5
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
382
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player5
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
967
437
-
- -1,00
-
+ -1
148
-
-
-
- Player6Dim2
-
-
- Player6
-
+ 0
+ 0.4
+
Center
-
- Center
-
+ Center
-
Normal
-
-
-
-
-
-
-
+
+
1173
550
-
- -1,00
-
+ -1
28
-
-
-
- 1,00
- 1,00
- 1,00
- 0,40
-
-
- Player6
-
+ 0
+
+ 1
+ 1
+ 1
+ 0.4
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 637
+ 600
+ 1200
+ 42
+ -1
+
+
+
+
+
+
+ 637
+ 642
+ 1200
+ 38
+ -1
+
+
+
+
+
+
+ 637
+ 12
+ 1200
+ 42
+ -1
+
+
+
+
+
+
+ 637
+ 54
+ 1200
+ 38
+ -1
+
+
+
+
+
+
+ 637
+ 12
+ 1200
+ 42
+ -1
+
+
+
+
+
+
+ 637
+ 54
+ 1200
+ 38
+ -1
+
+
+
+
+
+
+
+
NoteLeft
-
NoteMiddle
-
NoteRight
-
NoteBackgroundLeft
-
NoteBackgroundMiddle
-
NoteBackgroundRight
-
Star
-
ToneHelper
-
- PerfectNoteStar
-
-
-
+ PerfectNoteStar
- 35
- 350
- -1,50
- 1210
- 200
- 35
- 150
- -1,50
- 1210
- 175
- 35
- 350
- -1,50
- 1210
- 175
- 35
- 105
- -1,50
- 1210
- 150
- 35
- 268
- -1,50
- 1210
- 150
- 35
- 436
- -1,50
- 1210
- 150
- 35
- 150
- -1,50
- 578
- 175
- 35
- 350
- -1,50
- 578
- 175
- 678
- 150
- -1,50
- 578
- 175
- 678
- 350
- -1,50
- 578
- 175
- 35
- 105
- -1,50
- 578
- 150
- 35
- 268
- -1,50
- 578
- 150
- 35
- 436
- -1,50
- 578
- 150
- 678
- 150
- -1,50
- 578
- 175
- 678
- 350
- -1,50
- 578
- 175
- 35
- 105
- -1,50
- 578
- 150
- 35
- 268
- -1,50
- 578
- 150
- 35
- 436
- -1,50
- 578
- 150
- 678
- 105
- -1,50
- 578
- 150
- 678
- 268
- -1,50
- 578
- 150
- 678
- 436
- -1,50
- 578
- 150
+
+
+ 35
+ 350
+ 1210
+ 200
+ -1.5
+
+
+
+
+ 35
+ 150
+ 1210
+ 175
+ -1.5
+
+
+
+
+ 35
+ 350
+ 1210
+ 175
+ -1.5
+
+
+
+
+ 35
+ 105
+ 1210
+ 150
+ -1.5
+
+
+
+
+ 35
+ 268
+ 1210
+ 150
+ -1.5
+
+
+
+
+ 35
+ 436
+ 1210
+ 150
+ -1.5
+
+
+
+
+ 35
+ 150
+ 578
+ 175
+ -1.5
+
+
+
+
+ 35
+ 350
+ 578
+ 175
+ -1.5
+
+
+
+
+ 678
+ 150
+ 578
+ 175
+ -1.5
+
+
+
+
+ 678
+ 350
+ 578
+ 175
+ -1.5
+
+
+
+
+ 35
+ 105
+ 578
+ 150
+ -1.5
+
+
+
+
+ 35
+ 268
+ 578
+ 150
+ -1.5
+
+
+
+
+ 35
+ 436
+ 578
+ 150
+ -1.5
+
+
+
+
+ 678
+ 150
+ 578
+ 175
+ -1.5
+
+
+
+
+ 678
+ 350
+ 578
+ 175
+ -1.5
+
+
+
+
+ 35
+ 105
+ 578
+ 150
+ -1.5
+
+
+
+
+ 35
+ 268
+ 578
+ 150
+ -1.5
+
+
+
+
+ 35
+ 436
+ 578
+ 150
+ -1.5
+
+
+
+
+ 678
+ 105
+ 578
+ 150
+ -1.5
+
+
+
+
+ 678
+ 268
+ 578
+ 150
+ -1.5
+
+
+
+
+ 678
+ 436
+ 578
+ 150
+ -1.5
+
+
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml
index b23661d3..d9f45cd2 100644
--- a/Output/Themes/Ambient/Screens/ScreenSong.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSong.xml
@@ -1,2215 +1,1280 @@
-
-
-
+
+
+
+ ScreenSong
5
-
-
+
+
+
Video
-
+
-
BG_Default
-
-
- BackgroundColor
-
-
-
+
+
+
+
+
SongMenu
-
- 40
- 600
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
+
+
+ 40
+ 600
+ 1200
+ 50
+ 0
+
- 10
26
+ 10
-
-
-
+
+
Menu
-
- 40
- 600
- 0,00
- 1200
- 50
-
-
- StaticColor
-
-
-
+
+
+ 40
+ 600
+ 1200
+ 50
+ 0
+
- 10
26
+ 10
-
-
-
+
+
SongMenuBG
-
- 40
- 40
- -2,10
- 360
- 360
-
-
- 1,00
- 1,00
- 1,00
- 1,00
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 360
+ 360
+ -2.1
+
+
+
+
+
1070
65
-
- -2,11
-
+ -2.11
42
-
350
-
-
- Player1
-
-
- Player1
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1070
135
-
- -2,11
-
+ -2.11
42
-
350
-
-
- Player2
-
-
- Player2
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1070
205
-
- -2,11
-
+ -2.11
42
-
350
-
-
- Player3
-
-
- Player3
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1070
275
-
- -2,11
-
+ -2.11
42
-
350
-
-
- Player4
-
-
- Player4
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1070
345
-
- -2,11
-
+ -2.11
42
-
350
-
-
- Player5
-
-
- Player5
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
1070
415
-
- -2,11
-
+ -2.11
42
-
350
-
-
- Player6
-
-
- Player6
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
220
612
-
- 0,00
-
+ 0
27
-
340
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
- 24
26
+ 24
-
-
-
+
+
825
612
-
- 0,00
-
+ 0
27
-
830
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
- 24
26
+ 24
-
-
-
+
+
400
612
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Right
-
- Center
-
+ Center
-
Outline
-
TR_SCREENSONG_SEARCH
-
-
-
-
-
-
+
+
410
612
-
- 0,00
-
+ 0
27
-
-
-
- StaticColor
-
-
- TextSColor
-
+ 0
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
+
+
220
47
-
- -2,11
-
+ -2.11
34
-
350
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
TR_SCREENSONG_SONGOPTIONS
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CoverTile
-
CoverBackground
-
DuetIcon
-
VideoIcon
-
MedleyCalcIcon
-
MedleyTagIcon
-
-
- 1,00
- 1,00
- 1,00
- 0,20
-
+
+ 1
+ 1
+ 1
+ 0.2
+
-
6
-
4
-
- 10,00
-
- 10,00
-
4
-
4
-
- 410
- 40
- -1,00
- 830
- 550
-
- 410
- 40
- -1,00
- 550
- 550
-
-
+ 10
+ 10
+
+ 410
+ 40
+ 830
+ 550
+ -1
+
+
+ 410
+ 40
+ 550
+ 550
+ -1
+
+
222
416
-
- -1,01
-
+ -1.01
39
-
340
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Top
-
Outline
-
-
-
-
-
-
-
+
+
222
456
-
- -1,01
-
+ -1.01
32
-
340
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Top
-
Outline
-
-
-
-
-
-
-
+
+
222
490
-
- -1,01
-
+ -1.01
28
-
340
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Center
-
- Center
-
+ Top
-
Outline
-
-
-
-
-
-
-
+
+
CoverBackground
-
- 40
- 40
- -1,00
- 360
- 360
-
-
- Visible
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 360
+ 360
+ -1
+
+
+
CoverBackground
-
- 40
- 40
- -1,00
- 360
- 550
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 40
+ 40
+ 360
+ 550
+ -1
+
+
+
DuetIcon
-
- 200
- 530
- -1,00
- 40
- 40
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 200
+ 530
+ 40
+ 40
+ -1
+
+
+
VideoIcon
-
- 120
- 530
- -1,00
- 40
- 40
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 120
+ 530
+ 40
+ 40
+ -1
+
+
+
MedleyCalcIcon
-
- 280
- 530
- -1,00
- 40
- 40
-
-
- StaticColor
-
-
-
-
-
-
+
+
+ 280
+ 530
+ 40
+ 40
+ -1
+
+
+
MedleyTagIcon
-
- 280
- 530
- -1,00
- 40
- 40
-
-
- StaticColor
-
-
-
-
+
+
+ 280
+ 530
+ 40
+ 40
+ -1
+
+
-
-
- 970
- 80
- -0,90
- 295
- 460
- 50,00
-
+
+
+
+
+ Button
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 135
+ 360
+ 40
+ -2.11
+
+
+ 45
+ 140
+ 30
+ 30
+ -2.12
+
+
+ 365
+ 140
+ 30
+ 30
+ -2.12
+
+
+
+
+
+
+
+ 25
+ 0
+ 0
+ 280
+ Outline
+ Bold
+ 1
+
+
+ Button
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 190
+ 360
+ 40
+ -2.11
+
+
+ 45
+ 195
+ 30
+ 30
+ -2.12
+
+
+ 365
+ 195
+ 30
+ 30
+ -2.12
+
+
+
+
+
+
+
+ 25
+ 0
+ 0
+ 280
+ Outline
+ Bold
+ 1
+
+
+ Button
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 180
+ 360
+ 40
+ -2.11
+
+
+ 45
+ 190
+ 30
+ 30
+ -2.12
+
+
+ 365
+ 190
+ 30
+ 30
+ -2.12
+
+
+
+
+
+
+
+ 25
+ 0
+ 0
+ 280
+ Outline
+ Bold
+ 1
+
+
+ Button
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+ SelectSlide
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 40
+ 90
+ 360
+ 40
+ -2.11
+
+
+ 45
+ 100
+ 30
+ 30
+ -2.12
+
+
+ 365
+ 100
+ 30
+ 30
+ -2.12
+
+
+
+
+
+
+
+ 25
+ 0
+ 0
+ 280
+ Outline
+ Bold
+ 3
+
+
+
+
+
+
+
+
+ 970
+ 80
+ 295
+ 460
+ -0.9
+
+ 50
CoverTile
-
CoverTile
-
-
- StaticColorAlpha
-
-
- StaticColor
-
-
-
-
+
+
+
54
5
-
- -1,01
-
+ -1.01
22
-
235
-
-
- StaticColor
-
-
- TextSColor
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
TR_SCREENSONG_ARTIST_TITLE
-
-
-
-
-
-
- Menu
-
- 970
- 550
- -1,00
- 295
- 40
-
-
- StaticColor
-
-
-
-
-
-
- Menu
-
- 970
- 40
- -1,00
- 295
- 40
-
-
- StaticColor
-
-
-
-
-
-
+
+
-
- 4
- 2
- -1,00
- 46
- 46
-
-
- Visible
-
-
-
-
-
-
- Button
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
-
-
- SelectSlideArrowLeft
-
- SelectSlideArrowRight
-
-
-
- 0
- 28
- -1,01
- 293
- 24
-
- 54
- 30
- -1,02
- 20
- 20
-
- 271
- 30
- -1,02
- 20
- 20
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- SelectSlideHColor
-
-
- ArrowColor
-
-
- ArrowSColor
-
-
- TextColor
-
-
- TextSColor
-
- 22,00
-
- 25,00
-
-
- 230,00
-
- Outline
-
- Bold
-
- 1
-
-
-
- Invisible
-
- Invisible
-
- 975
- 45
- -1,01
- 220
- 25
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
+
+
0
0
-
+ 46
+ 46
+ -1
+
+
+
+ Menu
+
+
+ 970
+ 40
+ 295
+ 40
+ -1
+
+
+
+ Menu
+
+
+ 970
+ 550
+ 295
+ 40
+ -1
+
+
+
+
+
+
+ 975
+ 45
+ 220
+ 25
+ -1.01
+
+
+
+
+ 0
+ 0
+ 0
25
-
220
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
+
+
Left
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
-
-
-
-
+
+
+
CloseIcon
-
CloseIcon
-
- 1215
- 42
- -1,01
- 35
- 35
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
+
+ 1215
+ 42
+ 35
+ 35
+ -1.01
+
+
+
+
180
7
-
+ 0
25
-
350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
-
-
-
-
- DeleteIcon
-
- DeleteIcon
-
- 1215
- 553
- -1,01
- 35
- 35
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 180
- 5
-
- 25
-
- 350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
- Center
-
-
-
- Outline
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
SaveIcon
-
SaveIcon
-
- 1175
- 553
- -1,01
- 35
- 35
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
+
+ 1175
+ 553
+ 35
+ 35
+ -1.01
+
+
+
+
180
5
-
+ 0
25
-
350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ DeleteIcon
+ DeleteIcon
+
+ 1215
+ 553
+ 35
+ 35
+ -1.01
+
+
+
+
+ 180
+ 5
+ 0
+ 25
+ 350
+
+
+ Center
+ Center
+
+ Outline
+
+
+
+
SingIcon
-
SingIcon
-
- 975
- 553
- -1,01
- 35
- 35
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
+
+ 975
+ 553
+ 35
+ 35
+ -1.01
+
+
+
+
180
5
-
+ 0
25
-
350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
+
+
Center
-
- Center
-
+ Center
-
Outline
-
-
-
-
-
-
-
-
-
+
+
+
+ Button
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ SelectSlideArrowLeft
+ SelectSlideArrowRight
+
+ 0
+ 28
+ 293
+ 24
+ -1.01
+
+
+ 54
+ 30
+ 20
+ 20
+ -1.02
+
+
+ 271
+ 30
+ 20
+ 20
+ -1.02
+
+
+
+
+
+
+
+ 22.00
+ 25.00
+ 230.00
+ Outline
+ Bold
+ 1
+
-
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenTest.xml b/Output/Themes/Ambient/Screens/ScreenTest.xml
index 2137eab8..6958eb63 100644
--- a/Output/Themes/Ambient/Screens/ScreenTest.xml
+++ b/Output/Themes/Ambient/Screens/ScreenTest.xml
@@ -1,17 +1,21 @@
-
-
+
+
+ ScreenTest
1
-
-
- Video
-
-
-
- BG_Default
-
-
- BackgroundColor
-
-
-
\ No newline at end of file
+
+
+
+ None
+
+
+
+
+ 0
+ 0
+ 0
+ 1
+
+
+
+
diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml
index 34cff336..b1ab5aa9 100644
--- a/Output/Themes/Ambient/Skin Blue.xml
+++ b/Output/Themes/Ambient/Skin Blue.xml
@@ -1,286 +1,206 @@
- 3
+ 4
Blue
bohning
- 0
- 0
+ 0
+ 0
- 0,000
- 0,000
- 1,000
- 1,000
+ 0.000
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
- 0,000
- 1,000
- 0,000
- 1,000
+ 0.000
+ 1.000
+ 0.000
+ 1.000
- 0,500
- 0,000
- 1,000
- 1,000
+ 0.500
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,800
- 0,000
- 1,000
+ 1.000
+ 0.800
+ 0.000
+ 1.000
- 1,000
- 0,000
- 0,500
- 1,000
+ 1.000
+ 0.000
+ 0.500
+ 1.000
-
-
-
- 0,000
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,000
- 0,000
- 0,500
-
-
- 0,000
- 1,000
- 0,000
- 0,500
-
-
- 0,500
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,800
- 0,000
- 0,500
-
-
- 1,000
- 0,000
- 0,500
- 0,500
-
-
- 0,000
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,000
- 0,000
- 0,400
-
-
- 0,000
- 1,000
- 0,000
- 0,400
-
-
- 0,500
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,800
- 0,000
- 0,400
-
-
- 1,000
- 0,000
- 0,500
- 0,400
-
- 0,000
- 0,000
- 0,750
- 1,000
+ 0.000
+ 0.000
+ 0.750
+ 1.000
- 0,675
- 0,890
- 0,969
- 1,000
+ 0.675
+ 0.890
+ 0.969
+ 1.000
- 0,675
- 0,890
- 0,969
- 0,500
+ 0.675
+ 0.890
+ 0.969
+ 0.500
- 0,675
- 0,890
- 0,969
- 1,000
+ 0.675
+ 0.890
+ 0.969
+ 0.600
- 0,675
- 0,890
- 0,969
- 0,300
+ 0.675
+ 0.890
+ 0.969
+ 0.300
-
- 0,675
- 0,890
- 0,969
- 1,000
-
+
+ 0.675
+ 0.890
+ 0.969
+ 1.000
+
- 0,675
- 0,890
- 0,969
- 0,500
+ 0.675
+ 0.890
+ 0.969
+ 0.500
-
- 0,675
- 0,890
- 0,969
- 1,000
-
+
+ 0.675
+ 0.890
+ 0.969
+ 1.000
+
- 0,675
- 0,890
- 0,969
- 1,000
+ 0.675
+ 0.890
+ 0.969
+ 1.000
- 0,675
- 0,890
- 0,969
- 0,500
+ 0.675
+ 0.890
+ 0.969
+ 0.500
-
- 0,675
- 0,890
- 0,969
- 1,000
-
-
- 0,675
- 0,890
- 0,969
- 0,500
-
+
+ 0.675
+ 0.890
+ 0.969
+ 0.500
+
- 0,675
- 0,890
- 0,969
- 0,300
+ 0.675
+ 0.890
+ 0.969
+ 0.300
-
- 0,675
- 0,890
- 0,969
- 1,000
-
+
+ 0.675
+ 0.890
+ 0.969
+ 1.000
+
- 0,675
- 0,890
- 0,969
- 0,500
+ 0.675
+ 0.890
+ 0.969
+ 0.500
-
- 0,675
- 0,890
- 0,969
- 1,000
-
+
+ 0.675
+ 0.890
+ 0.969
+ 1.000
+
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
+
+ 0.000
+ 0.000
+ 0.000
+ 1.000
+
+
+ 1.000
+ 1.000
+ 1.000
+ 1.000
+
- 1,000
- 1,000
- 1,000
- 1,000
+ 1.000
+ 1.000
+ 1.000
+ 1.000
- 1,000
- 1,000
- 1,000
- 0,000
+ 1.000
+ 1.000
+ 1.000
+ 0.000
-
- 0,000
- 0,000
- 1,000
- 1,000
-
+
+ 0.000
+ 0.000
+ 1.000
+ 1.000
+
- 0,000
- 0,000
- 0,000
- 1,000
+ 0.000
+ 0.000
+ 0.000
+ 1.000
- 0,300
- 0,300
- 0,300
- 1,000
+ 0.300
+ 0.300
+ 0.300
+ 1.000
- 0,000
- 0,000
- 1,000
- 0,500
+ 0.000
+ 0.000
+ 1.000
+ 0.500
- 0,800
- 0,950
- 1,000
- 0,500
+ 0.800
+ 0.950
+ 1.000
+ 0.500
- 0,800
- 0,950
- 1,000
- 0,850
+ 0.800
+ 0.950
+ 1.000
+ 0.850
-
+
[Blue]BG_Default.png
[Blue]BG_Options.png
@@ -321,7 +241,6 @@
VideoIconBG.png
MedleyCalcIcon.png
MedleyTagIcon.png
- Invisible.png
PlayerSelector.png
PreviousIcon.png
NextIcon.png
diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml
index 868a0b0f..3b6e3ba8 100644
--- a/Output/Themes/Ambient/Skin Green.xml
+++ b/Output/Themes/Ambient/Skin Green.xml
@@ -1,280 +1,200 @@
- 3
+ 4
Green
bohning
- 0
- 0
+ 0
+ 0
- 0,000
- 0,000
- 1,000
- 1,000
+ 0.000
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
- 0,000
- 1,000
- 0,000
- 1,000
+ 0.000
+ 1.000
+ 0.000
+ 1.000
- 0,500
- 0,000
- 1,000
- 1,000
+ 0.500
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,800
- 0,000
- 1,000
+ 1.000
+ 0.800
+ 0.000
+ 1.000
- 1,000
- 0,000
- 0,500
- 1,000
+ 1.000
+ 0.000
+ 0.500
+ 1.000
-
-
-
- 0,000
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,000
- 0,000
- 0,500
-
-
- 0,000
- 1,000
- 0,000
- 0,500
-
-
- 0,500
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,800
- 0,000
- 0,500
-
-
- 1,000
- 0,000
- 0,500
- 0,500
-
-
- 0,000
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,000
- 0,000
- 0,400
-
-
- 0,000
- 1,000
- 0,000
- 0,400
-
-
- 0,500
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,800
- 0,000
- 0,400
-
-
- 1,000
- 0,000
- 0,500
- 0,400
-
- 0,000
- 0,750
- 0,000
- 1,000
+ 0.000
+ 0.750
+ 0.000
+ 1.000
- 0,709
- 0,968
- 0,674
- 1,000
+ 0.709
+ 0.968
+ 0.674
+ 1.000
- 0,709
- 0,968
- 0,674
- 0,500
+ 0.709
+ 0.968
+ 0.674
+ 0.500
- 0,709
- 0,968
- 0,674
- 1,000
+ 0.709
+ 0.968
+ 0.674
+ 0.600
- 0,709
- 0,968
- 0,674
- 0,300
+ 0.709
+ 0.968
+ 0.674
+ 0.300
-
- 0,709
- 0,968
- 0,674
- 1,000
-
+
+ 0.709
+ 0.968
+ 0.674
+ 1.000
+
- 0,709
- 0,968
- 0,674
- 0,500
+ 0.709
+ 0.968
+ 0.674
+ 0.500
-
- 0,709
- 0,968
- 0,674
- 1,000
-
+
+ 0.709
+ 0.968
+ 0.674
+ 1.000
+
- 0,709
- 0,968
- 0,674
- 1,000
+ 0.709
+ 0.968
+ 0.674
+ 1.000
-
- 0,709
- 0,968
- 0,674
- 1,000
-
-
- 0,709
- 0,968
- 0,674
- 0,500
-
+
+ 0.709
+ 0.968
+ 0.674
+ 0.500
+
- 0,709
- 0,968
- 0,674
- 0,300
+ 0.709
+ 0.968
+ 0.674
+ 0.300
-
- 0,709
- 0,968
- 0,674
- 1,000
-
+
+ 0.709
+ 0.968
+ 0.674
+ 1.000
+
- 0,709
- 0,968
- 0,674
- 0,500
+ 0.709
+ 0.968
+ 0.674
+ 0.500
-
- 0,709
- 0,968
- 0,674
- 1,000
-
+
+ 0.709
+ 0.968
+ 0.674
+ 1.000
+
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
+
+ 0.000
+ 0.000
+ 0.000
+ 1.000
+
+
+ 1.000
+ 1.000
+ 1.000
+ 1.000
+
- 1,000
- 1,000
- 1,000
- 1,000
+ 1.000
+ 1.000
+ 1.000
+ 1.000
- 1,000
- 1,000
- 1,000
- 0,000
+ 1.000
+ 1.000
+ 1.000
+ 0.000
-
- 0,000
- 1,000
- 0,000
- 1,000
-
+
+ 0.000
+ 1.000
+ 0.000
+ 1.000
+
- 0,000
- 0,000
- 0,000
- 1,000
+ 0.000
+ 0.000
+ 0.000
+ 1.000
- 0,300
- 0,300
- 0,300
- 1,000
+ 0.300
+ 0.300
+ 0.300
+ 1.000
- 0,000
- 1,000
- 0,000
- 0,500
+ 0.000
+ 1.000
+ 0.000
+ 0.500
- 0,800
- 1,000
- 0,811
- 0,500
+ 0.800
+ 1.000
+ 0.811
+ 0.500
- 0,800
- 1,000
- 0,811
- 0,811
+ 0.800
+ 1.000
+ 0.811
+ 0.811
-
+
[Green]BG_Default.png
[Green]BG_Options.png
@@ -315,7 +235,6 @@
VideoIconBG.png
MedleyCalcIcon.png
MedleyTagIcon.png
- Invisible.png
PlayerSelector.png
PreviousIcon.png
NextIcon.png
diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml
index a0929c67..0f65931e 100644
--- a/Output/Themes/Ambient/Skin Red.xml
+++ b/Output/Themes/Ambient/Skin Red.xml
@@ -1,280 +1,200 @@
- 3
+ 4
Red
bohning
- 0
- 0
+ 0
+ 0
- 0,000
- 0,000
- 1,000
- 1,000
+ 0.000
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
- 0,000
- 1,000
- 0,000
- 1,000
+ 0.000
+ 1.000
+ 0.000
+ 1.000
- 0,500
- 0,000
- 1,000
- 1,000
+ 0.500
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,800
- 0,000
- 1,000
+ 1.000
+ 0.800
+ 0.000
+ 1.000
- 1,000
- 0,000
- 0,500
- 1,000
+ 1.000
+ 0.000
+ 0.500
+ 1.000
-
-
-
- 0,000
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,000
- 0,000
- 0,500
-
-
- 0,000
- 1,000
- 0,000
- 0,500
-
-
- 0,500
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,800
- 0,000
- 0,500
-
-
- 1,000
- 0,000
- 0,500
- 0,500
-
-
- 0,000
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,000
- 0,000
- 0,400
-
-
- 0,000
- 1,000
- 0,000
- 0,400
-
-
- 0,500
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,800
- 0,000
- 0,400
-
-
- 1,000
- 0,000
- 0,500
- 0,400
-
- 0,750
- 0,000
- 0,000
- 1,000
+ 0.750
+ 0.000
+ 0.000
+ 1.000
- 0,968
- 0,674
- 0,674
- 1,000
+ 0.968
+ 0.674
+ 0.674
+ 1.000
- 0,968
- 0,674
- 0,674
- 0,500
+ 0.968
+ 0.674
+ 0.674
+ 0.500
- 0,968
- 0,674
- 0,674
- 1,000
+ 0.968
+ 0.674
+ 0.674
+ 0.600
- 0,968
- 0,674
- 0,674
- 0,300
+ 0.968
+ 0.674
+ 0.674
+ 0.300
-
- 0,968
- 0,674
- 0,674
- 1,000
-
+
+ 0.968
+ 0.674
+ 0.674
+ 1.000
+
- 0,968
- 0,674
- 0,674
- 0,500
+ 0.968
+ 0.674
+ 0.674
+ 0.500
-
- 0,968
- 0,674
- 0,674
- 1,000
-
+
+ 0.968
+ 0.674
+ 0.674
+ 1.000
+
- 0,968
- 0,674
- 0,674
- 1,000
+ 0.968
+ 0.674
+ 0.674
+ 1.000
-
- 0,968
- 0,674
- 0,674
- 1,000
-
-
- 0,968
- 0,674
- 0,674
- 0,500
-
+
+ 0.968
+ 0.674
+ 0.674
+ 0.500
+
- 0,968
- 0,674
- 0,674
- 0,300
+ 0.968
+ 0.674
+ 0.674
+ 0.300
-
- 0,968
- 0,674
- 0,674
- 1,000
-
+
+ 0.968
+ 0.674
+ 0.674
+ 1.000
+
- 0,968
- 0,674
- 0,674
- 0,500
+ 0.968
+ 0.674
+ 0.674
+ 0.500
-
- 0,968
- 0,674
- 0,674
- 1,000
-
+
+ 0.968
+ 0.674
+ 0.674
+ 1.000
+
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
+
+ 0.000
+ 0.000
+ 0.000
+ 1.000
+
+
+ 1.000
+ 1.000
+ 1.000
+ 1.000
+
- 1,000
- 1,000
- 1,000
- 1,000
+ 1.000
+ 1.000
+ 1.000
+ 1.000
- 1,000
- 1,000
- 1,000
- 0,000
+ 1.000
+ 1.000
+ 1.000
+ 0.000
-
- 1,000
- 0,000
- 0,000
- 1,000
-
+
+ 1.000
+ 0.000
+ 0.000
+ 1.000
+
- 0,000
- 0,000
- 0,000
- 1,000
+ 0.000
+ 0.000
+ 0.000
+ 1.000
- 0,300
- 0,300
- 0,300
- 1,000
+ 0.300
+ 0.300
+ 0.300
+ 1.000
- 1,000
- 0,000
- 0,000
- 0,500
+ 1.000
+ 0.000
+ 0.000
+ 0.500
- 1,000
- 0,800
- 0,800
- 0,500
+ 1.000
+ 0.800
+ 0.800
+ 0.500
- 1,000
- 0,800
- 0,800
- 0,850
+ 1.000
+ 0.800
+ 0.800
+ 0.850
-
+
[Red]BG_Default.png
[Red]BG_Options.png
@@ -315,7 +235,6 @@
VideoIconBG.png
MedleyCalcIcon.png
MedleyTagIcon.png
- Invisible.png
PlayerSelector.png
PreviousIcon.png
NextIcon.png
diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml
index 141050a2..48c2176b 100644
--- a/Output/Themes/Ambient/Skin Yellow.xml
+++ b/Output/Themes/Ambient/Skin Yellow.xml
@@ -1,280 +1,200 @@
- 3
+ 4
Yellow
bohning
- 0
- 0
+ 0
+ 0
- 0,000
- 0,000
- 1,000
- 1,000
+ 0.000
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
- 0,000
- 1,000
- 0,000
- 1,000
+ 0.000
+ 1.000
+ 0.000
+ 1.000
- 0,500
- 0,000
- 1,000
- 1,000
+ 0.500
+ 0.000
+ 1.000
+ 1.000
- 1,000
- 0,800
- 0,000
- 1,000
+ 1.000
+ 0.800
+ 0.000
+ 1.000
- 1,000
- 0,000
- 0,500
- 1,000
+ 1.000
+ 0.000
+ 0.500
+ 1.000
-
-
-
- 0,000
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,000
- 0,000
- 0,500
-
-
- 0,000
- 1,000
- 0,000
- 0,500
-
-
- 0,500
- 0,000
- 1,000
- 0,500
-
-
- 1,000
- 0,800
- 0,000
- 0,500
-
-
- 1,000
- 0,000
- 0,500
- 0,500
-
-
- 0,000
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,000
- 0,000
- 0,400
-
-
- 0,000
- 1,000
- 0,000
- 0,400
-
-
- 0,500
- 0,000
- 1,000
- 0,400
-
-
- 1,000
- 0,800
- 0,000
- 0,400
-
-
- 1,000
- 0,000
- 0,500
- 0,400
-
- 0,750
- 0,750
- 0,000
- 1,000
+ 0.750
+ 0.750
+ 0.000
+ 1.000
- 0,968
- 0,956
- 0,674
- 1,000
+ 0.968
+ 0.956
+ 0.674
+ 1.000
- 0,968
- 0,956
- 0,674
- 0,500
+ 0.968
+ 0.956
+ 0.674
+ 0.500
- 0,968
- 0,956
- 0,674
- 1,000
+ 0.968
+ 0.956
+ 0.674
+ 0.600
- 0,968
- 0,956
- 0,674
- 0,300
+ 0.968
+ 0.956
+ 0.674
+ 0.300
-
- 0,968
- 0,956
- 0,674
- 1,000
-
+
+ 0.968
+ 0.956
+ 0.674
+ 1.000
+
- 0,968
- 0,956
- 0,674
- 0,500
+ 0.968
+ 0.956
+ 0.674
+ 0.500
-
- 0,968
- 0,956
- 0,674
- 1,000
-
+
+ 0.968
+ 0.956
+ 0.674
+ 1.000
+
- 0,968
- 0,956
- 0,674
- 1,000
+ 0.968
+ 0.956
+ 0.674
+ 1.000
-
- 0,968
- 0,956
- 0,674
- 1,000
-
-
- 0,968
- 0,956
- 0,674
- 0,500
-
+
+ 0.968
+ 0.956
+ 0.674
+ 0.500
+
- 0,968
- 0,956
- 0,674
- 0,300
+ 0.968
+ 0.956
+ 0.674
+ 0.300
-
- 0,968
- 0,956
- 0,674
- 1,000
-
+
+ 0.968
+ 0.956
+ 0.674
+ 1.000
+
- 0,968
- 0,956
- 0,674
- 0,500
+ 0.968
+ 0.956
+ 0.674
+ 0.500
-
- 0,968
- 0,956
- 0,674
- 1,000
-
+
+ 0.968
+ 0.956
+ 0.674
+ 1.000
+
- 1,000
- 0,000
- 0,000
- 1,000
+ 1.000
+ 0.000
+ 0.000
+ 1.000
-
- 0,000
- 0,000
- 0,000
- 1,000
-
-
- 0,000
- 0,000
- 0,000
- 1,000
-
+
+ 0.000
+ 0.000
+ 0.000
+ 1.000
+
+
+ 1.000
+ 1.000
+ 1.000
+ 1.000
+
- 1,000
- 1,000
- 1,000
- 1,000
+ 1.000
+ 1.000
+ 1.000
+ 1.000
- 1,000
- 1,000
- 1,000
- 0,000
+ 1.000
+ 1.000
+ 1.000
+ 0.000
-
- 1,000
- 1,000
- 0,000
- 1,000
-
+
+ 1.000
+ 1.000
+ 0.000
+ 1.000
+
- 0,000
- 0,000
- 0,000
- 1,000
+ 0.000
+ 0.000
+ 0.000
+ 1.000
- 0,300
- 0,300
- 0,300
- 1,000
+ 0.300
+ 0.300
+ 0.300
+ 1.000
- 1,000
- 1,000
- 0,000
- 0,500
+ 1.000
+ 1.000
+ 0.000
+ 0.500
- 0,949
- 1,000
- 0,800
- 0,500
+ 0.949
+ 1.000
+ 0.800
+ 0.500
- 0,949
- 1,000
- 0,800
- 0,850
+ 0.949
+ 1.000
+ 0.800
+ 0.850
-
+
[Yellow]BG_Default.png
[Yellow]BG_Options.png
@@ -315,7 +235,6 @@
VideoIconBG.png
MedleyCalcIcon.png
MedleyTagIcon.png
- Invisible.png
PlayerSelector.png
PreviousIcon.png
NextIcon.png
diff --git a/Output/Themes/Changelog/Changelog_ScreenMain.txt b/Output/Themes/Changelog/Changelog_ScreenMain.txt
new file mode 100644
index 00000000..b3eb3bb7
--- /dev/null
+++ b/Output/Themes/Changelog/Changelog_ScreenMain.txt
@@ -0,0 +1,10 @@
+SceenMain
+
+++++++++++
+Version 2:
+
+Add:
+
+
+
+
diff --git a/Output/Themes/Changelog/Changelog_SkinSystem.txt b/Output/Themes/Changelog/Changelog_SkinSystem.txt
index 905890bb..ce2085ae 100644
--- a/Output/Themes/Changelog/Changelog_SkinSystem.txt
+++ b/Output/Themes/Changelog/Changelog_SkinSystem.txt
@@ -1,5 +1,9 @@
Skin System
+++++++++++
+Version 4:
+All Colors in (Playercolors and ColorSchemes)
+
++++++++++
Version 3:
diff --git a/Output/glib-sharp.dll b/Output/glib-sharp.dll
index 2c5c288e..a4e18a6f 100644
Binary files a/Output/glib-sharp.dll and b/Output/glib-sharp.dll differ
diff --git a/Output/gstreamer-sharp.dll b/Output/gstreamer-sharp.dll
index 02c667ac..42183595 100644
Binary files a/Output/gstreamer-sharp.dll and b/Output/gstreamer-sharp.dll differ
diff --git a/Output/x64/gstreamer/libFLAC-8.dll b/Output/x64/gstreamer/libFLAC-8.dll
deleted file mode 100644
index a1a1c256..00000000
Binary files a/Output/x64/gstreamer/libFLAC-8.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/liba52-0.dll b/Output/x64/gstreamer/liba52-0.dll
deleted file mode 100644
index 6dfdbb94..00000000
Binary files a/Output/x64/gstreamer/liba52-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libass-4.dll b/Output/x64/gstreamer/libass-4.dll
deleted file mode 100644
index b3cc88b0..00000000
Binary files a/Output/x64/gstreamer/libass-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libbz2.dll b/Output/x64/gstreamer/libbz2.dll
deleted file mode 100644
index ee820481..00000000
Binary files a/Output/x64/gstreamer/libbz2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libcairo-2.dll b/Output/x64/gstreamer/libcairo-2.dll
deleted file mode 100644
index 87965c8e..00000000
Binary files a/Output/x64/gstreamer/libcairo-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libcairo-gobject-2.dll b/Output/x64/gstreamer/libcairo-gobject-2.dll
deleted file mode 100644
index e9aae569..00000000
Binary files a/Output/x64/gstreamer/libcairo-gobject-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libcairo-script-interpreter-2.dll b/Output/x64/gstreamer/libcairo-script-interpreter-2.dll
deleted file mode 100644
index 8ddf3911..00000000
Binary files a/Output/x64/gstreamer/libcairo-script-interpreter-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libcharset-1.dll b/Output/x64/gstreamer/libcharset-1.dll
deleted file mode 100644
index af20e572..00000000
Binary files a/Output/x64/gstreamer/libcharset-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libdca-0.dll b/Output/x64/gstreamer/libdca-0.dll
deleted file mode 100644
index f3077d4c..00000000
Binary files a/Output/x64/gstreamer/libdca-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libdv-4.dll b/Output/x64/gstreamer/libdv-4.dll
deleted file mode 100644
index de42c8eb..00000000
Binary files a/Output/x64/gstreamer/libdv-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libdvdnav-4.dll b/Output/x64/gstreamer/libdvdnav-4.dll
deleted file mode 100644
index 78d701c0..00000000
Binary files a/Output/x64/gstreamer/libdvdnav-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libdvdnavmini-4.dll b/Output/x64/gstreamer/libdvdnavmini-4.dll
deleted file mode 100644
index d94459aa..00000000
Binary files a/Output/x64/gstreamer/libdvdnavmini-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libdvdread-4.dll b/Output/x64/gstreamer/libdvdread-4.dll
deleted file mode 100644
index dd80070f..00000000
Binary files a/Output/x64/gstreamer/libdvdread-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libexpat-1.dll b/Output/x64/gstreamer/libexpat-1.dll
deleted file mode 100644
index 7b425c4d..00000000
Binary files a/Output/x64/gstreamer/libexpat-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libfaad-2.dll b/Output/x64/gstreamer/libfaad-2.dll
deleted file mode 100644
index ac9a9fc5..00000000
Binary files a/Output/x64/gstreamer/libfaad-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libffi-6.dll b/Output/x64/gstreamer/libffi-6.dll
deleted file mode 100644
index 207ef431..00000000
Binary files a/Output/x64/gstreamer/libffi-6.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libfontconfig-1.dll b/Output/x64/gstreamer/libfontconfig-1.dll
deleted file mode 100644
index 7230751d..00000000
Binary files a/Output/x64/gstreamer/libfontconfig-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libfreetype-6.dll b/Output/x64/gstreamer/libfreetype-6.dll
deleted file mode 100644
index c2c2e4f9..00000000
Binary files a/Output/x64/gstreamer/libfreetype-6.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libfribidi-0.dll b/Output/x64/gstreamer/libfribidi-0.dll
deleted file mode 100644
index e484d1b5..00000000
Binary files a/Output/x64/gstreamer/libfribidi-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgcc_s_sjlj-1.dll b/Output/x64/gstreamer/libgcc_s_sjlj-1.dll
deleted file mode 100644
index c03ac645..00000000
Binary files a/Output/x64/gstreamer/libgcc_s_sjlj-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll b/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll
deleted file mode 100644
index 5120d9df..00000000
Binary files a/Output/x64/gstreamer/libgdk_pixbuf-2.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgio-2.0-0.dll b/Output/x64/gstreamer/libgio-2.0-0.dll
deleted file mode 100644
index 8e0b6729..00000000
Binary files a/Output/x64/gstreamer/libgio-2.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgiognutls.dll b/Output/x64/gstreamer/libgiognutls.dll
deleted file mode 100644
index e9a13da7..00000000
Binary files a/Output/x64/gstreamer/libgiognutls.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libglib-2.0-0.dll b/Output/x64/gstreamer/libglib-2.0-0.dll
deleted file mode 100644
index b3e095c8..00000000
Binary files a/Output/x64/gstreamer/libglib-2.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgmodule-2.0-0.dll b/Output/x64/gstreamer/libgmodule-2.0-0.dll
deleted file mode 100644
index 8b0889c2..00000000
Binary files a/Output/x64/gstreamer/libgmodule-2.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgnutls-28.dll b/Output/x64/gstreamer/libgnutls-28.dll
deleted file mode 100644
index 7bc8d264..00000000
Binary files a/Output/x64/gstreamer/libgnutls-28.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgnutls-openssl-27.dll b/Output/x64/gstreamer/libgnutls-openssl-27.dll
deleted file mode 100644
index 0f1f8444..00000000
Binary files a/Output/x64/gstreamer/libgnutls-openssl-27.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgnutlsxx-28.dll b/Output/x64/gstreamer/libgnutlsxx-28.dll
deleted file mode 100644
index 3b661f06..00000000
Binary files a/Output/x64/gstreamer/libgnutlsxx-28.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgobject-2.0-0.dll b/Output/x64/gstreamer/libgobject-2.0-0.dll
deleted file mode 100644
index 6adac242..00000000
Binary files a/Output/x64/gstreamer/libgobject-2.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgomp-1.dll b/Output/x64/gstreamer/libgomp-1.dll
deleted file mode 100644
index bfdef6d9..00000000
Binary files a/Output/x64/gstreamer/libgomp-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsta52dec.dll b/Output/x64/gstreamer/libgsta52dec.dll
deleted file mode 100644
index bbf77d25..00000000
Binary files a/Output/x64/gstreamer/libgsta52dec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstadder.dll b/Output/x64/gstreamer/libgstadder.dll
deleted file mode 100644
index fe87b9ea..00000000
Binary files a/Output/x64/gstreamer/libgstadder.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstadpcmdec.dll b/Output/x64/gstreamer/libgstadpcmdec.dll
deleted file mode 100644
index ed1e8670..00000000
Binary files a/Output/x64/gstreamer/libgstadpcmdec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstadpcmenc.dll b/Output/x64/gstreamer/libgstadpcmenc.dll
deleted file mode 100644
index 763c14bc..00000000
Binary files a/Output/x64/gstreamer/libgstadpcmenc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstalaw.dll b/Output/x64/gstreamer/libgstalaw.dll
deleted file mode 100644
index b906db09..00000000
Binary files a/Output/x64/gstreamer/libgstalaw.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstalpha.dll b/Output/x64/gstreamer/libgstalpha.dll
deleted file mode 100644
index c9da4e42..00000000
Binary files a/Output/x64/gstreamer/libgstalpha.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstalphacolor.dll b/Output/x64/gstreamer/libgstalphacolor.dll
deleted file mode 100644
index 827b5485..00000000
Binary files a/Output/x64/gstreamer/libgstalphacolor.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstamrnb.dll b/Output/x64/gstreamer/libgstamrnb.dll
deleted file mode 100644
index cf179595..00000000
Binary files a/Output/x64/gstreamer/libgstamrnb.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstamrwbdec.dll b/Output/x64/gstreamer/libgstamrwbdec.dll
deleted file mode 100644
index 199030f8..00000000
Binary files a/Output/x64/gstreamer/libgstamrwbdec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstapetag.dll b/Output/x64/gstreamer/libgstapetag.dll
deleted file mode 100644
index f3c3c7ab..00000000
Binary files a/Output/x64/gstreamer/libgstapetag.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstapp-1.0-0.dll b/Output/x64/gstreamer/libgstapp-1.0-0.dll
deleted file mode 100644
index 3888aef7..00000000
Binary files a/Output/x64/gstreamer/libgstapp-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstapp.dll b/Output/x64/gstreamer/libgstapp.dll
deleted file mode 100644
index ceee5341..00000000
Binary files a/Output/x64/gstreamer/libgstapp.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstasf.dll b/Output/x64/gstreamer/libgstasf.dll
deleted file mode 100644
index 18a6d28f..00000000
Binary files a/Output/x64/gstreamer/libgstasf.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstasfmux.dll b/Output/x64/gstreamer/libgstasfmux.dll
deleted file mode 100644
index 28428ad8..00000000
Binary files a/Output/x64/gstreamer/libgstasfmux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstassrender.dll b/Output/x64/gstreamer/libgstassrender.dll
deleted file mode 100644
index f6788bb1..00000000
Binary files a/Output/x64/gstreamer/libgstassrender.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudio-1.0-0.dll b/Output/x64/gstreamer/libgstaudio-1.0-0.dll
deleted file mode 100644
index 24f14d8c..00000000
Binary files a/Output/x64/gstreamer/libgstaudio-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudioconvert.dll b/Output/x64/gstreamer/libgstaudioconvert.dll
deleted file mode 100644
index ae4eb2cc..00000000
Binary files a/Output/x64/gstreamer/libgstaudioconvert.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudiofx.dll b/Output/x64/gstreamer/libgstaudiofx.dll
deleted file mode 100644
index 0feadf81..00000000
Binary files a/Output/x64/gstreamer/libgstaudiofx.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudioparsers.dll b/Output/x64/gstreamer/libgstaudioparsers.dll
deleted file mode 100644
index 01f0e4df..00000000
Binary files a/Output/x64/gstreamer/libgstaudioparsers.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudiorate.dll b/Output/x64/gstreamer/libgstaudiorate.dll
deleted file mode 100644
index f39f6e93..00000000
Binary files a/Output/x64/gstreamer/libgstaudiorate.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudioresample.dll b/Output/x64/gstreamer/libgstaudioresample.dll
deleted file mode 100644
index 304c7c9b..00000000
Binary files a/Output/x64/gstreamer/libgstaudioresample.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudiotestsrc.dll b/Output/x64/gstreamer/libgstaudiotestsrc.dll
deleted file mode 100644
index df012974..00000000
Binary files a/Output/x64/gstreamer/libgstaudiotestsrc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstaudiovisualizers.dll b/Output/x64/gstreamer/libgstaudiovisualizers.dll
deleted file mode 100644
index fe0e4b17..00000000
Binary files a/Output/x64/gstreamer/libgstaudiovisualizers.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstauparse.dll b/Output/x64/gstreamer/libgstauparse.dll
deleted file mode 100644
index 521252a7..00000000
Binary files a/Output/x64/gstreamer/libgstauparse.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstautoconvert.dll b/Output/x64/gstreamer/libgstautoconvert.dll
deleted file mode 100644
index 345816ab..00000000
Binary files a/Output/x64/gstreamer/libgstautoconvert.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstautodetect.dll b/Output/x64/gstreamer/libgstautodetect.dll
deleted file mode 100644
index c36c6bdf..00000000
Binary files a/Output/x64/gstreamer/libgstautodetect.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstavi.dll b/Output/x64/gstreamer/libgstavi.dll
deleted file mode 100644
index 110cd16d..00000000
Binary files a/Output/x64/gstreamer/libgstavi.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstbase-1.0-0.dll b/Output/x64/gstreamer/libgstbase-1.0-0.dll
deleted file mode 100644
index 61c901b2..00000000
Binary files a/Output/x64/gstreamer/libgstbase-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll b/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll
deleted file mode 100644
index 98613355..00000000
Binary files a/Output/x64/gstreamer/libgstbasecamerabinsrc-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstbayer.dll b/Output/x64/gstreamer/libgstbayer.dll
deleted file mode 100644
index 2b974151..00000000
Binary files a/Output/x64/gstreamer/libgstbayer.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcairo.dll b/Output/x64/gstreamer/libgstcairo.dll
deleted file mode 100644
index 7ae8c9f5..00000000
Binary files a/Output/x64/gstreamer/libgstcairo.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcamerabin2.dll b/Output/x64/gstreamer/libgstcamerabin2.dll
deleted file mode 100644
index 81f288ae..00000000
Binary files a/Output/x64/gstreamer/libgstcamerabin2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll b/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll
deleted file mode 100644
index 93717faa..00000000
Binary files a/Output/x64/gstreamer/libgstcodecparsers-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcoloreffects.dll b/Output/x64/gstreamer/libgstcoloreffects.dll
deleted file mode 100644
index da9fdf91..00000000
Binary files a/Output/x64/gstreamer/libgstcoloreffects.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcontroller-1.0-0.dll b/Output/x64/gstreamer/libgstcontroller-1.0-0.dll
deleted file mode 100644
index 9f378cde..00000000
Binary files a/Output/x64/gstreamer/libgstcontroller-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcoreelements.dll b/Output/x64/gstreamer/libgstcoreelements.dll
deleted file mode 100644
index 53071c00..00000000
Binary files a/Output/x64/gstreamer/libgstcoreelements.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstcutter.dll b/Output/x64/gstreamer/libgstcutter.dll
deleted file mode 100644
index 3284d684..00000000
Binary files a/Output/x64/gstreamer/libgstcutter.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstd3dvideosink.dll b/Output/x64/gstreamer/libgstd3dvideosink.dll
deleted file mode 100644
index a256c1b2..00000000
Binary files a/Output/x64/gstreamer/libgstd3dvideosink.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdataurisrc.dll b/Output/x64/gstreamer/libgstdataurisrc.dll
deleted file mode 100644
index 23f7cc17..00000000
Binary files a/Output/x64/gstreamer/libgstdataurisrc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdebug.dll b/Output/x64/gstreamer/libgstdebug.dll
deleted file mode 100644
index 5e57d929..00000000
Binary files a/Output/x64/gstreamer/libgstdebug.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdeinterlace.dll b/Output/x64/gstreamer/libgstdeinterlace.dll
deleted file mode 100644
index 632dcd3d..00000000
Binary files a/Output/x64/gstreamer/libgstdeinterlace.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdirectsoundsink.dll b/Output/x64/gstreamer/libgstdirectsoundsink.dll
deleted file mode 100644
index e88592ea..00000000
Binary files a/Output/x64/gstreamer/libgstdirectsoundsink.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdtmf.dll b/Output/x64/gstreamer/libgstdtmf.dll
deleted file mode 100644
index 90842df1..00000000
Binary files a/Output/x64/gstreamer/libgstdtmf.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdtsdec.dll b/Output/x64/gstreamer/libgstdtsdec.dll
deleted file mode 100644
index 2ab34a34..00000000
Binary files a/Output/x64/gstreamer/libgstdtsdec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdv.dll b/Output/x64/gstreamer/libgstdv.dll
deleted file mode 100644
index 79b387cd..00000000
Binary files a/Output/x64/gstreamer/libgstdv.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdvbsuboverlay.dll b/Output/x64/gstreamer/libgstdvbsuboverlay.dll
deleted file mode 100644
index af9aab8a..00000000
Binary files a/Output/x64/gstreamer/libgstdvbsuboverlay.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdvdlpcmdec.dll b/Output/x64/gstreamer/libgstdvdlpcmdec.dll
deleted file mode 100644
index 91957e78..00000000
Binary files a/Output/x64/gstreamer/libgstdvdlpcmdec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdvdread.dll b/Output/x64/gstreamer/libgstdvdread.dll
deleted file mode 100644
index 4bf8d797..00000000
Binary files a/Output/x64/gstreamer/libgstdvdread.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstdvdspu.dll b/Output/x64/gstreamer/libgstdvdspu.dll
deleted file mode 100644
index 0efa6a49..00000000
Binary files a/Output/x64/gstreamer/libgstdvdspu.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsteffectv.dll b/Output/x64/gstreamer/libgsteffectv.dll
deleted file mode 100644
index 9163d2ad..00000000
Binary files a/Output/x64/gstreamer/libgsteffectv.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstencodebin.dll b/Output/x64/gstreamer/libgstencodebin.dll
deleted file mode 100644
index 14aa774c..00000000
Binary files a/Output/x64/gstreamer/libgstencodebin.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstequalizer.dll b/Output/x64/gstreamer/libgstequalizer.dll
deleted file mode 100644
index 38248417..00000000
Binary files a/Output/x64/gstreamer/libgstequalizer.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstfaad.dll b/Output/x64/gstreamer/libgstfaad.dll
deleted file mode 100644
index a397019f..00000000
Binary files a/Output/x64/gstreamer/libgstfaad.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstfft-1.0-0.dll b/Output/x64/gstreamer/libgstfft-1.0-0.dll
deleted file mode 100644
index 81c46e71..00000000
Binary files a/Output/x64/gstreamer/libgstfft-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstfieldanalysis.dll b/Output/x64/gstreamer/libgstfieldanalysis.dll
deleted file mode 100644
index 9b0c7e3d..00000000
Binary files a/Output/x64/gstreamer/libgstfieldanalysis.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstflac.dll b/Output/x64/gstreamer/libgstflac.dll
deleted file mode 100644
index 5a841071..00000000
Binary files a/Output/x64/gstreamer/libgstflac.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstflv.dll b/Output/x64/gstreamer/libgstflv.dll
deleted file mode 100644
index 91b04163..00000000
Binary files a/Output/x64/gstreamer/libgstflv.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstflxdec.dll b/Output/x64/gstreamer/libgstflxdec.dll
deleted file mode 100644
index a530e638..00000000
Binary files a/Output/x64/gstreamer/libgstflxdec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstfragmented.dll b/Output/x64/gstreamer/libgstfragmented.dll
deleted file mode 100644
index 8dbbf084..00000000
Binary files a/Output/x64/gstreamer/libgstfragmented.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstfrei0r.dll b/Output/x64/gstreamer/libgstfrei0r.dll
deleted file mode 100644
index b5bd952a..00000000
Binary files a/Output/x64/gstreamer/libgstfrei0r.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgaudieffects.dll b/Output/x64/gstreamer/libgstgaudieffects.dll
deleted file mode 100644
index 88281c51..00000000
Binary files a/Output/x64/gstreamer/libgstgaudieffects.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgdkpixbuf.dll b/Output/x64/gstreamer/libgstgdkpixbuf.dll
deleted file mode 100644
index 93e946b7..00000000
Binary files a/Output/x64/gstreamer/libgstgdkpixbuf.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgeometrictransform.dll b/Output/x64/gstreamer/libgstgeometrictransform.dll
deleted file mode 100644
index d96a28cf..00000000
Binary files a/Output/x64/gstreamer/libgstgeometrictransform.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgio.dll b/Output/x64/gstreamer/libgstgio.dll
deleted file mode 100644
index 6d46d1f6..00000000
Binary files a/Output/x64/gstreamer/libgstgio.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgoom.dll b/Output/x64/gstreamer/libgstgoom.dll
deleted file mode 100644
index 12a2fae1..00000000
Binary files a/Output/x64/gstreamer/libgstgoom.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstgoom2k1.dll b/Output/x64/gstreamer/libgstgoom2k1.dll
deleted file mode 100644
index 81402b5b..00000000
Binary files a/Output/x64/gstreamer/libgstgoom2k1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsticydemux.dll b/Output/x64/gstreamer/libgsticydemux.dll
deleted file mode 100644
index ec9f5da3..00000000
Binary files a/Output/x64/gstreamer/libgsticydemux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstid3demux.dll b/Output/x64/gstreamer/libgstid3demux.dll
deleted file mode 100644
index 03dfb3c8..00000000
Binary files a/Output/x64/gstreamer/libgstid3demux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstid3tag.dll b/Output/x64/gstreamer/libgstid3tag.dll
deleted file mode 100644
index 87ee51fa..00000000
Binary files a/Output/x64/gstreamer/libgstid3tag.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstimagefreeze.dll b/Output/x64/gstreamer/libgstimagefreeze.dll
deleted file mode 100644
index 7a7c77c2..00000000
Binary files a/Output/x64/gstreamer/libgstimagefreeze.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstinterlace.dll b/Output/x64/gstreamer/libgstinterlace.dll
deleted file mode 100644
index 023692d9..00000000
Binary files a/Output/x64/gstreamer/libgstinterlace.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstinterleave.dll b/Output/x64/gstreamer/libgstinterleave.dll
deleted file mode 100644
index 0a2fcfda..00000000
Binary files a/Output/x64/gstreamer/libgstinterleave.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstisomp4.dll b/Output/x64/gstreamer/libgstisomp4.dll
deleted file mode 100644
index 2bb6f4f2..00000000
Binary files a/Output/x64/gstreamer/libgstisomp4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstjpeg.dll b/Output/x64/gstreamer/libgstjpeg.dll
deleted file mode 100644
index 5efccb76..00000000
Binary files a/Output/x64/gstreamer/libgstjpeg.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstjpegformat.dll b/Output/x64/gstreamer/libgstjpegformat.dll
deleted file mode 100644
index 16aa28ce..00000000
Binary files a/Output/x64/gstreamer/libgstjpegformat.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstlevel.dll b/Output/x64/gstreamer/libgstlevel.dll
deleted file mode 100644
index 9e5845bc..00000000
Binary files a/Output/x64/gstreamer/libgstlevel.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstlibav.dll b/Output/x64/gstreamer/libgstlibav.dll
deleted file mode 100644
index 14fb7fcb..00000000
Binary files a/Output/x64/gstreamer/libgstlibav.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstlibvisual.dll b/Output/x64/gstreamer/libgstlibvisual.dll
deleted file mode 100644
index 7e69637b..00000000
Binary files a/Output/x64/gstreamer/libgstlibvisual.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstliveadder.dll b/Output/x64/gstreamer/libgstliveadder.dll
deleted file mode 100644
index f813831c..00000000
Binary files a/Output/x64/gstreamer/libgstliveadder.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmad.dll b/Output/x64/gstreamer/libgstmad.dll
deleted file mode 100644
index 34347486..00000000
Binary files a/Output/x64/gstreamer/libgstmad.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmatroska.dll b/Output/x64/gstreamer/libgstmatroska.dll
deleted file mode 100644
index cdadba86..00000000
Binary files a/Output/x64/gstreamer/libgstmatroska.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmms.dll b/Output/x64/gstreamer/libgstmms.dll
deleted file mode 100644
index 0e664a4a..00000000
Binary files a/Output/x64/gstreamer/libgstmms.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmpeg2dec.dll b/Output/x64/gstreamer/libgstmpeg2dec.dll
deleted file mode 100644
index 8c594f28..00000000
Binary files a/Output/x64/gstreamer/libgstmpeg2dec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmpegpsdemux.dll b/Output/x64/gstreamer/libgstmpegpsdemux.dll
deleted file mode 100644
index 528d3145..00000000
Binary files a/Output/x64/gstreamer/libgstmpegpsdemux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmpegpsmux.dll b/Output/x64/gstreamer/libgstmpegpsmux.dll
deleted file mode 100644
index 28660251..00000000
Binary files a/Output/x64/gstreamer/libgstmpegpsmux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmpegtsdemux.dll b/Output/x64/gstreamer/libgstmpegtsdemux.dll
deleted file mode 100644
index 3815e96f..00000000
Binary files a/Output/x64/gstreamer/libgstmpegtsdemux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmpegtsmux.dll b/Output/x64/gstreamer/libgstmpegtsmux.dll
deleted file mode 100644
index e90cab54..00000000
Binary files a/Output/x64/gstreamer/libgstmpegtsmux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmulaw.dll b/Output/x64/gstreamer/libgstmulaw.dll
deleted file mode 100644
index f77d2a0f..00000000
Binary files a/Output/x64/gstreamer/libgstmulaw.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmultifile.dll b/Output/x64/gstreamer/libgstmultifile.dll
deleted file mode 100644
index a5c667e3..00000000
Binary files a/Output/x64/gstreamer/libgstmultifile.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstmultipart.dll b/Output/x64/gstreamer/libgstmultipart.dll
deleted file mode 100644
index 1a07d138..00000000
Binary files a/Output/x64/gstreamer/libgstmultipart.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstnet-1.0-0.dll b/Output/x64/gstreamer/libgstnet-1.0-0.dll
deleted file mode 100644
index 00a0b717..00000000
Binary files a/Output/x64/gstreamer/libgstnet-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstogg.dll b/Output/x64/gstreamer/libgstogg.dll
deleted file mode 100644
index 6d67444d..00000000
Binary files a/Output/x64/gstreamer/libgstogg.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstopus.dll b/Output/x64/gstreamer/libgstopus.dll
deleted file mode 100644
index 46419c5e..00000000
Binary files a/Output/x64/gstreamer/libgstopus.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstpango.dll b/Output/x64/gstreamer/libgstpango.dll
deleted file mode 100644
index f0d64403..00000000
Binary files a/Output/x64/gstreamer/libgstpango.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstpbutils-1.0-0.dll b/Output/x64/gstreamer/libgstpbutils-1.0-0.dll
deleted file mode 100644
index c795b0b4..00000000
Binary files a/Output/x64/gstreamer/libgstpbutils-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstpcapparse.dll b/Output/x64/gstreamer/libgstpcapparse.dll
deleted file mode 100644
index fe8325e8..00000000
Binary files a/Output/x64/gstreamer/libgstpcapparse.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstphotography-1.0-0.dll b/Output/x64/gstreamer/libgstphotography-1.0-0.dll
deleted file mode 100644
index 2a8d90cf..00000000
Binary files a/Output/x64/gstreamer/libgstphotography-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstplayback.dll b/Output/x64/gstreamer/libgstplayback.dll
deleted file mode 100644
index 1468ee4a..00000000
Binary files a/Output/x64/gstreamer/libgstplayback.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstpng.dll b/Output/x64/gstreamer/libgstpng.dll
deleted file mode 100644
index 879b75cf..00000000
Binary files a/Output/x64/gstreamer/libgstpng.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstpnm.dll b/Output/x64/gstreamer/libgstpnm.dll
deleted file mode 100644
index 6190b5f4..00000000
Binary files a/Output/x64/gstreamer/libgstpnm.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrawparse.dll b/Output/x64/gstreamer/libgstrawparse.dll
deleted file mode 100644
index b88704a5..00000000
Binary files a/Output/x64/gstreamer/libgstrawparse.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstreamer-1.0-0.dll b/Output/x64/gstreamer/libgstreamer-1.0-0.dll
deleted file mode 100644
index 41d966df..00000000
Binary files a/Output/x64/gstreamer/libgstreamer-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstreamersharpglue-1.0.0.dll b/Output/x64/gstreamer/libgstreamersharpglue-1.0.0.dll
deleted file mode 100644
index 4215d2ea..00000000
Binary files a/Output/x64/gstreamer/libgstreamersharpglue-1.0.0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstremovesilence.dll b/Output/x64/gstreamer/libgstremovesilence.dll
deleted file mode 100644
index 8ce09432..00000000
Binary files a/Output/x64/gstreamer/libgstremovesilence.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstreplaygain.dll b/Output/x64/gstreamer/libgstreplaygain.dll
deleted file mode 100644
index a23e781d..00000000
Binary files a/Output/x64/gstreamer/libgstreplaygain.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstresindvd.dll b/Output/x64/gstreamer/libgstresindvd.dll
deleted file mode 100644
index 93165f46..00000000
Binary files a/Output/x64/gstreamer/libgstresindvd.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstriff-1.0-0.dll b/Output/x64/gstreamer/libgstriff-1.0-0.dll
deleted file mode 100644
index f84c4d32..00000000
Binary files a/Output/x64/gstreamer/libgstriff-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrmdemux.dll b/Output/x64/gstreamer/libgstrmdemux.dll
deleted file mode 100644
index d96fbf96..00000000
Binary files a/Output/x64/gstreamer/libgstrmdemux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtp-1.0-0.dll b/Output/x64/gstreamer/libgstrtp-1.0-0.dll
deleted file mode 100644
index 671314bd..00000000
Binary files a/Output/x64/gstreamer/libgstrtp-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtp.dll b/Output/x64/gstreamer/libgstrtp.dll
deleted file mode 100644
index 956c06a6..00000000
Binary files a/Output/x64/gstreamer/libgstrtp.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtpmanager.dll b/Output/x64/gstreamer/libgstrtpmanager.dll
deleted file mode 100644
index 368bfad3..00000000
Binary files a/Output/x64/gstreamer/libgstrtpmanager.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtsp-1.0-0.dll b/Output/x64/gstreamer/libgstrtsp-1.0-0.dll
deleted file mode 100644
index aa6e0113..00000000
Binary files a/Output/x64/gstreamer/libgstrtsp-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstrtsp.dll b/Output/x64/gstreamer/libgstrtsp.dll
deleted file mode 100644
index ffe21d20..00000000
Binary files a/Output/x64/gstreamer/libgstrtsp.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstscaletempoplugin.dll b/Output/x64/gstreamer/libgstscaletempoplugin.dll
deleted file mode 100644
index d6666bf6..00000000
Binary files a/Output/x64/gstreamer/libgstscaletempoplugin.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstschro.dll b/Output/x64/gstreamer/libgstschro.dll
deleted file mode 100644
index f2df296e..00000000
Binary files a/Output/x64/gstreamer/libgstschro.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsdp-1.0-0.dll b/Output/x64/gstreamer/libgstsdp-1.0-0.dll
deleted file mode 100644
index e626b4ea..00000000
Binary files a/Output/x64/gstreamer/libgstsdp-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsdpelem.dll b/Output/x64/gstreamer/libgstsdpelem.dll
deleted file mode 100644
index 7a76eba2..00000000
Binary files a/Output/x64/gstreamer/libgstsdpelem.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsegmentclip.dll b/Output/x64/gstreamer/libgstsegmentclip.dll
deleted file mode 100644
index 65a59e2b..00000000
Binary files a/Output/x64/gstreamer/libgstsegmentclip.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstshapewipe.dll b/Output/x64/gstreamer/libgstshapewipe.dll
deleted file mode 100644
index 90936372..00000000
Binary files a/Output/x64/gstreamer/libgstshapewipe.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsiren.dll b/Output/x64/gstreamer/libgstsiren.dll
deleted file mode 100644
index 4cdce371..00000000
Binary files a/Output/x64/gstreamer/libgstsiren.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsmooth.dll b/Output/x64/gstreamer/libgstsmooth.dll
deleted file mode 100644
index ef4948b8..00000000
Binary files a/Output/x64/gstreamer/libgstsmooth.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsmpte.dll b/Output/x64/gstreamer/libgstsmpte.dll
deleted file mode 100644
index a5dca248..00000000
Binary files a/Output/x64/gstreamer/libgstsmpte.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsouphttpsrc.dll b/Output/x64/gstreamer/libgstsouphttpsrc.dll
deleted file mode 100644
index c0201bfd..00000000
Binary files a/Output/x64/gstreamer/libgstsouphttpsrc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstspectrum.dll b/Output/x64/gstreamer/libgstspectrum.dll
deleted file mode 100644
index 4fa8ca1b..00000000
Binary files a/Output/x64/gstreamer/libgstspectrum.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstspeed.dll b/Output/x64/gstreamer/libgstspeed.dll
deleted file mode 100644
index 211bdb13..00000000
Binary files a/Output/x64/gstreamer/libgstspeed.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstspeex.dll b/Output/x64/gstreamer/libgstspeex.dll
deleted file mode 100644
index 43bedb83..00000000
Binary files a/Output/x64/gstreamer/libgstspeex.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsubenc.dll b/Output/x64/gstreamer/libgstsubenc.dll
deleted file mode 100644
index 579ae262..00000000
Binary files a/Output/x64/gstreamer/libgstsubenc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstsubparse.dll b/Output/x64/gstreamer/libgstsubparse.dll
deleted file mode 100644
index 76cf5e71..00000000
Binary files a/Output/x64/gstreamer/libgstsubparse.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsttag-1.0-0.dll b/Output/x64/gstreamer/libgsttag-1.0-0.dll
deleted file mode 100644
index 7ce3bf6e..00000000
Binary files a/Output/x64/gstreamer/libgsttag-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsttaglib.dll b/Output/x64/gstreamer/libgsttaglib.dll
deleted file mode 100644
index 9e21c5e7..00000000
Binary files a/Output/x64/gstreamer/libgsttaglib.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsttcp.dll b/Output/x64/gstreamer/libgsttcp.dll
deleted file mode 100644
index 55c1080a..00000000
Binary files a/Output/x64/gstreamer/libgsttcp.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsttheora.dll b/Output/x64/gstreamer/libgsttheora.dll
deleted file mode 100644
index 3f3e7164..00000000
Binary files a/Output/x64/gstreamer/libgsttheora.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsttypefindfunctions.dll b/Output/x64/gstreamer/libgsttypefindfunctions.dll
deleted file mode 100644
index 927329dc..00000000
Binary files a/Output/x64/gstreamer/libgsttypefindfunctions.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstudp.dll b/Output/x64/gstreamer/libgstudp.dll
deleted file mode 100644
index c87365eb..00000000
Binary files a/Output/x64/gstreamer/libgstudp.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideo-1.0-0.dll b/Output/x64/gstreamer/libgstvideo-1.0-0.dll
deleted file mode 100644
index 4ef9ebf5..00000000
Binary files a/Output/x64/gstreamer/libgstvideo-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideobox.dll b/Output/x64/gstreamer/libgstvideobox.dll
deleted file mode 100644
index d3595eb5..00000000
Binary files a/Output/x64/gstreamer/libgstvideobox.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideoconvert.dll b/Output/x64/gstreamer/libgstvideoconvert.dll
deleted file mode 100644
index 2608d3e2..00000000
Binary files a/Output/x64/gstreamer/libgstvideoconvert.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideocrop.dll b/Output/x64/gstreamer/libgstvideocrop.dll
deleted file mode 100644
index 0534e404..00000000
Binary files a/Output/x64/gstreamer/libgstvideocrop.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideofilter.dll b/Output/x64/gstreamer/libgstvideofilter.dll
deleted file mode 100644
index b8e1bf6f..00000000
Binary files a/Output/x64/gstreamer/libgstvideofilter.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideomixer.dll b/Output/x64/gstreamer/libgstvideomixer.dll
deleted file mode 100644
index 94c88e5a..00000000
Binary files a/Output/x64/gstreamer/libgstvideomixer.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideoparsersbad.dll b/Output/x64/gstreamer/libgstvideoparsersbad.dll
deleted file mode 100644
index 8ff7eb69..00000000
Binary files a/Output/x64/gstreamer/libgstvideoparsersbad.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideorate.dll b/Output/x64/gstreamer/libgstvideorate.dll
deleted file mode 100644
index bb2d18a6..00000000
Binary files a/Output/x64/gstreamer/libgstvideorate.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideoscale.dll b/Output/x64/gstreamer/libgstvideoscale.dll
deleted file mode 100644
index c6f33fbb..00000000
Binary files a/Output/x64/gstreamer/libgstvideoscale.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvideotestsrc.dll b/Output/x64/gstreamer/libgstvideotestsrc.dll
deleted file mode 100644
index 6cf64eb8..00000000
Binary files a/Output/x64/gstreamer/libgstvideotestsrc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvolume.dll b/Output/x64/gstreamer/libgstvolume.dll
deleted file mode 100644
index 3aae8f8a..00000000
Binary files a/Output/x64/gstreamer/libgstvolume.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvorbis.dll b/Output/x64/gstreamer/libgstvorbis.dll
deleted file mode 100644
index 2bff4c72..00000000
Binary files a/Output/x64/gstreamer/libgstvorbis.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstvpx.dll b/Output/x64/gstreamer/libgstvpx.dll
deleted file mode 100644
index 33f4d1db..00000000
Binary files a/Output/x64/gstreamer/libgstvpx.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstwavenc.dll b/Output/x64/gstreamer/libgstwavenc.dll
deleted file mode 100644
index 5395f473..00000000
Binary files a/Output/x64/gstreamer/libgstwavenc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstwavpack.dll b/Output/x64/gstreamer/libgstwavpack.dll
deleted file mode 100644
index ed6e6d07..00000000
Binary files a/Output/x64/gstreamer/libgstwavpack.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstwavparse.dll b/Output/x64/gstreamer/libgstwavparse.dll
deleted file mode 100644
index 04eb79b1..00000000
Binary files a/Output/x64/gstreamer/libgstwavparse.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstx264.dll b/Output/x64/gstreamer/libgstx264.dll
deleted file mode 100644
index c90b1f99..00000000
Binary files a/Output/x64/gstreamer/libgstx264.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgstxingmux.dll b/Output/x64/gstreamer/libgstxingmux.dll
deleted file mode 100644
index ca135b1e..00000000
Binary files a/Output/x64/gstreamer/libgstxingmux.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsty4mdec.dll b/Output/x64/gstreamer/libgsty4mdec.dll
deleted file mode 100644
index 496e64bd..00000000
Binary files a/Output/x64/gstreamer/libgsty4mdec.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgsty4menc.dll b/Output/x64/gstreamer/libgsty4menc.dll
deleted file mode 100644
index 6a4de10c..00000000
Binary files a/Output/x64/gstreamer/libgsty4menc.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libgthread-2.0-0.dll b/Output/x64/gstreamer/libgthread-2.0-0.dll
deleted file mode 100644
index b148937b..00000000
Binary files a/Output/x64/gstreamer/libgthread-2.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libhogweed-2-2.dll b/Output/x64/gstreamer/libhogweed-2-2.dll
deleted file mode 100644
index f99fe527..00000000
Binary files a/Output/x64/gstreamer/libhogweed-2-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libiconv-2.dll b/Output/x64/gstreamer/libiconv-2.dll
deleted file mode 100644
index 525b96ee..00000000
Binary files a/Output/x64/gstreamer/libiconv-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libintl-8.dll b/Output/x64/gstreamer/libintl-8.dll
deleted file mode 100644
index c4f8427c..00000000
Binary files a/Output/x64/gstreamer/libintl-8.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libjpeg-8.dll b/Output/x64/gstreamer/libjpeg-8.dll
deleted file mode 100644
index 545f9efc..00000000
Binary files a/Output/x64/gstreamer/libjpeg-8.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libkate-1.dll b/Output/x64/gstreamer/libkate-1.dll
deleted file mode 100644
index c53dd128..00000000
Binary files a/Output/x64/gstreamer/libkate-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libmms-0.dll b/Output/x64/gstreamer/libmms-0.dll
deleted file mode 100644
index d510509f..00000000
Binary files a/Output/x64/gstreamer/libmms-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libmpeg2-0.dll b/Output/x64/gstreamer/libmpeg2-0.dll
deleted file mode 100644
index 1d2b87a8..00000000
Binary files a/Output/x64/gstreamer/libmpeg2-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libmpeg2convert-0.dll b/Output/x64/gstreamer/libmpeg2convert-0.dll
deleted file mode 100644
index f212e850..00000000
Binary files a/Output/x64/gstreamer/libmpeg2convert-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libnettle-4-4.dll b/Output/x64/gstreamer/libnettle-4-4.dll
deleted file mode 100644
index e991bad2..00000000
Binary files a/Output/x64/gstreamer/libnettle-4-4.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libogg-0.dll b/Output/x64/gstreamer/libogg-0.dll
deleted file mode 100644
index f247f6c6..00000000
Binary files a/Output/x64/gstreamer/libogg-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/liboggkate-1.dll b/Output/x64/gstreamer/liboggkate-1.dll
deleted file mode 100644
index 562c6586..00000000
Binary files a/Output/x64/gstreamer/liboggkate-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libopencore-amrnb-0.dll b/Output/x64/gstreamer/libopencore-amrnb-0.dll
deleted file mode 100644
index 408b4365..00000000
Binary files a/Output/x64/gstreamer/libopencore-amrnb-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libopencore-amrwb-0.dll b/Output/x64/gstreamer/libopencore-amrwb-0.dll
deleted file mode 100644
index 99f59d7d..00000000
Binary files a/Output/x64/gstreamer/libopencore-amrwb-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libopus-0.dll b/Output/x64/gstreamer/libopus-0.dll
deleted file mode 100644
index 95237c43..00000000
Binary files a/Output/x64/gstreamer/libopus-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/liborc-0.4-0.dll b/Output/x64/gstreamer/liborc-0.4-0.dll
deleted file mode 100644
index 78e956b9..00000000
Binary files a/Output/x64/gstreamer/liborc-0.4-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/liborc-test-0.4-0.dll b/Output/x64/gstreamer/liborc-test-0.4-0.dll
deleted file mode 100644
index ca7a35d3..00000000
Binary files a/Output/x64/gstreamer/liborc-test-0.4-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libpango-1.0-0.dll b/Output/x64/gstreamer/libpango-1.0-0.dll
deleted file mode 100644
index 5284e414..00000000
Binary files a/Output/x64/gstreamer/libpango-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libpangocairo-1.0-0.dll b/Output/x64/gstreamer/libpangocairo-1.0-0.dll
deleted file mode 100644
index 47e96ff3..00000000
Binary files a/Output/x64/gstreamer/libpangocairo-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libpangoft2-1.0-0.dll b/Output/x64/gstreamer/libpangoft2-1.0-0.dll
deleted file mode 100644
index b6c1a482..00000000
Binary files a/Output/x64/gstreamer/libpangoft2-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libpangowin32-1.0-0.dll b/Output/x64/gstreamer/libpangowin32-1.0-0.dll
deleted file mode 100644
index 8fd59964..00000000
Binary files a/Output/x64/gstreamer/libpangowin32-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libpixman-1-0.dll b/Output/x64/gstreamer/libpixman-1-0.dll
deleted file mode 100644
index 77861e8c..00000000
Binary files a/Output/x64/gstreamer/libpixman-1-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libpng15-15.dll b/Output/x64/gstreamer/libpng15-15.dll
deleted file mode 100644
index 365c1092..00000000
Binary files a/Output/x64/gstreamer/libpng15-15.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libschroedinger-1.0-0.dll b/Output/x64/gstreamer/libschroedinger-1.0-0.dll
deleted file mode 100644
index cde8841e..00000000
Binary files a/Output/x64/gstreamer/libschroedinger-1.0-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libsoup-2.4-1.dll b/Output/x64/gstreamer/libsoup-2.4-1.dll
deleted file mode 100644
index 49ff8507..00000000
Binary files a/Output/x64/gstreamer/libsoup-2.4-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libspeex-1.dll b/Output/x64/gstreamer/libspeex-1.dll
deleted file mode 100644
index c566a3d2..00000000
Binary files a/Output/x64/gstreamer/libspeex-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libspeexdsp-1.dll b/Output/x64/gstreamer/libspeexdsp-1.dll
deleted file mode 100644
index f129899a..00000000
Binary files a/Output/x64/gstreamer/libspeexdsp-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libstdc++-6.dll b/Output/x64/gstreamer/libstdc++-6.dll
deleted file mode 100644
index f21f9d04..00000000
Binary files a/Output/x64/gstreamer/libstdc++-6.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtag.dll b/Output/x64/gstreamer/libtag.dll
deleted file mode 100644
index 51e98425..00000000
Binary files a/Output/x64/gstreamer/libtag.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtag_c.dll b/Output/x64/gstreamer/libtag_c.dll
deleted file mode 100644
index 91edaab8..00000000
Binary files a/Output/x64/gstreamer/libtag_c.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtasn1-3.dll b/Output/x64/gstreamer/libtasn1-3.dll
deleted file mode 100644
index 9d5e7c98..00000000
Binary files a/Output/x64/gstreamer/libtasn1-3.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtheora-0.dll b/Output/x64/gstreamer/libtheora-0.dll
deleted file mode 100644
index 9444654c..00000000
Binary files a/Output/x64/gstreamer/libtheora-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtheoradec-1.dll b/Output/x64/gstreamer/libtheoradec-1.dll
deleted file mode 100644
index 5695322d..00000000
Binary files a/Output/x64/gstreamer/libtheoradec-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtheoraenc-1.dll b/Output/x64/gstreamer/libtheoraenc-1.dll
deleted file mode 100644
index 97f6d413..00000000
Binary files a/Output/x64/gstreamer/libtheoraenc-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libtiff-5.dll b/Output/x64/gstreamer/libtiff-5.dll
deleted file mode 100644
index 2946cbbf..00000000
Binary files a/Output/x64/gstreamer/libtiff-5.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libvisual-0.4-0.dll b/Output/x64/gstreamer/libvisual-0.4-0.dll
deleted file mode 100644
index 41380ba0..00000000
Binary files a/Output/x64/gstreamer/libvisual-0.4-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libvorbis-0.dll b/Output/x64/gstreamer/libvorbis-0.dll
deleted file mode 100644
index 16ed64eb..00000000
Binary files a/Output/x64/gstreamer/libvorbis-0.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libvorbisenc-2.dll b/Output/x64/gstreamer/libvorbisenc-2.dll
deleted file mode 100644
index 74076909..00000000
Binary files a/Output/x64/gstreamer/libvorbisenc-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libvorbisfile-3.dll b/Output/x64/gstreamer/libvorbisfile-3.dll
deleted file mode 100644
index f72cc6b7..00000000
Binary files a/Output/x64/gstreamer/libvorbisfile-3.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libwavpack-1.dll b/Output/x64/gstreamer/libwavpack-1.dll
deleted file mode 100644
index eda6f846..00000000
Binary files a/Output/x64/gstreamer/libwavpack-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libwinpthread-1.dll b/Output/x64/gstreamer/libwinpthread-1.dll
deleted file mode 100644
index e517c82d..00000000
Binary files a/Output/x64/gstreamer/libwinpthread-1.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libx264-125.dll b/Output/x64/gstreamer/libx264-125.dll
deleted file mode 100644
index 661089e3..00000000
Binary files a/Output/x64/gstreamer/libx264-125.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libxml2-2.dll b/Output/x64/gstreamer/libxml2-2.dll
deleted file mode 100644
index 6cea9673..00000000
Binary files a/Output/x64/gstreamer/libxml2-2.dll and /dev/null differ
diff --git a/Output/x64/gstreamer/libz.dll b/Output/x64/gstreamer/libz.dll
deleted file mode 100644
index 5daeaade..00000000
Binary files a/Output/x64/gstreamer/libz.dll and /dev/null differ
diff --git a/Output/x64/libgstreamersharpglue-1.0.0.dll b/Output/x64/libgstreamersharpglue-1.0.0.dll
new file mode 100644
index 00000000..22022133
Binary files /dev/null and b/Output/x64/libgstreamersharpglue-1.0.0.dll differ
diff --git a/Output/x86/gstreamer/libFLAC-8.dll b/Output/x86/gstreamer/libFLAC-8.dll
deleted file mode 100644
index f18d03ba..00000000
Binary files a/Output/x86/gstreamer/libFLAC-8.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/liba52-0.dll b/Output/x86/gstreamer/liba52-0.dll
deleted file mode 100644
index 0ca827a8..00000000
Binary files a/Output/x86/gstreamer/liba52-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libass-4.dll b/Output/x86/gstreamer/libass-4.dll
deleted file mode 100644
index 652e351c..00000000
Binary files a/Output/x86/gstreamer/libass-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libbz2.dll b/Output/x86/gstreamer/libbz2.dll
deleted file mode 100644
index bc4906bf..00000000
Binary files a/Output/x86/gstreamer/libbz2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libcairo-2.dll b/Output/x86/gstreamer/libcairo-2.dll
deleted file mode 100644
index 41d46bab..00000000
Binary files a/Output/x86/gstreamer/libcairo-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libcairo-gobject-2.dll b/Output/x86/gstreamer/libcairo-gobject-2.dll
deleted file mode 100644
index 254ad744..00000000
Binary files a/Output/x86/gstreamer/libcairo-gobject-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libcairo-script-interpreter-2.dll b/Output/x86/gstreamer/libcairo-script-interpreter-2.dll
deleted file mode 100644
index cb94ab63..00000000
Binary files a/Output/x86/gstreamer/libcairo-script-interpreter-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libcharset-1.dll b/Output/x86/gstreamer/libcharset-1.dll
deleted file mode 100644
index adf7ff56..00000000
Binary files a/Output/x86/gstreamer/libcharset-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libdca-0.dll b/Output/x86/gstreamer/libdca-0.dll
deleted file mode 100644
index 810ec4ad..00000000
Binary files a/Output/x86/gstreamer/libdca-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libdv-4.dll b/Output/x86/gstreamer/libdv-4.dll
deleted file mode 100644
index f4550758..00000000
Binary files a/Output/x86/gstreamer/libdv-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libdvdnav-4.dll b/Output/x86/gstreamer/libdvdnav-4.dll
deleted file mode 100644
index 9d6b2708..00000000
Binary files a/Output/x86/gstreamer/libdvdnav-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libdvdnavmini-4.dll b/Output/x86/gstreamer/libdvdnavmini-4.dll
deleted file mode 100644
index 18b93733..00000000
Binary files a/Output/x86/gstreamer/libdvdnavmini-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libdvdread-4.dll b/Output/x86/gstreamer/libdvdread-4.dll
deleted file mode 100644
index 792db099..00000000
Binary files a/Output/x86/gstreamer/libdvdread-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libexpat-1.dll b/Output/x86/gstreamer/libexpat-1.dll
deleted file mode 100644
index 755a3191..00000000
Binary files a/Output/x86/gstreamer/libexpat-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libfaad-2.dll b/Output/x86/gstreamer/libfaad-2.dll
deleted file mode 100644
index 8b530f21..00000000
Binary files a/Output/x86/gstreamer/libfaad-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libffi-6.dll b/Output/x86/gstreamer/libffi-6.dll
deleted file mode 100644
index 3b439f96..00000000
Binary files a/Output/x86/gstreamer/libffi-6.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libfontconfig-1.dll b/Output/x86/gstreamer/libfontconfig-1.dll
deleted file mode 100644
index 12384b6b..00000000
Binary files a/Output/x86/gstreamer/libfontconfig-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libfreetype-6.dll b/Output/x86/gstreamer/libfreetype-6.dll
deleted file mode 100644
index 2681a07f..00000000
Binary files a/Output/x86/gstreamer/libfreetype-6.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libfribidi-0.dll b/Output/x86/gstreamer/libfribidi-0.dll
deleted file mode 100644
index 5ff8d465..00000000
Binary files a/Output/x86/gstreamer/libfribidi-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgcc_s_sjlj-1.dll b/Output/x86/gstreamer/libgcc_s_sjlj-1.dll
deleted file mode 100644
index d7d77a76..00000000
Binary files a/Output/x86/gstreamer/libgcc_s_sjlj-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll b/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll
deleted file mode 100644
index 70f3e79f..00000000
Binary files a/Output/x86/gstreamer/libgdk_pixbuf-2.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgio-2.0-0.dll b/Output/x86/gstreamer/libgio-2.0-0.dll
deleted file mode 100644
index d25be862..00000000
Binary files a/Output/x86/gstreamer/libgio-2.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgiognutls.dll b/Output/x86/gstreamer/libgiognutls.dll
deleted file mode 100644
index 1eb0bf5d..00000000
Binary files a/Output/x86/gstreamer/libgiognutls.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libglib-2.0-0.dll b/Output/x86/gstreamer/libglib-2.0-0.dll
deleted file mode 100644
index ce815096..00000000
Binary files a/Output/x86/gstreamer/libglib-2.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgmodule-2.0-0.dll b/Output/x86/gstreamer/libgmodule-2.0-0.dll
deleted file mode 100644
index 821f700e..00000000
Binary files a/Output/x86/gstreamer/libgmodule-2.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgnutls-28.dll b/Output/x86/gstreamer/libgnutls-28.dll
deleted file mode 100644
index a2fc2320..00000000
Binary files a/Output/x86/gstreamer/libgnutls-28.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgnutls-openssl-27.dll b/Output/x86/gstreamer/libgnutls-openssl-27.dll
deleted file mode 100644
index cff30817..00000000
Binary files a/Output/x86/gstreamer/libgnutls-openssl-27.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgnutlsxx-28.dll b/Output/x86/gstreamer/libgnutlsxx-28.dll
deleted file mode 100644
index cfbe9cdb..00000000
Binary files a/Output/x86/gstreamer/libgnutlsxx-28.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgobject-2.0-0.dll b/Output/x86/gstreamer/libgobject-2.0-0.dll
deleted file mode 100644
index 97cab67f..00000000
Binary files a/Output/x86/gstreamer/libgobject-2.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgomp-1.dll b/Output/x86/gstreamer/libgomp-1.dll
deleted file mode 100644
index 7a50d33b..00000000
Binary files a/Output/x86/gstreamer/libgomp-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsta52dec.dll b/Output/x86/gstreamer/libgsta52dec.dll
deleted file mode 100644
index 6935143b..00000000
Binary files a/Output/x86/gstreamer/libgsta52dec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstadder.dll b/Output/x86/gstreamer/libgstadder.dll
deleted file mode 100644
index 0f7c83af..00000000
Binary files a/Output/x86/gstreamer/libgstadder.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstadpcmdec.dll b/Output/x86/gstreamer/libgstadpcmdec.dll
deleted file mode 100644
index 275324e1..00000000
Binary files a/Output/x86/gstreamer/libgstadpcmdec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstadpcmenc.dll b/Output/x86/gstreamer/libgstadpcmenc.dll
deleted file mode 100644
index 13555dd8..00000000
Binary files a/Output/x86/gstreamer/libgstadpcmenc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstalaw.dll b/Output/x86/gstreamer/libgstalaw.dll
deleted file mode 100644
index 62610a9b..00000000
Binary files a/Output/x86/gstreamer/libgstalaw.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstalpha.dll b/Output/x86/gstreamer/libgstalpha.dll
deleted file mode 100644
index e8ab504c..00000000
Binary files a/Output/x86/gstreamer/libgstalpha.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstalphacolor.dll b/Output/x86/gstreamer/libgstalphacolor.dll
deleted file mode 100644
index bade1163..00000000
Binary files a/Output/x86/gstreamer/libgstalphacolor.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstamrnb.dll b/Output/x86/gstreamer/libgstamrnb.dll
deleted file mode 100644
index 98ce6e3e..00000000
Binary files a/Output/x86/gstreamer/libgstamrnb.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstamrwbdec.dll b/Output/x86/gstreamer/libgstamrwbdec.dll
deleted file mode 100644
index 7667849a..00000000
Binary files a/Output/x86/gstreamer/libgstamrwbdec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstapetag.dll b/Output/x86/gstreamer/libgstapetag.dll
deleted file mode 100644
index a20ca052..00000000
Binary files a/Output/x86/gstreamer/libgstapetag.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstapp-1.0-0.dll b/Output/x86/gstreamer/libgstapp-1.0-0.dll
deleted file mode 100644
index d9adcc4a..00000000
Binary files a/Output/x86/gstreamer/libgstapp-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstapp.dll b/Output/x86/gstreamer/libgstapp.dll
deleted file mode 100644
index 6826d2a3..00000000
Binary files a/Output/x86/gstreamer/libgstapp.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstasf.dll b/Output/x86/gstreamer/libgstasf.dll
deleted file mode 100644
index f8560d52..00000000
Binary files a/Output/x86/gstreamer/libgstasf.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstasfmux.dll b/Output/x86/gstreamer/libgstasfmux.dll
deleted file mode 100644
index be272a55..00000000
Binary files a/Output/x86/gstreamer/libgstasfmux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstassrender.dll b/Output/x86/gstreamer/libgstassrender.dll
deleted file mode 100644
index 9c052a3c..00000000
Binary files a/Output/x86/gstreamer/libgstassrender.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudio-1.0-0.dll b/Output/x86/gstreamer/libgstaudio-1.0-0.dll
deleted file mode 100644
index 9d37513b..00000000
Binary files a/Output/x86/gstreamer/libgstaudio-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudioconvert.dll b/Output/x86/gstreamer/libgstaudioconvert.dll
deleted file mode 100644
index 6424f8d9..00000000
Binary files a/Output/x86/gstreamer/libgstaudioconvert.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudiofx.dll b/Output/x86/gstreamer/libgstaudiofx.dll
deleted file mode 100644
index 512b5f37..00000000
Binary files a/Output/x86/gstreamer/libgstaudiofx.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudioparsers.dll b/Output/x86/gstreamer/libgstaudioparsers.dll
deleted file mode 100644
index 4203a34d..00000000
Binary files a/Output/x86/gstreamer/libgstaudioparsers.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudiorate.dll b/Output/x86/gstreamer/libgstaudiorate.dll
deleted file mode 100644
index 0ac4431b..00000000
Binary files a/Output/x86/gstreamer/libgstaudiorate.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudioresample.dll b/Output/x86/gstreamer/libgstaudioresample.dll
deleted file mode 100644
index b9cb623a..00000000
Binary files a/Output/x86/gstreamer/libgstaudioresample.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudiotestsrc.dll b/Output/x86/gstreamer/libgstaudiotestsrc.dll
deleted file mode 100644
index def73e32..00000000
Binary files a/Output/x86/gstreamer/libgstaudiotestsrc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstaudiovisualizers.dll b/Output/x86/gstreamer/libgstaudiovisualizers.dll
deleted file mode 100644
index 36015556..00000000
Binary files a/Output/x86/gstreamer/libgstaudiovisualizers.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstauparse.dll b/Output/x86/gstreamer/libgstauparse.dll
deleted file mode 100644
index 732f6592..00000000
Binary files a/Output/x86/gstreamer/libgstauparse.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstautoconvert.dll b/Output/x86/gstreamer/libgstautoconvert.dll
deleted file mode 100644
index aaf8aa7f..00000000
Binary files a/Output/x86/gstreamer/libgstautoconvert.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstautodetect.dll b/Output/x86/gstreamer/libgstautodetect.dll
deleted file mode 100644
index deb759da..00000000
Binary files a/Output/x86/gstreamer/libgstautodetect.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstavi.dll b/Output/x86/gstreamer/libgstavi.dll
deleted file mode 100644
index 63d6d1f9..00000000
Binary files a/Output/x86/gstreamer/libgstavi.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstbase-1.0-0.dll b/Output/x86/gstreamer/libgstbase-1.0-0.dll
deleted file mode 100644
index aec94495..00000000
Binary files a/Output/x86/gstreamer/libgstbase-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll b/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll
deleted file mode 100644
index 3e9b960e..00000000
Binary files a/Output/x86/gstreamer/libgstbasecamerabinsrc-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstbayer.dll b/Output/x86/gstreamer/libgstbayer.dll
deleted file mode 100644
index 723b288d..00000000
Binary files a/Output/x86/gstreamer/libgstbayer.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcairo.dll b/Output/x86/gstreamer/libgstcairo.dll
deleted file mode 100644
index 5b286ca3..00000000
Binary files a/Output/x86/gstreamer/libgstcairo.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcamerabin2.dll b/Output/x86/gstreamer/libgstcamerabin2.dll
deleted file mode 100644
index a724114f..00000000
Binary files a/Output/x86/gstreamer/libgstcamerabin2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll b/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll
deleted file mode 100644
index 79883023..00000000
Binary files a/Output/x86/gstreamer/libgstcodecparsers-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcoloreffects.dll b/Output/x86/gstreamer/libgstcoloreffects.dll
deleted file mode 100644
index 6d4cbf1e..00000000
Binary files a/Output/x86/gstreamer/libgstcoloreffects.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcontroller-1.0-0.dll b/Output/x86/gstreamer/libgstcontroller-1.0-0.dll
deleted file mode 100644
index 60d450ed..00000000
Binary files a/Output/x86/gstreamer/libgstcontroller-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcoreelements.dll b/Output/x86/gstreamer/libgstcoreelements.dll
deleted file mode 100644
index 09f11b80..00000000
Binary files a/Output/x86/gstreamer/libgstcoreelements.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstcutter.dll b/Output/x86/gstreamer/libgstcutter.dll
deleted file mode 100644
index 68761d85..00000000
Binary files a/Output/x86/gstreamer/libgstcutter.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstd3dvideosink.dll b/Output/x86/gstreamer/libgstd3dvideosink.dll
deleted file mode 100644
index d4cd9a0e..00000000
Binary files a/Output/x86/gstreamer/libgstd3dvideosink.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdataurisrc.dll b/Output/x86/gstreamer/libgstdataurisrc.dll
deleted file mode 100644
index 92907916..00000000
Binary files a/Output/x86/gstreamer/libgstdataurisrc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdebug.dll b/Output/x86/gstreamer/libgstdebug.dll
deleted file mode 100644
index bd768e6a..00000000
Binary files a/Output/x86/gstreamer/libgstdebug.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdeinterlace.dll b/Output/x86/gstreamer/libgstdeinterlace.dll
deleted file mode 100644
index a7a3cec6..00000000
Binary files a/Output/x86/gstreamer/libgstdeinterlace.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdirectsoundsink.dll b/Output/x86/gstreamer/libgstdirectsoundsink.dll
deleted file mode 100644
index e6c4474b..00000000
Binary files a/Output/x86/gstreamer/libgstdirectsoundsink.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdtmf.dll b/Output/x86/gstreamer/libgstdtmf.dll
deleted file mode 100644
index b6a84f90..00000000
Binary files a/Output/x86/gstreamer/libgstdtmf.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdtsdec.dll b/Output/x86/gstreamer/libgstdtsdec.dll
deleted file mode 100644
index 2ed5f4cc..00000000
Binary files a/Output/x86/gstreamer/libgstdtsdec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdv.dll b/Output/x86/gstreamer/libgstdv.dll
deleted file mode 100644
index cca47530..00000000
Binary files a/Output/x86/gstreamer/libgstdv.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdvbsuboverlay.dll b/Output/x86/gstreamer/libgstdvbsuboverlay.dll
deleted file mode 100644
index 551b74f8..00000000
Binary files a/Output/x86/gstreamer/libgstdvbsuboverlay.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdvdlpcmdec.dll b/Output/x86/gstreamer/libgstdvdlpcmdec.dll
deleted file mode 100644
index 026b9510..00000000
Binary files a/Output/x86/gstreamer/libgstdvdlpcmdec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdvdread.dll b/Output/x86/gstreamer/libgstdvdread.dll
deleted file mode 100644
index 71992132..00000000
Binary files a/Output/x86/gstreamer/libgstdvdread.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstdvdspu.dll b/Output/x86/gstreamer/libgstdvdspu.dll
deleted file mode 100644
index 0d450e0b..00000000
Binary files a/Output/x86/gstreamer/libgstdvdspu.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsteffectv.dll b/Output/x86/gstreamer/libgsteffectv.dll
deleted file mode 100644
index dea2dfc1..00000000
Binary files a/Output/x86/gstreamer/libgsteffectv.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstencodebin.dll b/Output/x86/gstreamer/libgstencodebin.dll
deleted file mode 100644
index 04f897a0..00000000
Binary files a/Output/x86/gstreamer/libgstencodebin.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstequalizer.dll b/Output/x86/gstreamer/libgstequalizer.dll
deleted file mode 100644
index 71502973..00000000
Binary files a/Output/x86/gstreamer/libgstequalizer.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstfaad.dll b/Output/x86/gstreamer/libgstfaad.dll
deleted file mode 100644
index 21215363..00000000
Binary files a/Output/x86/gstreamer/libgstfaad.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstfft-1.0-0.dll b/Output/x86/gstreamer/libgstfft-1.0-0.dll
deleted file mode 100644
index e352b916..00000000
Binary files a/Output/x86/gstreamer/libgstfft-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstfieldanalysis.dll b/Output/x86/gstreamer/libgstfieldanalysis.dll
deleted file mode 100644
index 0409f03a..00000000
Binary files a/Output/x86/gstreamer/libgstfieldanalysis.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstflac.dll b/Output/x86/gstreamer/libgstflac.dll
deleted file mode 100644
index 0e95adeb..00000000
Binary files a/Output/x86/gstreamer/libgstflac.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstflv.dll b/Output/x86/gstreamer/libgstflv.dll
deleted file mode 100644
index 1d400bbe..00000000
Binary files a/Output/x86/gstreamer/libgstflv.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstflxdec.dll b/Output/x86/gstreamer/libgstflxdec.dll
deleted file mode 100644
index 849c48f7..00000000
Binary files a/Output/x86/gstreamer/libgstflxdec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstfragmented.dll b/Output/x86/gstreamer/libgstfragmented.dll
deleted file mode 100644
index a1918e04..00000000
Binary files a/Output/x86/gstreamer/libgstfragmented.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstfrei0r.dll b/Output/x86/gstreamer/libgstfrei0r.dll
deleted file mode 100644
index f99ecf0e..00000000
Binary files a/Output/x86/gstreamer/libgstfrei0r.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgaudieffects.dll b/Output/x86/gstreamer/libgstgaudieffects.dll
deleted file mode 100644
index 570c0943..00000000
Binary files a/Output/x86/gstreamer/libgstgaudieffects.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgdkpixbuf.dll b/Output/x86/gstreamer/libgstgdkpixbuf.dll
deleted file mode 100644
index 6ad1fdc9..00000000
Binary files a/Output/x86/gstreamer/libgstgdkpixbuf.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgeometrictransform.dll b/Output/x86/gstreamer/libgstgeometrictransform.dll
deleted file mode 100644
index a317340c..00000000
Binary files a/Output/x86/gstreamer/libgstgeometrictransform.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgio.dll b/Output/x86/gstreamer/libgstgio.dll
deleted file mode 100644
index e7a63766..00000000
Binary files a/Output/x86/gstreamer/libgstgio.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgoom.dll b/Output/x86/gstreamer/libgstgoom.dll
deleted file mode 100644
index 395c8faf..00000000
Binary files a/Output/x86/gstreamer/libgstgoom.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstgoom2k1.dll b/Output/x86/gstreamer/libgstgoom2k1.dll
deleted file mode 100644
index 0f6287f0..00000000
Binary files a/Output/x86/gstreamer/libgstgoom2k1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsticydemux.dll b/Output/x86/gstreamer/libgsticydemux.dll
deleted file mode 100644
index 27957fce..00000000
Binary files a/Output/x86/gstreamer/libgsticydemux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstid3demux.dll b/Output/x86/gstreamer/libgstid3demux.dll
deleted file mode 100644
index 8328cbaa..00000000
Binary files a/Output/x86/gstreamer/libgstid3demux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstid3tag.dll b/Output/x86/gstreamer/libgstid3tag.dll
deleted file mode 100644
index b26d26e9..00000000
Binary files a/Output/x86/gstreamer/libgstid3tag.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstimagefreeze.dll b/Output/x86/gstreamer/libgstimagefreeze.dll
deleted file mode 100644
index 3e16aa13..00000000
Binary files a/Output/x86/gstreamer/libgstimagefreeze.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstinterlace.dll b/Output/x86/gstreamer/libgstinterlace.dll
deleted file mode 100644
index a30d5efe..00000000
Binary files a/Output/x86/gstreamer/libgstinterlace.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstinterleave.dll b/Output/x86/gstreamer/libgstinterleave.dll
deleted file mode 100644
index afe5e982..00000000
Binary files a/Output/x86/gstreamer/libgstinterleave.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstisomp4.dll b/Output/x86/gstreamer/libgstisomp4.dll
deleted file mode 100644
index 380ccbf0..00000000
Binary files a/Output/x86/gstreamer/libgstisomp4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstjpeg.dll b/Output/x86/gstreamer/libgstjpeg.dll
deleted file mode 100644
index 782b348b..00000000
Binary files a/Output/x86/gstreamer/libgstjpeg.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstjpegformat.dll b/Output/x86/gstreamer/libgstjpegformat.dll
deleted file mode 100644
index 27c86925..00000000
Binary files a/Output/x86/gstreamer/libgstjpegformat.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstlevel.dll b/Output/x86/gstreamer/libgstlevel.dll
deleted file mode 100644
index 9579b6f3..00000000
Binary files a/Output/x86/gstreamer/libgstlevel.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstlibav.dll b/Output/x86/gstreamer/libgstlibav.dll
deleted file mode 100644
index b9b00c10..00000000
Binary files a/Output/x86/gstreamer/libgstlibav.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstlibvisual.dll b/Output/x86/gstreamer/libgstlibvisual.dll
deleted file mode 100644
index 10336c13..00000000
Binary files a/Output/x86/gstreamer/libgstlibvisual.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstliveadder.dll b/Output/x86/gstreamer/libgstliveadder.dll
deleted file mode 100644
index 68e431e7..00000000
Binary files a/Output/x86/gstreamer/libgstliveadder.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmad.dll b/Output/x86/gstreamer/libgstmad.dll
deleted file mode 100644
index 464049b5..00000000
Binary files a/Output/x86/gstreamer/libgstmad.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmatroska.dll b/Output/x86/gstreamer/libgstmatroska.dll
deleted file mode 100644
index 95073d1c..00000000
Binary files a/Output/x86/gstreamer/libgstmatroska.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmms.dll b/Output/x86/gstreamer/libgstmms.dll
deleted file mode 100644
index d8d35f08..00000000
Binary files a/Output/x86/gstreamer/libgstmms.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmpeg2dec.dll b/Output/x86/gstreamer/libgstmpeg2dec.dll
deleted file mode 100644
index e4ea7e8d..00000000
Binary files a/Output/x86/gstreamer/libgstmpeg2dec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmpegpsdemux.dll b/Output/x86/gstreamer/libgstmpegpsdemux.dll
deleted file mode 100644
index c28f4e7b..00000000
Binary files a/Output/x86/gstreamer/libgstmpegpsdemux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmpegpsmux.dll b/Output/x86/gstreamer/libgstmpegpsmux.dll
deleted file mode 100644
index eb6def20..00000000
Binary files a/Output/x86/gstreamer/libgstmpegpsmux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmpegtsdemux.dll b/Output/x86/gstreamer/libgstmpegtsdemux.dll
deleted file mode 100644
index 5b6ad429..00000000
Binary files a/Output/x86/gstreamer/libgstmpegtsdemux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmpegtsmux.dll b/Output/x86/gstreamer/libgstmpegtsmux.dll
deleted file mode 100644
index dec705bc..00000000
Binary files a/Output/x86/gstreamer/libgstmpegtsmux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmulaw.dll b/Output/x86/gstreamer/libgstmulaw.dll
deleted file mode 100644
index 7b688c10..00000000
Binary files a/Output/x86/gstreamer/libgstmulaw.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmultifile.dll b/Output/x86/gstreamer/libgstmultifile.dll
deleted file mode 100644
index d2382518..00000000
Binary files a/Output/x86/gstreamer/libgstmultifile.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstmultipart.dll b/Output/x86/gstreamer/libgstmultipart.dll
deleted file mode 100644
index 0bbdc65a..00000000
Binary files a/Output/x86/gstreamer/libgstmultipart.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstnet-1.0-0.dll b/Output/x86/gstreamer/libgstnet-1.0-0.dll
deleted file mode 100644
index 31fd83b4..00000000
Binary files a/Output/x86/gstreamer/libgstnet-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstogg.dll b/Output/x86/gstreamer/libgstogg.dll
deleted file mode 100644
index bee771b7..00000000
Binary files a/Output/x86/gstreamer/libgstogg.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstopus.dll b/Output/x86/gstreamer/libgstopus.dll
deleted file mode 100644
index 321c821e..00000000
Binary files a/Output/x86/gstreamer/libgstopus.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstpango.dll b/Output/x86/gstreamer/libgstpango.dll
deleted file mode 100644
index 8a07a701..00000000
Binary files a/Output/x86/gstreamer/libgstpango.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstpbutils-1.0-0.dll b/Output/x86/gstreamer/libgstpbutils-1.0-0.dll
deleted file mode 100644
index 7591f07b..00000000
Binary files a/Output/x86/gstreamer/libgstpbutils-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstpcapparse.dll b/Output/x86/gstreamer/libgstpcapparse.dll
deleted file mode 100644
index 0ac800b6..00000000
Binary files a/Output/x86/gstreamer/libgstpcapparse.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstphotography-1.0-0.dll b/Output/x86/gstreamer/libgstphotography-1.0-0.dll
deleted file mode 100644
index 803f779d..00000000
Binary files a/Output/x86/gstreamer/libgstphotography-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstplayback.dll b/Output/x86/gstreamer/libgstplayback.dll
deleted file mode 100644
index 0008c346..00000000
Binary files a/Output/x86/gstreamer/libgstplayback.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstpng.dll b/Output/x86/gstreamer/libgstpng.dll
deleted file mode 100644
index 7faafb3e..00000000
Binary files a/Output/x86/gstreamer/libgstpng.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstpnm.dll b/Output/x86/gstreamer/libgstpnm.dll
deleted file mode 100644
index f90b3ec3..00000000
Binary files a/Output/x86/gstreamer/libgstpnm.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrawparse.dll b/Output/x86/gstreamer/libgstrawparse.dll
deleted file mode 100644
index 4011a741..00000000
Binary files a/Output/x86/gstreamer/libgstrawparse.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstreamer-1.0-0.dll b/Output/x86/gstreamer/libgstreamer-1.0-0.dll
deleted file mode 100644
index dfd18558..00000000
Binary files a/Output/x86/gstreamer/libgstreamer-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstreamersharpglue-1.0.0.dll b/Output/x86/gstreamer/libgstreamersharpglue-1.0.0.dll
deleted file mode 100644
index fee8dae0..00000000
Binary files a/Output/x86/gstreamer/libgstreamersharpglue-1.0.0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstremovesilence.dll b/Output/x86/gstreamer/libgstremovesilence.dll
deleted file mode 100644
index 74ea1b92..00000000
Binary files a/Output/x86/gstreamer/libgstremovesilence.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstreplaygain.dll b/Output/x86/gstreamer/libgstreplaygain.dll
deleted file mode 100644
index c9e77216..00000000
Binary files a/Output/x86/gstreamer/libgstreplaygain.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstresindvd.dll b/Output/x86/gstreamer/libgstresindvd.dll
deleted file mode 100644
index 49fab065..00000000
Binary files a/Output/x86/gstreamer/libgstresindvd.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstriff-1.0-0.dll b/Output/x86/gstreamer/libgstriff-1.0-0.dll
deleted file mode 100644
index 67a8dde4..00000000
Binary files a/Output/x86/gstreamer/libgstriff-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrmdemux.dll b/Output/x86/gstreamer/libgstrmdemux.dll
deleted file mode 100644
index cffaa83f..00000000
Binary files a/Output/x86/gstreamer/libgstrmdemux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtp-1.0-0.dll b/Output/x86/gstreamer/libgstrtp-1.0-0.dll
deleted file mode 100644
index a0de60e2..00000000
Binary files a/Output/x86/gstreamer/libgstrtp-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtp.dll b/Output/x86/gstreamer/libgstrtp.dll
deleted file mode 100644
index bad2ac0a..00000000
Binary files a/Output/x86/gstreamer/libgstrtp.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtpmanager.dll b/Output/x86/gstreamer/libgstrtpmanager.dll
deleted file mode 100644
index 30499b6c..00000000
Binary files a/Output/x86/gstreamer/libgstrtpmanager.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtsp-1.0-0.dll b/Output/x86/gstreamer/libgstrtsp-1.0-0.dll
deleted file mode 100644
index d1bc1db3..00000000
Binary files a/Output/x86/gstreamer/libgstrtsp-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstrtsp.dll b/Output/x86/gstreamer/libgstrtsp.dll
deleted file mode 100644
index f3f6235b..00000000
Binary files a/Output/x86/gstreamer/libgstrtsp.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstscaletempoplugin.dll b/Output/x86/gstreamer/libgstscaletempoplugin.dll
deleted file mode 100644
index bebc907e..00000000
Binary files a/Output/x86/gstreamer/libgstscaletempoplugin.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstschro.dll b/Output/x86/gstreamer/libgstschro.dll
deleted file mode 100644
index 2fa33e7d..00000000
Binary files a/Output/x86/gstreamer/libgstschro.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsdp-1.0-0.dll b/Output/x86/gstreamer/libgstsdp-1.0-0.dll
deleted file mode 100644
index a158c2ba..00000000
Binary files a/Output/x86/gstreamer/libgstsdp-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsdpelem.dll b/Output/x86/gstreamer/libgstsdpelem.dll
deleted file mode 100644
index 5b4887fa..00000000
Binary files a/Output/x86/gstreamer/libgstsdpelem.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsegmentclip.dll b/Output/x86/gstreamer/libgstsegmentclip.dll
deleted file mode 100644
index 8dd51501..00000000
Binary files a/Output/x86/gstreamer/libgstsegmentclip.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstshapewipe.dll b/Output/x86/gstreamer/libgstshapewipe.dll
deleted file mode 100644
index feee0ab2..00000000
Binary files a/Output/x86/gstreamer/libgstshapewipe.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsiren.dll b/Output/x86/gstreamer/libgstsiren.dll
deleted file mode 100644
index 9c776e17..00000000
Binary files a/Output/x86/gstreamer/libgstsiren.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsmooth.dll b/Output/x86/gstreamer/libgstsmooth.dll
deleted file mode 100644
index 1a2a0c9b..00000000
Binary files a/Output/x86/gstreamer/libgstsmooth.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsmpte.dll b/Output/x86/gstreamer/libgstsmpte.dll
deleted file mode 100644
index 01c51019..00000000
Binary files a/Output/x86/gstreamer/libgstsmpte.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsouphttpsrc.dll b/Output/x86/gstreamer/libgstsouphttpsrc.dll
deleted file mode 100644
index 66f74e35..00000000
Binary files a/Output/x86/gstreamer/libgstsouphttpsrc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstspectrum.dll b/Output/x86/gstreamer/libgstspectrum.dll
deleted file mode 100644
index 0184bcb7..00000000
Binary files a/Output/x86/gstreamer/libgstspectrum.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstspeed.dll b/Output/x86/gstreamer/libgstspeed.dll
deleted file mode 100644
index 028baf54..00000000
Binary files a/Output/x86/gstreamer/libgstspeed.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstspeex.dll b/Output/x86/gstreamer/libgstspeex.dll
deleted file mode 100644
index a82a92aa..00000000
Binary files a/Output/x86/gstreamer/libgstspeex.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsubenc.dll b/Output/x86/gstreamer/libgstsubenc.dll
deleted file mode 100644
index 5149e54c..00000000
Binary files a/Output/x86/gstreamer/libgstsubenc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstsubparse.dll b/Output/x86/gstreamer/libgstsubparse.dll
deleted file mode 100644
index 15e30386..00000000
Binary files a/Output/x86/gstreamer/libgstsubparse.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsttag-1.0-0.dll b/Output/x86/gstreamer/libgsttag-1.0-0.dll
deleted file mode 100644
index 03bd7db0..00000000
Binary files a/Output/x86/gstreamer/libgsttag-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsttaglib.dll b/Output/x86/gstreamer/libgsttaglib.dll
deleted file mode 100644
index d8c892c8..00000000
Binary files a/Output/x86/gstreamer/libgsttaglib.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsttcp.dll b/Output/x86/gstreamer/libgsttcp.dll
deleted file mode 100644
index 4a9a61dc..00000000
Binary files a/Output/x86/gstreamer/libgsttcp.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsttheora.dll b/Output/x86/gstreamer/libgsttheora.dll
deleted file mode 100644
index d5627b59..00000000
Binary files a/Output/x86/gstreamer/libgsttheora.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsttypefindfunctions.dll b/Output/x86/gstreamer/libgsttypefindfunctions.dll
deleted file mode 100644
index dd01f0c1..00000000
Binary files a/Output/x86/gstreamer/libgsttypefindfunctions.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstudp.dll b/Output/x86/gstreamer/libgstudp.dll
deleted file mode 100644
index a35f33e9..00000000
Binary files a/Output/x86/gstreamer/libgstudp.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideo-1.0-0.dll b/Output/x86/gstreamer/libgstvideo-1.0-0.dll
deleted file mode 100644
index b09b44c4..00000000
Binary files a/Output/x86/gstreamer/libgstvideo-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideobox.dll b/Output/x86/gstreamer/libgstvideobox.dll
deleted file mode 100644
index 719a0857..00000000
Binary files a/Output/x86/gstreamer/libgstvideobox.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideoconvert.dll b/Output/x86/gstreamer/libgstvideoconvert.dll
deleted file mode 100644
index b6585297..00000000
Binary files a/Output/x86/gstreamer/libgstvideoconvert.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideocrop.dll b/Output/x86/gstreamer/libgstvideocrop.dll
deleted file mode 100644
index 222e072b..00000000
Binary files a/Output/x86/gstreamer/libgstvideocrop.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideofilter.dll b/Output/x86/gstreamer/libgstvideofilter.dll
deleted file mode 100644
index 89cca146..00000000
Binary files a/Output/x86/gstreamer/libgstvideofilter.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideomixer.dll b/Output/x86/gstreamer/libgstvideomixer.dll
deleted file mode 100644
index 349dea27..00000000
Binary files a/Output/x86/gstreamer/libgstvideomixer.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideoparsersbad.dll b/Output/x86/gstreamer/libgstvideoparsersbad.dll
deleted file mode 100644
index 1dff2865..00000000
Binary files a/Output/x86/gstreamer/libgstvideoparsersbad.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideorate.dll b/Output/x86/gstreamer/libgstvideorate.dll
deleted file mode 100644
index 7bec823c..00000000
Binary files a/Output/x86/gstreamer/libgstvideorate.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideoscale.dll b/Output/x86/gstreamer/libgstvideoscale.dll
deleted file mode 100644
index 9190d1e1..00000000
Binary files a/Output/x86/gstreamer/libgstvideoscale.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvideotestsrc.dll b/Output/x86/gstreamer/libgstvideotestsrc.dll
deleted file mode 100644
index 10737d05..00000000
Binary files a/Output/x86/gstreamer/libgstvideotestsrc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvolume.dll b/Output/x86/gstreamer/libgstvolume.dll
deleted file mode 100644
index 82d486d5..00000000
Binary files a/Output/x86/gstreamer/libgstvolume.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvorbis.dll b/Output/x86/gstreamer/libgstvorbis.dll
deleted file mode 100644
index fbc886d0..00000000
Binary files a/Output/x86/gstreamer/libgstvorbis.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstvpx.dll b/Output/x86/gstreamer/libgstvpx.dll
deleted file mode 100644
index 2eaaef28..00000000
Binary files a/Output/x86/gstreamer/libgstvpx.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstwavenc.dll b/Output/x86/gstreamer/libgstwavenc.dll
deleted file mode 100644
index 5a0eaabf..00000000
Binary files a/Output/x86/gstreamer/libgstwavenc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstwavpack.dll b/Output/x86/gstreamer/libgstwavpack.dll
deleted file mode 100644
index e176cb80..00000000
Binary files a/Output/x86/gstreamer/libgstwavpack.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstwavparse.dll b/Output/x86/gstreamer/libgstwavparse.dll
deleted file mode 100644
index 92071ac7..00000000
Binary files a/Output/x86/gstreamer/libgstwavparse.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstx264.dll b/Output/x86/gstreamer/libgstx264.dll
deleted file mode 100644
index eda314dd..00000000
Binary files a/Output/x86/gstreamer/libgstx264.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgstxingmux.dll b/Output/x86/gstreamer/libgstxingmux.dll
deleted file mode 100644
index c93ac1f6..00000000
Binary files a/Output/x86/gstreamer/libgstxingmux.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsty4mdec.dll b/Output/x86/gstreamer/libgsty4mdec.dll
deleted file mode 100644
index 94d4ba85..00000000
Binary files a/Output/x86/gstreamer/libgsty4mdec.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgsty4menc.dll b/Output/x86/gstreamer/libgsty4menc.dll
deleted file mode 100644
index a3bdd6a6..00000000
Binary files a/Output/x86/gstreamer/libgsty4menc.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libgthread-2.0-0.dll b/Output/x86/gstreamer/libgthread-2.0-0.dll
deleted file mode 100644
index c4716e47..00000000
Binary files a/Output/x86/gstreamer/libgthread-2.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libhogweed-2-2.dll b/Output/x86/gstreamer/libhogweed-2-2.dll
deleted file mode 100644
index 04cec47f..00000000
Binary files a/Output/x86/gstreamer/libhogweed-2-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libiconv-2.dll b/Output/x86/gstreamer/libiconv-2.dll
deleted file mode 100644
index 98b3e824..00000000
Binary files a/Output/x86/gstreamer/libiconv-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libintl-8.dll b/Output/x86/gstreamer/libintl-8.dll
deleted file mode 100644
index 76b00225..00000000
Binary files a/Output/x86/gstreamer/libintl-8.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libjpeg-8.dll b/Output/x86/gstreamer/libjpeg-8.dll
deleted file mode 100644
index e4f52bad..00000000
Binary files a/Output/x86/gstreamer/libjpeg-8.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libkate-1.dll b/Output/x86/gstreamer/libkate-1.dll
deleted file mode 100644
index e6bc08bf..00000000
Binary files a/Output/x86/gstreamer/libkate-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libmms-0.dll b/Output/x86/gstreamer/libmms-0.dll
deleted file mode 100644
index 495397cc..00000000
Binary files a/Output/x86/gstreamer/libmms-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libmpeg2-0.dll b/Output/x86/gstreamer/libmpeg2-0.dll
deleted file mode 100644
index 03d4d18d..00000000
Binary files a/Output/x86/gstreamer/libmpeg2-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libmpeg2convert-0.dll b/Output/x86/gstreamer/libmpeg2convert-0.dll
deleted file mode 100644
index 68ffc517..00000000
Binary files a/Output/x86/gstreamer/libmpeg2convert-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libnettle-4-4.dll b/Output/x86/gstreamer/libnettle-4-4.dll
deleted file mode 100644
index 5eb48dae..00000000
Binary files a/Output/x86/gstreamer/libnettle-4-4.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libogg-0.dll b/Output/x86/gstreamer/libogg-0.dll
deleted file mode 100644
index e0053c58..00000000
Binary files a/Output/x86/gstreamer/libogg-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/liboggkate-1.dll b/Output/x86/gstreamer/liboggkate-1.dll
deleted file mode 100644
index 3ffe1994..00000000
Binary files a/Output/x86/gstreamer/liboggkate-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libopencore-amrnb-0.dll b/Output/x86/gstreamer/libopencore-amrnb-0.dll
deleted file mode 100644
index 1eef9151..00000000
Binary files a/Output/x86/gstreamer/libopencore-amrnb-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libopencore-amrwb-0.dll b/Output/x86/gstreamer/libopencore-amrwb-0.dll
deleted file mode 100644
index 09f6d1c2..00000000
Binary files a/Output/x86/gstreamer/libopencore-amrwb-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libopus-0.dll b/Output/x86/gstreamer/libopus-0.dll
deleted file mode 100644
index 4c37357f..00000000
Binary files a/Output/x86/gstreamer/libopus-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/liborc-0.4-0.dll b/Output/x86/gstreamer/liborc-0.4-0.dll
deleted file mode 100644
index 60861bdd..00000000
Binary files a/Output/x86/gstreamer/liborc-0.4-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/liborc-test-0.4-0.dll b/Output/x86/gstreamer/liborc-test-0.4-0.dll
deleted file mode 100644
index 03d611f7..00000000
Binary files a/Output/x86/gstreamer/liborc-test-0.4-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libpango-1.0-0.dll b/Output/x86/gstreamer/libpango-1.0-0.dll
deleted file mode 100644
index 3bc7dbd2..00000000
Binary files a/Output/x86/gstreamer/libpango-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libpangocairo-1.0-0.dll b/Output/x86/gstreamer/libpangocairo-1.0-0.dll
deleted file mode 100644
index a230677a..00000000
Binary files a/Output/x86/gstreamer/libpangocairo-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libpangoft2-1.0-0.dll b/Output/x86/gstreamer/libpangoft2-1.0-0.dll
deleted file mode 100644
index 972fc2b3..00000000
Binary files a/Output/x86/gstreamer/libpangoft2-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libpangowin32-1.0-0.dll b/Output/x86/gstreamer/libpangowin32-1.0-0.dll
deleted file mode 100644
index a8ca6052..00000000
Binary files a/Output/x86/gstreamer/libpangowin32-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libpixman-1-0.dll b/Output/x86/gstreamer/libpixman-1-0.dll
deleted file mode 100644
index 8b0e7510..00000000
Binary files a/Output/x86/gstreamer/libpixman-1-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libpng15-15.dll b/Output/x86/gstreamer/libpng15-15.dll
deleted file mode 100644
index 25b86025..00000000
Binary files a/Output/x86/gstreamer/libpng15-15.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libschroedinger-1.0-0.dll b/Output/x86/gstreamer/libschroedinger-1.0-0.dll
deleted file mode 100644
index 5b550844..00000000
Binary files a/Output/x86/gstreamer/libschroedinger-1.0-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libsoup-2.4-1.dll b/Output/x86/gstreamer/libsoup-2.4-1.dll
deleted file mode 100644
index 3f9d3f5b..00000000
Binary files a/Output/x86/gstreamer/libsoup-2.4-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libspeex-1.dll b/Output/x86/gstreamer/libspeex-1.dll
deleted file mode 100644
index e20e3aeb..00000000
Binary files a/Output/x86/gstreamer/libspeex-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libspeexdsp-1.dll b/Output/x86/gstreamer/libspeexdsp-1.dll
deleted file mode 100644
index b8c4c07f..00000000
Binary files a/Output/x86/gstreamer/libspeexdsp-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libstdc++-6.dll b/Output/x86/gstreamer/libstdc++-6.dll
deleted file mode 100644
index dcd41a9d..00000000
Binary files a/Output/x86/gstreamer/libstdc++-6.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtag.dll b/Output/x86/gstreamer/libtag.dll
deleted file mode 100644
index 302fb280..00000000
Binary files a/Output/x86/gstreamer/libtag.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtag_c.dll b/Output/x86/gstreamer/libtag_c.dll
deleted file mode 100644
index f9b18a5a..00000000
Binary files a/Output/x86/gstreamer/libtag_c.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtasn1-3.dll b/Output/x86/gstreamer/libtasn1-3.dll
deleted file mode 100644
index 3efd4c60..00000000
Binary files a/Output/x86/gstreamer/libtasn1-3.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtheora-0.dll b/Output/x86/gstreamer/libtheora-0.dll
deleted file mode 100644
index 97ef40c8..00000000
Binary files a/Output/x86/gstreamer/libtheora-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtheoradec-1.dll b/Output/x86/gstreamer/libtheoradec-1.dll
deleted file mode 100644
index 7136909b..00000000
Binary files a/Output/x86/gstreamer/libtheoradec-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtheoraenc-1.dll b/Output/x86/gstreamer/libtheoraenc-1.dll
deleted file mode 100644
index 38a7187a..00000000
Binary files a/Output/x86/gstreamer/libtheoraenc-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libtiff-5.dll b/Output/x86/gstreamer/libtiff-5.dll
deleted file mode 100644
index 4f64c71c..00000000
Binary files a/Output/x86/gstreamer/libtiff-5.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libvisual-0.4-0.dll b/Output/x86/gstreamer/libvisual-0.4-0.dll
deleted file mode 100644
index e25b19f2..00000000
Binary files a/Output/x86/gstreamer/libvisual-0.4-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libvorbis-0.dll b/Output/x86/gstreamer/libvorbis-0.dll
deleted file mode 100644
index dc0bed93..00000000
Binary files a/Output/x86/gstreamer/libvorbis-0.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libvorbisenc-2.dll b/Output/x86/gstreamer/libvorbisenc-2.dll
deleted file mode 100644
index 695beb90..00000000
Binary files a/Output/x86/gstreamer/libvorbisenc-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libvorbisfile-3.dll b/Output/x86/gstreamer/libvorbisfile-3.dll
deleted file mode 100644
index eae3fda5..00000000
Binary files a/Output/x86/gstreamer/libvorbisfile-3.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libwavpack-1.dll b/Output/x86/gstreamer/libwavpack-1.dll
deleted file mode 100644
index 7f5ece56..00000000
Binary files a/Output/x86/gstreamer/libwavpack-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libwinpthread-1.dll b/Output/x86/gstreamer/libwinpthread-1.dll
deleted file mode 100644
index e27a40c6..00000000
Binary files a/Output/x86/gstreamer/libwinpthread-1.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libx264-125.dll b/Output/x86/gstreamer/libx264-125.dll
deleted file mode 100644
index caf83228..00000000
Binary files a/Output/x86/gstreamer/libx264-125.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libxml2-2.dll b/Output/x86/gstreamer/libxml2-2.dll
deleted file mode 100644
index 70e68238..00000000
Binary files a/Output/x86/gstreamer/libxml2-2.dll and /dev/null differ
diff --git a/Output/x86/gstreamer/libz.dll b/Output/x86/gstreamer/libz.dll
deleted file mode 100644
index 49dd02aa..00000000
Binary files a/Output/x86/gstreamer/libz.dll and /dev/null differ
diff --git a/Output/x86/libgstreamersharpglue-1.0.0.dll b/Output/x86/libgstreamersharpglue-1.0.0.dll
new file mode 100644
index 00000000..37ddbf48
Binary files /dev/null and b/Output/x86/libgstreamersharpglue-1.0.0.dll differ
diff --git a/PartyModes/PartyModeChallenge/CChallengeRounds.cs b/PartyModes/PartyModeChallenge/CChallengeRounds.cs
index bb2d05cb..6b45ea1f 100644
--- a/PartyModes/PartyModeChallenge/CChallengeRounds.cs
+++ b/PartyModes/PartyModeChallenge/CChallengeRounds.cs
@@ -28,6 +28,16 @@ namespace VocaluxeLib.PartyModes.Challenge
public readonly List Rounds;
+ public int Count
+ {
+ get { return Rounds.Count; }
+ }
+
+ public CCombination this[int index]
+ {
+ get { return Rounds[index]; }
+ }
+
public CChallengeRounds(int numRounds, int numPlayer, int numPlayerAtOnce)
{
Rounds = new List();
diff --git a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
index da2b74f7..db882cd4 100644
--- a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
+++ b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
@@ -24,33 +24,6 @@ using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.Challenge
{
-
- #region Communication
-
- #region ToScreen
- public struct SDataToScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SDataToScreenNames
- {
- public int NumPlayer;
- public List ProfileIDs;
- }
-
- public struct SDataToScreenMain
- {
- public int CurrentRoundNr;
- public int NumPlayerAtOnce;
- public List Combs;
- public int[,] Results;
- public List ResultTable;
- public List ProfileIDs;
- }
-
public class CResultTableRow : IComparable
{
public int Position;
@@ -78,39 +51,21 @@ namespace VocaluxeLib.PartyModes.Challenge
throw new ArgumentException("object is not a ResultTableRow");
}
}
- #endregion ToScreen
- #region FromScreen
- public struct SDataFromScreen
+ public abstract class CPartyScreenChallenge : CMenuParty
{
- public SFromScreenConfig ScreenConfig;
- public SFromScreenNames ScreenNames;
- public SFromScreenMain ScreenMain;
+ protected new CPartyModeChallenge _PartyMode;
+
+ public override void Init()
+ {
+ base.Init();
+ _PartyMode = (CPartyModeChallenge)base._PartyMode;
+ }
}
- public struct SFromScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SFromScreenNames
- {
- public bool FadeBack;
- public List ProfileIDs;
- }
-
- public struct SFromScreenMain
- {
- public bool FadeToSongSelection;
- public bool FadeToNameSelection;
- }
- #endregion FromScreen
-
- #endregion Communication
-
+ // ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeChallenge : CPartyMode
+ // ReSharper restore ClassNeverInstantiated.Global
{
private const int _MaxPlayer = 12;
private const int _MinPlayer = 1;
@@ -120,14 +75,13 @@ namespace VocaluxeLib.PartyModes.Challenge
private enum EStage
{
- NotStarted,
Config,
Names,
Main,
Singing
}
- private struct SData
+ public struct SData
{
public int NumPlayer;
public int NumPlayerAtOnce;
@@ -151,14 +105,10 @@ namespace VocaluxeLib.PartyModes.Challenge
public int Won;
}
- private SDataToScreenConfig _ToScreenConfig;
- private SDataToScreenNames _ToScreenNames;
- private SDataToScreenMain _ToScreenMain;
-
- private SData _GameData;
+ public SData GameData;
private EStage _Stage;
- public CPartyModeChallenge()
+ public CPartyModeChallenge(int id, string folder) : base(id, folder)
{
_ScreenSongOptions.Selection.RandomOnly = false;
_ScreenSongOptions.Selection.PartyMode = true;
@@ -170,18 +120,12 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
- _Stage = EStage.NotStarted;
-
- _ToScreenConfig = new SDataToScreenConfig();
- _ToScreenNames = new SDataToScreenNames();
- _ToScreenMain = new SDataToScreenMain();
-
- _GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 2, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
+ GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
}
public override bool Init()
{
- _Stage = EStage.NotStarted;
+ _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
@@ -191,82 +135,11 @@ namespace VocaluxeLib.PartyModes.Challenge
if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
+ GameData.ResultTable = new List();
return true;
}
- public override void DataFromScreen(string screenName, Object data)
- {
- SDataFromScreen dataFrom;
- switch (screenName)
- {
- case "PartyScreenChallengeConfig":
-
- try
- {
- dataFrom = (SDataFromScreen)data;
- _GameData.NumPlayer = dataFrom.ScreenConfig.NumPlayer;
- _GameData.NumPlayerAtOnce = dataFrom.ScreenConfig.NumPlayerAtOnce;
- _GameData.NumRounds = dataFrom.ScreenConfig.NumRounds;
-
- _Stage = EStage.Config;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeNames":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenNames.FadeBack)
- _Stage = EStage.NotStarted;
- else
- {
- _GameData.ProfileIDs = dataFrom.ScreenNames.ProfileIDs;
- _Stage = EStage.Names;
- }
-
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeMain":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenMain.FadeToSongSelection)
- _Stage = EStage.Singing;
- if (dataFrom.ScreenMain.FadeToNameSelection)
- _Stage = EStage.Config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
-
-
- if (_Stage == EStage.Singing)
- _StartNextRound();
- if (_Stage == EStage.Config)
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- break;
-
- default:
- CBase.Log.LogError("Error in party mode challenge. Wrong screen is sending: " + screenName);
- break;
- }
- }
-
public override void UpdateGame()
{
/*
@@ -276,78 +149,78 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
- public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
+ private IMenu _GetNextScreen()
{
- CMenuParty screen = null;
- alternativeScreen = EScreens.ScreenSong;
-
switch (_Stage)
{
- case EStage.NotStarted:
- _Screens.TryGetValue("CPartyScreenChallengeConfig", out screen);
- if (screen != null)
- {
- _ToScreenConfig.NumPlayer = _GameData.NumPlayer;
- _ToScreenConfig.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenConfig.NumRounds = _GameData.NumRounds;
- screen.DataToScreen(_ToScreenConfig);
- }
- break;
case EStage.Config:
- _Screens.TryGetValue("CPartyScreenChallengeNames", out screen);
- if (screen != null)
- {
- _ToScreenNames.NumPlayer = _GameData.NumPlayer;
- _ToScreenNames.ProfileIDs = _GameData.ProfileIDs;
- screen.DataToScreen(_ToScreenNames);
- }
+ return _Screens["CPartyScreenChallengeConfig"];
+ case EStage.Names:
+ return _Screens["CPartyScreenChallengeNames"];
+ case EStage.Main:
+ return _Screens["CPartyScreenChallengeMain"];
+ case EStage.Singing:
+ return CBase.Graphics.GetScreen(EScreen.Song);
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ }
+
+ private void _FadeToScreen()
+ {
+ CBase.Graphics.FadeTo(_GetNextScreen());
+ }
+
+ public void Next()
+ {
+ switch (_Stage)
+ {
+ case EStage.Config:
+ _Stage = EStage.Names;
break;
case EStage.Names:
- _Screens.TryGetValue("CPartyScreenChallengeMain", out screen);
- if (screen != null)
- {
- CBase.Songs.ResetSongSung();
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
- _GameData.Rounds = new CChallengeRounds(_GameData.NumRounds, _GameData.NumPlayer, _GameData.NumPlayerAtOnce);
- _GameData.CurrentRoundNr = 1;
- _ToScreenMain.CurrentRoundNr = 1;
- _ToScreenMain.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.ProfileIDs = _GameData.ProfileIDs;
- _UpdateScores();
- _ToScreenMain.ResultTable = _GameData.ResultTable;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ CBase.Songs.ResetSongSung();
+ GameData.ResultTable = new List();
+ GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
+ GameData.CurrentRoundNr = 1;
break;
case EStage.Main:
- //nothing to do
+ _Stage = EStage.Singing;
+ _StartNextRound();
break;
case EStage.Singing:
- _Screens.TryGetValue("CPartyScreenChallengeMain", out screen);
- if (screen != null)
- {
- _UpdateScores();
- _ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ _UpdateScores();
break;
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
}
-
- return screen;
+ _FadeToScreen();
}
- public override EScreens GetStartScreen()
+ public void Back()
{
- return EScreens.ScreenPartyDummy;
+ switch (_Stage)
+ {
+ case EStage.Config:
+ CBase.Graphics.FadeTo(EScreen.Party);
+ return;
+ case EStage.Names:
+ _Stage = EStage.Config;
+ break;
+ case EStage.Main:
+ _Stage = EStage.Names;
+ break;
+ default: // Rest is not allowed
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ _FadeToScreen();
}
- public override EScreens GetMainScreen()
+ public override IMenu GetStartScreen()
{
- return EScreens.ScreenPartyDummy;
+ return _Screens["CPartyScreenChallengeConfig"];
}
public override SScreenSongOptions GetScreenSongOptions()
@@ -370,10 +243,10 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices();
- if (_GameData.CatSongIndices != null)
+ if (GameData.CatSongIndices != null)
{
- if (_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
- _GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
+ if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
+ GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
}
}
@@ -384,15 +257,15 @@ namespace VocaluxeLib.PartyModes.Challenge
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment
{
- if (_GameData.CatSongIndices != null && categoryIndex != -1)
+ if (GameData.CatSongIndices != null && categoryIndex != -1)
{
- if (_GameData.CatSongIndices[categoryIndex] == -1)
+ if (GameData.CatSongIndices[categoryIndex] == -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
else
- _ScreenSongOptions.Selection.SongIndex = _GameData.CatSongIndices[categoryIndex];
+ _ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[categoryIndex];
}
- if (_GameData.CatSongIndices == null && categoryIndex != -1)
+ if (GameData.CatSongIndices == null && categoryIndex != -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1)
@@ -455,34 +328,34 @@ namespace VocaluxeLib.PartyModes.Challenge
CBase.Game.Reset();
CBase.Game.ClearSongs();
CBase.Game.AddSong(songID, gm);
- CBase.Game.SetNumPlayer(_GameData.NumPlayerAtOnce);
+ CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce);
SPlayer[] players = CBase.Game.GetPlayers();
if (players == null)
return;
- if (players.Length < _GameData.NumPlayerAtOnce)
+ if (players.Length < GameData.NumPlayerAtOnce)
return;
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
//try to fill with the right data
if (c != null)
- players[i].ProfileID = _GameData.ProfileIDs[c.Player[i]];
+ players[i].ProfileID = GameData.ProfileIDs[c.Player[i]];
else
players[i].ProfileID = -1;
}
- CBase.Graphics.FadeTo(EScreens.ScreenSing);
+ CBase.Graphics.FadeTo(EScreen.Sing);
}
public override void LeavingHighscore()
{
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID);
- _GameData.CurrentRoundNr++;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
+ GameData.CurrentRoundNr++;
+ Next();
}
private void _StartNextRound()
@@ -491,13 +364,12 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON;
_SetNumJokers();
_SetTeamNames();
- _GameData.CatSongIndices = null;
- CBase.Graphics.FadeTo(EScreens.ScreenSong);
+ GameData.CatSongIndices = null;
}
private void _SetNumJokers()
{
- switch (_GameData.NumPlayerAtOnce)
+ switch (GameData.NumPlayerAtOnce)
{
case 1:
_ScreenSongOptions.Selection.NumJokers = new int[] {10};
@@ -530,19 +402,19 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _SetTeamNames()
{
- if (_GameData.NumPlayerAtOnce < 1 || _GameData.ProfileIDs.Count < _GameData.NumPlayerAtOnce)
+ if (GameData.NumPlayerAtOnce < 1 || GameData.ProfileIDs.Count < GameData.NumPlayerAtOnce)
{
_ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
return;
}
- _ScreenSongOptions.Selection.TeamNames = new string[_GameData.NumPlayerAtOnce];
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ _ScreenSongOptions.Selection.TeamNames = new string[GameData.NumPlayerAtOnce];
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
if (c != null)
- _ScreenSongOptions.Selection.TeamNames[i] = CBase.Profiles.GetPlayerName(_GameData.ProfileIDs[c.Player[i]]);
+ _ScreenSongOptions.Selection.TeamNames[i] = CBase.Profiles.GetPlayerName(GameData.ProfileIDs[c.Player[i]]);
else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar";
}
@@ -550,19 +422,19 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateScores()
{
- if (_GameData.ResultTable.Count == 0)
+ if (GameData.ResultTable.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayer; i++)
+ for (int i = 0; i < GameData.NumPlayer; i++)
{
- var row = new CResultTableRow {PlayerID = _GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
- _GameData.ResultTable.Add(row);
+ var row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
+ GameData.ResultTable.Add(row);
}
- _GameData.Results = new int[_GameData.NumRounds,_GameData.NumPlayerAtOnce];
- for (int i = 0; i < _GameData.NumRounds; i++)
+ GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
+ for (int i = 0; i < GameData.NumRounds; i++)
{
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
- _GameData.Results[i, j] = 0;
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
+ GameData.Results[i, j] = 0;
}
}
else
@@ -571,20 +443,20 @@ namespace VocaluxeLib.PartyModes.Challenge
if (results == null)
return;
- if (results.Length < _GameData.NumPlayerAtOnce)
+ if (results.Length < GameData.NumPlayerAtOnce)
return;
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
- _GameData.Results[_GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
+ GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
List points = _GetPointsForPlayer(results);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
int index = -1;
- for (int j = 0; j < _GameData.ResultTable.Count; j++)
+ for (int j = 0; j < GameData.ResultTable.Count; j++)
{
- if (points[i].ProfileID == _GameData.ResultTable[j].PlayerID)
+ if (points[i].ProfileID == GameData.ResultTable[j].PlayerID)
{
index = j;
break;
@@ -593,24 +465,24 @@ namespace VocaluxeLib.PartyModes.Challenge
if (index == -1)
continue;
- CResultTableRow row = _GameData.ResultTable[index];
+ CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++;
row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints;
- _GameData.ResultTable[index] = row;
+ GameData.ResultTable[index] = row;
}
}
- _GameData.ResultTable.Sort();
+ GameData.ResultTable.Sort();
//Update position-number
int pos = 1;
int lastPoints = 0;
int lastSingPoints = 0;
- foreach (CResultTableRow resultRow in _GameData.ResultTable)
+ foreach (CResultTableRow resultRow in GameData.ResultTable)
{
if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints)
pos++;
@@ -623,7 +495,7 @@ namespace VocaluxeLib.PartyModes.Challenge
private List _GetPointsForPlayer(SPlayer[] results)
{
var result = new List();
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
result.Add(stat);
@@ -671,15 +543,15 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _CreateCatSongIndices()
{
- if (_GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
+ if (GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
{
- _GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
- for (int i = 0; i < _GameData.CatSongIndices.Length; i++)
- _GameData.CatSongIndices[i] = -1;
+ GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
+ for (int i = 0; i < GameData.CatSongIndices.Length; i++)
+ GameData.CatSongIndices[i] = -1;
}
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
- _GameData.CatSongIndices = null;
+ GameData.CatSongIndices = null;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
index 229d68ba..e1ef8456 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
@@ -15,14 +15,12 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Windows.Forms;
-using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.Challenge
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeConfig : CMenuParty
+ public class CPartyScreenChallengeConfig : CPartyScreenChallenge
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -41,33 +39,12 @@ namespace VocaluxeLib.PartyModes.Challenge
private int _MaxNumRounds = 100;
private int _RoundSteps = 1;
- private SDataFromScreen _Data;
-
public override void Init()
{
base.Init();
_ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack};
-
- _Data = new SDataFromScreen();
- SFromScreenConfig config = new SFromScreenConfig {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12};
- _Data.ScreenConfig = config;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- SDataToScreenConfig config = (SDataToScreenConfig)receivedData;
- _Data.ScreenConfig.NumPlayer = config.NumPlayer;
- _Data.ScreenConfig.NumPlayerAtOnce = config.NumPlayerAtOnce;
- _Data.ScreenConfig.NumRounds = config.NumRounds;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -81,17 +58,17 @@ namespace VocaluxeLib.PartyModes.Challenge
{
case Keys.Back:
case Keys.Escape:
- _Back();
+ _PartyMode.Back();
break;
case Keys.Enter:
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
break;
case Keys.Left:
@@ -110,18 +87,18 @@ namespace VocaluxeLib.PartyModes.Challenge
{
base.HandleMouse(mouseEvent);
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
+ if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
}
if (mouseEvent.RB)
- _Back();
+ _PartyMode.Back();
return true;
}
@@ -144,19 +121,13 @@ namespace VocaluxeLib.PartyModes.Challenge
return true;
}
- public override bool Draw()
- {
- base.Draw();
- return true;
- }
-
private void _RebuildSlides()
{
// build num player slide (min player ... max player);
_SelectSlides[_SelectSlideNumPlayers].Clear();
for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++)
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumPlayers].Selection = _Data.ScreenConfig.NumPlayer - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.GetMinPlayer();
_UpdateMicsAtOnce();
_SetRoundSteps();
@@ -165,21 +136,21 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateSlides()
{
- int player = _Data.ScreenConfig.NumPlayer;
- int mics = _Data.ScreenConfig.NumPlayerAtOnce;
- _Data.ScreenConfig.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
+ int player = _PartyMode.GameData.NumPlayer;
+ int mics = _PartyMode.GameData.NumPlayerAtOnce;
+ _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
_UpdateMicsAtOnce();
_SetRoundSteps();
- if (player != _Data.ScreenConfig.NumPlayer || mics != _Data.ScreenConfig.NumPlayerAtOnce)
+ if (player != _PartyMode.GameData.NumPlayer || mics != _PartyMode.GameData.NumPlayerAtOnce)
{
- int num = CHelper.CombinationCount(_Data.ScreenConfig.NumPlayer, _Data.ScreenConfig.NumPlayerAtOnce);
+ int num = CHelper.CombinationCount(_PartyMode.GameData.NumPlayer, _PartyMode.GameData.NumPlayerAtOnce);
while (num > _MaxNumRounds)
num -= _RoundSteps;
- _Data.ScreenConfig.NumRounds = num;
+ _PartyMode.GameData.NumRounds = num;
}
_UpdateSlideRounds();
@@ -187,19 +158,18 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateMicsAtOnce()
{
- //Data.ScreenConfig.NumPlayerAtOnce
int maxNum = _MaxNumMics;
- if (_Data.ScreenConfig.NumPlayer < _MaxNumMics)
- maxNum = _Data.ScreenConfig.NumPlayer;
+ if (_PartyMode.GameData.NumPlayer < _MaxNumMics)
+ maxNum = _PartyMode.GameData.NumPlayer;
- if (_Data.ScreenConfig.NumPlayerAtOnce > maxNum)
- _Data.ScreenConfig.NumPlayerAtOnce = maxNum;
+ if (_PartyMode.GameData.NumPlayerAtOnce > maxNum)
+ _PartyMode.GameData.NumPlayerAtOnce = maxNum;
// build mics at once slide
_SelectSlides[_SelectSlideNumMics].Clear();
for (int i = 1; i <= maxNum; i++)
_SelectSlides[_SelectSlideNumMics].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumMics].Selection = _Data.ScreenConfig.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
}
private void _UpdateSlideRounds()
@@ -208,31 +178,21 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectSlides[_SelectSlideNumRounds].Clear();
for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps)
_SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumRounds].Selection = _Data.ScreenConfig.NumRounds / _RoundSteps - 1;
+ _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1;
}
private void _SetRoundSteps()
{
- if (_Data.ScreenConfig.NumPlayerAtOnce < 1 || _Data.ScreenConfig.NumPlayer < 1 || _Data.ScreenConfig.NumPlayerAtOnce > _Data.ScreenConfig.NumPlayer)
+ if (_PartyMode.GameData.NumPlayerAtOnce < 1 || _PartyMode.GameData.NumPlayer < 1 || _PartyMode.GameData.NumPlayerAtOnce > _PartyMode.GameData.NumPlayer)
{
_RoundSteps = 1;
return;
}
- int res = _Data.ScreenConfig.NumPlayer / _Data.ScreenConfig.NumPlayerAtOnce;
- int mod = _Data.ScreenConfig.NumPlayer % _Data.ScreenConfig.NumPlayerAtOnce;
+ int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce;
+ int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce;
- _RoundSteps = mod == 0 ? res : _Data.ScreenConfig.NumPlayer;
- }
-
- private void _Back()
- {
- _FadeTo(EScreens.ScreenParty);
- }
-
- private void _Next()
- {
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
index 22945876..41805118 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
@@ -40,7 +40,7 @@ namespace VocaluxeLib.PartyModes.Challenge
}
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMain : CMenuParty
+ public class CPartyScreenChallengeMain : CPartyScreenChallenge
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -79,8 +79,6 @@ namespace VocaluxeLib.PartyModes.Challenge
private bool _ExitPopupVisible;
- private SDataFromScreen _Data;
- private SDataToScreenMain _GameState;
private List _PlayerTable;
private List _RoundsTable;
@@ -94,11 +92,6 @@ namespace VocaluxeLib.PartyModes.Challenge
private const int _NumPlayerVisible = 10;
private int _NumRoundsVisible = 3;
- public CPartyScreenChallengeMain()
- {
- _Data = new SDataFromScreen {ScreenMain = new SFromScreenMain()};
- }
-
public override void Init()
{
base.Init();
@@ -121,7 +114,6 @@ namespace VocaluxeLib.PartyModes.Challenge
{
base.LoadTheme(xmlPath);
- _GameState = new SDataToScreenMain();
_BuildPlayerTable();
_CreateRoundsTable();
_NextPlayerTexts = new List();
@@ -134,19 +126,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_NextPlayerStatics.Add(GetNewStatic(_Statics[_StaticNextPlayer]));
_AddStatic(_NextPlayerStatics[_NextPlayerStatics.Count - 1]);
}
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var data = (SDataToScreenMain)receivedData;
- _GameState = data;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
+ _Statics[_StaticNextPlayer].Visible = false;
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -162,8 +142,8 @@ namespace VocaluxeLib.PartyModes.Challenge
case Keys.Escape:
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -175,10 +155,10 @@ namespace VocaluxeLib.PartyModes.Challenge
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -206,15 +186,15 @@ namespace VocaluxeLib.PartyModes.Challenge
{
base.HandleMouse(mouseEvent);
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
+ if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -238,8 +218,8 @@ namespace VocaluxeLib.PartyModes.Challenge
{
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -268,13 +248,13 @@ namespace VocaluxeLib.PartyModes.Challenge
_UpdatePlayerTable();
_UpdateNextPlayerPositions();
_UpdateNextPlayerContents();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
_BuildRoundsTable();
else
- _ScrollRoundsTable(_GameState.CurrentRoundNr - 2);
+ _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2);
_UpdateRoundsTable();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
{
_Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false;
@@ -285,12 +265,12 @@ namespace VocaluxeLib.PartyModes.Challenge
_Buttons[_ButtonExit].Visible = true;
}
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Buttons[_ButtonNextRound].Visible = true;
_Texts[_TextFinishMessage].Visible = false;
_Texts[_TextFinishPlayerWin].Visible = false;
- _SetInteractionToButton(_Buttons[_ButtonNextRound]);
+ _SelectElement(_Buttons[_ButtonNextRound]);
}
else
{
@@ -298,7 +278,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_Texts[_TextFinishMessage].Visible = true;
_Texts[_TextFinishPlayerWin].Visible = true;
_Texts[_TextFinishPlayerWin].Text = _GetPlayerWinString();
- _SetInteractionToButton(_Buttons[_ButtonExit]);
+ _SelectElement(_Buttons[_ButtonExit]);
}
_ShowPopup(false);
@@ -309,22 +289,9 @@ namespace VocaluxeLib.PartyModes.Challenge
return true;
}
- public override bool Draw()
- {
- base.Draw();
- return true;
- }
-
- private void _NextRound()
- {
- _Data.ScreenMain.FadeToNameSelection = false;
- _Data.ScreenMain.FadeToSongSelection = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
- }
-
private void _EndParty()
{
- _FadeTo(EScreens.ScreenParty);
+ CBase.Graphics.FadeTo(EScreen.Party);
}
private void _ShowPopup(bool visible)
@@ -337,26 +304,20 @@ namespace VocaluxeLib.PartyModes.Challenge
_Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible;
if (_ExitPopupVisible)
- _SetInteractionToButton(_Buttons[_ButtonPopupNo]);
- }
-
- private void _Back()
- {
- _Data.ScreenMain.FadeToNameSelection = true;
- _Data.ScreenMain.FadeToSongSelection = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _SelectElement(_Buttons[_ButtonPopupNo]);
}
private void _UpdateNextPlayerPositions()
{
- float x = (float)CBase.Settings.GetRenderW() / 2 - ((_GameState.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_GameState.NumPlayerAtOnce - 1) * 15)) / 2;
+ float x = (float)CBase.Settings.GetRenderW() / 2 -
+ ((_PartyMode.GameData.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_PartyMode.GameData.NumPlayerAtOnce - 1) * 15)) / 2;
const float staticY = 590;
const float textY = 550;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
//static
- _NextPlayerStatics[i].Rect.X = x;
- _NextPlayerStatics[i].Rect.Y = staticY;
+ _NextPlayerStatics[i].X = x;
+ _NextPlayerStatics[i].Y = staticY;
_NextPlayerStatics[i].Visible = true;
//text
_NextPlayerTexts[i].X = x + _Statics[_StaticNextPlayer].Rect.W / 2;
@@ -365,7 +326,7 @@ namespace VocaluxeLib.PartyModes.Challenge
x += _Statics[_StaticNextPlayer].Rect.W + 15;
}
- for (int i = _GameState.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
+ for (int i = _PartyMode.GameData.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -374,21 +335,21 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateNextPlayerContents()
{
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Texts[_TextNextPlayerMessage].Visible = true;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
- int id = _GameState.ProfileIDs[_GameState.Combs[_GameState.CurrentRoundNr - 1].Player[i]];
+ int id = _PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[_PartyMode.GameData.CurrentRoundNr - 1].Player[i]];
_NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id);
_NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id);
- _NextPlayerTexts[i].Color = CBase.Theme.GetPlayerColor(i + 1);
+ _NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1);
}
}
else
{
_Texts[_TextNextPlayerMessage].Visible = false;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -434,10 +395,10 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTableScrollArea = new SRectF();
const int numPlayerInOneRow = 3;
- _NumRoundsVisible = _GameState.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
+ _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
- if (_NumRoundsVisible > _GameState.Combs.Count)
- _NumRoundsVisible = _GameState.Combs.Count;
+ if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count)
+ _NumRoundsVisible = _PartyMode.GameData.Rounds.Count;
float numberX = _Texts[_TextRoundNumber].X;
float numberY = _Texts[_TextRoundNumber].Y;
@@ -446,7 +407,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTableScrollArea.Y = numberY;
_RoundsTableScrollArea.W = CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20;
- float delta = _Texts[_TextRoundNumber].Height;
+ float delta = _Texts[_TextRoundNumber].Rect.H;
//Update statics and texts for rounds
foreach (CRoundsTableRow roundRow in _RoundsTable)
@@ -454,15 +415,15 @@ namespace VocaluxeLib.PartyModes.Challenge
//Round-number
roundRow.Number.X = numberX;
roundRow.Number.Y = numberY;
- var numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
+ var numInnerRows = (int)Math.Ceiling(_PartyMode.GameData.NumPlayerAtOnce / ((double)numPlayerInOneRow));
for (int row = 0; row < numInnerRows; row++)
{
int num = (row + 1) * numPlayerInOneRow;
int numPlayerInThisRow = numPlayerInOneRow;
- if (num > _GameState.NumPlayerAtOnce)
+ if (num > _PartyMode.GameData.NumPlayerAtOnce)
{
- num = _GameState.NumPlayerAtOnce;
- numPlayerInThisRow = _GameState.NumPlayerAtOnce - (row * numPlayerInOneRow);
+ num = _PartyMode.GameData.NumPlayerAtOnce;
+ numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow);
}
for (int column = row * numPlayerInOneRow; column < num; column++)
{
@@ -472,14 +433,13 @@ namespace VocaluxeLib.PartyModes.Challenge
float maxw = ((CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20) / numPlayerInThisRow) / 2 - 5;
roundRow.TextPlayer[column].X = x;
roundRow.TextPlayer[column].Y = numberY;
- roundRow.TextPlayer[column].MaxWidth = maxw;
+ roundRow.TextPlayer[column].W = maxw;
//Score
- roundRow.TextScores[column] = roundRow.TextScores[column];
roundRow.TextScores[column].X = x;
roundRow.TextScores[column].Y = numberY + delta;
- roundRow.TextScores[column].MaxWidth = maxw;
+ roundRow.TextScores[column].W = maxw;
}
- numberY = numberY + delta + delta;
+ numberY = numberY + 2 * delta;
}
numberY = numberY + delta / 2;
}
@@ -492,17 +452,18 @@ namespace VocaluxeLib.PartyModes.Challenge
{
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
{
- if (_GameState.Combs.Count > i + _RoundsTableOffset && _GameState.Combs[i + _RoundsTableOffset].Player.Count > p)
+ if (_PartyMode.GameData.Rounds.Count > i + _RoundsTableOffset && _PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player.Count > p)
{
_RoundsTable[i].Number.Visible = true;
_RoundsTable[i].TextPlayer[p].Visible = true;
_RoundsTable[i].TextScores[p].Visible = true;
_RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")";
- _RoundsTable[i].TextPlayer[p].Text = CBase.Profiles.GetPlayerName(_GameState.ProfileIDs[_GameState.Combs[i + _RoundsTableOffset].Player[p]]);
+ _RoundsTable[i].TextPlayer[p].Text =
+ CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player[p]]);
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
- if ((_GameState.CurrentRoundNr - 1) > i + _RoundsTableOffset)
+ if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
- _RoundsTable[i].TextScores[p].Text = _GameState.Results[i + _RoundsTableOffset, p].ToString();
+ _RoundsTable[i].TextScores[p].Text = _PartyMode.GameData.Results[i + _RoundsTableOffset, p].ToString();
else
_RoundsTable[i].TextScores[p].Text = "";
}
@@ -512,7 +473,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTable[i].TextScores[p].Visible = false;
}
}
- if (_GameState.Combs.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
{
_RoundsTable[i].Number.Visible = false;
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
@@ -524,7 +485,7 @@ namespace VocaluxeLib.PartyModes.Challenge
}
_Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0;
- _Buttons[_ButtonRoundsScrollDown].Visible = _GameState.Combs.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
+ _Buttons[_ButtonRoundsScrollDown].Visible = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
}
private void _BuildPlayerTable()
@@ -532,7 +493,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_PlayerTableScrollArea = new SRectF {X = _Texts[_TextPosition].X, Y = _Texts[_TextPosition].Y, W = _Texts[_TextGamePoints].X - _Texts[_TextPosition].X};
_PlayerTable = new List();
- float delta = _Texts[_TextPosition].Height * 1.2f;
+ float delta = _Texts[_TextPosition].Rect.H * 1.2f;
float h = 0;
@@ -584,7 +545,7 @@ namespace VocaluxeLib.PartyModes.Challenge
{
STableRow row = _PlayerTable[i];
- if (i + _PlayerTableOffset < _GameState.ResultTable.Count)
+ if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count)
{
row.Pos.Visible = true;
row.Name.Visible = true;
@@ -593,12 +554,12 @@ namespace VocaluxeLib.PartyModes.Challenge
row.SingPoints.Visible = true;
row.GamePoints.Visible = true;
- row.Pos.Text = _GameState.ResultTable[i + _PlayerTableOffset].Position + ".";
- row.Name.Text = CBase.Profiles.GetPlayerName(_GameState.ResultTable[i + _PlayerTableOffset].PlayerID);
- row.Rounds.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
- row.Won.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
- row.SingPoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
- row.GamePoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
+ row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + ".";
+ row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID);
+ row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
+ row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
+ row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
+ row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
}
else
{
@@ -612,37 +573,37 @@ namespace VocaluxeLib.PartyModes.Challenge
}
_Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0;
- _Buttons[_ButtonPlayerScrollDown].Visible = _GameState.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
+ _Buttons[_ButtonPlayerScrollDown].Visible = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
}
private void _ScrollPlayerTable(int offset)
{
- if (_GameState.ProfileIDs.Count <= _NumPlayerVisible)
+ if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible)
_PlayerTableOffset = 0;
else if (offset < 0 && _PlayerTableOffset + offset >= 0)
_PlayerTableOffset += offset;
else if (offset < 0 && _PlayerTableOffset + offset < 0)
_PlayerTableOffset = 0;
- else if (offset > 0 && _PlayerTableOffset + offset <= _GameState.ProfileIDs.Count - _NumPlayerVisible)
+ else if (offset > 0 && _PlayerTableOffset + offset <= _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
_PlayerTableOffset += offset;
- else if (offset > 0 && _PlayerTableOffset + offset > _GameState.ProfileIDs.Count - _NumPlayerVisible)
- _PlayerTableOffset = _GameState.ProfileIDs.Count - _NumPlayerVisible;
+ else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
+ _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible;
_UpdatePlayerTable();
}
private void _ScrollRoundsTable(int offset)
{
- if (_GameState.Combs.Count <= _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible)
_RoundsTableOffset = 0;
else if (offset < 0 && _RoundsTableOffset + offset >= 0)
_RoundsTableOffset += offset;
else if (offset < 0 && _RoundsTableOffset + offset < 0)
_RoundsTableOffset = 0;
- else if (offset > 0 && _RoundsTableOffset + offset <= _GameState.Combs.Count - _NumRoundsVisible)
+ else if (offset > 0 && _RoundsTableOffset + offset <= _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
_RoundsTableOffset += offset;
- else if (offset > 0 && _RoundsTableOffset + offset > _GameState.Combs.Count - _NumRoundsVisible)
- _RoundsTableOffset = _GameState.Combs.Count - _NumRoundsVisible;
+ else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
+ _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible;
_UpdateRoundsTable();
}
@@ -651,13 +612,13 @@ namespace VocaluxeLib.PartyModes.Challenge
{
string s = "";
- for (int i = 0; i < _GameState.ResultTable.Count; i++)
+ for (int i = 0; i < _PartyMode.GameData.ResultTable.Count; i++)
{
- if (_GameState.ResultTable[i].Position == 1)
+ if (_PartyMode.GameData.ResultTable[i].Position == 1)
{
if (i > 0)
s += ", ";
- s += CBase.Profiles.GetPlayerName(_GameState.ResultTable[i].PlayerID);
+ s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID);
}
else
break;
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
index 14b5102c..9b79c0d2 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -31,62 +30,38 @@ namespace VocaluxeLib.PartyModes.Challenge
get { return 1; }
}
- private SDataFromScreen _Data;
+ private new CPartyModeChallenge _PartyMode;
public override void Init()
{
base.Init();
-
- _Data.ScreenNames.ProfileIDs = new List();
- _Data = new SDataFromScreen();
- var names = new SFromScreenNames {FadeBack = false, ProfileIDs = new List()};
- _Data.ScreenNames = names;
-
+ _PartyMode = (CPartyModeChallenge)base._PartyMode;
_AllowChangePlayerNum = false;
}
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenNames)receivedData;
- _Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
-
- SetPartyModeData(config.NumPlayer);
-
- while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
- _Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
-
- List[] ids = new List[] {_Data.ScreenNames.ProfileIDs};
- SetPartyModeProfiles(ids);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
- }
-
public override void OnShow()
{
base.OnShow();
+ SetPartyModeData(_PartyMode.GameData.NumPlayer);
+ while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer)
+ _PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1);
+
+ List[] ids = new List[] {_PartyMode.GameData.ProfileIDs};
+ SetPartyModeProfiles(ids);
}
public override void Back()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 1)
- _Data.ScreenNames.ProfileIDs = options.TeamList[0];
- _Data.ScreenNames.FadeBack = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Back();
}
public override void Next()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 1)
- _Data.ScreenNames.ProfileIDs = options.TeamList[0];
- _Data.ScreenNames.FadeBack = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Next();
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
index 3b7f00a8..01b6068e 100644
--- a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
+++ b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
@@ -28,6 +28,16 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public readonly List Rounds;
+ public int Count
+ {
+ get { return Rounds.Count; }
+ }
+
+ public CCombination this[int index]
+ {
+ get { return Rounds[index]; }
+ }
+
public CChallengeRounds(int numRounds, int numPlayer, int numPlayerAtOnce)
{
Rounds = new List();
@@ -59,7 +69,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
Rounds.Add(combinations.GetNextCombination(_GetPlayerDemand(i)));
}
- private List _GetPlayerDemand(int roundIndex)
+ private IEnumerable _GetPlayerDemand(int roundIndex)
{
List numPlayed = new List(_NumPlayer);
for (int i = 0; i < _NumPlayer; i++)
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
index c6f0d619..ec9429f9 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
@@ -18,43 +18,17 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.Linq;
using System.Runtime.InteropServices;
using VocaluxeLib.Game;
using VocaluxeLib.Menu;
-using VocaluxeLib.Songs;
using VocaluxeLib.Profile;
+using VocaluxeLib.Songs;
[assembly: ComVisible(false)]
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
-
- #region Communication
-
- #region ToScreen
- public struct SDataToScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SDataToScreenNames
- {
- public int NumPlayer;
- public List ProfileIDs;
- }
-
- public struct SDataToScreenMain
- {
- public int CurrentRoundNr;
- public int NumPlayerAtOnce;
- public List Combs;
- public int[,] Results;
- public List ResultTable;
- public List ProfileIDs;
- }
-
public class CResultTableRow : IComparable
{
public int Position;
@@ -66,7 +40,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public int CompareTo(object obj)
{
- CResultTableRow row = obj as CResultTableRow;
+ var row = obj as CResultTableRow;
if (row != null)
{
int res = row.NumGamePoints.CompareTo(NumGamePoints);
@@ -82,39 +56,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
throw new ArgumentException("object is not a ResultTableRow");
}
}
- #endregion ToScreen
- #region FromScreen
- public struct SDataFromScreen
+ public abstract class CPartyScreenChallengeMedley : CMenuParty
{
- public SFromScreenConfig ScreenConfig;
- public SFromScreenNames ScreenNames;
- public SFromScreenMain ScreenMain;
+ protected new CPartyModeChallengeMedley _PartyMode;
+
+ public override void Init()
+ {
+ base.Init();
+ _PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
+ }
}
- public struct SFromScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SFromScreenNames
- {
- public bool FadeToConfig;
- public List ProfileIDs;
- }
-
- public struct SFromScreenMain
- {
- public bool FadeToSongSelection;
- public bool FadeToNameSelection;
- }
- #endregion FromScreen
-
- #endregion Communication
-
+ // ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeChallengeMedley : CPartyMode
+ // ReSharper restore ClassNeverInstantiated.Global
{
private const int _MaxPlayer = 12;
private const int _MinPlayer = 1;
@@ -125,14 +81,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private enum EStage
{
- NotStarted,
Config,
Names,
Main,
Singing
}
- private struct SData
+ public struct SData
{
public int NumPlayer;
public int NumPlayerAtOnce;
@@ -156,14 +111,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public int Won;
}
- private SDataToScreenConfig _ToScreenConfig;
- private SDataToScreenNames _ToScreenNames;
- private SDataToScreenMain _ToScreenMain;
-
- private SData _GameData;
+ public SData GameData;
private EStage _Stage;
- public CPartyModeChallengeMedley()
+ public CPartyModeChallengeMedley(int id, string folder) : base(id, folder)
{
_ScreenSongOptions.Selection.RandomOnly = false;
_ScreenSongOptions.Selection.PartyMode = true;
@@ -175,103 +126,26 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
- _Stage = EStage.NotStarted;
-
- _ToScreenConfig = new SDataToScreenConfig();
- _ToScreenNames = new SDataToScreenNames();
- _ToScreenMain = new SDataToScreenMain();
-
- _GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 2, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
+ GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
}
public override bool Init()
{
- _Stage = EStage.NotStarted;
+ _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Sorting.SongSorting = ESongSorting.TR_CONFIG_NONE;
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Selection.SongIndex = -1;
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
-
CBase.Songs.SortSongs(ESongSorting.TR_CONFIG_NONE, EOffOn.TR_CONFIG_OFF, EOffOn.TR_CONFIG_OFF, String.Empty, EDuetOptions.NoDuets);
CBase.Songs.SetCategory(0);
+ GameData.ResultTable = new List();
+
return true;
}
- public override void DataFromScreen(string screenName, Object data)
- {
- SDataFromScreen dataFrom;
- switch (screenName)
- {
- case "PartyScreenChallengeMedleyConfig":
-
- try
- {
- dataFrom = (SDataFromScreen)data;
- _GameData.NumPlayer = dataFrom.ScreenConfig.NumPlayer;
- _GameData.NumPlayerAtOnce = dataFrom.ScreenConfig.NumPlayerAtOnce;
- _GameData.NumRounds = dataFrom.ScreenConfig.NumRounds;
-
- _Stage = EStage.Config;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeMedleyNames":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenNames.FadeToConfig)
- _Stage = EStage.NotStarted;
- else
- {
- _GameData.ProfileIDs = dataFrom.ScreenNames.ProfileIDs;
- _Stage = EStage.Names;
- }
-
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeMedleyMain":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenMain.FadeToSongSelection)
- _Stage = EStage.Singing;
- if (dataFrom.ScreenMain.FadeToNameSelection)
- _Stage = EStage.Config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
-
-
- if (_Stage == EStage.Singing)
- _StartNextRound();
- if (_Stage == EStage.Config)
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- break;
-
- default:
- CBase.Log.LogError("Error in party mode challenge. Wrong screen is sending: " + screenName);
- break;
- }
- }
-
public override void UpdateGame()
{
/*
@@ -281,78 +155,79 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
- public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
+ private IMenu _GetNextScreen()
{
- CMenuParty screen = null;
- alternativeScreen = EScreens.ScreenSong;
-
switch (_Stage)
{
- case EStage.NotStarted:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyConfig", out screen);
- if (screen != null)
- {
- _ToScreenConfig.NumPlayer = _GameData.NumPlayer;
- _ToScreenConfig.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenConfig.NumRounds = _GameData.NumRounds;
- screen.DataToScreen(_ToScreenConfig);
- }
- break;
case EStage.Config:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyNames", out screen);
- if (screen != null)
- {
- _ToScreenNames.NumPlayer = _GameData.NumPlayer;
- _ToScreenNames.ProfileIDs = _GameData.ProfileIDs;
- screen.DataToScreen(_ToScreenNames);
- }
+ return _Screens["CPartyScreenChallengeMedleyConfig"];
+ case EStage.Names:
+ return _Screens["CPartyScreenChallengeMedleyNames"];
+ case EStage.Main:
+ return _Screens["CPartyScreenChallengeMedleyMain"];
+ case EStage.Singing:
+ return CBase.Graphics.GetScreen(EScreen.Song);
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ }
+
+ private void _FadeToScreen()
+ {
+ CBase.Graphics.FadeTo(_GetNextScreen());
+ }
+
+ public void Next()
+ {
+ switch (_Stage)
+ {
+ case EStage.Config:
+ _Stage = EStage.Names;
break;
case EStage.Names:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyMain", out screen);
- if (screen != null)
- {
- CBase.Songs.ResetSongSung();
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
- _GameData.Rounds = new CChallengeRounds(_GameData.NumRounds, _GameData.NumPlayer, _GameData.NumPlayerAtOnce);
- _GameData.CurrentRoundNr = 1;
- _ToScreenMain.CurrentRoundNr = 1;
- _ToScreenMain.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.ProfileIDs = _GameData.ProfileIDs;
- _UpdateScores();
- _ToScreenMain.ResultTable = _GameData.ResultTable;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ CBase.Songs.ResetSongSung();
+ GameData.ResultTable = new List();
+ GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
+ GameData.CurrentRoundNr = 1;
break;
case EStage.Main:
- //nothing to do
+ _Stage = EStage.Singing;
+ if (!_StartNextRound())
+ CBase.Graphics.FadeTo(EScreen.Party);
break;
case EStage.Singing:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyMain", out screen);
- if (screen != null)
- {
- _UpdateScores();
- _ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ _UpdateScores();
break;
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
}
-
- return screen;
+ _FadeToScreen();
}
- public override EScreens GetStartScreen()
+ public void Back()
{
- return EScreens.ScreenPartyDummy;
+ switch (_Stage)
+ {
+ case EStage.Config:
+ CBase.Graphics.FadeTo(EScreen.Party);
+ return;
+ case EStage.Names:
+ _Stage = EStage.Config;
+ break;
+ case EStage.Main:
+ _Stage = EStage.Names;
+ break;
+ default: // Rest is not allowed
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ _FadeToScreen();
}
- public override EScreens GetMainScreen()
+ public override IMenu GetStartScreen()
{
- return EScreens.ScreenPartyDummy;
+ return _Screens["CPartyScreenChallengeMedleyConfig"];
}
public override SScreenSongOptions GetScreenSongOptions()
@@ -375,10 +250,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices();
- if (_GameData.CatSongIndices != null)
+ if (GameData.CatSongIndices != null)
{
- if (_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
- _GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
+ if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
+ GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
}
}
@@ -389,15 +264,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment
{
- if (_GameData.CatSongIndices != null && categoryIndex != -1)
+ if (GameData.CatSongIndices != null && categoryIndex != -1)
{
- if (_GameData.CatSongIndices[categoryIndex] == -1)
+ if (GameData.CatSongIndices[categoryIndex] == -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
else
- _ScreenSongOptions.Selection.SongIndex = _GameData.CatSongIndices[categoryIndex];
+ _ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[categoryIndex];
}
- if (_GameData.CatSongIndices == null && categoryIndex != -1)
+ if (GameData.CatSongIndices == null && categoryIndex != -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1)
@@ -457,22 +332,19 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public override void LeavingHighscore()
{
- for (int i = 0; i < CBase.Game.GetNumSongs();i++ )
- CBase.Songs.AddPartySongSung(CBase.Game.GetSong(i).ID);
- _GameData.CurrentRoundNr++;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
+ GameData.CurrentRoundNr++;
+ Next();
}
- private void _StartNextRound()
+ private bool _StartNextRound()
{
_ScreenSongOptions.Selection.RandomOnly = _ScreenSongOptions.Sorting.Tabs != EOffOn.TR_CONFIG_ON;
_ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON;
_SetNumJokers();
_SetTeamNames();
- _GameData.CatSongIndices = null;
+ GameData.CatSongIndices = null;
- if (_RandomizeSongs())
- CBase.Graphics.FadeTo(EScreens.ScreenSing);
+ return _RandomizeSongs();
}
private bool _RandomizeSongs()
@@ -481,27 +353,27 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
CBase.Game.ClearSongs();
#region PlayerNames
- CBase.Game.SetNumPlayer(_GameData.NumPlayerAtOnce);
+ CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce);
SPlayer[] players = CBase.Game.GetPlayers();
if (players == null)
return false;
- if (players.Length < _GameData.NumPlayerAtOnce)
+ if (players.Length < GameData.NumPlayerAtOnce)
return false;
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
//try to fill with the right data
if (c != null)
- players[i].ProfileID = _GameData.ProfileIDs[c.Player[i]];
+ players[i].ProfileID = GameData.ProfileIDs[c.Player[i]];
else
players[i].ProfileID = -1;
}
#endregion PlayerNames
- #region SongQueue
+ #region SongQueue
if (CBase.Songs.GetNumSongsVisible() < _NumSongs)
CBase.Songs.ResetSongSung();
@@ -511,14 +383,11 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (visibleSongs.Count == 0)
{
CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no songs!");
- CBase.Graphics.FadeTo(EScreens.ScreenParty);
return false;
}
//Calc avarage sing-count
- int totalCounts = 0;
- foreach (CSong song in visibleSongs)
- totalCounts += song.NumPlayedSession;
+ int totalCounts = visibleSongs.Sum(song => song.NumPlayedSession);
int averageCount = totalCounts / visibleSongs.Count;
// ReSharper disable LoopCanBeConvertedToQuery
@@ -535,7 +404,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (ids.Count == 0)
{
CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no medley songs!");
- CBase.Graphics.FadeTo(EScreens.ScreenParty);
return false;
}
@@ -544,6 +412,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
int songID = ids[CBase.Game.GetRandom(ids.Count)];
CBase.Game.AddSong(songID, EGameMode.TR_GAMEMODE_MEDLEY);
+ CBase.Songs.AddPartySongSung(songID);
ids.Remove(songID);
s++;
}
@@ -553,7 +422,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _SetNumJokers()
{
- switch (_GameData.NumPlayerAtOnce)
+ switch (GameData.NumPlayerAtOnce)
{
case 1:
_ScreenSongOptions.Selection.NumJokers = new int[] {10};
@@ -594,21 +463,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
return;
}
- if (_GameData.NumPlayerAtOnce < 1 || _GameData.ProfileIDs.Count < _GameData.NumPlayerAtOnce || profiles.Length < _GameData.NumPlayerAtOnce)
+ if (GameData.NumPlayerAtOnce < 1 || GameData.ProfileIDs.Count < GameData.NumPlayerAtOnce || profiles.Length < GameData.NumPlayerAtOnce)
{
_ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
return;
}
- _ScreenSongOptions.Selection.TeamNames = new string[_GameData.NumPlayerAtOnce];
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ _ScreenSongOptions.Selection.TeamNames = new string[GameData.NumPlayerAtOnce];
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
if (c != null)
{
- if (_GameData.ProfileIDs[c.Player[i]] < profiles.Length)
- _ScreenSongOptions.Selection.TeamNames[i] = profiles[_GameData.ProfileIDs[c.Player[i]]].PlayerName;
+ if (GameData.ProfileIDs[c.Player[i]] < profiles.Length)
+ _ScreenSongOptions.Selection.TeamNames[i] = profiles[GameData.ProfileIDs[c.Player[i]]].PlayerName;
else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar";
}
@@ -619,32 +488,32 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateScores()
{
- if (_GameData.ResultTable.Count == 0)
+ if (GameData.ResultTable.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayer; i++)
+ for (int i = 0; i < GameData.NumPlayer; i++)
{
- CResultTableRow row = new CResultTableRow {PlayerID = _GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
- _GameData.ResultTable.Add(row);
+ CResultTableRow row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
+ GameData.ResultTable.Add(row);
}
- _GameData.Results = new int[_GameData.NumRounds,_GameData.NumPlayerAtOnce];
- for (int i = 0; i < _GameData.NumRounds; i++)
+ GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
+ for (int i = 0; i < GameData.NumRounds; i++)
{
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
- _GameData.Results[i, j] = 0;
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
+ GameData.Results[i, j] = 0;
}
}
else
{
CPoints gamePoints = CBase.Game.GetPoints();
- if (gamePoints == null || gamePoints.NumPlayer < _GameData.NumPlayerAtOnce)
+ if (gamePoints == null || gamePoints.NumPlayer < GameData.NumPlayerAtOnce)
return;
- SPlayer[] results = gamePoints.GetPlayer(0, _GameData.NumPlayerAtOnce);
+ SPlayer[] results = gamePoints.GetPlayer(0, GameData.NumPlayerAtOnce);
if (results == null)
return;
- if (results.Length < _GameData.NumPlayerAtOnce)
+ if (results.Length < GameData.NumPlayerAtOnce)
return;
if (gamePoints.NumRounds == 0)
@@ -652,25 +521,25 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
for (int i = 1; i < gamePoints.NumRounds; i++)
{
- SPlayer[] temp = gamePoints.GetPlayer(i, _GameData.NumPlayerAtOnce);
- for (int p = 0; p < _GameData.NumPlayerAtOnce; p++)
+ SPlayer[] temp = gamePoints.GetPlayer(i, GameData.NumPlayerAtOnce);
+ for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
results[p].Points += temp[p].Points;
}
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
{
results[j].Points = results[j].Points / gamePoints.NumRounds;
- _GameData.Results[_GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
+ GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
}
List points = _GetPointsForPlayer(results);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
int index = -1;
- for (int j = 0; j < _GameData.ResultTable.Count; j++)
+ for (int j = 0; j < GameData.ResultTable.Count; j++)
{
- if (points[i].ProfileID == _GameData.ResultTable[j].PlayerID)
+ if (points[i].ProfileID == GameData.ResultTable[j].PlayerID)
{
index = j;
break;
@@ -679,25 +548,25 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (index != -1)
{
- CResultTableRow row = _GameData.ResultTable[index];
+ CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++;
row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints;
- _GameData.ResultTable[index] = row;
+ GameData.ResultTable[index] = row;
}
}
}
- _GameData.ResultTable.Sort();
+ GameData.ResultTable.Sort();
//Update position-number
int pos = 1;
int lastPoints = 0;
int lastSingPoints = 0;
- foreach (CResultTableRow resultRow in _GameData.ResultTable)
+ foreach (CResultTableRow resultRow in GameData.ResultTable)
{
if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints)
pos++;
@@ -709,10 +578,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private List _GetPointsForPlayer(SPlayer[] results)
{
- List result = new List();
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ var result = new List();
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
- SStats stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
+ var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
result.Add(stat);
}
@@ -758,15 +627,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _CreateCatSongIndices()
{
- if (_GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
+ if (GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
{
- _GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
- for (int i = 0; i < _GameData.CatSongIndices.Length; i++)
- _GameData.CatSongIndices[i] = -1;
+ GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
+ for (int i = 0; i < GameData.CatSongIndices.Length; i++)
+ GameData.CatSongIndices[i] = -1;
}
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
- _GameData.CatSongIndices = null;
+ GameData.CatSongIndices = null;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
index b39c7052..2174939b 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
@@ -15,14 +15,12 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Windows.Forms;
-using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMedleyConfig : CMenuParty
+ public class CPartyScreenChallengeMedleyConfig : CPartyScreenChallengeMedley
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -41,33 +39,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private int _MaxNumRounds = 100;
private int _RoundSteps = 1;
- private SDataFromScreen _Data;
-
public override void Init()
{
base.Init();
_ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack};
-
- _Data = new SDataFromScreen();
- SFromScreenConfig config = new SFromScreenConfig {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12};
- _Data.ScreenConfig = config;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- SDataToScreenConfig config = (SDataToScreenConfig)receivedData;
- _Data.ScreenConfig.NumPlayer = config.NumPlayer;
- _Data.ScreenConfig.NumPlayerAtOnce = config.NumPlayerAtOnce;
- _Data.ScreenConfig.NumRounds = config.NumRounds;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -81,17 +58,17 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
case Keys.Back:
case Keys.Escape:
- _Back();
+ _PartyMode.Back();
break;
case Keys.Enter:
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
break;
case Keys.Left:
@@ -110,18 +87,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
base.HandleMouse(mouseEvent);
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
+ if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
}
if (mouseEvent.RB)
- _Back();
+ _PartyMode.Back();
return true;
}
@@ -144,19 +121,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
return true;
}
- public override bool Draw()
- {
- base.Draw();
- return true;
- }
-
private void _RebuildSlides()
{
// build num player slide (min player ... max player);
_SelectSlides[_SelectSlideNumPlayers].Clear();
for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++)
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumPlayers].Selection = _Data.ScreenConfig.NumPlayer - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.GetMinPlayer();
_UpdateMicsAtOnce();
_SetRoundSteps();
@@ -165,21 +136,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateSlides()
{
- int player = _Data.ScreenConfig.NumPlayer;
- int mics = _Data.ScreenConfig.NumPlayerAtOnce;
- _Data.ScreenConfig.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
+ int player = _PartyMode.GameData.NumPlayer;
+ int mics = _PartyMode.GameData.NumPlayerAtOnce;
+ _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
_UpdateMicsAtOnce();
_SetRoundSteps();
- if (player != _Data.ScreenConfig.NumPlayer || mics != _Data.ScreenConfig.NumPlayerAtOnce)
+ if (player != _PartyMode.GameData.NumPlayer || mics != _PartyMode.GameData.NumPlayerAtOnce)
{
- int num = CHelper.CombinationCount(_Data.ScreenConfig.NumPlayer, _Data.ScreenConfig.NumPlayerAtOnce);
+ int num = CHelper.CombinationCount(_PartyMode.GameData.NumPlayer, _PartyMode.GameData.NumPlayerAtOnce);
while (num > _MaxNumRounds)
num -= _RoundSteps;
- _Data.ScreenConfig.NumRounds = num;
+ _PartyMode.GameData.NumRounds = num;
}
_UpdateSlideRounds();
@@ -187,19 +158,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateMicsAtOnce()
{
- //Data.ScreenConfig.NumPlayerAtOnce
int maxNum = _MaxNumMics;
- if (_Data.ScreenConfig.NumPlayer < _MaxNumMics)
- maxNum = _Data.ScreenConfig.NumPlayer;
+ if (_PartyMode.GameData.NumPlayer < _MaxNumMics)
+ maxNum = _PartyMode.GameData.NumPlayer;
- if (_Data.ScreenConfig.NumPlayerAtOnce > maxNum)
- _Data.ScreenConfig.NumPlayerAtOnce = maxNum;
+ if (_PartyMode.GameData.NumPlayerAtOnce > maxNum)
+ _PartyMode.GameData.NumPlayerAtOnce = maxNum;
// build mics at once slide
_SelectSlides[_SelectSlideNumMics].Clear();
for (int i = 1; i <= maxNum; i++)
_SelectSlides[_SelectSlideNumMics].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumMics].Selection = _Data.ScreenConfig.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
}
private void _UpdateSlideRounds()
@@ -208,31 +178,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectSlides[_SelectSlideNumRounds].Clear();
for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps)
_SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumRounds].Selection = _Data.ScreenConfig.NumRounds / _RoundSteps - 1;
+ _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1;
}
private void _SetRoundSteps()
{
- if (_Data.ScreenConfig.NumPlayerAtOnce < 1 || _Data.ScreenConfig.NumPlayer < 1 || _Data.ScreenConfig.NumPlayerAtOnce > _Data.ScreenConfig.NumPlayer)
+ if (_PartyMode.GameData.NumPlayerAtOnce < 1 || _PartyMode.GameData.NumPlayer < 1 || _PartyMode.GameData.NumPlayerAtOnce > _PartyMode.GameData.NumPlayer)
{
_RoundSteps = 1;
return;
}
- int res = _Data.ScreenConfig.NumPlayer / _Data.ScreenConfig.NumPlayerAtOnce;
- int mod = _Data.ScreenConfig.NumPlayer % _Data.ScreenConfig.NumPlayerAtOnce;
+ int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce;
+ int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce;
- _RoundSteps = mod == 0 ? res : _Data.ScreenConfig.NumPlayer;
- }
-
- private void _Back()
- {
- _FadeTo(EScreens.ScreenParty);
- }
-
- private void _Next()
- {
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
index 47dcb43c..84831c23 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
@@ -40,7 +40,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMedleyMain : CMenuParty
+ public class CPartyScreenChallengeMedleyMain : CPartyScreenChallengeMedley
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -79,8 +79,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private bool _ExitPopupVisible;
- private SDataFromScreen _Data;
- private SDataToScreenMain _GameState;
private List _PlayerTable;
private List _RoundsTable;
@@ -94,11 +92,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private const int _NumPlayerVisible = 10;
private int _NumRoundsVisible = 3;
- public CPartyScreenChallengeMedleyMain()
- {
- _Data = new SDataFromScreen {ScreenMain = new SFromScreenMain()};
- }
-
public override void Init()
{
base.Init();
@@ -121,7 +114,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
base.LoadTheme(xmlPath);
- _GameState = new SDataToScreenMain();
_BuildPlayerTable();
_CreateRoundsTable();
_NextPlayerTexts = new List();
@@ -134,19 +126,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_NextPlayerStatics.Add(GetNewStatic(_Statics[_StaticNextPlayer]));
_AddStatic(_NextPlayerStatics[_NextPlayerStatics.Count - 1]);
}
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var data = (SDataToScreenMain)receivedData;
- _GameState = data;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
+ _Statics[_StaticNextPlayer].Visible = false;
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -162,8 +142,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
case Keys.Escape:
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -175,10 +155,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -206,15 +186,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
base.HandleMouse(mouseEvent);
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
+ if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -238,8 +218,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -268,13 +248,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_UpdatePlayerTable();
_UpdateNextPlayerPositions();
_UpdateNextPlayerContents();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
_BuildRoundsTable();
else
- _ScrollRoundsTable(_GameState.CurrentRoundNr - 2);
+ _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2);
_UpdateRoundsTable();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
{
_Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false;
@@ -285,12 +265,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Buttons[_ButtonExit].Visible = true;
}
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Buttons[_ButtonNextRound].Visible = true;
_Texts[_TextFinishMessage].Visible = false;
_Texts[_TextFinishPlayerWin].Visible = false;
- _SetInteractionToButton(_Buttons[_ButtonNextRound]);
+ _SelectElement(_Buttons[_ButtonNextRound]);
}
else
{
@@ -298,7 +278,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Texts[_TextFinishMessage].Visible = true;
_Texts[_TextFinishPlayerWin].Visible = true;
_Texts[_TextFinishPlayerWin].Text = _GetPlayerWinString();
- _SetInteractionToButton(_Buttons[_ButtonExit]);
+ _SelectElement(_Buttons[_ButtonExit]);
}
_ShowPopup(false);
@@ -309,22 +289,9 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
return true;
}
- public override bool Draw()
- {
- base.Draw();
- return true;
- }
-
- private void _NextRound()
- {
- _Data.ScreenMain.FadeToNameSelection = false;
- _Data.ScreenMain.FadeToSongSelection = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
- }
-
private void _EndParty()
{
- _FadeTo(EScreens.ScreenParty);
+ CBase.Graphics.FadeTo(EScreen.Party);
}
private void _ShowPopup(bool visible)
@@ -337,26 +304,20 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible;
if (_ExitPopupVisible)
- _SetInteractionToButton(_Buttons[_ButtonPopupNo]);
- }
-
- private void _Back()
- {
- _Data.ScreenMain.FadeToNameSelection = true;
- _Data.ScreenMain.FadeToSongSelection = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _SelectElement(_Buttons[_ButtonPopupNo]);
}
private void _UpdateNextPlayerPositions()
{
- float x = (float)CBase.Settings.GetRenderW() / 2 - ((_GameState.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_GameState.NumPlayerAtOnce - 1) * 15)) / 2;
+ float x = (float)CBase.Settings.GetRenderW() / 2 -
+ ((_PartyMode.GameData.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_PartyMode.GameData.NumPlayerAtOnce - 1) * 15)) / 2;
const float staticY = 590;
const float textY = 550;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
//static
- _NextPlayerStatics[i].Rect.X = x;
- _NextPlayerStatics[i].Rect.Y = staticY;
+ _NextPlayerStatics[i].X = x;
+ _NextPlayerStatics[i].Y = staticY;
_NextPlayerStatics[i].Visible = true;
//text
_NextPlayerTexts[i].X = x + _Statics[_StaticNextPlayer].Rect.W / 2;
@@ -365,7 +326,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
x += _Statics[_StaticNextPlayer].Rect.W + 15;
}
- for (int i = _GameState.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
+ for (int i = _PartyMode.GameData.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -374,21 +335,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateNextPlayerContents()
{
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Texts[_TextNextPlayerMessage].Visible = true;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
- int id = _GameState.ProfileIDs[_GameState.Combs[_GameState.CurrentRoundNr - 1].Player[i]];
+ int id = _PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[_PartyMode.GameData.CurrentRoundNr - 1].Player[i]];
_NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id);
_NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id);
- _NextPlayerTexts[i].Color = CBase.Theme.GetPlayerColor(i + 1);
+ _NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1);
}
}
else
{
_Texts[_TextNextPlayerMessage].Visible = false;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -434,10 +395,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTableScrollArea = new SRectF();
const int numPlayerInOneRow = 3;
- _NumRoundsVisible = _GameState.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
+ _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
- if (_NumRoundsVisible > _GameState.Combs.Count)
- _NumRoundsVisible = _GameState.Combs.Count;
+ if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count)
+ _NumRoundsVisible = _PartyMode.GameData.Rounds.Count;
float numberX = _Texts[_TextRoundNumber].X;
float numberY = _Texts[_TextRoundNumber].Y;
@@ -446,7 +407,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTableScrollArea.Y = numberY;
_RoundsTableScrollArea.W = CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20;
- float delta = _Texts[_TextRoundNumber].Height;
+ float delta = _Texts[_TextRoundNumber].Rect.H;
//Update statics and texts for rounds
foreach (CRoundsTableRow roundRow in _RoundsTable)
@@ -454,15 +415,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
//Round-number
roundRow.Number.X = numberX;
roundRow.Number.Y = numberY;
- var numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
+ var numInnerRows = (int)Math.Ceiling(_PartyMode.GameData.NumPlayerAtOnce / ((double)numPlayerInOneRow));
for (int row = 0; row < numInnerRows; row++)
{
int num = (row + 1) * numPlayerInOneRow;
int numPlayerInThisRow = numPlayerInOneRow;
- if (num > _GameState.NumPlayerAtOnce)
+ if (num > _PartyMode.GameData.NumPlayerAtOnce)
{
- num = _GameState.NumPlayerAtOnce;
- numPlayerInThisRow = _GameState.NumPlayerAtOnce - (row * numPlayerInOneRow);
+ num = _PartyMode.GameData.NumPlayerAtOnce;
+ numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow);
}
for (int column = row * numPlayerInOneRow; column < num; column++)
{
@@ -472,14 +433,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
float maxw = ((CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20) / numPlayerInThisRow) / 2 - 5;
roundRow.TextPlayer[column].X = x;
roundRow.TextPlayer[column].Y = numberY;
- roundRow.TextPlayer[column].MaxWidth = maxw;
+ roundRow.TextPlayer[column].W = maxw;
//Score
- roundRow.TextScores[column] = roundRow.TextScores[column];
roundRow.TextScores[column].X = x;
roundRow.TextScores[column].Y = numberY + delta;
- roundRow.TextScores[column].MaxWidth = maxw;
+ roundRow.TextScores[column].W = maxw;
}
- numberY = numberY + delta + delta;
+ numberY = numberY + 2 * delta;
}
numberY = numberY + delta / 2;
}
@@ -492,17 +452,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
{
- if (_GameState.Combs.Count > i + _RoundsTableOffset && _GameState.Combs[i + _RoundsTableOffset].Player.Count > p)
+ if (_PartyMode.GameData.Rounds.Count > i + _RoundsTableOffset && _PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player.Count > p)
{
_RoundsTable[i].Number.Visible = true;
_RoundsTable[i].TextPlayer[p].Visible = true;
_RoundsTable[i].TextScores[p].Visible = true;
_RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")";
- _RoundsTable[i].TextPlayer[p].Text = CBase.Profiles.GetPlayerName(_GameState.ProfileIDs[_GameState.Combs[i + _RoundsTableOffset].Player[p]]);
+ _RoundsTable[i].TextPlayer[p].Text =
+ CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player[p]]);
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
- if ((_GameState.CurrentRoundNr - 1) > i + _RoundsTableOffset)
+ if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
- _RoundsTable[i].TextScores[p].Text = _GameState.Results[i + _RoundsTableOffset, p].ToString();
+ _RoundsTable[i].TextScores[p].Text = _PartyMode.GameData.Results[i + _RoundsTableOffset, p].ToString();
else
_RoundsTable[i].TextScores[p].Text = "";
}
@@ -512,7 +473,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTable[i].TextScores[p].Visible = false;
}
}
- if (_GameState.Combs.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
{
_RoundsTable[i].Number.Visible = false;
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
@@ -524,7 +485,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
_Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0;
- _Buttons[_ButtonRoundsScrollDown].Visible = _GameState.Combs.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
+ _Buttons[_ButtonRoundsScrollDown].Visible = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
}
private void _BuildPlayerTable()
@@ -532,7 +493,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_PlayerTableScrollArea = new SRectF {X = _Texts[_TextPosition].X, Y = _Texts[_TextPosition].Y, W = _Texts[_TextGamePoints].X - _Texts[_TextPosition].X};
_PlayerTable = new List();
- float delta = _Texts[_TextPosition].Height * 1.2f;
+ float delta = _Texts[_TextPosition].Rect.H * 1.2f;
float h = 0;
@@ -584,7 +545,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
STableRow row = _PlayerTable[i];
- if (i + _PlayerTableOffset < _GameState.ResultTable.Count)
+ if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count)
{
row.Pos.Visible = true;
row.Name.Visible = true;
@@ -593,12 +554,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
row.SingPoints.Visible = true;
row.GamePoints.Visible = true;
- row.Pos.Text = _GameState.ResultTable[i + _PlayerTableOffset].Position + ".";
- row.Name.Text = CBase.Profiles.GetPlayerName(_GameState.ResultTable[i + _PlayerTableOffset].PlayerID);
- row.Rounds.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
- row.Won.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
- row.SingPoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
- row.GamePoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
+ row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + ".";
+ row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID);
+ row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
+ row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
+ row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
+ row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
}
else
{
@@ -612,37 +573,37 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
_Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0;
- _Buttons[_ButtonPlayerScrollDown].Visible = _GameState.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
+ _Buttons[_ButtonPlayerScrollDown].Visible = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
}
private void _ScrollPlayerTable(int offset)
{
- if (_GameState.ProfileIDs.Count <= _NumPlayerVisible)
+ if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible)
_PlayerTableOffset = 0;
else if (offset < 0 && _PlayerTableOffset + offset >= 0)
_PlayerTableOffset += offset;
else if (offset < 0 && _PlayerTableOffset + offset < 0)
_PlayerTableOffset = 0;
- else if (offset > 0 && _PlayerTableOffset + offset <= _GameState.ProfileIDs.Count - _NumPlayerVisible)
+ else if (offset > 0 && _PlayerTableOffset + offset <= _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
_PlayerTableOffset += offset;
- else if (offset > 0 && _PlayerTableOffset + offset > _GameState.ProfileIDs.Count - _NumPlayerVisible)
- _PlayerTableOffset = _GameState.ProfileIDs.Count - _NumPlayerVisible;
+ else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
+ _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible;
_UpdatePlayerTable();
}
private void _ScrollRoundsTable(int offset)
{
- if (_GameState.Combs.Count <= _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible)
_RoundsTableOffset = 0;
else if (offset < 0 && _RoundsTableOffset + offset >= 0)
_RoundsTableOffset += offset;
else if (offset < 0 && _RoundsTableOffset + offset < 0)
_RoundsTableOffset = 0;
- else if (offset > 0 && _RoundsTableOffset + offset <= _GameState.Combs.Count - _NumRoundsVisible)
+ else if (offset > 0 && _RoundsTableOffset + offset <= _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
_RoundsTableOffset += offset;
- else if (offset > 0 && _RoundsTableOffset + offset > _GameState.Combs.Count - _NumRoundsVisible)
- _RoundsTableOffset = _GameState.Combs.Count - _NumRoundsVisible;
+ else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
+ _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible;
_UpdateRoundsTable();
}
@@ -650,13 +611,14 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private string _GetPlayerWinString()
{
string s = "";
- for (int i = 0; i < _GameState.ResultTable.Count; i++)
+
+ for (int i = 0; i < _PartyMode.GameData.ResultTable.Count; i++)
{
- if (_GameState.ResultTable[i].Position == 1)
+ if (_PartyMode.GameData.ResultTable[i].Position == 1)
{
if (i > 0)
s += ", ";
- s += CBase.Profiles.GetPlayerName(_GameState.ResultTable[i].PlayerID);
+ s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID);
}
else
break;
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
index 9c3521af..4d92fc7d 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -31,58 +30,38 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
get { return 1; }
}
- private SDataFromScreen _Data;
+ private new CPartyModeChallengeMedley _PartyMode;
public override void Init()
{
base.Init();
-
- _Data.ScreenNames.ProfileIDs = new List();
-
- _Data = new SDataFromScreen();
- var names = new SFromScreenNames {FadeToConfig = false, ProfileIDs = new List()};
- _Data.ScreenNames = names;
-
+ _PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
_AllowChangePlayerNum = false;
}
- public override void DataToScreen(object receivedData)
+ public override void OnShow()
{
- try
- {
- var config = (SDataToScreenNames)receivedData;
- _Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
+ base.OnShow();
+ SetPartyModeData(_PartyMode.GameData.NumPlayer);
+ while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer)
+ _PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1);
- SetPartyModeData(config.NumPlayer);
-
- while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
- _Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
-
- List[] ids = new List[] {_Data.ScreenNames.ProfileIDs};
- SetPartyModeProfiles(ids);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
+ List[] ids = new List[] {_PartyMode.GameData.ProfileIDs};
+ SetPartyModeProfiles(ids);
}
public override void Back()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 1)
- _Data.ScreenNames.ProfileIDs = options.TeamList[0];
- _Data.ScreenNames.FadeToConfig = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Back();
}
public override void Next()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 1)
- _Data.ScreenNames.ProfileIDs = options.TeamList[0];
- _Data.ScreenNames.FadeToConfig = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Next();
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
index 1fcf18c2..1dadbaea 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
@@ -17,8 +17,11 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
using System.Runtime.InteropServices;
using VocaluxeLib.Menu;
+using VocaluxeLib.Songs;
[assembly: ComVisible(false)]
@@ -53,81 +56,20 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public bool Finished;
}
- #region Communication
-
- #region ToScreen
- public struct SDataToScreenConfig
+ public abstract class CPartyScreenTicTacToe : CMenuParty
{
- public int NumFields;
- public ESongSource SongSource;
- public int CategoryID;
- public int PlaylistID;
- public EPartyGameMode GameMode;
+ protected new CPartyModeTicTacToe _PartyMode;
+
+ public override void Init()
+ {
+ base.Init();
+ _PartyMode = (CPartyModeTicTacToe)base._PartyMode;
+ }
}
- public struct SDataToScreenNames
- {
- public int NumPlayerTeam1;
- public int NumPlayerTeam2;
- public List ProfileIDsTeam1;
- public List ProfileIDsTeam2;
- }
-
- public struct SDataToScreenMain
- {
- public int CurrentRoundNr;
- public int Team;
- public int NumFields;
- public List Rounds;
- public List Songs;
- public List ProfileIDsTeam1;
- public List ProfileIDsTeam2;
- public List PlayerTeam1;
- public List PlayerTeam2;
- public int[] NumJokerRandom;
- public int[] NumJokerRetry;
- }
-
- public struct SDataFromScreen
- {
- public SFromScreenConfig ScreenConfig;
- public SFromScreenNames ScreenNames;
- public SFromScreenMain ScreenMain;
- }
-
- public struct SFromScreenConfig
- {
- public int NumFields;
- public ESongSource SongSource;
- public int CategoryID;
- public int PlaylistID;
- public EPartyGameMode GameMode;
- }
-
- public struct SFromScreenNames
- {
- public bool FadeToConfig;
- public int NumPlayerTeam1;
- public int NumPlayerTeam2;
- public List ProfileIDsTeam1;
- public List ProfileIDsTeam2;
- }
-
- public struct SFromScreenMain
- {
- public bool FadeToSinging;
- public bool FadeToNameSelection;
- public List PlayerTeam1;
- public List PlayerTeam2;
- public List Rounds;
- public int SingRoundNr;
- public List Songs;
- }
- #endregion FromScreen
-
- #endregion Communication
-
+ // ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeTicTacToe : CPartyMode
+ // ReSharper restore ClassNeverInstantiated.Global
{
private const int _MaxPlayer = 20;
private const int _MinPlayer = 2;
@@ -139,14 +81,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private enum EStage
{
- NotStarted,
Config,
Names,
Main,
Singing
}
- private struct SData
+ public struct SData
{
public int NumPlayerTeam1;
public int NumPlayerTeam2;
@@ -167,20 +108,16 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public List Songs;
public int CurrentRoundNr;
- public int SingRoundNr;
+ public int FieldNr;
public int[] NumJokerRandom;
public int[] NumJokerRetry;
}
- private SDataToScreenConfig _ToScreenConfig;
- private SDataToScreenNames _ToScreenNames;
- private SDataToScreenMain _ToScreenMain;
-
- private SData _GameData;
+ public SData GameData;
private EStage _Stage;
- public CPartyModeTicTacToe()
+ public CPartyModeTicTacToe(int id, string folder) : base(id, folder)
{
_ScreenSongOptions.Selection.RandomOnly = false;
_ScreenSongOptions.Selection.PartyMode = true;
@@ -192,23 +129,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
- _Stage = EStage.NotStarted;
-
- _ToScreenConfig = new SDataToScreenConfig();
- _ToScreenNames = new SDataToScreenNames();
- _ToScreenMain = new SDataToScreenMain();
-
- _GameData = new SData
+ GameData = new SData
{
- NumFields = 9,
NumPlayerTeam1 = 2,
NumPlayerTeam2 = 2,
+ NumFields = 9,
ProfileIDsTeam1 = new List(),
ProfileIDsTeam2 = new List(),
PlayerTeam1 = new List(),
PlayerTeam2 = new List(),
CurrentRoundNr = 0,
- SingRoundNr = 0,
+ FieldNr = 0,
SongSource = ESongSource.TR_ALLSONGS,
PlaylistID = 0,
CategoryID = 0,
@@ -222,7 +153,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override bool Init()
{
- _Stage = EStage.NotStarted;
+ _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
@@ -232,100 +163,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
- _ToScreenMain.Rounds = new List();
- _ToScreenMain.Songs = new List();
- _ToScreenMain.PlayerTeam1 = new List();
- _ToScreenMain.PlayerTeam2 = new List();
- _GameData.Songs = new List();
- _GameData.Rounds = new List();
- _GameData.PlayerTeam1 = new List();
- _GameData.PlayerTeam2 = new List();
+ GameData.Songs.Clear();
+ GameData.Rounds.Clear();
+ GameData.PlayerTeam1.Clear();
+ GameData.PlayerTeam2.Clear();
return true;
}
- public override void DataFromScreen(string screenName, Object data)
- {
- var dataFrom = new SDataFromScreen();
- switch (screenName)
- {
- case "PartyScreenTicTacToeConfig":
-
- try
- {
- dataFrom = (SDataFromScreen)data;
- _GameData.NumFields = dataFrom.ScreenConfig.NumFields;
- _GameData.SongSource = dataFrom.ScreenConfig.SongSource;
- _GameData.CategoryID = dataFrom.ScreenConfig.CategoryID;
- _GameData.PlaylistID = dataFrom.ScreenConfig.PlaylistID;
- _GameData.GameMode = dataFrom.ScreenConfig.GameMode;
-
- _Stage = EStage.Config;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode TicTacToe. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenTicTacToeNames":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenNames.FadeToConfig)
- _Stage = EStage.NotStarted;
- else
- {
- _GameData.Team = CBase.Game.GetRandom(100) < 50 ? 0 : 1;
- _GameData.NumPlayerTeam1 = dataFrom.ScreenNames.NumPlayerTeam1;
- _GameData.NumPlayerTeam2 = dataFrom.ScreenNames.NumPlayerTeam2;
- _GameData.ProfileIDsTeam1 = dataFrom.ScreenNames.ProfileIDsTeam1;
- _GameData.ProfileIDsTeam2 = dataFrom.ScreenNames.ProfileIDsTeam2;
- _Stage = EStage.Names;
- }
-
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode TicTacToe. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenTicTacToeMain":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenMain.FadeToSinging)
- {
- _Stage = EStage.Singing;
- _GameData.Rounds = dataFrom.ScreenMain.Rounds;
- _GameData.SingRoundNr = dataFrom.ScreenMain.SingRoundNr;
- _GameData.Songs = dataFrom.ScreenMain.Songs;
- _GameData.PlayerTeam1 = dataFrom.ScreenMain.PlayerTeam1;
- _GameData.PlayerTeam2 = dataFrom.ScreenMain.PlayerTeam2;
- }
- if (dataFrom.ScreenMain.FadeToNameSelection)
- _Stage = EStage.Config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode TicTacToe. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
-
-
- if (_Stage == EStage.Singing)
- _StartRound(dataFrom.ScreenMain.SingRoundNr);
- if (_Stage == EStage.Config)
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- break;
-
- default:
- CBase.Log.LogError("Error in party mode TicTacToe. Wrong screen is sending: " + screenName);
- break;
- }
- }
-
public override void UpdateGame()
{
/*
@@ -335,127 +179,102 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
- public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
+ private IMenu _GetNextScreen()
{
- CMenuParty screen = null;
- alternativeScreen = EScreens.ScreenSong;
-
switch (_Stage)
{
- case EStage.NotStarted:
- _Screens.TryGetValue("CPartyScreenTicTacToeConfig", out screen);
- if (screen != null)
- {
- _ToScreenConfig.NumFields = _GameData.NumFields;
- _ToScreenConfig.SongSource = _GameData.SongSource;
- _ToScreenConfig.CategoryID = _GameData.CategoryID;
- _ToScreenConfig.PlaylistID = _GameData.PlaylistID;
- _ToScreenConfig.GameMode = _GameData.GameMode;
- screen.DataToScreen(_ToScreenConfig);
- }
- break;
case EStage.Config:
- _Screens.TryGetValue("CPartyScreenTicTacToeNames", out screen);
- if (screen != null)
- {
- _ToScreenNames.NumPlayerTeam1 = _GameData.NumPlayerTeam1;
- _ToScreenNames.NumPlayerTeam2 = _GameData.NumPlayerTeam2;
- _ToScreenNames.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1;
- _ToScreenNames.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2;
- screen.DataToScreen(_ToScreenNames);
- }
+ return _Screens["CPartyScreenTicTacToeConfig"];
+ case EStage.Names:
+ return _Screens["CPartyScreenTicTacToeNames"];
+ case EStage.Main:
+ return _Screens["CPartyScreenTicTacToeMain"];
+ case EStage.Singing:
+ return CBase.Graphics.GetScreen(EScreen.Sing);
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ }
+
+ private void _FadeToScreen()
+ {
+ if (CBase.Graphics.GetNextScreen() != _GetNextScreen())
+ CBase.Graphics.FadeTo(_GetNextScreen());
+ }
+
+ public void Next()
+ {
+ switch (_Stage)
+ {
+ case EStage.Config:
+ _Stage = EStage.Names;
break;
case EStage.Names:
- _Screens.TryGetValue("CPartyScreenTicTacToeMain", out screen);
- if (screen != null)
- {
- _GameData.Team = _GameData.Team == 1 ? 0 : 1;
- CBase.Songs.ResetSongSung();
- _GameData.CurrentRoundNr = 1;
- _ToScreenMain.CurrentRoundNr = 1;
- _ToScreenMain.NumFields = _GameData.NumFields;
- _ToScreenMain.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1;
- _ToScreenMain.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2;
- _CreateRounds();
- _SetNumJokers();
- _PreparePlayerList(0);
- _PrepareSongList();
- _ToScreenMain.Rounds = _GameData.Rounds;
- _ToScreenMain.Songs = _GameData.Songs;
- _ToScreenMain.PlayerTeam1 = _GameData.PlayerTeam1;
- _ToScreenMain.PlayerTeam1 = _GameData.PlayerTeam2;
- _ToScreenMain.NumJokerRandom = _GameData.NumJokerRandom;
- _ToScreenMain.NumJokerRetry = _GameData.NumJokerRetry;
- _ToScreenMain.Team = _GameData.Team;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ GameData.Team = CBase.Game.GetRandom(100) < 50 ? 0 : 1;
+ CBase.Songs.ResetSongSung();
+ GameData.CurrentRoundNr = 1;
+ _CreateRounds();
+ _SetNumJokers();
+ _PreparePlayerList(0);
break;
case EStage.Main:
- //nothing to do
+ _Stage = EStage.Singing;
+ _StartRound(GameData.FieldNr);
break;
case EStage.Singing:
- _Screens.TryGetValue("CPartyScreenTicTacToeMain", out screen);
- if (screen != null)
- {
- _GameData.Team = _GameData.Team == 1 ? 0 : 1;
- _UpdateSongList();
- _UpdatePlayerList();
- _ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
- _ToScreenMain.NumFields = _GameData.NumFields;
- _ToScreenMain.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1;
- _ToScreenMain.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2;
- _ToScreenMain.Rounds = _GameData.Rounds;
- _ToScreenMain.Songs = _GameData.Songs;
- _ToScreenMain.PlayerTeam1 = _GameData.PlayerTeam1;
- _ToScreenMain.PlayerTeam2 = _GameData.PlayerTeam2;
- _ToScreenMain.NumJokerRandom = _GameData.NumJokerRandom;
- _ToScreenMain.NumJokerRetry = _GameData.NumJokerRetry;
- _ToScreenMain.Team = _GameData.Team;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ GameData.Team = GameData.Team == 1 ? 0 : 1;
+ _UpdatePlayerList();
break;
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
}
-
- return screen;
+ _FadeToScreen();
}
- public override EScreens GetStartScreen()
+ public void Back()
{
- return EScreens.ScreenPartyDummy;
+ switch (_Stage)
+ {
+ case EStage.Config:
+ CBase.Graphics.FadeTo(EScreen.Party);
+ return;
+ case EStage.Names:
+ _Stage = EStage.Config;
+ break;
+ case EStage.Main:
+ _Stage = EStage.Names;
+ break;
+ default: // Rest is not allowed
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ _FadeToScreen();
}
- public override EScreens GetMainScreen()
+ public override IMenu GetStartScreen()
{
- return EScreens.ScreenPartyDummy;
+ return _Screens["CPartyScreenTicTacToeConfig"];
}
public override SScreenSongOptions GetScreenSongOptions()
{
- _ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
- _ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs();
- _ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
-
- return _ScreenSongOptions;
+ throw new ArgumentException("Not required!");
}
- // ReSharper disable RedundantAssignment
public override void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions)
- // ReSharper restore RedundantAssignment
{
- screenSongOptions = _ScreenSongOptions;
+ throw new ArgumentException("Not required!");
}
- // ReSharper disable RedundantAssignment
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
- // ReSharper restore RedundantAssignment
{
- screenSongOptions = _ScreenSongOptions;
+ throw new ArgumentException("Not required!");
}
public override void SetSearchString(string searchString, bool visible)
{
- _ScreenSongOptions.Sorting.SearchString = searchString;
- _ScreenSongOptions.Sorting.SearchActive = visible;
+ throw new ArgumentException("Not required!");
}
public override int GetMaxPlayer()
@@ -497,41 +316,23 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override void SongSelected(int songID)
{
- var gm = EGameMode.TR_GAMEMODE_NORMAL;
-
- switch (_GameData.GameMode)
- {
- case EPartyGameMode.TR_GAMEMODE_NORMAL:
- gm = EGameMode.TR_GAMEMODE_NORMAL;
- break;
-
- case EPartyGameMode.TR_GAMEMODE_DUET:
- gm = EGameMode.TR_GAMEMODE_DUET;
- break;
-
- case EPartyGameMode.TR_GAMEMODE_SHORTSONG:
- gm = EGameMode.TR_GAMEMODE_SHORTSONG;
- break;
- }
- CBase.Game.AddSong(songID, gm);
-
- CBase.Graphics.FadeTo(EScreens.ScreenSing);
+ throw new ArgumentException("Not required!");
}
public override void LeavingHighscore()
{
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID);
_UpdateScores();
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
+ Next();
}
private void _CreateRounds()
{
- _GameData.Rounds = new List();
- for (int i = 0; i < _GameData.NumFields; i++)
+ GameData.Rounds = new List();
+ for (int i = 0; i < GameData.NumFields; i++)
{
var r = new CRound();
- _GameData.Rounds.Add(r);
+ GameData.Rounds.Add(r);
}
}
@@ -541,41 +342,41 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
case 0:
{
- _GameData.PlayerTeam1 = new List();
- _GameData.PlayerTeam2 = new List();
+ GameData.PlayerTeam1 = new List();
+ GameData.PlayerTeam2 = new List();
//Prepare Player-IDs
var ids1 = new List();
var ids2 = new List();
//Add IDs to team-list
- while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] &&
- _GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
+ while (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0] &&
+ GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{
if (ids1.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam1; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam1; i++)
ids1.Add(i);
}
if (ids2.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam2; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam2; i++)
ids2.Add(i);
}
int num;
- if (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0])
+ if (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0])
{
num = CBase.Game.GetRandom(ids1.Count);
if (num >= ids1.Count)
num = ids1.Count - 1;
- _GameData.PlayerTeam1.Add(ids1[num]);
+ GameData.PlayerTeam1.Add(ids1[num]);
ids1.RemoveAt(num);
}
- if (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
+ if (GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{
num = CBase.Game.GetRandom(ids2.Count);
if (num >= ids2.Count)
num = ids2.Count - 1;
- _GameData.PlayerTeam2.Add(ids2[num]);
+ GameData.PlayerTeam2.Add(ids2[num]);
ids2.RemoveAt(num);
}
}
@@ -586,19 +387,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Prepare Player-IDs
var ids = new List();
//Add IDs to team-list
- while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] && ids.Count == 0)
+ while (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0] && ids.Count == 0)
{
if (ids.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam1; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam1; i++)
ids.Add(i);
}
- if (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0])
+ if (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0])
{
int num = CBase.Game.GetRandom(ids.Count);
if (num >= ids.Count)
num = ids.Count - 1;
- _GameData.PlayerTeam1.Add(ids[num]);
+ GameData.PlayerTeam1.Add(ids[num]);
ids.RemoveAt(num);
}
}
@@ -609,19 +410,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Prepare Player-IDs
var ids = new List();
//Add IDs to team-list
- while (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1] && ids.Count == 0)
+ while (GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1] && ids.Count == 0)
{
if (ids.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam2; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam2; i++)
ids.Add(i);
}
- if (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
+ if (GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{
int num = CBase.Game.GetRandom(ids.Count);
if (num >= ids.Count)
num = ids.Count - 1;
- _GameData.PlayerTeam2.Add(ids[num]);
+ GameData.PlayerTeam2.Add(ids[num]);
ids.RemoveAt(num);
}
}
@@ -630,11 +431,24 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
}
- private void _PrepareSongList()
+ private static void _Shuffle(IList list)
{
- var gm = EGameMode.TR_GAMEMODE_NORMAL;
+ for (int n = list.Count - 1; n >= 1; n--)
+ {
+ int k = CBase.Game.GetRandom(n);
+ T value = list[k];
+ list[k] = list[n];
+ list[n] = value;
+ }
+ }
- switch (_GameData.GameMode)
+ public void UpdateSongList()
+ {
+ if (GameData.Songs.Count > 0)
+ return;
+
+ EGameMode gm;
+ switch (GameData.GameMode)
{
case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -647,77 +461,47 @@ namespace VocaluxeLib.PartyModes.TicTacToe
case EPartyGameMode.TR_GAMEMODE_SHORTSONG:
gm = EGameMode.TR_GAMEMODE_SHORTSONG;
break;
+
+ default:
+ gm = EGameMode.TR_GAMEMODE_NORMAL;
+ break;
}
- while (_GameData.Songs.Count < (_GameData.NumFields + _GameData.NumJokerRandom[0] + _GameData.NumJokerRandom[1]))
+ switch (GameData.SongSource)
{
- var songs = new List();
- switch (_GameData.SongSource)
- {
- case ESongSource.TR_PLAYLIST:
- for (int i = 0; i < CBase.Playlist.GetSongCount(_GameData.PlaylistID); i++)
- {
- int id = CBase.Playlist.GetSong(_GameData.PlaylistID, i).SongID;
- // ReSharper disable LoopCanBeConvertedToQuery
- foreach (EGameMode mode in CBase.Songs.GetSongByID(id).AvailableGameModes)
- // ReSharper restore LoopCanBeConvertedToQuery
- {
- if (mode == gm)
- songs.Add(id);
- }
- }
- break;
+ case ESongSource.TR_PLAYLIST:
+ for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++)
+ {
+ int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID;
+ if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(gm))
+ GameData.Songs.Add(id);
+ }
+ break;
- case ESongSource.TR_ALLSONGS:
- for (int i = 0; i < CBase.Songs.GetNumSongs(); i++)
- {
- // ReSharper disable LoopCanBeConvertedToQuery
- foreach (EGameMode mode in CBase.Songs.GetSongByID(i).AvailableGameModes)
- // ReSharper restore LoopCanBeConvertedToQuery
- {
- if (mode == gm)
- songs.Add(i);
- }
- }
- break;
+ case ESongSource.TR_ALLSONGS:
+ ReadOnlyCollection avSongs = CBase.Songs.GetSongs();
+ GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(gm)).Select(song => song.ID));
+ break;
- case ESongSource.TR_CATEGORY:
- CBase.Songs.SetCategory(_GameData.CategoryID);
- for (int i = 0; i < CBase.Songs.GetNumSongsVisible(); i++)
- {
- // ReSharper disable LoopCanBeConvertedToQuery
- foreach (EGameMode mode in CBase.Songs.GetVisibleSong(i).AvailableGameModes)
- // ReSharper restore LoopCanBeConvertedToQuery
- {
- if (mode == gm)
- songs.Add(CBase.Songs.GetVisibleSong(i).ID);
- }
- }
- CBase.Songs.SetCategory(-1);
- break;
- }
- while (songs.Count > 0)
- {
- _GameData.Songs.Add(songs[CBase.Game.GetRandom(songs.Count - 1)]);
- songs.Remove(_GameData.Songs[_GameData.Songs.Count - 1]);
- }
+ case ESongSource.TR_CATEGORY:
+ CBase.Songs.SetCategory(GameData.CategoryID);
+ avSongs = CBase.Songs.GetVisibleSongs();
+ GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(gm)).Select(song => song.ID));
+
+ CBase.Songs.SetCategory(-1);
+ break;
}
+ _Shuffle(GameData.Songs);
}
private void _UpdatePlayerList()
{
- if (_GameData.PlayerTeam1.Count == 0)
+ if (GameData.PlayerTeam1.Count == 0)
_PreparePlayerList(1);
- if (_GameData.PlayerTeam2.Count == 0)
+ if (GameData.PlayerTeam2.Count == 0)
_PreparePlayerList(2);
}
- private void _UpdateSongList()
- {
- if (_GameData.Songs.Count == 0)
- _PrepareSongList();
- }
-
private void _StartRound(int roundNr)
{
CBase.Game.Reset();
@@ -732,8 +516,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (players.Length < 2)
return;
- CRound r = _GameData.Rounds[roundNr];
- bool isDuet = CBase.Songs.GetSongByID(r.SongID).IsDuet;
+ CRound round = GameData.Rounds[roundNr];
+ bool isDuet = CBase.Songs.GetSongByID(round.SongID).IsDuet;
for (int i = 0; i < 2; i++)
{
@@ -742,51 +526,64 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
//try to fill with the right data
- if (r != null)
+ players[0].ProfileID = GameData.ProfileIDsTeam1[round.SingerTeam1];
+ if (isDuet)
+ players[0].VoiceNr = 0;
+
+ players[1].ProfileID = GameData.ProfileIDsTeam2[round.SingerTeam2];
+ if (isDuet)
+ players[1].VoiceNr = 1;
+
+ var gm = EGameMode.TR_GAMEMODE_NORMAL;
+
+ switch (GameData.GameMode)
{
- players[0].ProfileID = _GameData.ProfileIDsTeam1[r.SingerTeam1];
- if (isDuet)
- players[0].VoiceNr = 0;
+ case EPartyGameMode.TR_GAMEMODE_NORMAL:
+ gm = EGameMode.TR_GAMEMODE_NORMAL;
+ break;
- players[1].ProfileID = _GameData.ProfileIDsTeam2[r.SingerTeam2];
- if (isDuet)
- players[1].VoiceNr = 1;
+ case EPartyGameMode.TR_GAMEMODE_DUET:
+ gm = EGameMode.TR_GAMEMODE_DUET;
+ break;
- SongSelected(r.SongID);
+ case EPartyGameMode.TR_GAMEMODE_SHORTSONG:
+ gm = EGameMode.TR_GAMEMODE_SHORTSONG;
+ break;
}
+ CBase.Game.AddSong(round.SongID, gm);
}
private void _SetNumJokers()
{
- switch (_GameData.NumFields)
+ switch (GameData.NumFields)
{
case 9:
- _GameData.NumJokerRandom[0] = 1;
- _GameData.NumJokerRandom[1] = 1;
- _GameData.NumJokerRetry[0] = 0;
- _GameData.NumJokerRetry[1] = 0;
+ GameData.NumJokerRandom[0] = 1;
+ GameData.NumJokerRandom[1] = 1;
+ GameData.NumJokerRetry[0] = 0;
+ GameData.NumJokerRetry[1] = 0;
break;
case 16:
- _GameData.NumJokerRandom[0] = 2;
- _GameData.NumJokerRandom[1] = 2;
- _GameData.NumJokerRetry[0] = 1;
- _GameData.NumJokerRetry[1] = 1;
+ GameData.NumJokerRandom[0] = 2;
+ GameData.NumJokerRandom[1] = 2;
+ GameData.NumJokerRetry[0] = 1;
+ GameData.NumJokerRetry[1] = 1;
break;
case 25:
- _GameData.NumJokerRandom[0] = 3;
- _GameData.NumJokerRandom[1] = 3;
- _GameData.NumJokerRetry[0] = 2;
- _GameData.NumJokerRetry[1] = 2;
+ GameData.NumJokerRandom[0] = 3;
+ GameData.NumJokerRandom[1] = 3;
+ GameData.NumJokerRetry[0] = 2;
+ GameData.NumJokerRetry[1] = 2;
break;
}
}
private void _UpdateScores()
{
- if (!_GameData.Rounds[_GameData.SingRoundNr].Finished)
- _GameData.CurrentRoundNr++;
+ if (!GameData.Rounds[GameData.FieldNr].Finished)
+ GameData.CurrentRoundNr++;
SPlayer[] results = CBase.Game.GetPlayers();
if (results == null)
@@ -795,17 +592,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (results.Length < 2)
return;
- _GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 = (int)Math.Round(results[0].Points);
- _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2 = (int)Math.Round(results[1].Points);
- _GameData.Rounds[_GameData.SingRoundNr].Finished = true;
- if (_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 < _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2)
- _GameData.Rounds[_GameData.SingRoundNr].Winner = 2;
- else if (_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 > _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2)
- _GameData.Rounds[_GameData.SingRoundNr].Winner = 1;
+ GameData.Rounds[GameData.FieldNr].PointsTeam1 = (int)Math.Round(results[0].Points);
+ GameData.Rounds[GameData.FieldNr].PointsTeam2 = (int)Math.Round(results[1].Points);
+ GameData.Rounds[GameData.FieldNr].Finished = true;
+ if (GameData.Rounds[GameData.FieldNr].PointsTeam1 < GameData.Rounds[GameData.FieldNr].PointsTeam2)
+ GameData.Rounds[GameData.FieldNr].Winner = 2;
+ else if (GameData.Rounds[GameData.FieldNr].PointsTeam1 > GameData.Rounds[GameData.FieldNr].PointsTeam2)
+ GameData.Rounds[GameData.FieldNr].Winner = 1;
else
{
- _GameData.Rounds[_GameData.SingRoundNr].Finished = false;
- _GameData.CurrentRoundNr--;
+ GameData.Rounds[GameData.FieldNr].Finished = false;
+ GameData.CurrentRoundNr--;
}
}
}
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
index f44f881c..2986c303 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
@@ -15,17 +15,15 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
-using VocaluxeLib.Menu;
using VocaluxeLib.Songs;
namespace VocaluxeLib.PartyModes.TicTacToe
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenTicTacToeConfig : CMenuParty
+ public class CPartyScreenTicTacToeConfig : CPartyScreenTicTacToe
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -44,8 +42,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private bool _ConfigOk = true;
- private SDataFromScreen _Data;
-
public override void Init()
{
base.Init();
@@ -55,34 +51,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlideNumFields, _SelectSlideSongSource, _SelectSlidePlaylist, _SelectSlideCategory, _SelectSlideGameMode
};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack};
-
- _Data = new SDataFromScreen();
- var config = new SFromScreenConfig
- {
- PlaylistID = 0,
- NumFields = 9,
- GameMode = EPartyGameMode.TR_GAMEMODE_NORMAL,
- CategoryID = 0,
- SongSource = ESongSource.TR_ALLSONGS
- };
- _Data.ScreenConfig = config;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenConfig)receivedData;
- _Data.ScreenConfig.NumFields = config.NumFields;
- _Data.ScreenConfig.PlaylistID = config.PlaylistID;
- _Data.ScreenConfig.CategoryID = config.CategoryID;
- _Data.ScreenConfig.SongSource = config.SongSource;
- _Data.ScreenConfig.GameMode = config.GameMode;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen TicTacToe config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -96,17 +64,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
case Keys.Back:
case Keys.Escape:
- _Back();
+ _PartyMode.Back();
break;
case Keys.Enter:
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
break;
case Keys.Left:
@@ -125,18 +93,18 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
base.HandleMouse(mouseEvent);
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
+ if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
}
if (mouseEvent.RB)
- _Back();
+ _PartyMode.Back();
return true;
}
@@ -158,37 +126,31 @@ namespace VocaluxeLib.PartyModes.TicTacToe
return true;
}
- public override bool Draw()
- {
- base.Draw();
- return true;
- }
-
private void _FillSlides()
{
_SelectSlides[_SelectSlideNumFields].Clear();
_SelectSlides[_SelectSlideNumFields].AddValue("9");
_SelectSlides[_SelectSlideNumFields].AddValue("16");
_SelectSlides[_SelectSlideNumFields].AddValue("25");
- if (_Data.ScreenConfig.NumFields == 9)
+ if (_PartyMode.GameData.NumFields == 9)
_SelectSlides[_SelectSlideNumFields].Selection = 0;
- else if (_Data.ScreenConfig.NumFields == 16)
+ else if (_PartyMode.GameData.NumFields == 16)
_SelectSlides[_SelectSlideNumFields].Selection = 1;
- else if (_Data.ScreenConfig.NumFields == 25)
+ else if (_PartyMode.GameData.NumFields == 25)
_SelectSlides[_SelectSlideNumFields].Selection = 2;
_SelectSlides[_SelectSlideSongSource].Clear();
- _SelectSlides[_SelectSlideSongSource].SetValues((int)_Data.ScreenConfig.SongSource);
+ _SelectSlides[_SelectSlideSongSource].SetValues((int)_PartyMode.GameData.SongSource);
List playlists = CBase.Playlist.GetNames();
_SelectSlides[_SelectSlidePlaylist].Clear();
for (int i = 0; i < playlists.Count; i++)
{
- string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", _PartyModeID) + ")";
+ string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")";
_SelectSlides[_SelectSlidePlaylist].AddValue(value);
}
- _SelectSlides[_SelectSlidePlaylist].Selection = _Data.ScreenConfig.PlaylistID;
- _SelectSlides[_SelectSlidePlaylist].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST;
+ _SelectSlides[_SelectSlidePlaylist].Selection = _PartyMode.GameData.PlaylistID;
+ _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST;
var categories = new string[CBase.Songs.GetNumCategories()];
for (int i = 0; i < CBase.Songs.GetNumCategories(); i++)
@@ -196,33 +158,33 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlides[_SelectSlideCategory].Clear();
for (int i = 0; i < categories.Length; i++)
{
- string value = categories[i] + " (" + CBase.Songs.GetNumSongsNotSungInCategory(i) + " " + CBase.Language.Translate("TR_SONGS", _PartyModeID) + ")";
+ string value = categories[i] + " (" + CBase.Songs.GetNumSongsNotSungInCategory(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")";
_SelectSlides[_SelectSlideCategory].AddValue(value);
}
- _SelectSlides[_SelectSlideCategory].Selection = _Data.ScreenConfig.CategoryID;
- _SelectSlides[_SelectSlideCategory].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY;
+ _SelectSlides[_SelectSlideCategory].Selection = _PartyMode.GameData.CategoryID;
+ _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY;
_SelectSlides[_SelectSlideGameMode].Visible = true;
- _SelectSlides[_SelectSlideGameMode].SetValues((int)_Data.ScreenConfig.GameMode);
+ _SelectSlides[_SelectSlideGameMode].SetValues((int)_PartyMode.GameData.GameMode);
}
private void _UpdateSlides()
{
if (_SelectSlides[_SelectSlideNumFields].Selection == 0)
- _Data.ScreenConfig.NumFields = 9;
+ _PartyMode.GameData.NumFields = 9;
else if (_SelectSlides[_SelectSlideNumFields].Selection == 1)
- _Data.ScreenConfig.NumFields = 16;
+ _PartyMode.GameData.NumFields = 16;
else if (_SelectSlides[_SelectSlideNumFields].Selection == 2)
- _Data.ScreenConfig.NumFields = 25;
+ _PartyMode.GameData.NumFields = 25;
- _Data.ScreenConfig.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
- _Data.ScreenConfig.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
- _Data.ScreenConfig.CategoryID = _SelectSlides[_SelectSlideCategory].Selection;
- _Data.ScreenConfig.GameMode = (EPartyGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
+ _PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
+ _PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
+ _PartyMode.GameData.CategoryID = _SelectSlides[_SelectSlideCategory].Selection;
+ _PartyMode.GameData.GameMode = (EPartyGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
var gm = EGameMode.TR_GAMEMODE_NORMAL;
- switch (_Data.ScreenConfig.GameMode)
+ switch (_PartyMode.GameData.GameMode)
{
case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -237,16 +199,16 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break;
}
- if (_Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST)
+ if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST)
{
if (CBase.Playlist.GetNumPlaylists() > 0)
{
- if (CBase.Playlist.GetSongCount(_Data.ScreenConfig.PlaylistID) > 0)
+ if (CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID) > 0)
{
_ConfigOk = false;
- for (int i = 0; i < CBase.Playlist.GetSongCount(_Data.ScreenConfig.PlaylistID); i++)
+ for (int i = 0; i < CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID); i++)
{
- int id = CBase.Playlist.GetSong(_Data.ScreenConfig.PlaylistID, i).SongID;
+ int id = CBase.Playlist.GetSong(_PartyMode.GameData.PlaylistID, i).SongID;
_ConfigOk = CBase.Songs.GetSongByID(id).AvailableGameModes.Any(mode => mode == gm);
if (_ConfigOk)
break;
@@ -258,15 +220,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else
_ConfigOk = false;
}
- if (_Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY)
+ if (_PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY)
{
if (CBase.Songs.GetNumCategories() == 0)
_ConfigOk = false;
- else if (CBase.Songs.GetNumSongsNotSungInCategory(_Data.ScreenConfig.CategoryID) <= 0)
+ else if (CBase.Songs.GetNumSongsNotSungInCategory(_PartyMode.GameData.CategoryID) <= 0)
_ConfigOk = false;
else
{
- CBase.Songs.SetCategory(_Data.ScreenConfig.CategoryID);
+ CBase.Songs.SetCategory(_PartyMode.GameData.CategoryID);
_ConfigOk = false;
foreach (CSong song in CBase.Songs.GetVisibleSongs())
{
@@ -277,7 +239,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
CBase.Songs.SetCategory(-1);
}
}
- if (_Data.ScreenConfig.SongSource == ESongSource.TR_ALLSONGS)
+ if (_PartyMode.GameData.SongSource == ESongSource.TR_ALLSONGS)
{
if (CBase.Songs.GetNumSongs() > 0)
{
@@ -291,18 +253,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else
_ConfigOk = false;
}
- _SelectSlides[_SelectSlideCategory].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY;
- _SelectSlides[_SelectSlidePlaylist].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST;
- }
-
- private void _Back()
- {
- _FadeTo(EScreens.ScreenParty);
- }
-
- private void _Next()
- {
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY;
+ _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
index 1182b700..1ffe157b 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
@@ -23,12 +23,6 @@ using VocaluxeLib.Songs;
namespace VocaluxeLib.PartyModes.TicTacToe
{
- public class CField
- {
- public CRound Content;
- public CButton Button;
- }
-
public enum EStatus
{
FieldChoosing,
@@ -37,7 +31,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
None
}
- public class CPartyScreenTicTacToeMain : CMenuParty
+ // ReSharper disable UnusedMember.Global
+ public class CPartyScreenTicTacToeMain : CPartyScreenTicTacToe
+ // ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion
@@ -71,17 +67,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private bool _ExitPopupVisible;
- private SDataFromScreen _Data;
- private SDataToScreenMain _GameData;
-
- private List _Fields;
+ private List _Fields = new List();
private float _FieldFirstX = 25;
private float _FieldFirstY = 25;
private const int _FieldSpace = 10;
private float _FieldSize = 100;
private int _PreviewStream = -1;
- private int _SelectedField = -1;
private int _OldSelectedField = -1;
private int[,] _Possibilities;
@@ -99,20 +91,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ButtonJokerRetryT2
};
_ThemeStatics = new string[] {_StaticPopupBG, _StaticAvatarT1, _StaticAvatarT2};
-
- _Data = new SDataFromScreen();
- var config = new SFromScreenMain();
- _GameData = new SDataToScreenMain();
- config.SingRoundNr = 1;
- config.Rounds = new List();
- config.Songs = new List();
- config.PlayerTeam1 = new List();
- config.PlayerTeam2 = new List();
- config.FadeToNameSelection = false;
- config.FadeToSinging = false;
- _Data.ScreenMain = config;
-
- _Fields = new List();
}
public override void LoadTheme(string xmlPath)
@@ -123,19 +101,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Buttons[_ButtonField].Visible = false;
}
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenMain)receivedData;
- _GameData = config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen TicTacToe main. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
- }
-
public override bool HandleInput(SKeyEvent keyEvent)
{
base.HandleInput(keyEvent);
@@ -149,7 +114,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
case Keys.Escape:
if (!_ExitPopupVisible)
{
- if (_GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
+ if (_PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back();
else if (_Status == EStatus.None)
_EndParty();
@@ -165,28 +130,28 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
if (_Buttons[_ButtonNextRound].Selected)
_NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back();
- if (_Buttons[_ButtonExit].Selected && (_GameData.CurrentRoundNr > 1 || _Status == EStatus.FieldSelected) && _Status != EStatus.None)
+ if (_Buttons[_ButtonExit].Selected && (_PartyMode.GameData.CurrentRoundNr > 1 || _Status == EStatus.FieldSelected) && _Status != EStatus.None)
_ShowPopup(true);
else if (_Status == EStatus.None)
_EndParty();
- for (int i = 0; i < _GameData.NumFields; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumFields; i++)
{
switch (_Status)
{
case EStatus.FieldChoosing:
- if (_Fields[i].Button.Selected)
+ if (_Fields[i].Selected)
{
- _SelectedField = i;
+ _PartyMode.GameData.FieldNr = i;
_FieldSelected();
}
break;
case EStatus.JokerRetry:
- if (_Fields[i].Button.Selected)
+ if (_Fields[i].Selected)
{
- _SelectedField = i;
+ _PartyMode.GameData.FieldNr = i;
_FieldSelectedAgain();
}
break;
@@ -221,7 +186,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
base.HandleMouse(mouseEvent);
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
+ if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (!_ExitPopupVisible)
{
@@ -236,22 +201,22 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else
_ShowPopup(true);
}
- for (int i = 0; i < _GameData.NumFields; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumFields; i++)
{
switch (_Status)
{
case EStatus.FieldChoosing:
- if (_Fields[i].Button.Selected)
+ if (_Fields[i].Selected)
{
- _SelectedField = i;
+ _PartyMode.GameData.FieldNr = i;
_FieldSelected();
}
break;
case EStatus.JokerRetry:
- if (_Fields[i].Button.Selected)
+ if (_Fields[i].Selected)
{
- _SelectedField = i;
+ _PartyMode.GameData.FieldNr = i;
_FieldSelectedAgain();
}
break;
@@ -282,7 +247,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
if (!_ExitPopupVisible)
{
- if (_GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
+ if (_PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back();
else if (_Status == EStatus.None)
_EndParty();
@@ -304,19 +269,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_PreviewStream = -1;
- if (_GameData.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
{
_BuildWinnerPossibilities();
- _SelectedField = -1;
+ _PartyMode.GameData.FieldNr = -1;
_Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false;
- _SetInteractionToButton(_Buttons[_ButtonBack]);
+ _SelectElement(_Buttons[_ButtonBack]);
}
else
{
_Buttons[_ButtonBack].Visible = false;
_Buttons[_ButtonExit].Visible = true;
- _SetInteractionToButton(_Buttons[_ButtonExit]);
+ _SelectElement(_Buttons[_ButtonExit]);
}
_Status = EStatus.FieldChoosing;
@@ -325,7 +290,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_UpdateFieldContents();
int winner = _GetWinner();
- if (_GameData.CurrentRoundNr <= _GameData.NumFields && winner == 0)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.NumFields && winner == 0)
{
_UpdateTeamChoosingMessage();
_Texts[_TextNextPlayerT1].Visible = false;
@@ -349,16 +314,16 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Texts[_TextTeamChoosing].Visible = false;
if (winner > 0)
{
- _Texts[_TextFinishMessage].Color = CBase.Theme.GetPlayerColor(winner);
- _Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_WINNER", _PartyModeID) + " " + CBase.Language.Translate("TR_TEAM", _PartyModeID) + " " +
+ _Texts[_TextFinishMessage].Color = CBase.Themes.GetPlayerColor(winner);
+ _Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_WINNER", PartyModeID) + " " + CBase.Language.Translate("TR_TEAM", PartyModeID) + " " +
winner;
}
else
{
_Texts[_TextFinishMessage].Color = new SColorF(1, 1, 1, 1);
- _Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_NOWINNER", _PartyModeID);
+ _Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_NOWINNER", PartyModeID);
}
- _SetInteractionToButton(_Buttons[_ButtonExit]);
+ _SelectElement(_Buttons[_ButtonExit]);
}
_ShowPopup(false);
@@ -369,34 +334,27 @@ namespace VocaluxeLib.PartyModes.TicTacToe
return true;
}
- public override bool Draw()
- {
- base.Draw();
- return true;
- }
-
public override void OnClose()
{
base.OnClose();
CBase.BackgroundMusic.SetDisabled(false);
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
}
private void _CreateFields()
{
for (int i = 0; i < 25; i++)
{
- var f = new CField {Button = GetNewButton(_Buttons[_ButtonField])};
- f.Button.Visible = false;
- f.Content = new CRound();
- _AddButton(f.Button);
+ CButton f = GetNewButton(_Buttons[_ButtonField]);
+ f.Visible = false;
+ _AddButton(f);
_Fields.Add(f);
}
}
private void _UpdateFields()
{
- var numOneRow = (int)Math.Sqrt(_GameData.NumFields);
+ var numOneRow = (int)Math.Sqrt(_PartyMode.GameData.NumFields);
float fieldSizeY = ((float)CBase.Settings.GetRenderH() - 150 - numOneRow * _FieldSpace) / numOneRow;
float fieldSizeX = ((float)CBase.Settings.GetRenderW() - 300 - numOneRow * _FieldSpace) / numOneRow;
_FieldSize = Math.Min(fieldSizeX, fieldSizeY);
@@ -408,14 +366,14 @@ namespace VocaluxeLib.PartyModes.TicTacToe
float y = _FieldFirstY;
for (int i = 0; i < _Fields.Count; i++)
{
- if (i < _GameData.NumFields)
+ if (i < _PartyMode.GameData.NumFields)
{
- _Fields[i].Button.Rect.W = _FieldSize;
- _Fields[i].Button.Rect.H = _FieldSize;
- _Fields[i].Button.Rect.X = x;
- _Fields[i].Button.Rect.Y = y;
- _Fields[i].Button.Visible = true;
- _Fields[i].Button.Enabled = true;
+ _Fields[i].W = _FieldSize;
+ _Fields[i].H = _FieldSize;
+ _Fields[i].X = x;
+ _Fields[i].Y = y;
+ _Fields[i].Visible = true;
+ _Fields[i].Selectable = true;
column++;
if ((i + 1) >= numOneRow * (row + 1))
{
@@ -429,44 +387,43 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
else
{
- _Fields[i].Button.Visible = false;
- _Fields[i].Button.Enabled = false;
+ _Fields[i].Visible = false;
+ _Fields[i].Selectable = false;
}
}
}
private void _UpdateFieldContents()
{
- for (int i = 0; i < _GameData.Rounds.Count; i++)
+ for (int i = 0; i < _PartyMode.GameData.Rounds.Count; i++)
{
- _Fields[i].Button.Enabled = true;
- _Fields[i].Button.Texture = _Buttons[_ButtonField].Texture;
- _Fields[i].Button.Color = _Buttons[_ButtonField].Color;
- _Fields[i].Button.SelColor = _Buttons[_ButtonField].SelColor;
- _Fields[i].Content = _GameData.Rounds[i];
- if (_Fields[i].Content.Finished)
+ _Fields[i].Selectable = true;
+ _Fields[i].Texture = _Buttons[_ButtonField].Texture;
+ _Fields[i].Color = _Buttons[_ButtonField].Color;
+ _Fields[i].SelColor = _Buttons[_ButtonField].SelColor;
+ if (_PartyMode.GameData.Rounds[i].Finished)
{
- _Fields[i].Button.Enabled = false;
- _Fields[i].Button.Texture = CBase.Songs.GetSongByID(_Fields[i].Content.SongID).CoverTextureBig;
- _Fields[i].Button.Color = CBase.Theme.GetPlayerColor(_Fields[i].Content.Winner);
- _Fields[i].Button.SelColor = CBase.Theme.GetPlayerColor(_Fields[i].Content.Winner);
+ _Fields[i].Selectable = false;
+ _Fields[i].Texture = CBase.Songs.GetSongByID(_PartyMode.GameData.Rounds[i].SongID).CoverTextureBig;
+ _Fields[i].Color = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Rounds[i].Winner);
+ _Fields[i].SelColor = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Rounds[i].Winner);
}
- if (_Status == EStatus.FieldSelected && _SelectedField == i)
+ if (_Status == EStatus.FieldSelected && _PartyMode.GameData.FieldNr == i)
{
- _Fields[i].Button.Texture = CBase.Songs.GetSongByID(_Fields[i].Content.SongID).CoverTextureBig;
- _Fields[i].Button.Color = new SColorF(1, 1, 1, 1);
- _Fields[i].Button.SelColor = new SColorF(1, 1, 1, 1);
- _Fields[i].Button.Enabled = false;
+ _Fields[i].Texture = CBase.Songs.GetSongByID(_PartyMode.GameData.Rounds[i].SongID).CoverTextureBig;
+ _Fields[i].Color = new SColorF(1, 1, 1, 1);
+ _Fields[i].SelColor = new SColorF(1, 1, 1, 1);
+ _Fields[i].Selectable = false;
}
- if (_Status == EStatus.JokerRetry && _Fields[i].Content.Finished)
+ if (_Status == EStatus.JokerRetry && _PartyMode.GameData.Rounds[i].Finished)
{
- _Fields[i].Button.SelColor = CBase.Theme.GetPlayerColor(_GameData.Team + 1);
- _Fields[i].Button.Enabled = true;
+ _Fields[i].SelColor = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Team + 1);
+ _Fields[i].Selectable = true;
}
- if (_Status == EStatus.JokerRetry && !_Fields[i].Content.Finished)
- _Fields[i].Button.Enabled = false;
+ if (_Status == EStatus.JokerRetry && !_PartyMode.GameData.Rounds[i].Finished)
+ _Fields[i].Selectable = false;
if (_Status == EStatus.FieldSelected)
- _Fields[i].Button.Enabled = false;
+ _Fields[i].Selectable = false;
}
}
@@ -477,40 +434,29 @@ namespace VocaluxeLib.PartyModes.TicTacToe
int singerTeam1 = 0;
int singerTeam2 = 0;
- if (_GameData.PlayerTeam1.Count > 0)
+ if (_PartyMode.GameData.PlayerTeam1.Count > 0)
{
- singerTeam1 = _GameData.PlayerTeam1[0];
- _GameData.PlayerTeam1.RemoveAt(0);
+ singerTeam1 = _PartyMode.GameData.PlayerTeam1[0];
+ _PartyMode.GameData.PlayerTeam1.RemoveAt(0);
}
- if (_GameData.PlayerTeam2.Count > 0)
+ if (_PartyMode.GameData.PlayerTeam2.Count > 0)
{
- singerTeam2 = _GameData.PlayerTeam2[0];
- _GameData.PlayerTeam2.RemoveAt(0);
+ singerTeam2 = _PartyMode.GameData.PlayerTeam2[0];
+ _PartyMode.GameData.PlayerTeam2.RemoveAt(0);
}
- _GameData.Rounds[_SelectedField].SingerTeam1 = singerTeam1;
- _GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2;
+ _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam1 = singerTeam1;
+ _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam2 = singerTeam2;
_UpdatePlayerInformation();
}
- int songID = 0;
- if (_GameData.Songs.Count > 0)
- {
- songID = _GameData.Songs[0];
- _GameData.Songs.RemoveAt(0);
- }
- CSong song = CBase.Songs.GetSongByID(songID);
+ _PartyMode.UpdateSongList();
+ int songID = _PartyMode.GameData.Songs[0];
+ _PartyMode.GameData.Songs.RemoveAt(0);
- CBase.BackgroundMusic.SetDisabled(true);
-
- _PreviewStream = CBase.Sound.Load(song.GetMP3());
- CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
- CBase.Sound.SetStreamVolume(_PreviewStream, 0f);
- CBase.Sound.Play(_PreviewStream);
- CBase.Sound.Fade(_PreviewStream, CBase.Config.GetBackgroundMusicVolume(), 1f);
+ _StartPreview(songID);
_Status = EStatus.FieldSelected;
- _Fields[_SelectedField].Content.SongID = songID;
- _GameData.Rounds[_SelectedField].SongID = songID;
+ _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SongID = songID;
_UpdateFieldContents();
_UpdateJokerButtons();
@@ -518,36 +464,40 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Buttons[_ButtonExit].Visible = true;
_Buttons[_ButtonBack].Visible = false;
- _SetInteractionToButton(_Buttons[_ButtonNextRound]);
+ _SelectElement(_Buttons[_ButtonNextRound]);
}
private void _FieldSelectedAgain()
{
- int songID = _Fields[_SelectedField].Content.SongID;
- CSong song = CBase.Songs.GetSongByID(songID);
- CBase.BackgroundMusic.SetDisabled(true);
-
- _PreviewStream = CBase.Sound.Load(song.GetMP3());
- CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
- CBase.Sound.SetStreamVolume(_PreviewStream, 0f);
- CBase.Sound.Play(_PreviewStream);
- CBase.Sound.Fade(_PreviewStream, CBase.Config.GetBackgroundMusicVolume(), 1f);
+ int songID = _PartyMode.GameData.Rounds[_OldSelectedField].SongID;
+ _StartPreview(songID);
_Status = EStatus.FieldSelected;
- _Fields[_SelectedField].Content.SongID = songID;
- _GameData.Rounds[_SelectedField].SongID = songID;
- _GameData.Rounds[_SelectedField].SingerTeam1 = _GameData.Rounds[_OldSelectedField].SingerTeam1;
- _GameData.Rounds[_SelectedField].SingerTeam2 = _GameData.Rounds[_OldSelectedField].SingerTeam2;
+ _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SongID = songID;
+ _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam1 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam1;
+ _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam2 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam2;
_UpdateFieldContents();
_UpdatePlayerInformation();
-
_UpdateJokerButtons();
_Buttons[_ButtonNextRound].Visible = true;
_Buttons[_ButtonExit].Visible = true;
_Buttons[_ButtonBack].Visible = false;
- _SetInteractionToButton(_Buttons[_ButtonNextRound]);
+ _SelectElement(_Buttons[_ButtonNextRound]);
+ }
+
+ private void _StartPreview(int songID)
+ {
+ CSong song = CBase.Songs.GetSongByID(songID);
+ CBase.BackgroundMusic.SetDisabled(true);
+
+ _PreviewStream = CBase.Sound.Load(song.GetMP3());
+ CBase.Sound.SetGlobalVolume(CBase.Config.GetMusicVolume(EMusicType.Preview));
+ CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
+ CBase.Sound.SetStreamVolume(_PreviewStream, 0);
+ CBase.Sound.Play(_PreviewStream);
+ CBase.Sound.Fade(_PreviewStream, 100, 1f);
}
private void _UpdatePlayerInformation()
@@ -556,12 +506,14 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Texts[_TextNextPlayerT2].Visible = true;
_Texts[_TextNextPlayerNameT1].Visible = true;
_Texts[_TextNextPlayerNameT2].Visible = true;
- _Texts[_TextNextPlayerNameT1].Text = CBase.Profiles.GetPlayerName(_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]);
- _Texts[_TextNextPlayerNameT2].Text = CBase.Profiles.GetPlayerName(_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]);
+ _Texts[_TextNextPlayerNameT1].Text =
+ CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDsTeam1[_PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam1]);
+ _Texts[_TextNextPlayerNameT2].Text =
+ CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDsTeam2[_PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam2]);
_Statics[_StaticAvatarT1].Visible = true;
_Statics[_StaticAvatarT2].Visible = true;
- _Statics[_StaticAvatarT1].Texture = CBase.Profiles.GetAvatar(_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]);
- _Statics[_StaticAvatarT2].Texture = CBase.Profiles.GetAvatar(_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]);
+ _Statics[_StaticAvatarT1].Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIDsTeam1[_PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam1]);
+ _Statics[_StaticAvatarT2].Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIDsTeam2[_PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam2]);
}
private void _UseJoker(int teamNr, int jokerNum)
@@ -570,9 +522,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
//Random-Joker
case 0:
- if (_GameData.NumJokerRandom[teamNr] > 0)
+ if (_PartyMode.GameData.NumJokerRandom[teamNr] > 0)
{
- _GameData.NumJokerRandom[teamNr]--;
+ _PartyMode.GameData.NumJokerRandom[teamNr]--;
if (!CBase.Sound.IsFinished(_PreviewStream))
CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close);
_FieldSelected(true);
@@ -581,15 +533,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Retry-Joker
case 1:
- if (_GameData.NumJokerRetry[teamNr] > 0 && _GameData.CurrentRoundNr > 1)
+ if (_PartyMode.GameData.NumJokerRetry[teamNr] > 0 && _PartyMode.GameData.CurrentRoundNr > 1)
{
- _GameData.NumJokerRetry[teamNr]--;
- _GameData.Team = teamNr;
+ _PartyMode.GameData.NumJokerRetry[teamNr]--;
+ _PartyMode.GameData.Team = teamNr;
if (!CBase.Sound.IsFinished(_PreviewStream))
CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close);
_Status = EStatus.JokerRetry;
- _OldSelectedField = _SelectedField;
- _SelectedField = -1;
+ _OldSelectedField = _PartyMode.GameData.FieldNr;
+ _PartyMode.GameData.FieldNr = -1;
_UpdateFieldContents();
_Buttons[_ButtonNextRound].Visible = false;
}
@@ -600,9 +552,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateTeamChoosingMessage()
{
- _Texts[_TextTeamChoosing].Color = CBase.Theme.GetPlayerColor(_GameData.Team + 1);
- _Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", _PartyModeID) + " " + (_GameData.Team + 1) + "! " +
- CBase.Language.Translate("TR_SCREENMAIN_TEAM_CHOOSE", _PartyModeID);
+ _Texts[_TextTeamChoosing].Color = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Team + 1);
+ _Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", PartyModeID) + " " + (_PartyMode.GameData.Team + 1) + "! " +
+ CBase.Language.Translate("TR_SCREENMAIN_TEAM_CHOOSE", PartyModeID);
if (_Status == EStatus.JokerRetry || _Status == EStatus.FieldChoosing)
_Texts[_TextTeamChoosing].Visible = true;
else
@@ -613,35 +565,28 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
_Buttons[_ButtonJokerRandomT1].Visible = true;
_Buttons[_ButtonJokerRandomT2].Visible = true;
- _Buttons[_ButtonJokerRandomT1].Text.Text = _GameData.NumJokerRandom[0].ToString();
- _Buttons[_ButtonJokerRandomT2].Text.Text = _GameData.NumJokerRandom[1].ToString();
- _Buttons[_ButtonJokerRandomT1].Enabled = _GameData.NumJokerRandom[0] > 0;
- _Buttons[_ButtonJokerRandomT2].Enabled = _GameData.NumJokerRandom[1] > 0;
+ _Buttons[_ButtonJokerRandomT1].Text.Text = _PartyMode.GameData.NumJokerRandom[0].ToString();
+ _Buttons[_ButtonJokerRandomT2].Text.Text = _PartyMode.GameData.NumJokerRandom[1].ToString();
+ _Buttons[_ButtonJokerRandomT1].Selectable = _PartyMode.GameData.NumJokerRandom[0] > 0;
+ _Buttons[_ButtonJokerRandomT2].Selectable = _PartyMode.GameData.NumJokerRandom[1] > 0;
_Buttons[_ButtonJokerRetryT1].Visible = true;
_Buttons[_ButtonJokerRetryT2].Visible = true;
- _Buttons[_ButtonJokerRetryT1].Text.Text = _GameData.NumJokerRetry[0].ToString();
- _Buttons[_ButtonJokerRetryT2].Text.Text = _GameData.NumJokerRetry[1].ToString();
- _Buttons[_ButtonJokerRetryT1].Enabled = _GameData.NumJokerRetry[0] > 0;
- _Buttons[_ButtonJokerRetryT2].Enabled = _GameData.NumJokerRetry[1] > 0;
+ _Buttons[_ButtonJokerRetryT1].Text.Text = _PartyMode.GameData.NumJokerRetry[0].ToString();
+ _Buttons[_ButtonJokerRetryT2].Text.Text = _PartyMode.GameData.NumJokerRetry[1].ToString();
+ _Buttons[_ButtonJokerRetryT1].Selectable = _PartyMode.GameData.NumJokerRetry[0] > 0 && _PartyMode.GameData.CurrentRoundNr > 1;
+ _Buttons[_ButtonJokerRetryT2].Selectable = _PartyMode.GameData.NumJokerRetry[1] > 0 && _PartyMode.GameData.CurrentRoundNr > 1;
}
private void _NextRound()
{
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
- _Data.ScreenMain.Rounds = _GameData.Rounds;
- _Data.ScreenMain.FadeToNameSelection = false;
- _Data.ScreenMain.FadeToSinging = true;
- _Data.ScreenMain.Songs = _GameData.Songs;
- _Data.ScreenMain.SingRoundNr = _SelectedField;
- _Data.ScreenMain.PlayerTeam1 = _GameData.PlayerTeam1;
- _Data.ScreenMain.PlayerTeam2 = _GameData.PlayerTeam2;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
+ _PartyMode.Next();
}
private void _EndParty()
{
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
- _FadeTo(EScreens.ScreenParty);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
+ CBase.Graphics.FadeTo(EScreen.Party);
}
private void _ShowPopup(bool visible)
@@ -654,21 +599,18 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible;
if (_ExitPopupVisible)
- _SetInteractionToButton(_Buttons[_ButtonPopupNo]);
+ _SelectElement(_Buttons[_ButtonPopupNo]);
}
private void _Back()
{
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
- _Data.ScreenMain.FadeToNameSelection = true;
- _Data.ScreenMain.FadeToSinging = false;
- _Data.ScreenMain.SingRoundNr = _SelectedField;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
+ _PartyMode.Back();
}
- private int _BuildWinnerPossibilities()
+ private void _BuildWinnerPossibilities()
{
- var numOneRow = (int)Math.Sqrt(_GameData.NumFields);
+ var numOneRow = (int)Math.Sqrt(_PartyMode.GameData.NumFields);
_Possibilities = new int[(numOneRow * 2) + 2,numOneRow];
for (int i = 0; i < _Possibilities.GetLength(0); i++)
{
@@ -693,7 +635,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Possibilities[i, c] = (numOneRow - 1) * c + (numOneRow - 1);
}
}
- return 0;
}
private int _GetWinner()
@@ -703,8 +644,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
var check = new List();
for (int j = 0; j < _Possibilities.GetLength(1); j++)
{
- if (_Fields[_Possibilities[i, j]].Content.Winner > 0)
- check.Add(_Fields[_Possibilities[i, j]].Content.Winner);
+ if (_PartyMode.GameData.Rounds[_Possibilities[i, j]].Winner > 0)
+ check.Add(_PartyMode.GameData.Rounds[_Possibilities[i, j]].Winner);
}
if (check.Count != _Possibilities.GetLength(1))
continue;
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
index ebc7eddf..8d0e6cae 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -31,89 +30,57 @@ namespace VocaluxeLib.PartyModes.TicTacToe
get { return 1; }
}
- private int _NumPlayerTeam1 = 2;
- private int _NumPlayerTeam2 = 2;
-
- private SDataFromScreen _Data;
+ private new CPartyModeTicTacToe _PartyMode;
public override void Init()
{
base.Init();
-
- _Data.ScreenNames.ProfileIDsTeam1 = new List();
- _Data.ScreenNames.ProfileIDsTeam2 = new List();
-
- _Data = new SDataFromScreen();
- var names = new SFromScreenNames {FadeToConfig = false, ProfileIDsTeam1 = new List(), ProfileIDsTeam2 = new List()};
- _Data.ScreenNames = names;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenNames)receivedData;
- _Data.ScreenNames.ProfileIDsTeam1 = config.ProfileIDsTeam1;
- _Data.ScreenNames.ProfileIDsTeam2 = config.ProfileIDsTeam2;
- if (_Data.ScreenNames.ProfileIDsTeam1 == null)
- _Data.ScreenNames.ProfileIDsTeam1 = new List();
- if (_Data.ScreenNames.ProfileIDsTeam2 == null)
- _Data.ScreenNames.ProfileIDsTeam2 = new List();
-
- _NumPlayerTeam1 = config.NumPlayerTeam1;
- _NumPlayerTeam2 = config.NumPlayerTeam2;
-
- while (_Data.ScreenNames.ProfileIDsTeam1.Count > _NumPlayerTeam1)
- _Data.ScreenNames.ProfileIDsTeam1.RemoveAt(_Data.ScreenNames.ProfileIDsTeam1.Count - 1);
- while (_Data.ScreenNames.ProfileIDsTeam2.Count > _NumPlayerTeam2)
- _Data.ScreenNames.ProfileIDsTeam2.RemoveAt(_Data.ScreenNames.ProfileIDsTeam2.Count - 1);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen TicTacToe names. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
+ _PartyMode = (CPartyModeTicTacToe)base._PartyMode;
}
public override void OnShow()
{
base.OnShow();
- SetPartyModeData(2, _NumPlayerTeam1 + _NumPlayerTeam2, new int[] {_NumPlayerTeam1, _NumPlayerTeam2});
- List[] ids = new List[] {_Data.ScreenNames.ProfileIDsTeam1, _Data.ScreenNames.ProfileIDsTeam2};
+
+ while (_PartyMode.GameData.ProfileIDsTeam1.Count > _PartyMode.GameData.NumPlayerTeam1)
+ _PartyMode.GameData.ProfileIDsTeam1.RemoveAt(_PartyMode.GameData.ProfileIDsTeam1.Count - 1);
+ while (_PartyMode.GameData.ProfileIDsTeam2.Count > _PartyMode.GameData.NumPlayerTeam2)
+ _PartyMode.GameData.ProfileIDsTeam2.RemoveAt(_PartyMode.GameData.ProfileIDsTeam2.Count - 1);
+
+ SetPartyModeData(2, _PartyMode.GameData.NumPlayerTeam1 + _PartyMode.GameData.NumPlayerTeam2,
+ new int[] {_PartyMode.GameData.NumPlayerTeam1, _PartyMode.GameData.NumPlayerTeam2});
+ List[] ids = new List[] {_PartyMode.GameData.ProfileIDsTeam1, _PartyMode.GameData.ProfileIDsTeam2};
SetPartyModeProfiles(ids);
}
public override void Back()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 2)
+ if (_TeamList.Length == 2)
{
- _Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0];
- _Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1];
+ _PartyMode.GameData.ProfileIDsTeam1 = _TeamList[0];
+ _PartyMode.GameData.ProfileIDsTeam2 = _TeamList[1];
}
- if (options.NumPlayerTeams.Length == 2)
+ if (_NumPlayerTeams.Length == 2)
{
- _Data.ScreenNames.NumPlayerTeam1 = options.NumPlayerTeams[0];
- _Data.ScreenNames.NumPlayerTeam2 = options.NumPlayerTeams[1];
+ _PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
+ _PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
}
- _Data.ScreenNames.FadeToConfig = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _PartyMode.Back();
}
public override void Next()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 2)
+ if (_TeamList.Length == 2)
{
- _Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0];
- _Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1];
+ _PartyMode.GameData.ProfileIDsTeam1 = _TeamList[0];
+ _PartyMode.GameData.ProfileIDsTeam2 = _TeamList[1];
}
- if (options.NumPlayerTeams.Length == 2)
+ if (_NumPlayerTeams.Length == 2)
{
- _Data.ScreenNames.NumPlayerTeam1 = options.NumPlayerTeams[0];
- _Data.ScreenNames.NumPlayerTeam2 = options.NumPlayerTeams[1];
+ _PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
+ _PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
}
- _Data.ScreenNames.FadeToConfig = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _PartyMode.Next();
}
}
}
\ No newline at end of file
diff --git a/PitchTracker/PitchTracker.vcxproj b/PitchTracker/PitchTracker.vcxproj
index 2435c698..06c0b94c 100644
--- a/PitchTracker/PitchTracker.vcxproj
+++ b/PitchTracker/PitchTracker.vcxproj
@@ -1,5 +1,5 @@
-
+
Debug
@@ -28,26 +28,26 @@
DynamicLibrary
true
- v120_xp
+ v110_xp
Unicode
DynamicLibrary
true
- v120_xp
+ v110_xp
Unicode
DynamicLibrary
false
- v120_xp
+ v110_xp
true
Unicode
DynamicLibrary
false
- v120_xp
+ v110_xp
true
Unicode
diff --git a/ServerLib/CDiscover.cs b/ServerLib/CDiscover.cs
index d78bc19b..1fef7ac1 100644
--- a/ServerLib/CDiscover.cs
+++ b/ServerLib/CDiscover.cs
@@ -104,8 +104,9 @@ namespace ServerLib
IPEndPoint groupEp = new IPEndPoint(IPAddress.Any, _Port);
listener.Client.ReceiveTimeout = timeout;
- byte[] bytes = listener.Receive(ref groupEp);
- string message = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
+ //byte[] bytes =
+ listener.Receive(ref groupEp);
+ //string message = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
foundSomething = true;
if (!knownServer.Contains(groupEp.Address.ToString()))
diff --git a/ServerLib/CServer.cs b/ServerLib/CServer.cs
index e4c46301..b085e2c1 100644
--- a/ServerLib/CServer.cs
+++ b/ServerLib/CServer.cs
@@ -33,6 +33,7 @@ namespace ServerLib
private bool _Encrypted;
public static SendKeyEventDelegate SendKeyEvent { internal get; set; }
+ public static SendKeyStringEventDelegate SendKeyStringEvent { internal get; set; }
#region profile
public static GetProfileDataDelegate GetProfileData { internal get; set; }
diff --git a/ServerLib/CWebservice.cs b/ServerLib/CWebservice.cs
index 97a8962c..fc385e89 100644
--- a/ServerLib/CWebservice.cs
+++ b/ServerLib/CWebservice.cs
@@ -58,6 +58,23 @@ namespace ServerLib
CServer.SendKeyEvent(key);
}
+ public void SendKeyStringEvent(string keyString, bool isShiftPressed = false, bool isAltPressed = false, bool isCtrlPressed = false)
+ {
+ if (!_CheckRight(EUserRights.UseKeyboard))
+ return;
+
+ if (CServer.SendKeyStringEvent == null)
+ {
+ if (WebOperationContext.Current != null)
+ {
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
+ WebOperationContext.Current.OutgoingResponse.StatusDescription = "Not found";
+ }
+ }
+ else
+ CServer.SendKeyStringEvent(keyString, isShiftPressed, isAltPressed, isCtrlPressed);
+ }
+
#region profile
public int GetOwnProfileId()
{
@@ -111,7 +128,7 @@ namespace ServerLib
public SProfileData GetProfile(int profileId)
{
Guid sessionKey = _GetSession();
- if (_CheckRight(EUserRights.ViewOtherProfiles) || CSessionControl.GetUserIdFromSession(sessionKey) == profileId)
+ if (CSessionControl.GetUserIdFromSession(sessionKey) == profileId || _CheckRight(EUserRights.ViewOtherProfiles))
{
if (CServer.GetProfileData == null)
return new SProfileData();
@@ -121,8 +138,7 @@ namespace ServerLib
return CServer.GetProfileData(profileId, isReadonly);
}
- else
- return new SProfileData();
+ return new SProfileData();
}
public SProfileData[] GetProfileList()
@@ -295,12 +311,12 @@ namespace ServerLib
#endregion
#region playlist
- public SPlaylistInfo[] GetPlaylists()
+ public SPlaylistData[] GetPlaylists()
{
return CServer.GetPlaylists();
}
- public SPlaylistInfo GetPlaylist(int playlistId)
+ public SPlaylistData GetPlaylist(int playlistId)
{
return CServer.GetPlaylist(playlistId);
}
diff --git a/ServerLib/DataStructs.cs b/ServerLib/DataStructs.cs
index 4d4bbed7..11942ac9 100644
--- a/ServerLib/DataStructs.cs
+++ b/ServerLib/DataStructs.cs
@@ -27,6 +27,8 @@ namespace ServerLib
{
public delegate bool SendKeyEventDelegate(string key);
+ public delegate bool SendKeyStringEventDelegate(string keyString, bool isShiftPressed, bool isAltPressed, bool isCtrlPressed);
+
#region profile
public delegate SProfileData GetProfileDataDelegate(int profileId, bool isReadonly);
@@ -67,9 +69,10 @@ namespace ServerLib
[DataContract]
public class CBase64Image
{
+ // ReSharper disable InconsistentNaming
[DataMember] private string base64Data = "";
-
[DataMember] private string imageId = "";
+ // ReSharper restore InconsistentNaming
public CBase64Image(Image img, ImageFormat format)
{
@@ -128,9 +131,9 @@ namespace ServerLib
#endregion
#region playlists
- public delegate SPlaylistInfo[] GetPlaylistsDelegate();
+ public delegate SPlaylistData[] GetPlaylistsDelegate();
- public delegate SPlaylistInfo GetPlaylistDelegate(int playlistId);
+ public delegate SPlaylistData GetPlaylistDelegate(int playlistId);
public delegate void AddSongToPlaylistDelegate(int songId, int playlistId, bool allowDuplicates);
@@ -156,7 +159,7 @@ namespace ServerLib
}
[DataContract]
- public struct SPlaylistInfo
+ public struct SPlaylistData
{
[DataMember] public int PlaylistId;
[DataMember] public string PlaylistName;
diff --git a/ServerLib/ICWebservice.cs b/ServerLib/ICWebservice.cs
index 0305e418..1324c2d9 100644
--- a/ServerLib/ICWebservice.cs
+++ b/ServerLib/ICWebservice.cs
@@ -30,6 +30,11 @@ namespace ServerLib
UriTemplate = "/sendKeyEvent?key={key}")]
void SendKeyEvent(string key);
+ [OperationContract, WebInvoke(Method = "GET",
+ ResponseFormat = WebMessageFormat.Json,
+ UriTemplate = "/sendKeyStringEvent?keyString={keyString}&shift={isShiftPressed}&alt={isAltPressed}&ctrl={isCtrlPressed}")]
+ void SendKeyStringEvent(string keyString, bool isShiftPressed = false, bool isAltPressed = false, bool isCtrlPressed = false);
+
#region profile
[OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
@@ -128,12 +133,12 @@ namespace ServerLib
[OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getPlaylists")]
- SPlaylistInfo[] GetPlaylists();
+ SPlaylistData[] GetPlaylists();
[OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getPlaylist?id={playlistId}")]
- SPlaylistInfo GetPlaylist(int playlistId);
+ SPlaylistData GetPlaylist(int playlistId);
[OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
diff --git a/ServerLib/UserRoles.cs b/ServerLib/UserRoles.cs
index 860b9d7f..bc3c9d37 100644
--- a/ServerLib/UserRoles.cs
+++ b/ServerLib/UserRoles.cs
@@ -22,6 +22,7 @@ namespace ServerLib
[Flags]
enum EUserRoles
{
+ // ReSharper disable InconsistentNaming
TR_USERROLE_GUEST = 0,
TR_USERROLE_NORMAL = 1,
TR_USERROLE_ADMIN = 2,
@@ -29,5 +30,6 @@ namespace ServerLib
TR_USERROLE_ADDSONGSUSER = 8,
TR_USERROLE_PLAYLISTEDITOR = 16,
TR_USERROLE_PROFILEEDITOR = 32
+ // ReSharper restore InconsistentNaming
}
}
\ No newline at end of file
diff --git a/Vocaluxe.sln b/Vocaluxe.sln
index fb446cb0..b3499d21 100644
--- a/Vocaluxe.sln
+++ b/Vocaluxe.sln
@@ -25,6 +25,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebserverInitalConfig", "We
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PitchTracker", "PitchTracker\PitchTracker.vcxproj", "{54A48AF7-515C-4EDD-B395-2BFFA096050A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VocaluxeTests", "VocaluxeTests\VocaluxeTests.csproj", "{93356718-3A0B-4784-AAE1-215065BFFC66}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2BDDF9CE-271F-49C6-A92E-9CB6185ACF58}"
+ ProjectSection(SolutionItems) = preProject
+ Vocaluxe.testsettings = Vocaluxe.testsettings
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
DebugLinux|x64 = DebugLinux|x64
@@ -195,6 +202,26 @@ Global
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|x64.Build.0 = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|x86.ActiveCfg = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|x86.Build.0 = Release|Win32
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugLinux|x64.ActiveCfg = Debug|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugLinux|x64.Build.0 = Debug|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugLinux|x86.ActiveCfg = Debug|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugLinux|x86.Build.0 = Debug|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugWin|x64.ActiveCfg = Debug|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugWin|x64.Build.0 = Debug|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugWin|x86.ActiveCfg = Debug|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.DebugWin|x86.Build.0 = Debug|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.InstallerWin|x64.ActiveCfg = Release|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.InstallerWin|x64.Build.0 = Release|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.InstallerWin|x86.ActiveCfg = Release|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.InstallerWin|x86.Build.0 = Release|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseLinux|x64.ActiveCfg = Release|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseLinux|x64.Build.0 = Release|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseLinux|x86.ActiveCfg = Release|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseLinux|x86.Build.0 = Release|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseWin|x64.ActiveCfg = Release|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseWin|x64.Build.0 = Release|x64
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseWin|x86.ActiveCfg = Release|x86
+ {93356718-3A0B-4784-AAE1-215065BFFC66}.ReleaseWin|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Vocaluxe.sln.DotSettings b/Vocaluxe.sln.DotSettings
index 661e1a2c..a260a4fb 100644
--- a/Vocaluxe.sln.DotSettings
+++ b/Vocaluxe.sln.DotSettings
@@ -3,6 +3,7 @@
NotCompiledCode
True
True
+ True
SOLUTION
DO_NOT_SHOW
DO_NOT_SHOW
@@ -114,4 +115,9 @@ along with $SOLUTION$. If not, see <http://www.gnu.org/licenses/>.<Policy><Descriptor Staticness="Static, Instance" AccessRightKinds="Private, Protected, ProtectedInternal, Internal, Public" Description="Classes"><ElementKinds><Kind Name="CLASS" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="C" Suffix="" Style="AaBb" /></Policy>
<Policy><Descriptor Staticness="Static, Instance" AccessRightKinds="Private, Protected" Description="Fields (not public)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /><Kind Name="METHOD" /><Kind Name="PROPERTY" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="_" Suffix="" Style="AaBb" /></Policy>
<Policy><Descriptor Staticness="Static, Instance" AccessRightKinds="Private, Protected, ProtectedInternal, Internal, Public" Description="Structs"><ElementKinds><Kind Name="STRUCT" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="S" Suffix="" Style="AaBb" /></Policy>
+ False
+ Vocaluxe.testsettings
+ True
+ False
+ True
\ No newline at end of file
diff --git a/Vocaluxe.testsettings b/Vocaluxe.testsettings
new file mode 100644
index 00000000..ccf7a8c8
--- /dev/null
+++ b/Vocaluxe.testsettings
@@ -0,0 +1,28 @@
+
+
+ Dies sind die standardmäßigen Testeinstellungen für einen lokalen Testlauf.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs
index d34d5432..1e38e42b 100644
--- a/Vocaluxe/Base/CBackgroundMusic.cs
+++ b/Vocaluxe/Base/CBackgroundMusic.cs
@@ -52,25 +52,25 @@ namespace Vocaluxe.Base
public static bool VideoEnabled
{
get { return _PlaysPreview ? _PreviewPlayer.VideoEnabled : _SongPlayer.VideoEnabled; }
- set {
- if(_PlaysPreview)
+ set
+ {
+ if (_PlaysPreview)
_PreviewPlayer.VideoEnabled = value;
- else
+ else
_SongPlayer.VideoEnabled = value;
}
}
- public static bool CanSing
- {
- get
+ public static bool CanSing
+ {
+ get
{
if (_PlaysPreview)
return false;
- else
- if (_BGMusicFiles.Contains(_CurrentPlaylistElement))
- return false;
- else return true;
- }
+ if (_BGMusicFiles.Contains(_CurrentPlaylistElement))
+ return false;
+ return true;
+ }
}
public static bool Disabled
@@ -85,7 +85,8 @@ namespace Vocaluxe.Base
}
}
- public static bool RepeatSong {
+ public static bool RepeatSong
+ {
get { return _SongPlayer.RepeatSong; }
set { _SongPlayer.RepeatSong = value; }
}
@@ -100,17 +101,23 @@ namespace Vocaluxe.Base
get { return _SongPlayer.SongHasVideo; }
}
- public static bool IsPlaying { get { return _PlaysPreview ? _PreviewPlayer.IsPlaying : _SongPlayer.IsPlaying; } }
+ public static bool IsPlaying
+ {
+ get { return _PlaysPreview ? _PreviewPlayer.IsPlaying : _SongPlayer.IsPlaying; }
+ }
- public static bool IsPlayingPreview { get { return _PlaysPreview; } }
+ public static bool IsPlayingPreview
+ {
+ get { return _PlaysPreview; }
+ }
public static string ArtistAndTitle
{
- get {
+ get
+ {
if (_PlaysPreview)
return _PreviewPlayer.ArtistAndTitle;
- else
- return _BGMusicFiles.Contains(_CurrentPlaylistElement) ? Path.GetFileNameWithoutExtension(_CurrentPlaylistElement.MusicFilePath) : _SongPlayer.ArtistAndTitle;
+ return _BGMusicFiles.Contains(_CurrentPlaylistElement) ? Path.GetFileNameWithoutExtension(_CurrentPlaylistElement.MusicFilePath) : _SongPlayer.ArtistAndTitle;
}
}
@@ -119,7 +126,7 @@ namespace Vocaluxe.Base
get { return _PlaysPreview ? _PreviewPlayer.Length : _SongPlayer.Length; }
}
- public static CTexture Cover
+ public static CTextureRef Cover
{
get { return _PlaysPreview ? _PreviewPlayer.Cover : _SongPlayer.Cover; }
}
@@ -154,21 +161,20 @@ namespace Vocaluxe.Base
_AddBackgroundMusic();
_SongPlayer = new CSongPlayer();
- _SongPlayer.Volume = CConfig.BackgroundMusicVolume;
- _PreviewPlayer = new CSongPlayer();
- _PreviewPlayer.Volume = CConfig.PreviewMusicVolume;
- _PreviewPlayer.RepeatSong = true;
+ _PreviewPlayer = new CSongPlayer {RepeatSong = true};
- _VideoEnabled = (CConfig.VideoBackgrounds == EOffOn.TR_CONFIG_ON && CConfig.VideosToBackground == EOffOn.TR_CONFIG_ON);
- SetMusicSource(CConfig.BackgroundMusicSource);
+ _VideoEnabled = (CConfig.Config.Video.VideoBackgrounds == EOffOn.TR_CONFIG_ON && CConfig.Config.Video.VideosToBackground == EOffOn.TR_CONFIG_ON);
+ SetMusicSource(CConfig.Config.Sound.BackgroundMusicSource);
_Initialized = true;
}
public static void Close()
{
- _SongPlayer.Stop();
- _PreviewPlayer.Stop();
+ if (_SongPlayer != null)
+ _SongPlayer.Stop();
+ if (_PreviewPlayer != null)
+ _PreviewPlayer.Stop();
_BGMusicFiles.Clear();
_NotPlayedFiles.Clear();
@@ -179,17 +185,19 @@ namespace Vocaluxe.Base
public static void Play()
{
- if (IsPlaying || (CConfig.BackgroundMusic != EBackgroundMusicOffOn.TR_CONFIG_ON && !_PlaysPreview))
+ if (IsPlaying || (CConfig.Config.Sound.BackgroundMusic != EBackgroundMusicOffOn.TR_CONFIG_ON && !_PlaysPreview))
return;
if (_PlaysPreview)
_PreviewPlayer.Play();
- else if(CConfig.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
+ else if (CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
+ {
if (_SongPlayer.SongLoaded)
//Resume
_SongPlayer.TogglePause();
else
Next();
+ }
}
public static void Stop()
@@ -202,6 +210,7 @@ namespace Vocaluxe.Base
_PreviewPlayer.Stop();
_PlaysPreview = false;
Pause();
+ CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
}
else
{
@@ -218,7 +227,7 @@ namespace Vocaluxe.Base
return;
_PreviewPlayer.TogglePause();
}
- else if (CConfig.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
+ else if (CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
{
if (!_SongPlayer.SongLoaded)
Next();
@@ -278,7 +287,7 @@ namespace Vocaluxe.Base
public static void Update()
{
- if (!IsPlaying && (!_SongPlayer.SongLoaded || !_PreviewPlayer.SongLoaded) )
+ if (!IsPlaying && (!_SongPlayer.SongLoaded || !_PreviewPlayer.SongLoaded))
return;
if (_PlaysPreview)
@@ -291,7 +300,7 @@ namespace Vocaluxe.Base
}
}
- public static CTexture GetVideoTexture()
+ public static CTextureRef GetVideoTexture()
{
return _PlaysPreview ? _PreviewPlayer.GetVideoTexture() : _SongPlayer.GetVideoTexture();
}
@@ -329,10 +338,13 @@ namespace Vocaluxe.Base
if (song == null)
return;
+ // ReSharper disable CompareOfFloatsByEqualityOperator
if (start == 0f)
start = song.Preview.StartTime;
+ // ReSharper restore CompareOfFloatsByEqualityOperator
_PlaysPreview = true;
+ CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
_PreviewPlayer.Load(song, start);
float startposition = song.Preview.StartTime;
@@ -364,6 +376,7 @@ namespace Vocaluxe.Base
{
_PreviewPlayer.Stop();
_PlaysPreview = false;
+ CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
}
///
@@ -384,7 +397,7 @@ namespace Vocaluxe.Base
{
//Seek to #Start-Tag, if found
float start = 0f;
- if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
+ if (_CurrentPlaylistElement.Start > 0.001 && CConfig.Config.Sound.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
start = _CurrentPlaylistElement.Start;
_SongPlayer.Load(CBase.Songs.GetSongByID(_CurrentPlaylistElement.SongID), start, true);
}
@@ -439,6 +452,5 @@ namespace Vocaluxe.Base
{
return _BGMusicFiles.Contains(element);
}
-
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs
index 98662afe..267b73c4 100644
--- a/Vocaluxe/Base/CConfig.cs
+++ b/Vocaluxe/Base/CConfig.cs
@@ -18,31 +18,22 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.IO;
using System.Linq;
-using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
-using System.Xml;
+using System.Xml.Serialization;
using Vocaluxe.Lib.Sound.Record;
using Vocaluxe.Lib.Webcam;
using VocaluxeLib;
using VocaluxeLib.Profile;
+using VocaluxeLib.Xml;
namespace Vocaluxe.Base
{
static class CConfig
{
- ///
- /// Uniform settings for writing XML files. ALWAYS use this!
- ///
- public static readonly XmlWriterSettings XMLSettings = new XmlWriterSettings
- {
- Indent = true,
- Encoding = Encoding.UTF8,
- ConformanceLevel = ConformanceLevel.Document
- };
-
private static bool _Initialized;
// Base file and folder names (formerly from CSettings but they can be changed)
@@ -50,58 +41,149 @@ namespace Vocaluxe.Base
public static string FileHighscoreDB = Path.Combine(CSettings.DataFolder, "HighscoreDB.sqlite");
private static string _FileConfig = Path.Combine(CSettings.DataFolder, "Config.xml");
- // Debug
- public static EDebugLevel DebugLevel = EDebugLevel.TR_CONFIG_OFF;
- public static EOffOn SaveModifiedSongs = EOffOn.TR_CONFIG_OFF;
+ // ReSharper disable UnassignedField.Global
+#pragma warning disable 649
+ // ReSharper disable MemberCanBePrivate.Global
+ public struct SConfigInfo
+ // ReSharper restore MemberCanBePrivate.Global
+ {
+ // ReSharper disable NotAccessedField.Global
+ // ReSharper disable NotAccessedField.Local
+ public string Version;
+ public string Time;
+ public string Platform;
+ public string OSVersion;
+ public int ProcessorCount;
+ public int Screens;
+ public string PrimaryScreenResolution;
+ public string Directory;
+ // ReSharper restore NotAccessedField.Local
+ // ReSharper restore NotAccessedField.Global
+ }
- // Graphics
+ public struct SConfigDebug
+ {
+ [DefaultValue(EDebugLevel.TR_CONFIG_OFF)] public EDebugLevel DebugLevel;
+ [DefaultValue(EOffOn.TR_CONFIG_OFF)] public EOffOn SaveModifiedSongs;
+ }
+
+ public struct SConfigGraphics
+ {
#if WIN
- public static ERenderer Renderer = ERenderer.TR_CONFIG_DIRECT3D;
+ [DefaultValue(ERenderer.TR_CONFIG_DIRECT3D)] public ERenderer Renderer;
#else
- public static ERenderer Renderer = ERenderer.TR_CONFIG_OPENGL;
+ [DefaultValue(ERenderer.TR_CONFIG_OPENGL)] public ERenderer Renderer;
#endif
- public static ETextureQuality TextureQuality = ETextureQuality.TR_CONFIG_TEXTURE_MEDIUM;
- public static float MaxFPS = 60f;
+ [DefaultValue(ETextureQuality.TR_CONFIG_TEXTURE_MEDIUM)] public ETextureQuality TextureQuality;
+ [XmlRanged(32, 1024), DefaultValue(128)] public int CoverSize;
- public static int ScreenW = 1024;
- public static int ScreenH = 576;
+ [DefaultValue(1024)] public int ScreenW;
+ [DefaultValue(576)] public int ScreenH;
+ [DefaultValue(EGeneralAlignment.Middle)] public EGeneralAlignment ScreenAlignment;
+ [DefaultValue(0)] public int BorderLeft;
+ [DefaultValue(0)] public int BorderRight;
+ [DefaultValue(0)] public int BorderTop;
+ [DefaultValue(0)] public int BorderBottom;
+ [DefaultValue(EAntiAliasingModes.X0)] public EAntiAliasingModes AAMode;
+ [DefaultValue(60f)] public float MaxFPS;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn VSync;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn FullScreen;
+ [DefaultValue(0.4f), XmlRanged(0, 3)] public float FadeTime;
+ }
- public static int BorderLeft;
- public static int BorderRight;
- public static int BorderTop;
- public static int BorderBottom;
+ public struct SConfigTheme
+ {
+ [XmlElement("Name"), DefaultValue("Ambient")] public string Theme;
+ [DefaultValue("Blue")] public string Skin;
+ [XmlElement("Cover"), DefaultValue("Ambient Blue")] public string CoverTheme;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn DrawNoteLines;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn DrawToneHelper;
+ [DefaultValue(ETimerLook.TR_CONFIG_TIMERLOOK_EXPANDED)] public ETimerLook TimerLook;
+ [DefaultValue(EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH)] public EPlayerInfo PlayerInfo;
+ [DefaultValue(EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_OFF)] public EFadePlayerInfo FadePlayerInfo;
+ [DefaultValue(ECoverLoading.TR_CONFIG_COVERLOADING_DYNAMIC)] public ECoverLoading CoverLoading;
+ [DefaultValue(ELyricStyle.Slide)] public ELyricStyle LyricStyle;
+ }
- public static EAntiAliasingModes AAMode = EAntiAliasingModes.X0;
+ public struct SConfigSound
+ {
+ [DefaultValue(EPlaybackLib.GstreamerSharp)] public EPlaybackLib PlayBackLib;
+ [DefaultValue(ERecordLib.PortAudio)] public ERecordLib RecordLib;
+ [DefaultValue(EBufferSize.B2048)] public EBufferSize AudioBufferSize;
+ [XmlRanged(-500, 500)] public int AudioLatency;
+ // ReSharper disable MemberHidesStaticFromOuterClass
+ [DefaultValue(EBackgroundMusicOffOn.TR_CONFIG_ON)] public EBackgroundMusicOffOn BackgroundMusic;
+ [XmlRanged(0, 100), DefaultValue(30)] public int BackgroundMusicVolume;
+ [DefaultValue(EBackgroundMusicSource.TR_CONFIG_NO_OWN_MUSIC)] public EBackgroundMusicSource BackgroundMusicSource;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn BackgroundMusicUseStart;
+ [XmlRanged(0, 100), DefaultValue(50)] public int PreviewMusicVolume;
+ [XmlRanged(0, 100), DefaultValue(80)] public int GameMusicVolume;
+ // ReSharper restore MemberHidesStaticFromOuterClass
+ }
- public static EOffOn VSync = EOffOn.TR_CONFIG_ON;
- public static EOffOn FullScreen = EOffOn.TR_CONFIG_ON;
+ public struct SConfigGame
+ {
+ [DefaultValue(CSettings.FallbackLanguage)] public string Language;
+ public string[] SongFolder;
+ // ReSharper disable MemberHidesStaticFromOuterClass
+ [DefaultValue(ESongMenu.TR_CONFIG_TILE_BOARD)] public ESongMenu SongMenu;
+ // ReSharper restore MemberHidesStaticFromOuterClass
+ [DefaultValue(ESongSorting.TR_CONFIG_ARTIST)] public ESongSorting SongSorting;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn IgnoreArticles;
+ [DefaultValue(10)] public float ScoreAnimationTime;
+ [DefaultValue(ETimerMode.TR_CONFIG_TIMERMODE_REMAINING)] public ETimerMode TimerMode;
+ [XmlAltName("NumPlayer"), DefaultValue(2)] public int NumPlayers;
+ [DefaultValue(EOffOn.TR_CONFIG_OFF)] public EOffOn Tabs;
+ [DefaultValue(ELyricsPosition.TR_CONFIG_LYRICSPOSITION_BOTTOM)] public ELyricsPosition LyricsPosition;
+ [DefaultValue(0.1f)] public float MinLineBreakTime; //Minimum time to show the text before it is (to be) sung (if possible)
+ [XmlArrayItem("Player"), XmlArray] public string[] Players;
+ }
- public static float FadeTime = 0.4f;
- public static int CoverSize = 128;
+ public struct SConfigVideo
+ {
+ [DefaultValue(EVideoDecoder.FFmpeg)] public EVideoDecoder VideoDecoder;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn VideoBackgrounds;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn VideoPreview;
+ [DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn VideosInSongs;
+ [DefaultValue(EOffOn.TR_CONFIG_OFF)] public EOffOn VideosToBackground;
+ [DefaultValue(EWebcamLib.OpenCV)] public EWebcamLib WebcamLib;
+ public SWebcamConfig? WebcamConfig;
+ }
- // Theme
- public static string Theme = "Ambient";
- public static string Skin = "Blue";
- public static string CoverTheme = "Blue";
- public static EOffOn DrawNoteLines = EOffOn.TR_CONFIG_ON;
- public static EOffOn DrawToneHelper = EOffOn.TR_CONFIG_ON;
- public static ETimerLook TimerLook = ETimerLook.TR_CONFIG_TIMERLOOK_EXPANDED;
- public static EPlayerInfo PlayerInfo = EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH;
- public static EFadePlayerInfo FadePlayerInfo = EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_OFF;
- public static ECoverLoading CoverLoading = ECoverLoading.TR_CONFIG_COVERLOADING_DYNAMIC;
- public static ELyricStyle LyricStyle = ELyricStyle.Slide;
+ public struct SConfigRecord
+ {
+ public SMicConfig[] MicConfig;
+ [DefaultValue(200)] public int MicDelay; //[ms]
+ }
- // Sound
- public static EPlaybackLib PlayBackLib = EPlaybackLib.GstreamerSharp;
- public static EBufferSize AudioBufferSize = EBufferSize.B2048;
- public static int AudioLatency;
- private static int _BackgroundMusicVolume = 30;
- public static EBackgroundMusicOffOn BackgroundMusic = EBackgroundMusicOffOn.TR_CONFIG_ON;
- public static EBackgroundMusicSource BackgroundMusicSource = EBackgroundMusicSource.TR_CONFIG_NO_OWN_MUSIC;
- public static EOffOn BackgroundMusicUseStart = EOffOn.TR_CONFIG_ON;
- private static int _PreviewMusicVolume = 50;
- private static int _GameMusicVolume = 80;
+ public struct SConfigServer
+ {
+ [DefaultValue(EOffOn.TR_CONFIG_OFF)] public EOffOn ServerActive;
+ [DefaultValue(EOffOn.TR_CONFIG_OFF)] public EOffOn ServerEncryption;
+ [DefaultValue(3000)] public int ServerPort;
+ }
+#pragma warning restore 649
+ // ReSharper restore UnassignedField.Global
+
+ public struct SConfig
+ {
+ // ReSharper disable NotAccessedField.Global
+ public SConfigInfo? Info;
+ // ReSharper restore NotAccessedField.Global
+ public SConfigDebug Debug;
+ public SConfigGraphics Graphics;
+ public SConfigTheme Theme;
+ public SConfigSound Sound;
+ public SConfigGame Game;
+ public SConfigVideo Video;
+ public SConfigRecord Record;
+ public SConfigServer Server;
+ }
+
+ public static SConfig Config;
+ public static bool LoadOldThemeFiles;
+ public static event OnSongMenuChanged SongMenuChanged;
//Folders
public static readonly List SongFolders = new List
@@ -109,7 +191,8 @@ namespace Vocaluxe.Base
Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameSongs)
#if INSTALLER
- ,Path.Combine(CSettings.DataFolder, CSettings.FolderNameSongs);
+ ,
+ Path.Combine(CSettings.DataFolder, CSettings.FolderNameSongs)
#endif
};
///
@@ -124,517 +207,284 @@ namespace Vocaluxe.Base
Path.Combine(CSettings.DataFolder, CSettings.FolderNameProfiles)
};
- // Game
- //public static ESongMenu SongMenu = ESongMenu.TR_CONFIG_TILE_BOARD;
- public static ESongMenu SongMenu = ESongMenu.TR_CONFIG_TILE_BOARD;
- public static ESongSorting SongSorting = ESongSorting.TR_CONFIG_ARTIST;
- public static EOffOn IgnoreArticles = EOffOn.TR_CONFIG_ON;
- public static float ScoreAnimationTime = 10;
- public static ETimerMode TimerMode = ETimerMode.TR_CONFIG_TIMERMODE_REMAINING;
- public static int NumPlayer = 2;
- public static EOffOn Tabs = EOffOn.TR_CONFIG_OFF;
- public static string Language = CSettings.FallbackLanguage;
- public static ELyricsPosition LyricsPosition = ELyricsPosition.TR_CONFIG_LYRICSPOSITION_BOTTOM;
- public static readonly string[] Players = new string[CSettings.MaxNumPlayer];
-
- public static float MinLineBreakTime = 0.1f; //Minimum time to show the text before it is (to be) sung (if possible)
-
- // Video
- public static EVideoDecoder VideoDecoder = EVideoDecoder.FFmpeg;
- public static EOffOn VideoBackgrounds = EOffOn.TR_CONFIG_ON;
- public static EOffOn VideoPreview = EOffOn.TR_CONFIG_ON;
- public static EOffOn VideosInSongs = EOffOn.TR_CONFIG_ON;
- public static EOffOn VideosToBackground = EOffOn.TR_CONFIG_OFF;
-
- // Record
- public static ERecordLib RecordLib = ERecordLib.PortAudio;
- public static readonly SMicConfig[] MicConfig = new SMicConfig[CSettings.MaxNumPlayer];
- public static int MicDelay = 200; //[ms]
-
- // Webcam
- public static EWebcamLib WebcamLib = EWebcamLib.OpenCV;
- public static SWebcamConfig WebcamConfig;
-
- // Server
- public static EOffOn ServerActive = EOffOn.TR_CONFIG_OFF;
- public static EOffOn ServerEncryption = EOffOn.TR_CONFIG_OFF;
- public static int ServerPort = 3000;
- //public static string ServerPassword = "vocaluxe";
-
//Lists to save parameters and values
private static readonly List _Params = new List();
private static readonly List _Values = new List();
+ public static int GetVolumeByType(EMusicType type)
+ {
+ switch (type)
+ {
+ case EMusicType.Preview:
+ return PreviewMusicVolume;
+ case EMusicType.Game:
+ return GameMusicVolume;
+ case EMusicType.Background:
+ return BackgroundMusicVolume;
+ case EMusicType.None:
+ return 0;
+ default:
+ throw new ArgumentException("Invalid type: " + type);
+ }
+ }
+
+ public static void SetVolumeByType(EMusicType type, int volume)
+ {
+ switch (type)
+ {
+ case EMusicType.Preview:
+ PreviewMusicVolume = volume;
+ break;
+ case EMusicType.Game:
+ GameMusicVolume = volume;
+ break;
+ case EMusicType.Background:
+ BackgroundMusicVolume = volume;
+ break;
+ default:
+ throw new ArgumentException("Invalid type: " + type);
+ }
+ }
+
public static int BackgroundMusicVolume
{
- get { return _BackgroundMusicVolume; }
+ get { return Config.Sound.BackgroundMusicVolume; }
set
{
- _BackgroundMusicVolume = value.Clamp(0, 100);
+ Config.Sound.BackgroundMusicVolume = value.Clamp(0, 100);
SaveConfig();
}
}
public static int GameMusicVolume
{
- get { return _GameMusicVolume; }
+ get { return Config.Sound.GameMusicVolume; }
set
{
- _GameMusicVolume = value.Clamp(0, 100);
+ Config.Sound.GameMusicVolume = value.Clamp(0, 100);
SaveConfig();
}
}
public static int PreviewMusicVolume
{
- get { return _PreviewMusicVolume; }
+ get { return Config.Sound.PreviewMusicVolume; }
set
{
- _PreviewMusicVolume = value.Clamp(0, 100);
+ Config.Sound.PreviewMusicVolume = value.Clamp(0, 100);
SaveConfig();
}
}
+ public static ESongMenu SongMenu
+ {
+ get { return Config.Game.SongMenu; }
+ set
+ {
+ if (Config.Game.SongMenu == value)
+ return;
+ Config.Game.SongMenu = value;
+ if (SongMenuChanged != null)
+ SongMenuChanged();
+ }
+ }
+
public static void Init()
{
if (_Initialized)
return;
// Init config file
+ _LoadConfig();
if (!File.Exists(_FileConfig))
SaveConfig();
- else
- _LoadConfig();
_Initialized = true;
}
+ private static bool _XmlErrorsOccured;
+
+ private static void _HandleXmlError(CXmlException e)
+ {
+ _XmlErrorsOccured = true;
+ }
+
private static void _LoadConfig()
{
- CXMLReader xmlReader = CXMLReader.OpenFile(_FileConfig);
- if (xmlReader == null)
- return;
-
- xmlReader.TryGetEnumValue("//root/Debug/DebugLevel", ref DebugLevel);
- xmlReader.TryGetEnumValue("//root/Debug/SaveModifiedSongs", ref SaveModifiedSongs);
-
- #region Graphics
- xmlReader.TryGetEnumValue("//root/Graphics/Renderer", ref Renderer);
- xmlReader.TryGetEnumValue("//root/Graphics/TextureQuality", ref TextureQuality);
- xmlReader.TryGetIntValueRange("//root/Graphics/CoverSize", ref CoverSize, 32, 1024);
-
- xmlReader.TryGetIntValue("//root/Graphics/ScreenW", ref ScreenW);
- xmlReader.TryGetIntValue("//root/Graphics/ScreenH", ref ScreenH);
-
- xmlReader.TryGetIntValue("//root/Graphics/BorderLeft", ref BorderLeft);
- xmlReader.TryGetIntValue("//root/Graphics/BorderRight", ref BorderRight);
- xmlReader.TryGetIntValue("//root/Graphics/BorderTop", ref BorderTop);
- xmlReader.TryGetIntValue("//root/Graphics/BorderBottom", ref BorderBottom);
-
- xmlReader.TryGetEnumValue("//root/Graphics/AAMode", ref AAMode);
- xmlReader.TryGetFloatValue("//root/Graphics/MaxFPS", ref MaxFPS);
- xmlReader.TryGetEnumValue("//root/Graphics/VSync", ref VSync);
- xmlReader.TryGetEnumValue("//root/Graphics/FullScreen", ref FullScreen);
- xmlReader.TryGetFloatValue("//root/Graphics/FadeTime", ref FadeTime);
- #endregion Graphics
-
- #region Theme
- xmlReader.GetValue("//root/Theme/Name", out Theme, Theme);
- xmlReader.GetValue("//root/Theme/Skin", out Skin, Skin);
- xmlReader.GetValue("//root/Theme/Cover", out CoverTheme, CoverTheme);
- xmlReader.TryGetEnumValue("//root/Theme/DrawNoteLines", ref DrawNoteLines);
- xmlReader.TryGetEnumValue("//root/Theme/DrawToneHelper", ref DrawToneHelper);
- xmlReader.TryGetEnumValue("//root/Theme/TimerLook", ref TimerLook);
- xmlReader.TryGetEnumValue("//root/Theme/PlayerInfo", ref PlayerInfo);
- xmlReader.TryGetEnumValue("//root/Theme/FadePlayerInfo", ref FadePlayerInfo);
- xmlReader.TryGetEnumValue("//root/Theme/CoverLoading", ref CoverLoading);
- xmlReader.TryGetEnumValue("//root/Theme/LyricStyle", ref LyricStyle);
- #endregion Theme
-
- #region Sound
- xmlReader.TryGetEnumValue("//root/Sound/PlayBackLib", ref PlayBackLib);
- xmlReader.TryGetEnumValue("//root/Sound/RecordLib", ref RecordLib);
- xmlReader.TryGetEnumValue("//root/Sound/AudioBufferSize", ref AudioBufferSize);
-
- xmlReader.TryGetIntValueRange("//root/Sound/AudioLatency", ref AudioLatency, -500, 500);
-
- xmlReader.TryGetEnumValue("//root/Sound/BackgroundMusic", ref BackgroundMusic);
- xmlReader.TryGetIntValueRange("//root/Sound/BackgroundMusicVolume", ref _BackgroundMusicVolume);
- xmlReader.TryGetEnumValue("//root/Sound/BackgroundMusicSource", ref BackgroundMusicSource);
- xmlReader.TryGetEnumValue("//root/Sound/BackgroundMusicUseStart", ref BackgroundMusicUseStart);
- xmlReader.TryGetIntValueRange("//root/Sound/PreviewMusicVolume", ref _PreviewMusicVolume);
- xmlReader.TryGetIntValueRange("//root/Sound/GameMusicVolume", ref _GameMusicVolume);
- #endregion Sound
-
- #region Game
- // Songfolder
- string value = String.Empty;
- int i = 1;
- while (xmlReader.GetValue("//root/Game/SongFolder" + i, out value, value))
+ _XmlErrorsOccured = false;
+ var xml = new CXmlDeserializer(new CXmlErrorHandler(_HandleXmlError));
+ if (File.Exists(_FileConfig))
{
- if (i == 1)
- SongFolders.Clear();
- SongFolders.Add(value);
- value = String.Empty;
- i++;
+ Config = xml.Deserialize(_FileConfig);
+ if (_XmlErrorsOccured)
+ CLog.LogError("There were some warnings or errors loading the config file. Some values might have been reset to their defaults.");
}
+ else
+ Config = xml.DeserializeString("");
- xmlReader.TryGetEnumValue("//root/Game/SongMenu", ref SongMenu);
- xmlReader.TryGetEnumValue("//root/Game/SongSorting", ref SongSorting);
- xmlReader.TryGetEnumValue("//root/Game/IgnoreArticles", ref IgnoreArticles);
- xmlReader.TryGetFloatValue("//root/Game/ScoreAnimationTime", ref ScoreAnimationTime);
- xmlReader.TryGetEnumValue("//root/Game/TimerMode", ref TimerMode);
- xmlReader.TryGetIntValue("//root/Game/NumPlayer", ref NumPlayer);
- xmlReader.TryGetEnumValue("//root/Game/Tabs", ref Tabs);
- xmlReader.GetValue("//root/Game/Language", out Language, Language);
- xmlReader.TryGetEnumValue("//root/Game/LyricsPosition", ref LyricsPosition);
- xmlReader.TryGetFloatValue("//root/Game/MinLineBreakTime", ref MinLineBreakTime);
+ if (Config.Game.SongFolder.Length > 0)
+ {
+ SongFolders.Clear();
+ SongFolders.AddRange(Config.Game.SongFolder);
+ }
+ if ((Config.Game.ScoreAnimationTime > 0 && Config.Game.ScoreAnimationTime < 1) || Config.Game.ScoreAnimationTime < 0)
+ Config.Game.ScoreAnimationTime = 1;
- if ((ScoreAnimationTime > 0 && ScoreAnimationTime < 1) || ScoreAnimationTime < 0)
- ScoreAnimationTime = 1;
+ if (Config.Game.MinLineBreakTime < 0)
+ Config.Game.MinLineBreakTime = 0.1f;
- if (MinLineBreakTime < 0)
- MinLineBreakTime = 0.1f;
+ if (!Config.Game.NumPlayers.IsInRange(1, CSettings.MaxNumPlayer))
+ Config.Game.NumPlayers = 2;
+ Array.Resize(ref Config.Game.Players, CSettings.MaxNumPlayer);
- if (NumPlayer < 1 || NumPlayer > CSettings.MaxNumPlayer)
- NumPlayer = 2;
-
- bool langExists = CLanguage.SetLanguage(Language);
+ bool langExists = CLanguage.SetLanguage(Config.Game.Language);
if (langExists == false)
{
- Language = CSettings.FallbackLanguage;
- CLanguage.SetLanguage(Language);
+ Config.Game.Language = CSettings.FallbackLanguage;
+ CLanguage.SetLanguage(Config.Game.Language);
}
- //Read players from config
- for (i = 1; i <= CSettings.MaxNumPlayer; i++)
- xmlReader.GetValue("//root/Game/Players/Player" + i, out Players[i - 1], String.Empty);
- #endregion Game
+ Array.Resize(ref Config.Record.MicConfig, CSettings.MaxNumPlayer);
+ Config.Record.MicDelay = (int)(20 * Math.Round(Config.Record.MicDelay / 20.0));
- #region Video
- xmlReader.TryGetEnumValue("//root/Video/VideoDecoder", ref VideoDecoder);
- xmlReader.TryGetEnumValue("//root/Video/VideoBackgrounds", ref VideoBackgrounds);
- xmlReader.TryGetEnumValue("//root/Video/VideoPreview", ref VideoPreview);
- xmlReader.TryGetEnumValue("//root/Video/VideosInSongs", ref VideosInSongs);
- xmlReader.TryGetEnumValue("//root/Video/VideosToBackground", ref VideosToBackground);
+ if (!Config.Server.ServerPort.IsInRange(1, 65535))
+ Config.Server.ServerPort = 3000;
- xmlReader.TryGetEnumValue("//root/Video/WebcamLib", ref WebcamLib);
- WebcamConfig = new SWebcamConfig();
- xmlReader.GetValue("//root/Video/WebcamConfig/MonikerString", out WebcamConfig.MonikerString, String.Empty);
- xmlReader.TryGetIntValue("//root/Video/WebcamConfig/Framerate", ref WebcamConfig.Framerate);
- xmlReader.TryGetIntValue("//root/Video/WebcamConfig/Width", ref WebcamConfig.Width);
- xmlReader.TryGetIntValue("//root/Video/WebcamConfig/Height", ref WebcamConfig.Height);
- #endregion Video
-
- #region Record
- for (int p = 1; p <= CSettings.MaxNumPlayer; p++)
- {
- MicConfig[p - 1] = new SMicConfig(0);
- xmlReader.GetValue("//root/Record/MicConfig" + p + "/DeviceName", out MicConfig[p - 1].DeviceName, String.Empty);
- xmlReader.GetValue("//root/Record/MicConfig" + p + "/DeviceDriver", out MicConfig[p - 1].DeviceDriver, String.Empty);
- xmlReader.TryGetIntValue("//root/Record/MicConfig" + p + "/Channel", ref MicConfig[p - 1].Channel);
- }
-
- xmlReader.TryGetIntValueRange("//root/Record/MicDelay", ref MicDelay, 0, 500);
- MicDelay = (int)(20 * Math.Round(MicDelay / 20.0));
- #endregion Record
-
- #region Server
- xmlReader.TryGetEnumValue("//root/Server/ServerActive", ref ServerActive);
- xmlReader.TryGetEnumValue("//root/Server/ServerEncryption", ref ServerEncryption);
- xmlReader.TryGetIntValue("//root/Server/ServerPort", ref ServerPort);
- if (ServerPort < 1 || ServerPort > 65535)
- ServerPort = 3000;
-
- //xmlReader.GetValue("//root/Server/ServerPassword", out ServerPassword, ServerPassword);
- #endregion Server
+ Config.Info = new SConfigInfo
+ {
+ Version = CSettings.GetFullVersionText(),
+ Time = DateTime.Now.ToString(),
+ Platform = Environment.OSVersion.Platform.ToString(),
+ OSVersion = Environment.OSVersion.ToString(),
+ ProcessorCount = Environment.ProcessorCount,
+ Screens = Screen.AllScreens.Length,
+ PrimaryScreenResolution = Screen.PrimaryScreen.Bounds.Size.ToString(),
+ Directory = CSettings.ProgramFolder
+ };
}
- public static bool SaveConfig()
+ private static string _GetComment(string elName)
{
- XmlWriter writer = null;
- try
+ switch (elName)
{
- writer = XmlWriter.Create(_FileConfig, XMLSettings);
- writer.WriteStartDocument();
- writer.WriteStartElement("root");
-
-
- writer.WriteStartElement("Info");
-
- writer.WriteElementString("Version", CSettings.GetFullVersionText());
- writer.WriteElementString("Time", DateTime.Now.ToString());
- writer.WriteElementString("Platform", Environment.OSVersion.Platform.ToString());
- writer.WriteElementString("OSVersion", Environment.OSVersion.ToString());
- writer.WriteElementString("ProcessorCount", Environment.ProcessorCount.ToString());
-
- writer.WriteElementString("Screens", Screen.AllScreens.Length.ToString());
- writer.WriteElementString("PrimaryScreenResolution", Screen.PrimaryScreen.Bounds.Size.ToString());
-
- writer.WriteElementString("Directory", CSettings.ProgramFolder);
-
- writer.WriteEndElement();
-
- #region Debug
- writer.WriteStartElement("Debug");
-
- writer.WriteComment("DebugLevel: " + CHelper.ListStrings(Enum.GetNames(typeof(EDebugLevel))));
- writer.WriteElementString("DebugLevel", Enum.GetName(typeof(EDebugLevel), DebugLevel));
-
- writer.WriteComment("SaveModifiedSongs: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("SaveModifiedSongs", Enum.GetName(typeof(EOffOn), SaveModifiedSongs));
-
- writer.WriteEndElement();
- #endregion Debug
-
- #region Graphics
- writer.WriteStartElement("Graphics");
-
- writer.WriteComment("Renderer: " + CHelper.ListStrings(Enum.GetNames(typeof(ERenderer))));
- writer.WriteElementString("Renderer", Enum.GetName(typeof(ERenderer), Renderer));
-
- writer.WriteComment("TextureQuality: " + CHelper.ListStrings(Enum.GetNames(typeof(ETextureQuality))));
- writer.WriteElementString("TextureQuality", Enum.GetName(typeof(ETextureQuality), TextureQuality));
-
- writer.WriteComment("CoverSize (pixels): 32, 64, 128, 256, 512, 1024 (default: 128)");
- writer.WriteElementString("CoverSize", CoverSize.ToString());
-
- writer.WriteComment("Screen width and height (pixels)");
- writer.WriteElementString("ScreenW", ScreenW.ToString());
- writer.WriteElementString("ScreenH", ScreenH.ToString());
-
- writer.WriteComment("Screen borders (pixels)");
- writer.WriteElementString("BorderLeft", BorderLeft.ToString());
- writer.WriteElementString("BorderRight", BorderRight.ToString());
- writer.WriteElementString("BorderTop", BorderTop.ToString());
- writer.WriteElementString("BorderBottom", BorderBottom.ToString());
-
- writer.WriteComment("AAMode: " + CHelper.ListStrings(Enum.GetNames(typeof(EAntiAliasingModes))));
- writer.WriteElementString("AAMode", Enum.GetName(typeof(EAntiAliasingModes), AAMode));
-
- writer.WriteComment("MaxFPS should be between 1..200");
- writer.WriteElementString("MaxFPS", MaxFPS.ToString("#"));
-
- writer.WriteComment("VSync: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("VSync", Enum.GetName(typeof(EOffOn), VSync));
-
- writer.WriteComment("FullScreen: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("FullScreen", Enum.GetName(typeof(EOffOn), FullScreen));
-
- writer.WriteComment("FadeTime should be between 0..3 Seconds");
- writer.WriteElementString("FadeTime", FadeTime.ToString("#0.00"));
-
- writer.WriteEndElement();
- #endregion Graphics
-
- #region Theme
- writer.WriteStartElement("Theme");
-
- writer.WriteComment("Theme name");
- writer.WriteElementString("Name", Theme);
-
- writer.WriteComment("Skin name");
- writer.WriteElementString("Skin", Skin);
-
- writer.WriteComment("Name of cover-theme");
- writer.WriteElementString("Cover", CoverTheme);
-
- writer.WriteComment("Draw note-lines: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("DrawNoteLines", Enum.GetName(typeof(EOffOn), DrawNoteLines));
-
- writer.WriteComment("Draw tone-helper: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("DrawToneHelper", Enum.GetName(typeof(EOffOn), DrawToneHelper));
-
- writer.WriteComment("Look of timer: " + CHelper.ListStrings(Enum.GetNames(typeof(ETimerLook))));
- writer.WriteElementString("TimerLook", Enum.GetName(typeof(ETimerLook), TimerLook));
-
- writer.WriteComment("Information about players on SingScreen: " + CHelper.ListStrings(Enum.GetNames(typeof(EPlayerInfo))));
- writer.WriteElementString("PlayerInfo", Enum.GetName(typeof(EPlayerInfo), PlayerInfo));
-
- writer.WriteComment("Fade player-information with lyrics and notebars: " + CHelper.ListStrings(Enum.GetNames(typeof(EFadePlayerInfo))));
- writer.WriteElementString("FadePlayerInfo", Enum.GetName(typeof(EFadePlayerInfo), FadePlayerInfo));
-
- writer.WriteComment("Cover Loading: " + CHelper.ListStrings(Enum.GetNames(typeof(ECoverLoading))));
- writer.WriteElementString("CoverLoading", Enum.GetName(typeof(ECoverLoading), CoverLoading));
-
- writer.WriteComment("Lyric Style: " + CHelper.ListStrings(Enum.GetNames(typeof(ELyricStyle))));
- writer.WriteElementString("LyricStyle", Enum.GetName(typeof(ELyricStyle), LyricStyle));
-
- writer.WriteEndElement();
- #endregion Theme
-
- #region Sound
- writer.WriteStartElement("Sound");
-
- writer.WriteComment("PlayBackLib: " + CHelper.ListStrings(Enum.GetNames(typeof(EPlaybackLib))));
- writer.WriteElementString("PlayBackLib", Enum.GetName(typeof(EPlaybackLib), PlayBackLib));
-
- writer.WriteComment("RecordLib: " + CHelper.ListStrings(Enum.GetNames(typeof(ERecordLib))));
- writer.WriteElementString("RecordLib", Enum.GetName(typeof(ERecordLib), RecordLib));
-
- writer.WriteComment("AudioBufferSize: " + CHelper.ListStrings(Enum.GetNames(typeof(EBufferSize))));
- writer.WriteElementString("AudioBufferSize", Enum.GetName(typeof(EBufferSize), AudioBufferSize));
-
- writer.WriteComment("AudioLatency from -500 to 500 ms");
- writer.WriteElementString("AudioLatency", AudioLatency.ToString());
-
- writer.WriteComment("Background Music: " + CHelper.ListStrings(Enum.GetNames(typeof(EBackgroundMusicOffOn))));
- writer.WriteElementString("BackgroundMusic", Enum.GetName(typeof(EBackgroundMusicOffOn), BackgroundMusic));
-
- writer.WriteComment("Background Music Volume from 0 to 100");
- writer.WriteElementString("BackgroundMusicVolume", BackgroundMusicVolume.ToString());
-
- writer.WriteComment("Background Music Source: " + CHelper.ListStrings(Enum.GetNames(typeof(EBackgroundMusicSource))));
- writer.WriteElementString("BackgroundMusicSource", Enum.GetName(typeof(EBackgroundMusicSource), BackgroundMusicSource));
-
- writer.WriteComment("Background Music use start-tag of songs: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("BackgroundMusicUseStart", Enum.GetName(typeof(EOffOn), BackgroundMusicUseStart));
-
- writer.WriteComment("Preview Volume from 0 to 100");
- writer.WriteElementString("PreviewMusicVolume", PreviewMusicVolume.ToString());
-
- writer.WriteComment("Game Volume from 0 to 100");
- writer.WriteElementString("GameMusicVolume", GameMusicVolume.ToString());
-
- writer.WriteEndElement();
- #endregion Sound
-
- #region Game
- writer.WriteStartElement("Game");
-
- writer.WriteComment("Game-Language:");
- writer.WriteElementString("Language", Language);
-
- // SongFolder
- writer.WriteComment("SongFolder: SongFolder1, SongFolder2, SongFolder3, ...");
- for (int i = 0; i < SongFolders.Count; i++)
- writer.WriteElementString("SongFolder" + (i + 1), SongFolders[i]);
-
- writer.WriteComment("SongMenu: " + CHelper.ListStrings(Enum.GetNames(typeof(ESongMenu))));
- writer.WriteElementString("SongMenu", Enum.GetName(typeof(ESongMenu), SongMenu));
-
- writer.WriteComment("SongSorting: " + CHelper.ListStrings(Enum.GetNames(typeof(ESongSorting))));
- writer.WriteElementString("SongSorting", Enum.GetName(typeof(ESongSorting), SongSorting));
-
- writer.WriteComment("Ignore articles on song-sorting: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("IgnoreArticles", Enum.GetName(typeof(EOffOn), IgnoreArticles));
-
- writer.WriteComment("ScoreAnimationTime: Values >= 1 or 0 for no animation. Time is in seconds.");
- writer.WriteElementString("ScoreAnimationTime", ScoreAnimationTime.ToString());
-
- writer.WriteComment("TimerMode: " + CHelper.ListStrings(Enum.GetNames(typeof(ETimerMode))));
- writer.WriteElementString("TimerMode", Enum.GetName(typeof(ETimerMode), TimerMode));
-
- writer.WriteComment("NumPlayer: 1.." + CSettings.MaxNumPlayer);
- writer.WriteElementString("NumPlayer", NumPlayer.ToString());
-
- writer.WriteComment("Order songs in tabs: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("Tabs", Enum.GetName(typeof(EOffOn), Tabs));
-
- writer.WriteComment("Position if lyrics on screen: " + CHelper.ListStrings(Enum.GetNames(typeof(ELyricsPosition))));
- writer.WriteElementString("LyricsPosition", Enum.GetName(typeof(ELyricsPosition), LyricsPosition));
-
- writer.WriteComment("MinLineBreakTime: Value >= 0 in s. Minimum time the text is shown before it is to be sung");
- writer.WriteElementString("MinLineBreakTime", MinLineBreakTime.ToString());
-
- writer.WriteComment("Default profile for players 1..." + CSettings.MaxNumPlayer + ":");
- writer.WriteStartElement("Players");
- for (int i = 1; i <= CSettings.MaxNumPlayer; i++)
- writer.WriteElementString("Player" + i, Path.GetFileName(Players[i - 1]));
- writer.WriteEndElement();
-
- writer.WriteEndElement();
- #endregion Game
-
- #region Video
- writer.WriteStartElement("Video");
-
- writer.WriteComment("VideoDecoder: " + CHelper.ListStrings(Enum.GetNames(typeof(EVideoDecoder))));
- writer.WriteElementString("VideoDecoder", Enum.GetName(typeof(EVideoDecoder), VideoDecoder));
-
- writer.WriteComment("VideoBackgrounds: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("VideoBackgrounds", Enum.GetName(typeof(EOffOn), VideoBackgrounds));
-
- writer.WriteComment("VideoPreview: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("VideoPreview", Enum.GetName(typeof(EOffOn), VideoPreview));
-
- writer.WriteComment("Show Videos while singing: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("VideosInSongs", Enum.GetName(typeof(EOffOn), VideosInSongs));
-
- writer.WriteComment("Show backgroundmusic videos as background: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("VideosToBackground", Enum.GetName(typeof(EOffOn), VideosToBackground));
-
- writer.WriteComment("WebcamLib: " + CHelper.ListStrings(Enum.GetNames(typeof(EWebcamLib))));
- writer.WriteElementString("WebcamLib", Enum.GetName(typeof(EWebcamLib), WebcamLib));
-
- writer.WriteStartElement("WebcamConfig");
-
- writer.WriteElementString("MonikerString", WebcamConfig.MonikerString);
- writer.WriteElementString("Framerate", WebcamConfig.Framerate.ToString());
- writer.WriteElementString("Width", WebcamConfig.Width.ToString());
- writer.WriteElementString("Height", WebcamConfig.Height.ToString());
-
- writer.WriteEndElement();
-
- writer.WriteEndElement();
- #endregion Video
-
- #region Record
- writer.WriteStartElement("Record");
-
- for (int p = 1; p <= CSettings.MaxNumPlayer; p++)
- {
- if (MicConfig[p - 1].DeviceName != "" && MicConfig[p - 1].Channel > 0)
- {
- writer.WriteStartElement("MicConfig" + p);
-
- writer.WriteElementString("DeviceName", MicConfig[p - 1].DeviceName);
- writer.WriteElementString("DeviceDriver", MicConfig[p - 1].DeviceDriver);
- writer.WriteElementString("Channel", MicConfig[p - 1].Channel.ToString());
-
- writer.WriteEndElement();
- }
- }
-
- writer.WriteComment("Mic delay in ms. 0, 20, 40, 60 ... 500");
- writer.WriteElementString("MicDelay", MicDelay.ToString());
-
- writer.WriteEndElement();
- #endregion Record
-
- #region Server
- writer.WriteStartElement("Server");
-
- writer.WriteComment("Server On/Off: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("ServerActive", Enum.GetName(typeof(EOffOn), ServerActive));
-
- writer.WriteComment("Server Encryption On/Off: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn))));
- writer.WriteElementString("ServerEncryption", Enum.GetName(typeof(EOffOn), ServerEncryption));
-
- writer.WriteComment("Server Port (default: 3000) [1..65535]");
- writer.WriteElementString("ServerPort", ServerPort.ToString());
-
- //writer.WriteComment("Server Password (default: vocaluxe)");
- //writer.WriteElementString("ServerPassword", ServerPassword);
-
- writer.WriteEndElement();
- #endregion Server
-
- // End of File
- writer.WriteEndElement(); //end of root
- writer.WriteEndDocument();
- writer.Flush();
- writer.Close();
- writer = null;
+ case "DebugLevel":
+ return "DebugLevel: " + CHelper.ListStrings(Enum.GetNames(typeof(EDebugLevel)));
+ case "SaveModifiedSongs":
+ return "SaveModifiedSongs: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "Renderer":
+ return "Renderer: " + CHelper.ListStrings(Enum.GetNames(typeof(ERenderer)));
+ case "TextureQuality":
+ return "TextureQuality: " + CHelper.ListStrings(Enum.GetNames(typeof(ETextureQuality)));
+ case "CoverSize":
+ return "CoverSize (pixels): 32, 64, 128, 256, 512, 1024 (default: 128)";
+ case "ScreenW":
+ return "Screen width and height (pixels)";
+ case "BorderLeft":
+ return "Screen borders (pixels)";
+ case "AAMode":
+ return "AAMode: " + CHelper.ListStrings(Enum.GetNames(typeof(EAntiAliasingModes)));
+ case "MaxFPS":
+ return "MaxFPS should be between 1..200";
+ case "VSync":
+ return "VSync: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "FullScreen":
+ return "FullScreen: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "FadeTime":
+ return "FadeTime should be between 0..3 Seconds";
+ case "Theme":
+ return "Theme name";
+ case "Skin":
+ return "Skin name";
+ case "Cover":
+ return "Name of cover-theme";
+ case "DrawNoteLines":
+ return "Draw note-lines: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "DrawToneHelper":
+ return "Draw tone-helper: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "TimerLook":
+ return "Look of timer: " + CHelper.ListStrings(Enum.GetNames(typeof(ETimerLook)));
+ case "PlayerInfo":
+ return "Information about players on SingScreen: " + CHelper.ListStrings(Enum.GetNames(typeof(EPlayerInfo)));
+ case "FadePlayerInfo":
+ return "Fade player-information with lyrics and notebars: " + CHelper.ListStrings(Enum.GetNames(typeof(EFadePlayerInfo)));
+ case "CoverLoading":
+ return "Cover Loading: " + CHelper.ListStrings(Enum.GetNames(typeof(ECoverLoading)));
+ case "LyricStyle":
+ return "Lyric Style: " + CHelper.ListStrings(Enum.GetNames(typeof(ELyricStyle)));
+ case "PlayBackLib":
+ return "PlayBackLib: " + CHelper.ListStrings(Enum.GetNames(typeof(EPlaybackLib)));
+ case "RecordLib":
+ return "RecordLib: " + CHelper.ListStrings(Enum.GetNames(typeof(ERecordLib)));
+ case "AudioBufferSize":
+ return "AudioBufferSize: " + CHelper.ListStrings(Enum.GetNames(typeof(EBufferSize)));
+ case "AudioLatency":
+ return "AudioLatency from -500 to 500 ms";
+ case "BackgroundMusic":
+ return "Background Music: " + CHelper.ListStrings(Enum.GetNames(typeof(EBackgroundMusicOffOn)));
+ case "BackgroundMusicVolume":
+ return "Background Music Volume from 0 to 100";
+ case "BackgroundMusicSource":
+ return "Background Music Source: " + CHelper.ListStrings(Enum.GetNames(typeof(EBackgroundMusicSource)));
+ case "BackgroundMusicUseStart":
+ return "Background Music use start-tag of songs " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "PreviewMusicVolume":
+ return "Preview Volume from 0 to 100";
+ case "GameMusicVolume":
+ return "Game Volume from 0 to 100";
+ case "Language":
+ return "Game-Language";
+ case "SongFolder":
+ return "SongFolder: SongFolder1, SongFolder2, SongFolder3, ...";
+ case "SongMenu":
+ return "SongMenu: " + CHelper.ListStrings(Enum.GetNames(typeof(ESongMenu)));
+ case "SongSorting":
+ return "SongSorting: " + CHelper.ListStrings(Enum.GetNames(typeof(ESongSorting)));
+ case "IgnoreArticles":
+ return "Ignore articles on song-sorting: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "ScoreAnimationTime":
+ return "ScoreAnimationTime: Values >= 1 or 0 for no animation. Time is in seconds.";
+ case "TimerMode":
+ return "TimerMode: " + CHelper.ListStrings(Enum.GetNames(typeof(ETimerMode)));
+ case "NumPlayers":
+ return "NumPlayers: 1.." + CSettings.MaxNumPlayer;
+ case "Tabs":
+ return "Order songs in tabs: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "LyricsPosition":
+ return "Position if lyrics on screen: " + CHelper.ListStrings(Enum.GetNames(typeof(ELyricsPosition)));
+ case "MinLineBreakTime":
+ return "MinLineBreakTime: Value >= 0 in s. Minimum time the text is shown before it is to be sung";
+ case "Players":
+ return "Default profile for players 1..." + CSettings.MaxNumPlayer + ":";
+ case "VideoDecoder":
+ return "VideoDecoder: " + CHelper.ListStrings(Enum.GetNames(typeof(EVideoDecoder)));
+ case "VideoBackgrounds":
+ return "VideoBackgrounds: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "VideoPreview":
+ return "VideoPreview: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "VideosInSongs":
+ return "Show Videos while singing: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "VideosToBackground":
+ return "Show backgroundmusic videos as background: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "WebcamLib":
+ return "WebcamLib: " + CHelper.ListStrings(Enum.GetNames(typeof(EWebcamLib)));
+ case "MicDelay":
+ return "Mic delay in ms. 0, 20, 40, 60 ... 500";
+ case "ServerActive":
+ return "Server On/Off: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "ServerEncryption":
+ return "Server Encryption On/Off: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
+ case "ServerPort":
+ return "Server Port (default: 3000) [1..65535]";
+ default:
+ return null;
}
- catch (Exception)
- {
- if (writer != null)
- writer.Close();
- return false;
- }
- return true;
+ }
+
+ public static void SaveConfig()
+ {
+ var xml = new CXmlSerializer(true, _GetComment);
+ xml.Serialize(_FileConfig, Config);
}
///
@@ -642,7 +492,7 @@ namespace Vocaluxe.Base
///
public static float CalcCycleTime()
{
- return (1f / MaxFPS) * 1000f;
+ return (1f / Config.Graphics.MaxFPS) * 1000f;
}
///
@@ -705,13 +555,13 @@ namespace Vocaluxe.Base
if (device.Channels >= 2)
{
//Set this device to player 1
- MicConfig[0].DeviceName = device.Name;
- MicConfig[0].DeviceDriver = device.Driver;
- MicConfig[0].Channel = 1;
+ Config.Record.MicConfig[0].DeviceName = device.Name;
+ Config.Record.MicConfig[0].DeviceDriver = device.Driver;
+ Config.Record.MicConfig[0].Channel = 1;
//Set this device to player 2
- MicConfig[1].DeviceName = device.Name;
- MicConfig[1].DeviceDriver = device.Driver;
- MicConfig[1].Channel = 2;
+ Config.Record.MicConfig[1].DeviceName = device.Name;
+ Config.Record.MicConfig[1].DeviceDriver = device.Driver;
+ Config.Record.MicConfig[1].Channel = 2;
return true;
}
@@ -727,16 +577,16 @@ namespace Vocaluxe.Base
if (device.Channels >= 1)
{
//Set this device to player 1
- MicConfig[0].DeviceName = device.Name;
- MicConfig[0].DeviceDriver = device.Driver;
- MicConfig[0].Channel = 1;
+ Config.Record.MicConfig[0].DeviceName = device.Name;
+ Config.Record.MicConfig[0].DeviceDriver = device.Driver;
+ Config.Record.MicConfig[0].Channel = 1;
if (device.Channels >= 2)
{
//Set this device to player 2
- MicConfig[1].DeviceName = device.Name;
- MicConfig[1].DeviceDriver = device.Driver;
- MicConfig[1].Channel = 2;
+ Config.Record.MicConfig[1].DeviceName = device.Name;
+ Config.Record.MicConfig[1].DeviceDriver = device.Driver;
+ Config.Record.MicConfig[1].Channel = 2;
return true;
}
@@ -832,6 +682,11 @@ namespace Vocaluxe.Base
ProfileFolders.Clear();
ProfileFolders.Add(value);
break;
+
+ case "oldtheme":
+ if (value == "yes")
+ LoadOldThemeFiles = true;
+ break;
}
}
}
@@ -889,12 +744,12 @@ namespace Vocaluxe.Base
for (int j = 0; j < CSettings.MaxNumPlayer; j++)
{
CGame.Players[j].ProfileID = -1;
- if (Players[j] == "" || profiles == null)
+ if (string.IsNullOrEmpty(Config.Game.Players[j]))
continue;
foreach (CProfile profile in profiles)
{
- if (Path.GetFileName(profile.FileName) == Players[j] && profile.Active == EOffOn.TR_CONFIG_ON)
+ if (Path.GetFileName(profile.FilePath) == Config.Game.Players[j] && profile.Active == EOffOn.TR_CONFIG_ON)
{
//Update Game-infos with player
CGame.Players[j].ProfileID = profile.ID;
diff --git a/Vocaluxe/Base/CCover.cs b/Vocaluxe/Base/CCover.cs
index ac9cc10c..0a155740 100644
--- a/Vocaluxe/Base/CCover.cs
+++ b/Vocaluxe/Base/CCover.cs
@@ -17,34 +17,39 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Linq;
using VocaluxeLib;
using VocaluxeLib.Draw;
+using VocaluxeLib.Songs;
+using VocaluxeLib.Xml;
namespace Vocaluxe.Base
{
- struct SCoverTheme
- {
- public string Name;
- public string Folder;
- public string File;
- }
-
static class CCover
{
- private static readonly Dictionary _Covers = new Dictionary();
- private static readonly List _CoverThemes = new List();
+ private const string _NoCoverName = "No Cover";
+ private const string _NoCoverNameAlt = "NoCover";
+ private static readonly Dictionary _Covers = new Dictionary();
+ private static readonly Dictionary _CoverGenerators = new Dictionary();
+ private static readonly List _CoverThemes = new List();
+ private static readonly CancellationTokenSource _CancelToken = new CancellationTokenSource();
- public static CTexture NoCover { get; private set; }
+ public static CTextureRef NoCover { get; private set; }
- public static void Init()
+ public static bool Init()
{
_LoadCoverThemes();
- _LoadCover(CConfig.CoverTheme);
+ return _CoverThemes.Count != 0 && _LoadCovers();
}
public static void Close()
{
+ _CancelToken.Cancel();
_UnloadCovers();
_CoverThemes.Clear();
}
@@ -54,14 +59,7 @@ namespace Vocaluxe.Base
///
public static string[] CoverThemes
{
- get
- {
- var coverThemes = new List();
- for (int i = 0; i < _CoverThemes.Count; i++)
- coverThemes.Add(_CoverThemes[i].Name);
-
- return coverThemes.ToArray();
- }
+ get { return _CoverThemes.Select(th => th.Info.Name).ToArray(); }
}
///
@@ -72,16 +70,16 @@ namespace Vocaluxe.Base
{
for (int i = 0; i < _CoverThemes.Count; i++)
{
- if (_CoverThemes[i].Name == CConfig.CoverTheme)
+ if (_CoverThemes[i].Info.Name == CConfig.Config.Theme.CoverTheme)
return i;
}
return -1;
}
///
- /// Returns a STexture for a given cover name. Returns "NoCover" if the cover does not exist.
+ /// Returns a Texture reference for a given cover name. Returns "NoCover" if the cover does not exist.
///
- public static CTexture Cover(string name)
+ public static CTextureRef Cover(string name)
{
lock (_Covers)
{
@@ -92,6 +90,32 @@ namespace Vocaluxe.Base
}
}
+ public static CTextureRef GenerateCover(string text, ECoverGeneratorType type, CSong firstSong)
+ {
+ CTextureRef texture = Cover(text);
+ if (texture != NoCover)
+ return texture;
+ texture = CDraw.CopyTexture(NoCover);
+ Task.Factory.StartNew(() =>
+ {
+ _CancelToken.Token.ThrowIfCancellationRequested();
+ Bitmap coverBmp = !_CoverGenerators.ContainsKey(type)
+ ? null : _CoverGenerators[type].GetCover(text, firstSong != null ? Path.Combine(firstSong.Folder, firstSong.CoverFileName) : null);
+ _CancelToken.Token.ThrowIfCancellationRequested();
+ if (coverBmp == null && _CoverGenerators.ContainsKey(ECoverGeneratorType.Default))
+ coverBmp = _CoverGenerators[ECoverGeneratorType.Default].GetCover(text, firstSong != null ? Path.Combine(firstSong.Folder, firstSong.CoverFileName) : null);
+ _CancelToken.Token.ThrowIfCancellationRequested();
+ if (coverBmp != null)
+ CDraw.EnqueueTextureUpdate(texture, coverBmp);
+ _CancelToken.Token.ThrowIfCancellationRequested();
+ }, _CancelToken.Token);
+ lock (_Covers)
+ {
+ _Covers.Add(text, texture);
+ }
+ return texture;
+ }
+
///
/// Returns true if a cover with the given name exists.
/// MUST HOLD _Covers lock at this point
@@ -107,7 +131,7 @@ namespace Vocaluxe.Base
public static void ReloadCovers()
{
_UnloadCovers();
- _LoadCover(CConfig.CoverTheme);
+ _LoadCovers();
}
private static void _UnloadCovers()
@@ -116,24 +140,29 @@ namespace Vocaluxe.Base
{
foreach (string key in _Covers.Keys)
{
- CTexture texture = _Covers[key];
+ CTextureRef texture = _Covers[key];
CDraw.RemoveTexture(ref texture);
}
_Covers.Clear();
}
+ lock (_CoverGenerators)
+ {
+ _CoverGenerators.Clear();
+ }
}
///
/// Returns a SCoverTheme by cover-theme-name
///
- private static SCoverTheme _CoverTheme(string coverThemeName)
+ private static SThemeCover _GetCoverTheme()
{
- for (int i = 0; i < _CoverThemes.Count; i++)
+ int index = GetCoverThemeIndex();
+ if (index < 0)
{
- if (_CoverThemes[i].Name == coverThemeName)
- return _CoverThemes[i];
+ index = 0;
+ CConfig.Config.Theme.CoverTheme = _CoverThemes[0].Info.Name;
}
- return new SCoverTheme();
+ return _CoverThemes[index];
}
///
@@ -143,96 +172,118 @@ namespace Vocaluxe.Base
{
_CoverThemes.Clear();
- string path = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameCover);
- List files = CHelper.ListFiles(path, "*.xml");
+ string folderPath = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameCover);
+ List files = CHelper.ListFiles(folderPath, "*.xml");
+ var xml = new CXmlDeserializer();
foreach (string file in files)
{
- CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(path, file));
-
- if (xmlReader != null)
+ SThemeCover theme;
+ try
{
- var coverTheme = new SCoverTheme();
+ theme = xml.Deserialize(Path.Combine(folderPath, file));
+ }
+ catch (CXmlException e)
+ {
+ CLog.LogError("Error loading cover theme " + file + ": " + e);
+ continue;
+ }
- xmlReader.GetValue("//root/Info/Name", out coverTheme.Name, String.Empty);
- xmlReader.GetValue("//root/Info/Folder", out coverTheme.Folder, String.Empty);
-
- if (coverTheme.Folder != "" && coverTheme.Name != "")
- {
- coverTheme.File = file;
-
- _CoverThemes.Add(coverTheme);
- }
+ if (!String.IsNullOrEmpty(theme.Info.Folder) && !String.IsNullOrEmpty(theme.Info.Name))
+ {
+ theme.FolderPath = Path.Combine(folderPath, theme.Info.Folder);
+ _CoverThemes.Add(theme);
}
}
}
///
- /// Loads all cover which are defined in the cover config file.
+ /// Loads all covers from the theme
///
- private static void _LoadCover(string coverThemeName)
+ private static bool _LoadCovers()
{
- SCoverTheme coverTheme = _CoverTheme(coverThemeName);
+ SThemeCover coverTheme = _GetCoverTheme();
- if (String.IsNullOrEmpty(coverTheme.Name))
- return;
+ Debug.Assert(!String.IsNullOrEmpty(coverTheme.Info.Name));
- var ignoreList = new List();
+ List files = CHelper.ListImageFiles(coverTheme.FolderPath, true, true);
- string coverPath = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameCover, coverTheme.Folder);
- List files = CHelper.ListImageFiles(coverPath, true, true);
-
- CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameCover, coverTheme.File));
lock (_Covers)
{
- if (xmlReader != null)
- {
- _Covers.Clear();
- List cover = xmlReader.GetNames("//root/Cover/*");
- foreach (string coverName in cover)
- {
- string name;
- string filePath;
- xmlReader.GetValue("//root/Cover/" + coverName + "/Name", out name, String.Empty);
- xmlReader.GetValue("//root/Cover/" + coverName + "/Path", out filePath, String.Empty);
- string coverFilePath = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameCover, coverTheme.Folder, filePath);
- if (!File.Exists(coverFilePath))
- continue;
-
- _AddCover(name, coverFilePath);
- ignoreList.Add(Path.GetFileName(coverFilePath));
-
- if (name == "NoCover")
- NoCover = _Covers[name];
- }
- }
-
-
foreach (string file in files)
+ _AddCover(Path.GetFileNameWithoutExtension(file), file);
+ if (_CoverExists(_NoCoverName))
+ NoCover = _Covers[_NoCoverName];
+ else if (_CoverExists(_NoCoverNameAlt))
+ NoCover = _Covers[_NoCoverNameAlt];
+ else
{
- if (!ignoreList.Contains(Path.GetFileName(file)))
- _AddCover(Path.GetFileNameWithoutExtension(file), file);
+ CBase.Log.LogError("Covertheme \"" + coverTheme.Info.Name + "\" does not include a cover file named \"" + _NoCoverName + "\" and cannot be used!", true, true);
+ _UnloadCovers();
+ // Remove current theme and recursively try the other themes
+ _CoverThemes.Remove(coverTheme);
+ return _CoverThemes.Count > 0 && _LoadCovers();
+ }
+ }
+ _LoadCoverGenerators(coverTheme);
+ return true;
+ }
+
+ public static ECoverGeneratorType _SongSortingToType(ESongSorting sorting)
+ {
+ switch (sorting)
+ {
+ case ESongSorting.TR_CONFIG_NONE:
+ return ECoverGeneratorType.Default;
+ case ESongSorting.TR_CONFIG_FOLDER:
+ return ECoverGeneratorType.Folder;
+ case ESongSorting.TR_CONFIG_ARTIST:
+ return ECoverGeneratorType.Artist;
+ case ESongSorting.TR_CONFIG_ARTIST_LETTER:
+ case ESongSorting.TR_CONFIG_TITLE_LETTER:
+ return ECoverGeneratorType.Letter;
+ case ESongSorting.TR_CONFIG_EDITION:
+ return ECoverGeneratorType.Edition;
+ case ESongSorting.TR_CONFIG_GENRE:
+ return ECoverGeneratorType.Genre;
+ case ESongSorting.TR_CONFIG_LANGUAGE:
+ return ECoverGeneratorType.Language;
+ case ESongSorting.TR_CONFIG_YEAR:
+ return ECoverGeneratorType.Year;
+ case ESongSorting.TR_CONFIG_DECADE:
+ return ECoverGeneratorType.Decade;
+ case ESongSorting.TR_CONFIG_DATEADDED:
+ return ECoverGeneratorType.Date;
+ default:
+ throw new ArgumentOutOfRangeException("sorting");
+ }
+ }
+
+ private static void _LoadCoverGenerators(SThemeCover coverTheme)
+ {
+ lock (_CoverGenerators)
+ {
+ foreach (SThemeCoverGenerator theme in coverTheme.CoverGenerators)
+ {
+ if (_CoverGenerators.ContainsKey(theme.Type))
+ continue;
+ CCoverGenerator el = new CCoverGenerator(theme, coverTheme.FolderPath);
+ _CoverGenerators.Add(theme.Type, el);
}
}
}
///
/// Ads a cover with the given name if it does not exist yet
- /// MUST HOLD _Covers lock at this point
///
/// Name of the cover
/// Filename of image file
private static void _AddCover(string name, string file)
{
- CTexture texture = CDraw.AddTexture(file);
-
- if (!_CoverExists(name))
- _Covers.Add(name, texture);
- else
+ lock (_Covers)
{
- CTexture tex = _Covers[name];
- CDraw.RemoveTexture(ref tex);
- _Covers[name] = texture;
+ if (!_CoverExists(name))
+ _Covers.Add(name, CDraw.AddTexture(file));
}
}
}
diff --git a/Vocaluxe/Base/CCoverGenerator.cs b/Vocaluxe/Base/CCoverGenerator.cs
new file mode 100644
index 00000000..1ff20fa9
--- /dev/null
+++ b/Vocaluxe/Base/CCoverGenerator.cs
@@ -0,0 +1,503 @@
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe 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 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe 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 Vocaluxe. If not, see .
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
+using System.Drawing.Text;
+using System.IO;
+using Vocaluxe.Base.Fonts;
+using VocaluxeLib;
+using System.Linq;
+
+namespace Vocaluxe.Base
+{
+ ///
+ /// Class that generates Covers if the right Cover is missing
+ /// Themeable via the xml of the Cover theme
+ ///
+ class CCoverGenerator
+ {
+ private readonly bool _Valid;
+ private readonly SThemeCoverGenerator _Theme;
+ private readonly string _Image;
+ private readonly SColorF _TextColor;
+ private readonly SColorF _BGColor;
+ private const int _LineSpace = 5;
+ private readonly int _MarginLeft;
+ private readonly int _MarginRight;
+ private readonly int _MarginTop;
+ private readonly int _MarginBottom;
+
+ ///
+ /// Split lines after special chars, descending priority
+ ///
+ private static readonly char[] _SplitCharPreferences = {':', '/', '-'};
+ private static readonly char[] _SplitCharAfter = {':', '/', '-', ' ', ')', '.', '*', ','};
+ private static readonly char[] _SplitCharBefore = {'('};
+
+ public CCoverGenerator(SThemeCoverGenerator theme, string basePath)
+ {
+ _Theme = theme;
+ _Valid = true;
+ _Valid &= _Theme.Text.Color.Get(-1, out _TextColor);
+ _Valid &= _Theme.BackgroundColor.Get(-1, out _BGColor);
+ if (_Valid)
+ {
+ _Image = Path.Combine(basePath, _Theme.Image);
+ _Valid = File.Exists(_Image);
+ }
+ _MarginLeft = theme.Text.Margin.Left.HasValue ? theme.Text.Margin.Left.Value : theme.Text.Margin.Default;
+ _MarginRight = theme.Text.Margin.Right.HasValue ? theme.Text.Margin.Right.Value : theme.Text.Margin.Default;
+ _MarginTop = theme.Text.Margin.Top.HasValue ? theme.Text.Margin.Top.Value : theme.Text.Margin.Default;
+ _MarginBottom = theme.Text.Margin.Bottom.HasValue ? theme.Text.Margin.Bottom.Value : theme.Text.Margin.Default;
+ }
+
+ private class CTextElement
+ {
+ public readonly string Text;
+ public float Width, Height;
+ private readonly Graphics _Graphics;
+ private readonly Font _Font;
+ private float _WidthTrimmed = -1;
+ public float WidthTrimmed
+ {
+ get
+ {
+ if (_WidthTrimmed < 0f)
+ {
+ string text = Text.TrimEnd(null);
+ _WidthTrimmed = text.Length == Text.Length ? Width : _Graphics.MeasureString(text, _Font, -1, StringFormat.GenericTypographic).Width;
+ }
+ return _WidthTrimmed;
+ }
+ }
+ public int Line;
+
+ public CTextElement(string text, Graphics g, Font font)
+ {
+ Text = text;
+ SizeF dimensions = g.MeasureString(text, font, -1, StringFormat.GenericTypographic);
+ Width = dimensions.Width;
+ Height = (dimensions.Height + font.Height) / 2;
+ _Graphics = g;
+ _Font = font;
+ }
+
+ public void AdjustSize(float factor)
+ {
+ Width *= factor;
+ _WidthTrimmed *= factor;
+ Height *= factor;
+ }
+ }
+
+ private void _DrawBackground(Graphics g, Bitmap bmpBackground, String firstCoverPath)
+ {
+ g.Clear(_BGColor.AsColor());
+
+ ImageAttributes ia = null;
+ if (_Theme.ShowFirstCover && !String.IsNullOrEmpty(firstCoverPath) && File.Exists(firstCoverPath))
+ {
+ using (Bitmap bmp2 = new Bitmap(firstCoverPath))
+ g.DrawImage(bmp2, bmpBackground.GetRect(), 0, 0, bmp2.Width, bmp2.Height, GraphicsUnit.Pixel);
+ ColorMatrix cm = new ColorMatrix {Matrix33 = _Theme.ImageAlpha};
+ ia = new ImageAttributes();
+ ia.SetColorMatrix(cm);
+ }
+ g.DrawImage(bmpBackground, bmpBackground.GetRect(), 0, 0, bmpBackground.Width, bmpBackground.Height, GraphicsUnit.Pixel, ia);
+ }
+
+ private void _DrawText(Graphics g, Size bmpSize, CFont font, List elements)
+ {
+ Font fo = CFonts.GetSystemFont(font);
+
+ float maxHeight = elements.Select(el => el.Height).Max();
+ int lineCount = elements.Last().Line + 1;
+
+ //Have to use size in em not pixels!
+ float emSize = fo.Size * fo.FontFamily.GetCellAscent(fo.Style) / fo.FontFamily.GetEmHeight(fo.Style);
+ float outlineSize = CFonts.GetOutlineSize(font) * font.Height;
+ SColorF outlineColorF = CFonts.GetOutlineColor(font);
+ outlineColorF.A = outlineColorF.A * _TextColor.A;
+
+ using (var path = new GraphicsPath())
+ using (var pen = new Pen(outlineColorF.AsColor(), outlineSize / 2))
+ {
+ pen.LineJoin = LineJoin.Round;
+ pen.Alignment = PenAlignment.Outset;
+ float top = (bmpSize.Height - _MarginBottom - _MarginTop - maxHeight * lineCount) / 2 + _MarginTop;
+ int nextLineEl = 0;
+ for (int i = 0; i < lineCount; i++)
+ {
+ int firstEl = nextLineEl;
+ for (; nextLineEl < elements.Count; nextLineEl++)
+ {
+ if (elements[nextLineEl].Line > i)
+ break;
+ }
+
+ string line = elements.GetRange(firstEl, nextLineEl - firstEl).Aggregate("", (current, element) => current + element.Text);
+ float left;
+ if (lineCount == 1 || (i == 1 && lineCount == 3))
+ {
+ //Center Text if this is the only line or the middle line
+ float width = _GetWidth(elements, firstEl, nextLineEl - 1);
+ left = (bmpSize.Width - _MarginLeft - _MarginRight - width) / 2 + _MarginLeft;
+ }
+ else if (i == lineCount - 1)
+ {
+ //Place last line at right
+ float width = _GetWidth(elements, firstEl, nextLineEl - 1);
+ left = bmpSize.Width - width - _MarginRight;
+ }
+ else
+ left = _MarginLeft;
+ //g.DrawString(line, fo, new SolidBrush(_TextColor.AsColor()), left, top, StringFormat.GenericTypographic);
+ path.AddString(line, fo.FontFamily, (int)fo.Style, emSize, new PointF(left, top), StringFormat.GenericTypographic);
+ top += maxHeight + _LineSpace;
+ }
+ g.DrawPath(pen, path);
+ g.FillPath(new SolidBrush(_TextColor.AsColor()), path);
+ }
+ }
+
+ public Bitmap GetCover(string text, string firstCoverPath)
+ {
+ if (!_Valid)
+ return null;
+ text = CLanguage.Translate(_Theme.Text.Text.Replace("%TEXT%", text));
+ using (Bitmap bmpImage = new Bitmap(_Image))
+ {
+ Bitmap bmp = new Bitmap(bmpImage.Width, bmpImage.Height, PixelFormat.Format32bppArgb);
+ try
+ {
+ using (Graphics g = Graphics.FromImage(bmp))
+ {
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.InterpolationMode = InterpolationMode.HighQualityBicubic;
+ g.TextRenderingHint = TextRenderingHint.AntiAlias;
+
+ _DrawBackground(g, bmpImage, firstCoverPath);
+
+ if (text != "")
+ {
+ CFont font = new CFont(_Theme.Text.Font);
+ Font fo = CFonts.GetSystemFont(font);
+ IEnumerable textParts = _SplitText(text);
+ List elements = textParts.Select(line => new CTextElement(line, g, fo)).ToList();
+ float factor = _DistributeText(elements, bmp.Width, bmp.Height);
+ foreach (CTextElement element in elements)
+ element.AdjustSize(factor);
+ font.Height *= factor / (1f + CFonts.GetOutlineSize(font)); //Adjust for outline size
+ _DrawText(g, bmp.GetSize(), font, elements);
+ }
+ }
+ return bmp;
+ }
+ catch (Exception)
+ {
+ bmp.Dispose();
+ }
+ }
+ return null;
+ }
+
+ ///
+ /// Distributes the text among max. 3 lines maximizing the height of the line
+ /// Sets the Line field in the elements
+ ///
+ /// Text with set Width and Height
+ /// Image Width
+ /// Image Height
+ /// Factor for resizing the text (Maximizing this factor means maximizing the height)
+ private float _DistributeText(List elements, int width, int height)
+ {
+ int availableWidth = width - _MarginLeft - _MarginRight;
+ int availableHeight = height - _MarginTop - _MarginBottom;
+
+ float textHeight = elements.Select(el => el.Height).Max();
+
+ //Try 1 line:
+ float textWidth = _GetWidth(elements, 0);
+ int maxHeight = Math.Min(availableHeight, (int)_Theme.Text.Font.Size);
+ float factorH = maxHeight / textHeight;
+ float factorW = availableWidth / textWidth;
+ if (factorH <= factorW)
+ return factorH; //Limited by Height
+ float factor1 = factorW;
+
+ //Try 2 lines
+ if (elements.Count == 1)
+ {
+ //Only 1 element -> 1 line
+ return factor1;
+ }
+ availableWidth -= _Theme.Text.Indent;
+ maxHeight = Math.Min(availableHeight / 2 - _LineSpace, (int)_Theme.Text.Font.Size);
+ factorH = maxHeight / textHeight;
+ if (factorH <= factor1)
+ return factor1; //Cannot get any bigger with more lines
+ int splitEl = _GetSplitElement(elements, textWidth / 2);
+ Debug.Assert(splitEl >= 0 && splitEl < elements.Count - 1);
+ float width1 = _GetWidth(elements, 0, splitEl);
+ float width2 = _GetWidth(elements, splitEl + 1);
+ factorW = availableWidth / Math.Max(width1, width2);
+ if (factorH <= factorW)
+ {
+ // Assertion: factorH>factor1 (check above) && factorH<=factorW --> Min(factorH,factorW)>factor 1
+ // but for 2 lines it is limited by height
+ // --> Use 2 lines
+ _SetLine(elements, splitEl + 1, elements.Count - 1, 1);
+ return factorH;
+ }
+ // factor2 < factorH && factorH>factor1
+ float factor2 = factorW;
+
+ //Try 3 lines
+ maxHeight = Math.Min(availableHeight / 3 - 2 * _LineSpace, (int)_Theme.Text.Font.Size);
+ factorH = maxHeight / textHeight;
+ if (elements.Count == 2 || factorH <= Math.Max(factor1, factor2))
+ {
+ //Only 2 elements or cannot get any bigger
+ if (factor2 <= factor1)
+ return factor1;
+ _SetLine(elements, splitEl + 1, elements.Count - 1, 1);
+ return factor2;
+ }
+ int splitEl21 = _GetSplitElement(elements, textWidth / 3, false);
+ int splitEl22 = _GetSplitElement(elements, textWidth / 3, true, splitEl21 + 1);
+ Debug.Assert(splitEl21 >= 0 && splitEl21 < splitEl22 && splitEl22 < elements.Count - 1);
+ float width21 = _GetWidth(elements, 0, splitEl21);
+ float width22 = _GetWidth(elements, splitEl21 + 1, splitEl22);
+ float width23 = _GetWidth(elements, splitEl22 + 1);
+ factorW = availableWidth / Math.Max(Math.Max(width21, width22), width23);
+ float factor3 = Math.Min(factorH, factorW);
+ if (factor3 > Math.Max(factor1, factor2))
+ {
+ _SetLine(elements, splitEl21 + 1, splitEl22, 1);
+ _SetLine(elements, splitEl22 + 1, elements.Count - 1, 2);
+ return factor3;
+ }
+ if (factor2 > factor1)
+ {
+ _SetLine(elements, splitEl + 1, elements.Count - 1, 1);
+ return factor2;
+ }
+ return factor1;
+ }
+
+ ///
+ /// Returns the width of the elements with index from start to end of the list (inclusive) if they are put on 1 line
+ ///
+ ///
+ ///
+ ///
+ private static float _GetWidth(List list, int start)
+ {
+ return _GetWidth(list, start, list.Count - 1);
+ }
+
+ ///
+ /// Returns the width of the elements with index from start to end (inclusive) if they are put on 1 line
+ ///
+ ///
+ ///
+ ///
+ ///
+ private static float _GetWidth(List list, int start, int end)
+ {
+ if (start < 0)
+ start = 0;
+ if (end >= list.Count)
+ end = list.Count - 1;
+ if (start > end)
+ return 0f;
+ float width = list.GetRange(start, end - start).Select(el => el.Width).Sum();
+ return width + list[end].WidthTrimmed;
+ }
+
+ private static void _SetLine(List list, int start, int end, int line)
+ {
+ for (int i = start; i <= end; i++)
+ list[i].Line = line;
+ }
+
+ ///
+ /// Find the element after which to split the line
+ ///
+ /// List with elements, width must be set
+ /// The requested line width
+ /// Split on one point or two
+ /// First element on line
+ /// Index of element AFTER which to split
+ private static int _GetSplitElement(List elements, float requestedWidth, bool singleSplit = true, int startElement = 0)
+ {
+ //Assert we have enough elements
+ Debug.Assert(singleSplit && elements.Count - startElement >= 2 || !singleSplit && elements.Count - startElement >= 3);
+ float curWidth = 0f;
+ int splitEl;
+ for (splitEl = startElement; splitEl < elements.Count; splitEl++)
+ {
+ curWidth += elements[splitEl].Width;
+ if (curWidth >= requestedWidth)
+ break;
+ }
+
+ // At this point we can either keep splitEl on this line for move it to the next line
+ // ==> line with splitEl is to long, without it is to short. so find the best option
+ // Check if line starts or ends with a long word, than put that on a single line
+ if (splitEl == startElement)
+ return splitEl;
+ // These 2 conditions also cover if the text fits on 1 line
+ if (!singleSplit && splitEl >= elements.Count - 2)
+ return elements.Count - 3; // Make sure we have 2 elements left if in multi split mode!
+ if (splitEl >= elements.Count - 1)
+ return elements.Count - 2; // Make sure we have 1 element left!
+
+ float diffWith = curWidth - requestedWidth;
+ float diffWithout = requestedWidth - (curWidth - elements[splitEl].Width);
+ if (!singleSplit)
+ {
+ // If we split in 3 lines, add the error of the next 2 lines to the current error for both cases
+ int splitEl2 = _GetSplitElement(elements, requestedWidth, true, splitEl + 1);
+ int splitEl3 = _GetSplitElement(elements, requestedWidth, true, splitEl);
+ diffWith += Math.Abs(requestedWidth - _GetWidth(elements, splitEl + 1, splitEl2)) + Math.Abs(requestedWidth - _GetWidth(elements, splitEl2 + 1));
+ diffWithout += Math.Abs(requestedWidth - _GetWidth(elements, splitEl, splitEl3)) + Math.Abs(requestedWidth - _GetWidth(elements, splitEl3 + 1));
+ }
+ float diff = diffWith - diffWithout;
+ //Differences below this value are considered acceptable
+ float equalDist = requestedWidth * 0.025f;
+ if (diff > equalDist)
+ return splitEl - 1; // width error with element is much higher than without -> put element on next line
+ if (diff < -equalDist)
+ return splitEl; // width error with element is much less than without -> keep element on line
+
+ //The real split would be somewhere in the middle of the element so we can move it to either line
+ string tmp = elements[splitEl].Text.TrimEnd(null);
+ char lastCharWith = tmp[tmp.Length - 1];
+ tmp = elements[splitEl - 1].Text.TrimEnd(null);
+ char lastCharWithout = tmp[tmp.Length - 1];
+ //Check if last chars are special chars
+ if (Char.IsLetterOrDigit(lastCharWith))
+ {
+ if (Char.IsLetterOrDigit(lastCharWithout))
+ return startElement == 0 ? splitEl : splitEl - 1; //Both are alphanumeric, favor longer first lines but shorter middle lines
+ return splitEl - 1; //Split after non-alphanumeric char
+ }
+ if (Char.IsLetterOrDigit(lastCharWithout))
+ return splitEl; //Split after non-alphanumeric char
+
+ int indexWith = Array.IndexOf(_SplitCharPreferences, lastCharWith);
+ int indexWithout = Array.IndexOf(_SplitCharPreferences, lastCharWithout);
+ if (indexWith <= indexWithout)
+ return startElement == 0 ? splitEl : splitEl - 1; //favor longer first lines but shorter middle lines
+ return splitEl - 1;
+ }
+
+ ///
+ /// Split the text in parts that can then be distributet among the lines
+ ///
+ ///
+ ///
+ private static IEnumerable _SplitText(string text)
+ {
+ Debug.Assert(!String.IsNullOrWhiteSpace(text));
+
+ text = text.Trim().TrimMultipleWs();
+ List lines = new List();
+ if (text.Length == 1)
+ {
+ lines.Add(text);
+ return lines;
+ }
+ //Split the text on non-letter chars
+ int curStart = 0;
+ for (int i = 1; i < text.Length - 1; i++)
+ {
+ if ((Array.IndexOf(_SplitCharAfter, text[i]) >= 0 && (Char.IsLetterOrDigit(text, i + 1) || Array.IndexOf(_SplitCharBefore, text[i + 1]) >= 0)) ||
+ (Char.IsLetterOrDigit(text, i) && Array.IndexOf(_SplitCharBefore, text[i + 1]) >= 0))
+ {
+ lines.Add(text.Substring(curStart, i - curStart + 1));
+ curStart = ++i;
+ }
+ }
+ //Add the rest
+ lines.Add(text.Substring(curStart));
+
+ //Check for initials (like J. R.R. Tolkien) and join them
+ curStart = -1;
+ string curText = "";
+ for (int i = 0; i < lines.Count; i++)
+ {
+ string part = lines[i].Trim();
+ if (part.Length == 2 && part[1] == '.')
+ {
+ //Initials found, continue or start new
+ if (curStart < 0)
+ curStart = i;
+ curText += lines[i];
+ }
+ else if (curStart >= 0)
+ {
+ //Initials end
+ if (curStart < i - 1)
+ {
+ //More than 1 part
+ lines[curStart] = curText;
+ lines.RemoveRange(curStart + 1, i - curStart - 1);
+ i = curStart;
+ }
+ curText = "";
+ curStart = -1;
+ }
+ }
+ //Handle last part
+ if (curStart >= 0)
+ {
+ //Initials end
+ if (curStart < lines.Count - 1)
+ {
+ //More than 1 part
+ lines[curStart] = curText;
+ lines.RemoveRange(curStart + 1, lines.Count - curStart - 1);
+ }
+ }
+
+ // Remove single char lines
+ for (int i = 0; i < lines.Count; i++)
+ {
+ string part = lines[i];
+ if (part.Trim().Length == 1)
+ {
+ lines.RemoveAt(i);
+ if (i == 0)
+ lines[0] = part + lines[0];
+ else
+ {
+ lines[i - 1] += part;
+ i--;
+ }
+ }
+ }
+ return lines;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CCursor.cs b/Vocaluxe/Base/CCursor.cs
index 46a6e2b1..fe8629d8 100644
--- a/Vocaluxe/Base/CCursor.cs
+++ b/Vocaluxe/Base/CCursor.cs
@@ -18,6 +18,7 @@
using System;
using System.Diagnostics;
using System.Drawing;
+using Vocaluxe.Base.ThemeSystem;
using VocaluxeLib;
using VocaluxeLib.Draw;
@@ -27,7 +28,7 @@ namespace Vocaluxe.Base
{
private int _MouseMoveDiffMin = CSettings.MouseMoveDiffMinActive;
private CFading _Fading;
- private CTexture _Cursor;
+ private CTextureRef _Cursor;
private Point _LastDiffPos;
private readonly Stopwatch _Movetimer = new Stopwatch();
@@ -84,28 +85,28 @@ namespace Vocaluxe.Base
_Cursor.Rect.Y = y;
}
- public void LoadTextures()
+ public void LoadSkin()
{
- _Cursor = CDraw.AddTexture(CTheme.GetSkinFilePath(CTheme.Cursor.SkinName, -1));
+ SThemeCursor theme = CThemes.GetCursorTheme();
+ _Cursor = CDraw.CopyTexture(CThemes.GetSkinTexture(theme.SkinName, -1));
- _Cursor.Color = !String.IsNullOrEmpty(CTheme.Cursor.Color)
- ? CTheme.GetColor(CTheme.Cursor.Color, -1) : new SColorF(CTheme.Cursor.R, CTheme.Cursor.G, CTheme.Cursor.B, CTheme.Cursor.A);
- _Cursor.Rect.W = CTheme.Cursor.W;
- _Cursor.Rect.H = CTheme.Cursor.H;
+ theme.Color.Get(-1, out _Cursor.Color);
+ _Cursor.Rect.W = theme.W;
+ _Cursor.Rect.H = theme.H;
_Cursor.Rect.Z = CSettings.ZNear;
}
- public void UnloadTextures()
+ public void UnloadSkin()
{
CDraw.RemoveTexture(ref _Cursor);
}
- public void ReloadTextures()
+ public void ReloadSkin()
{
int x = X;
int y = Y;
- UnloadTextures();
- LoadTextures();
+ UnloadSkin();
+ LoadSkin();
UpdatePosition(x, y);
}
diff --git a/Vocaluxe/Base/CDataBase.cs b/Vocaluxe/Base/CDataBase.cs
index 6297433e..a3e6397d 100644
--- a/Vocaluxe/Base/CDataBase.cs
+++ b/Vocaluxe/Base/CDataBase.cs
@@ -93,7 +93,7 @@ namespace Vocaluxe.Base
_HighscoreDB.IncreaseSongCounter(dataBaseSongID);
}
- public static bool GetCover(string fileName, ref CTexture tex, int maxSize)
+ public static bool GetCover(string fileName, ref CTextureRef tex, int maxSize)
{
return _CoverDB.GetCover(fileName, ref tex, maxSize);
}
@@ -103,7 +103,7 @@ namespace Vocaluxe.Base
_CoverDB.CommitCovers();
}
- public static bool GetCreditsRessource(string fileName, ref CTexture tex)
+ public static bool GetCreditsRessource(string fileName, ref CTextureRef tex)
{
return _ResourceDB.GetCreditsRessource(fileName, ref tex);
}
diff --git a/Vocaluxe/Base/CDraw.cs b/Vocaluxe/Base/CDraw.cs
index f109645b..7b3b58d1 100644
--- a/Vocaluxe/Base/CDraw.cs
+++ b/Vocaluxe/Base/CDraw.cs
@@ -20,7 +20,6 @@ using System.Drawing;
using Vocaluxe.Lib.Draw;
using VocaluxeLib;
using VocaluxeLib.Draw;
-using VocaluxeLib.Menu;
namespace Vocaluxe.Base
{
@@ -28,11 +27,15 @@ namespace Vocaluxe.Base
{
private static IDraw _Draw;
+ ///
+ /// Initializes the Driver selected in the config
+ ///
+ ///
public static bool Init()
{
if (_Draw != null)
return false;
- switch (CConfig.Renderer)
+ switch (CConfig.Config.Graphics.Renderer)
{
case ERenderer.TR_CONFIG_SOFTWARE:
_Draw = new CDrawWinForm();
@@ -74,158 +77,327 @@ namespace Vocaluxe.Base
return _Draw.Init();
}
+ ///
+ /// Has to be called to start rendering
+ /// Will only return if program is closed
+ /// Also inits the first screen
+ ///
public static void MainLoop()
{
CGraphics.InitFirstScreen();
_Draw.MainLoop();
}
- public static void Unload()
+ ///
+ /// Unloads the current driver, e.g. to switch to another one
+ ///
+ public static void Close()
{
if (_Draw != null)
{
- _Draw.Unload();
+ _Draw.Close();
_Draw = null;
}
}
+ ///
+ /// Gets the width of the rendering area
+ ///
+ ///
public static int GetScreenWidth()
{
return _Draw.GetScreenWidth();
}
+ ///
+ /// Gets the height of the rendering area
+ ///
+ ///
public static int GetScreenHeight()
{
return _Draw.GetScreenHeight();
}
- public static void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2)
- {
- _Draw.DrawLine(a, r, g, b, w, x1, y1, x2, y2);
- }
-
- public static void DrawRect(SColorF color, SRectF rect, float thickness)
- {
- if (thickness <= 0f)
- return;
-
- _Draw.DrawColor(color, new SRectF(rect.X - thickness / 2, rect.Y - thickness / 2, rect.W + thickness, thickness, rect.Z));
- _Draw.DrawColor(color, new SRectF(rect.X - thickness / 2, rect.Y + rect.H - thickness / 2, rect.W + thickness, thickness, rect.Z));
- _Draw.DrawColor(color, new SRectF(rect.X - thickness / 2, rect.Y - thickness / 2, thickness, rect.H + thickness, rect.Z));
- _Draw.DrawColor(color, new SRectF(rect.X + rect.W - thickness / 2, rect.Y - thickness / 2, thickness, rect.H + thickness, rect.Z));
- }
-
- public static void DrawColor(SColorF color, SRectF rect)
- {
- _Draw.DrawColor(color, rect);
- }
-
- public static void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
- {
- _Draw.DrawColorReflection(color, rect, space, height);
- }
-
- public static void ClearScreen()
- {
- _Draw.ClearScreen();
- }
-
- public static CTexture CopyScreen()
- {
- return _Draw.CopyScreen();
- }
-
- public static void CopyScreen(ref CTexture texture)
- {
- _Draw.CopyScreen(ref texture);
- }
-
+ ///
+ /// Takes a screenshot and saves it to the Screenshot folder
+ ///
public static void MakeScreenShot()
{
_Draw.MakeScreenShot();
}
- public static CTexture AddTexture(Bitmap bitmap)
+ ///
+ /// Gets the current screen content as a texture
+ ///
+ ///
+ public static CTextureRef CopyScreen()
+ {
+ return _Draw.CopyScreen();
+ }
+
+ ///
+ /// Gets the current screen content updating the given texture
+ ///
+ ///
+ public static void CopyScreen(ref CTextureRef texture)
+ {
+ _Draw.CopyScreen(ref texture);
+ }
+
+ ///
+ /// Adds a texture from a Bitmap and returns a reference to it
+ /// Must be called from main thread!
+ ///
+ ///
+ /// Reference to texture
+ public static CTextureRef AddTexture(Bitmap bitmap)
{
return _Draw.AddTexture(bitmap);
}
- public static CTexture AddTexture(string texturePath)
+ ///
+ /// Adds a texture from an image file given by its file path
+ /// Must be called from main thread!
+ ///
+ ///
+ /// Reference to texture or null on error
+ public static CTextureRef AddTexture(string texturePath)
{
return _Draw.AddTexture(texturePath);
}
- public static CTexture AddTexture(int w, int h, byte[] data)
+ ///
+ /// Adds a texture from a byte array
+ /// Must be called from main thread!
+ ///
+ /// Width of the image
+ /// Height of the image
+ /// Array of 4 byte values for each pixel
+ /// Reference to texture
+ public static CTextureRef AddTexture(int w, int h, byte[] data)
{
return _Draw.AddTexture(w, h, data);
}
- public static CTexture EnqueueTexture(int w, int h, byte[] data)
+ ///
+ /// Requests aadding a texture from a byte array
+ /// Use this if you add textures from another thread or don't need it immediatelly
+ ///
+ /// Width of the image
+ /// Height of the image
+ /// Array of 4 byte values for each pixel
+ /// Reference to texture
+ public static CTextureRef EnqueueTexture(int w, int h, byte[] data)
{
return _Draw.EnqueueTexture(w, h, data);
}
- public static bool UpdateTexture(CTexture texture, int w, int h, byte[] data)
+ ///
+ /// Requests adding a texture from a bitmap
+ /// Use this if you add textures from another thread or don't need it immediatelly
+ ///
+ /// Bitmap to add, gets disposed after adding!
+ /// Reference to texture
+ public static CTextureRef EnqueueTexture(Bitmap bmp)
{
- return _Draw.UpdateTexture(texture, w, h, data);
+ return _Draw.EnqueueTexture(bmp);
}
- public static bool UpdateOrAddTexture(ref CTexture texture, int w, int h, byte[] data)
+ ///
+ /// Requests adding a texture from a file
+ /// Use this if you add textures from another thread or don't need it immediatelly
+ ///
+ /// Full path to the image file
+ /// Reference to texture
+ public static CTextureRef EnqueueTexture(String texturePath)
{
- return _Draw.UpdateOrAddTexture(ref texture, w, h, data);
+ return _Draw.EnqueueTexture(texturePath);
}
- public static void RemoveTexture(ref CTexture texture)
+ ///
+ /// Requests updating a texture from a bitmap
+ /// Use this if you add textures from another thread or don't need it immediatelly
+ /// Bitmap is freed after use
+ ///
+ /// Reference to the texture to update
+ ///
+ public static void EnqueueTextureUpdate(CTextureRef textureRef, Bitmap bmp)
{
- _Draw.RemoveTexture(ref texture);
+ _Draw.EnqueueTextureUpdate(textureRef, bmp);
}
- public static void DrawTexture(CTexture texture)
+ ///
+ /// Creates a copy of the texture
+ /// Updates to the copy do not affect the original texture
+ ///
+ /// Original texture reference
+ /// New texture reference of the copy
+ public static CTextureRef CopyTexture(CTextureRef textureRef)
{
- _Draw.DrawTexture(texture);
+ return _Draw.CopyTexture(textureRef);
}
- public static void DrawTexture(CTexture texture, SRectF rect)
+ ///
+ /// Updates a texture, filling it with the new data
+ ///
+ ///
+ /// Width of the image
+ /// Height of the image
+ /// Array of 4 byte values for each pixel
+ public static void UpdateTexture(CTextureRef textureRef, int w, int h, byte[] data)
{
- _Draw.DrawTexture(texture, rect);
+ _Draw.UpdateTexture(textureRef, w, h, data);
}
- public static void DrawTexture(CTexture texture, SRectF rect, SColorF color, bool mirrored = false)
+ ///
+ /// Updates a texture, filling it with the new data from the bitmap
+ ///
+ ///
+ ///
+ public static void UpdateTexture(CTextureRef textureRef, Bitmap bmp)
{
- _Draw.DrawTexture(texture, rect, color, mirrored);
+ _Draw.UpdateTexture(textureRef, bmp);
}
- public static void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
+ ///
+ /// Removes a texture from the VRAM and sets it to null to avoid accidential usage
+ /// Note: You can also use its Dispose method to do the same as this gets automaticly called from the Dispose method and destructor of a texture reference
+ ///
+ ///
+ public static void RemoveTexture(ref CTextureRef texture)
{
- _Draw.DrawTexture(texture, rect, color, bounds, mirrored);
- }
-
- public static void DrawTexture(CTexture texture, SRectF rect, SColorF color, float begin, float end)
- {
- _Draw.DrawTexture(texture, rect, color, begin, end);
- }
-
- public static void DrawTexture(CStatic staticBounds, CTexture texture, EAspect aspect)
- {
- if (texture == null)
- return;
-
- var bounds = new RectangleF(staticBounds.Rect.X, staticBounds.Rect.Y, staticBounds.Rect.W, staticBounds.Rect.H);
- RectangleF rect;
-
- CHelper.SetRect(bounds, out rect, texture.OrigAspect, aspect);
- DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, staticBounds.Rect.Z),
- texture.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f));
- }
-
- public static void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height)
- {
- _Draw.DrawTextureReflection(texture, rect, color, bounds, space, height);
+ // Disposed textures call this, possibly at program end!
+ if (_Draw != null)
+ _Draw.RemoveTexture(ref texture);
}
+ ///
+ /// Returns the number of textures in the VRAM (textures might get reused so this might not be the actual number of textures in use)
+ ///
+ ///
public static int TextureCount()
{
return _Draw.GetTextureCount();
}
+
+ ///
+ /// Draws a simple (filled) rectangle with the given color
+ ///
+ ///
+ ///
+ public static void DrawRect(SColorF color, SRectF rect)
+ {
+ _Draw.DrawRect(color, rect);
+ }
+
+ ///
+ /// Draws the reflection of a filled rectangle with the given color
+ ///
+ ///
+ /// (Original) rectangle to draw the reflection for
+ /// Spacing between the rect and the reflection
+ /// Height of the reflection
+ public static void DrawRectReflection(SColorF color, SRectF rect, float space, float height)
+ {
+ _Draw.DrawRectReflection(color, rect, space, height);
+ }
+
+ ///
+ /// Draws a texture at its position and with its color
+ ///
+ /// The texture to be drawn
+ public static void DrawTexture(CTextureRef texture)
+ {
+ DrawTexture(texture, texture.Rect);
+ }
+
+ ///
+ /// Draws a texture with its color at the given position
+ ///
+ /// The texture to be drawn
+ /// A rectangle with the destination coordinates
+ public static void DrawTexture(CTextureRef textureRef, SRectF rect)
+ {
+ DrawTexture(textureRef, rect, textureRef.Color);
+ }
+
+ ///
+ /// Draws a texture at the given position with the given color
+ ///
+ ///
+ ///
+ ///
+ /// True to mirror the texture on the y axis
+ public static void DrawTexture(CTextureRef textureRef, SRectF rect, SColorF color, bool mirrored = false)
+ {
+ _Draw.DrawTexture(textureRef, rect, color, mirrored);
+ }
+
+ ///
+ /// Draws a texture at the given position with the given color
+ ///
+ ///
+ ///
+ ///
+ /// Bounds to draw the texture in (rest gets cropped off)
+ /// True to mirror the texture on the y axis
+ public static void DrawTexture(CTextureRef textureRef, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
+ {
+ _Draw.DrawTexture(textureRef, rect, color, bounds, mirrored);
+ }
+
+ ///
+ /// Draws a part of a texture at the given position with the given color
+ ///
+ ///
+ ///
+ ///
+ /// Normalized start x-coordinate (0..1)
+ /// Normalized end x-coordinate (0..1)
+ public static void DrawTexture(CTextureRef textureRef, SRectF rect, SColorF color, float begin, float end)
+ {
+ _Draw.DrawTexture(textureRef, rect, color, begin, end);
+ }
+
+ ///
+ /// Draws a texture fitting it within the given bounds with the method specified by aspect
+ ///
+ ///
+ /// Where to draw the texture
+ /// How to fit a texture in the bounds if the size differs
+ public static void DrawTexture(CTextureRef textureRef, SRectF bounds, EAspect aspect)
+ {
+ DrawTexture(textureRef, bounds, aspect, textureRef.Color);
+ }
+
+ ///
+ /// Draws a texture fitting it within the given color and bounds with the method specified by aspect
+ ///
+ ///
+ /// Where to draw the texture
+ /// How to fit a texture in the bounds if the size differs
+ /// Color to use
+ public static void DrawTexture(CTextureRef textureRef, SRectF bounds, EAspect aspect, SColorF color)
+ {
+ if (textureRef == null)
+ return;
+
+ SRectF rect = CHelper.FitInBounds(bounds, textureRef.OrigAspect, aspect);
+ DrawTexture(textureRef, rect, color);
+ }
+
+ ///
+ /// Draws the reflection of a texture at the given position and with the given color
+ ///
+ ///
+ /// (Original) rectangle to draw the reflection for
+ ///
+ ///
+ /// Spacing between the rect and the reflection
+ /// Height of the reflection
+ public static void DrawTextureReflection(CTextureRef textureRef, SRectF rect, SColorF color, SRectF bounds, float space, float height)
+ {
+ _Draw.DrawTextureReflection(textureRef, rect, color, bounds, space, height);
+ }
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CGame.cs b/Vocaluxe/Base/CGame.cs
index 46df686f..187ac2bf 100644
--- a/Vocaluxe/Base/CGame.cs
+++ b/Vocaluxe/Base/CGame.cs
@@ -30,7 +30,7 @@ namespace Vocaluxe.Base
static class CGame
{
private static ISongQueue _SongQueue;
- private static int _NumPlayer = CConfig.NumPlayer;
+ private static int _NumPlayers = CConfig.Config.Game.NumPlayers;
///
/// Last beat that has been evaluated
@@ -177,16 +177,21 @@ namespace Vocaluxe.Base
get { return _SongQueue.GetNumSongs(); }
}
- public static int NumPlayer
+ public static int NumPlayers
{
- get { return _NumPlayer; }
+ get { return _NumPlayers; }
set
{
if (value > 0 && value <= CSettings.MaxNumPlayer)
- _NumPlayer = value;
+ _NumPlayers = value;
}
}
+ public static void GotoNameSelection()
+ {
+ CGraphics.FadeTo(EScreen.Names);
+ }
+
public static void ResetPlayer()
{
for (int i = 0; i < Players.Length; i++)
@@ -222,15 +227,15 @@ namespace Vocaluxe.Base
CurrentBeatF = b;
- MidRecordedBeat = -0.5f + GetBeatFromTime(time, song.BPM, song.Gap + CConfig.MicDelay / 1000f);
+ MidRecordedBeat = -0.5f + GetBeatFromTime(time, song.BPM, song.Gap + CConfig.Config.Record.MicDelay / 1000f);
- for (int p = 0; p < _NumPlayer; p++)
+ for (int p = 0; p < _NumPlayers; p++)
CRecord.AnalyzeBuffer(p);
if (_LastEvalBeat >= RecordedBeat)
return;
- for (int p = 0; p < _NumPlayer; p++)
+ for (int p = 0; p < _NumPlayers; p++)
{
for (int beat = _LastEvalBeat + 1; beat <= RecordedBeat; beat++)
{
@@ -364,20 +369,20 @@ namespace Vocaluxe.Base
_LastEvalBeat = RecordedBeat;
}
- public static void ResetToLastLine(int soundStream, int vidStream)
+ public static void ResetToLastLine(int soundStream, CVideoStream vidStream)
{
float[] time = _GetLastSungLineStart();
ResetToTime(time[0], time[1], soundStream, vidStream);
}
- public static void ResetToTime(float time, float nextStart, int soundStream, int vidStream)
+ public static void ResetToTime(float time, float nextStart, int soundStream, CVideoStream vidStream)
{
if (time < 0)
time = 0;
CurrentBeatF = GetBeatFromTime(time, GetSong().BPM, GetSong().Gap);
- for (int p = 0; p < _NumPlayer; p++)
+ for (int p = 0; p < _NumPlayers; p++)
{
Players[p].Points = 0;
Players[p].PointsGoldenNotes = 0;
diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs
index 69bf1c51..5d4ea1c6 100644
--- a/Vocaluxe/Base/CGraphics.cs
+++ b/Vocaluxe/Base/CGraphics.cs
@@ -21,10 +21,10 @@ using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using Vocaluxe.Base.Fonts;
+using Vocaluxe.Base.ThemeSystem;
using Vocaluxe.Screens;
using VocaluxeLib;
using VocaluxeLib.Menu;
-using VocaluxeLib.PartyModes;
namespace Vocaluxe.Base
{
@@ -32,11 +32,7 @@ namespace Vocaluxe.Base
{
private static CFading _Fading;
private static readonly CCursor _Cursor = new CCursor();
- private static float _GlobalAlpha;
- private static float _ZOffset;
- private static EScreens _CurrentScreen;
- private static EScreens _NextScreen;
private static EPopupScreens _CurrentPopupScreen;
private static readonly List _Screens = new List();
@@ -45,24 +41,20 @@ namespace Vocaluxe.Base
private static Stopwatch _VolumePopupTimer;
private static bool _CursorOverVolumeControl;
- public static float GlobalAlpha
- {
- get { return _GlobalAlpha; }
- }
+ public static float GlobalAlpha { get; private set; }
- public static float ZOffset
- {
- get { return _ZOffset; }
- }
+ public static float ZOffset { get; private set; }
- public static EScreens CurrentScreen
- {
- get { return _CurrentScreen; }
- }
+ public static IMenu CurrentScreen { get; private set; }
- public static EScreens NextScreen
+ public static IMenu NextScreen { get; private set; }
+ public static EScreen NextScreenType
{
- get { return _NextScreen; }
+ get
+ {
+ int id = _Screens.IndexOf(NextScreen);
+ return (EScreen)id;
+ }
}
#region public methods
@@ -90,7 +82,8 @@ namespace Vocaluxe.Base
_Screens.Add(new CScreenNames());
_Screens.Add(new CScreenCredits());
_Screens.Add(new CScreenParty());
- _Screens.Add(new CScreenPartyDummy());
+
+ Debug.Assert(_Screens.Count == (int)EScreen.CountEntry, "Screen list and screens enum do not match");
_PopupScreens.Add(new CPopupScreenPlayerControl());
_PopupScreens.Add(new CPopupScreenVolumeControl());
@@ -98,13 +91,13 @@ namespace Vocaluxe.Base
CLog.StopBenchmark("Build Screen List");
- _CurrentScreen = EScreens.ScreenLoad;
- _NextScreen = EScreens.ScreenNull;
+ CurrentScreen = _Screens[(int)EScreen.Load];
+ NextScreen = null;
_CurrentPopupScreen = EPopupScreens.NoPopup;
_VolumePopupTimer = new Stopwatch();
- _GlobalAlpha = 1f;
- _ZOffset = 0f;
+ GlobalAlpha = 1f;
+ ZOffset = 0f;
CLog.StartBenchmark("Load Theme");
LoadTheme();
@@ -113,64 +106,75 @@ namespace Vocaluxe.Base
public static void Close()
{
- if (_CurrentPopupScreen != EPopupScreens.NoPopup)
+ if (_CurrentPopupScreen != EPopupScreens.NoPopup && _PopupScreens.Count > 0)
_PopupScreens[(int)_CurrentPopupScreen].OnClose();
- _Screens[(int)_CurrentScreen].OnClose();
+ if (CurrentScreen != null)
+ CurrentScreen.OnClose();
}
public static void LoadTheme()
{
- _Cursor.LoadTextures();
+ _Cursor.LoadSkin();
for (int i = 0; i < _Screens.Count; i++)
{
- CLog.StartBenchmark("Load Theme " + Enum.GetNames(typeof(EScreens))[i]);
+ CLog.StartBenchmark("Load Theme " + Enum.GetNames(typeof(EScreen))[i]);
_Screens[i].Init();
- _Screens[i].LoadTheme(CTheme.GetThemeScreensPath(-1));
- CLog.StopBenchmark("Load Theme " + Enum.GetNames(typeof(EScreens))[i]);
+ _Screens[i].LoadTheme(CThemes.GetThemeScreensPath(_Screens[i].PartyModeID));
+ CLog.StopBenchmark("Load Theme " + Enum.GetNames(typeof(EScreen))[i]);
}
foreach (IMenu popup in _PopupScreens)
{
popup.Init();
- popup.LoadTheme(CTheme.GetThemeScreensPath(-1));
+ popup.LoadTheme(CThemes.GetThemeScreensPath(popup.PartyModeID));
}
}
public static void ReloadTheme()
{
- _Cursor.ReloadTextures();
+ _Cursor.ReloadSkin();
foreach (IMenu screen in _Screens)
- screen.ReloadTheme(CTheme.GetThemeScreensPath(-1));
+ screen.ReloadTheme(CThemes.GetThemeScreensPath(screen.PartyModeID));
foreach (IMenu popup in _PopupScreens)
- popup.ReloadTheme(CTheme.GetThemeScreensPath(-1));
+ popup.ReloadTheme(CThemes.GetThemeScreensPath(popup.PartyModeID));
+
+ CParty.ReloadTheme();
}
public static void ReloadSkin()
{
- _Cursor.ReloadTextures();
+ _Cursor.ReloadSkin();
foreach (IMenu menu in _Screens)
- menu.ReloadTextures();
+ menu.ReloadSkin();
foreach (IMenu menu in _PopupScreens)
- menu.ReloadTextures();
+ menu.ReloadSkin();
+
+ CParty.ReloadSkin();
}
public static void SaveTheme()
{
- CTheme.SaveTheme();
- foreach (IMenu screen in _Screens)
+ foreach (CMenu screen in _Screens)
+ {
+ if (screen.ThemePath == null || screen.ThemeName == "ScreenTest")
+ continue;
+
screen.SaveTheme();
+ }
foreach (IMenu popup in _PopupScreens)
popup.SaveTheme();
+
+ CParty.SaveThemes();
}
public static void InitFirstScreen()
{
- _Screens[(int)_CurrentScreen].OnShow();
- _Screens[(int)_CurrentScreen].OnShowFinish();
+ CurrentScreen.OnShow();
+ CurrentScreen.OnShowFinish();
}
public static bool UpdateGameLogic(CKeys keys, CMouse mouse)
@@ -187,9 +191,6 @@ namespace Vocaluxe.Base
CController.Update();
CProfiles.Update();
- if (CConfig.CoverLoading == ECoverLoading.TR_CONFIG_COVERLOADING_DYNAMIC && _CurrentScreen != EScreens.ScreenSing)
- CSongs.LoadCover();
-
if (CSettings.ProgramState != EProgramState.EditTheme)
{
run &= _HandleInputs(keys, mouse);
@@ -207,18 +208,20 @@ namespace Vocaluxe.Base
public static bool Draw()
{
- if (_NextScreen != EScreens.ScreenNull && _Fading == null)
+ if (NextScreen != null && _Fading == null)
{
- _Fading = new CFading(0f, 1f, CConfig.FadeTime);
+ _Fading = new CFading(0f, 1f, CConfig.Config.Graphics.FadeTime);
- if (_NextScreen == EScreens.ScreenPartyDummy)
+ if (NextScreen.PartyModeID != -1)
{
- CFonts.PartyModeID = CParty.CurrentPartyModeID;
- _Screens[(int)_NextScreen].OnShow();
+ CFonts.PartyModeID = NextScreen.PartyModeID;
+ NextScreen.OnShow();
CFonts.PartyModeID = -1;
}
else
- _Screens[(int)_NextScreen].OnShow();
+ NextScreen.OnShow();
+ if (_Cursor.IsActive)
+ NextScreen.ProcessMouseMove(_Cursor.X, _Cursor.Y);
HidePopup(EPopupScreens.PopupPlayerControl);
}
@@ -230,34 +233,27 @@ namespace Vocaluxe.Base
if (!finished)
{
- _GlobalAlpha = 1f; // -newAlpha / 100f;
- _ZOffset = CSettings.ZFar / 2;
+ GlobalAlpha = 1f;
+ ZOffset = CSettings.ZFar / 2;
+ _DrawScreen(CurrentScreen);
- _DrawScreen(_CurrentScreen);
+ GlobalAlpha = newAlpha;
+ ZOffset = 0f;
+ _DrawScreen(NextScreen);
-
- _GlobalAlpha = newAlpha;
- _ZOffset = 0f;
-
- _DrawScreen(_NextScreen);
-
- _GlobalAlpha = 1f;
+ GlobalAlpha = 1f;
}
else
{
- _Screens[(int)_CurrentScreen].OnClose();
- _CurrentScreen = _NextScreen;
- _NextScreen = EScreens.ScreenNull;
- _Screens[(int)_CurrentScreen].OnShowFinish();
- _Screens[(int)_CurrentScreen].ProcessMouseMove(_Cursor.X, _Cursor.Y);
+ _FinishScreenFading();
+ if (_Cursor.IsActive)
+ CurrentScreen.ProcessMouseMove(_Cursor.X, _Cursor.Y);
- _DrawScreen(_CurrentScreen);
-
- _Fading = null;
+ _DrawScreen(CurrentScreen);
}
}
else
- _DrawScreen(_CurrentScreen);
+ _DrawScreen(CurrentScreen);
foreach (IMenu popup in _PopupScreens)
popup.Draw();
@@ -268,33 +264,53 @@ namespace Vocaluxe.Base
return true;
}
- private static void _DrawScreen(EScreens screen)
+ private static void _FinishScreenFading()
{
- if (screen == EScreens.ScreenPartyDummy)
+ if (_Fading == null)
+ return;
+ Debug.Assert(NextScreen != null);
+ CurrentScreen.OnClose();
+ CurrentScreen = NextScreen;
+ NextScreen = null;
+ CurrentScreen.OnShowFinish();
+ CSound.SetGlobalVolume(CConfig.GetVolumeByType(CurrentScreen.CurrentMusicType));
+ _Fading = null;
+ }
+
+ private static void _DrawScreen(IMenu screen)
+ {
+ if (screen.PartyModeID != -1)
{
- CFonts.PartyModeID = CParty.CurrentPartyModeID;
- _Screens[(int)screen].Draw();
+ CFonts.PartyModeID = screen.PartyModeID;
+ screen.Draw();
CFonts.PartyModeID = -1;
}
else
- _Screens[(int)screen].Draw();
+ screen.Draw();
}
- public static void FadeTo(EScreens screen)
+ public static IMenu GetScreen(EScreen screen)
{
- if (screen == EScreens.ScreenPartyDummy)
- {
- EScreens alt;
- CMenu scr = CParty.GetNextPartyScreen(out alt);
- if (scr == null)
- {
- _NextScreen = alt;
- return;
- }
- _Screens[(int)EScreens.ScreenPartyDummy] = scr;
- }
+ if (screen == EScreen.Unknown || screen == EScreen.CountEntry)
+ throw new ArgumentException("Invalid screen: " + screen);
+ return _Screens[(int)screen];
+ }
- _NextScreen = screen;
+ public static void FadeTo(EScreen screen)
+ {
+ FadeTo(GetScreen(screen));
+ }
+
+ public static void FadeTo(IMenu screen)
+ {
+ if (screen == null)
+ throw new ArgumentNullException("screen");
+ Debug.Assert(NextScreen==null || NextScreen!=screen, "Don't fade to currently fading screen!");
+ if(screen==NextScreen)
+ return;
+ // Make sure the last screen change is done
+ _FinishScreenFading();
+ NextScreen = screen;
}
public static void ShowPopup(EPopupScreens popupScreen)
@@ -332,18 +348,12 @@ namespace Vocaluxe.Base
SKeyEvent inputKeyEvent = new SKeyEvent();
SMouseEvent inputMouseEvent = new SMouseEvent();
- bool popupPlayerControlAllowed = _CurrentScreen != EScreens.ScreenOptionsRecord && _CurrentScreen != EScreens.ScreenSing &&
- (_CurrentScreen != EScreens.ScreenSong ||
- (_CurrentScreen == EScreens.ScreenSong && !CSongs.IsInCategory && CConfig.Tabs == EOffOn.TR_CONFIG_ON))
- && _CurrentScreen != EScreens.ScreenCredits && !CBackgroundMusic.Disabled;
-
- bool popupVolumeControlAllowed = _CurrentScreen != EScreens.ScreenCredits && _CurrentScreen != EScreens.ScreenOptionsRecord;
+ bool popupPlayerControlAllowed = CurrentScreen.CurrentMusicType == EMusicType.Background && !CBackgroundMusic.Disabled;
+ bool popupVolumeControlAllowed = CurrentScreen.CurrentMusicType != EMusicType.None;
//Hide volume control for bg-music if bg-music is disabled
- if (popupVolumeControlAllowed && (_CurrentScreen != EScreens.ScreenSong || CSongs.Category == -1)
- && _CurrentScreen != EScreens.ScreenSing && CConfig.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
+ if (popupVolumeControlAllowed && CurrentScreen.CurrentMusicType == EMusicType.Background && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
popupVolumeControlAllowed = false;
-
bool resume = true;
bool eventsAvailable;
bool inputEventsAvailable = CController.PollKeyEvent(ref inputKeyEvent);
@@ -353,32 +363,56 @@ namespace Vocaluxe.Base
if (!eventsAvailable)
keyEvent = inputKeyEvent;
- if (keyEvent.IsArrowKey() || keyEvent.Key == Keys.NumPad0 || keyEvent.Key == Keys.D0)
+ if (keyEvent.IsArrowKey() || keyEvent.Key == Keys.NumPad0 || keyEvent.Key == Keys.D0 || keyEvent.Key == Keys.Add)
{
_Cursor.Deactivate();
- if (keyEvent.ModAlt && keyEvent.ModCtrl && keyEvent.ModShift)
+ if (keyEvent.ModAlt && keyEvent.ModCtrl)
{
switch (keyEvent.Key)
{
- case Keys.Left:
- CConfig.BorderLeft -= 1;
- CConfig.BorderRight -= 1;
- CConfig.BorderTop -= 1;
- CConfig.BorderBottom -= 1;
- break;
case Keys.Right:
- CConfig.BorderLeft += 1;
- CConfig.BorderRight += 1;
- CConfig.BorderTop += 1;
- CConfig.BorderBottom += 1;
+ if (keyEvent.ModShift)
+ CConfig.Config.Graphics.BorderLeft++;
+ else
+ CConfig.Config.Graphics.BorderRight--;
+ break;
+ case Keys.Left:
+ if (keyEvent.ModShift)
+ CConfig.Config.Graphics.BorderLeft--;
+ else
+ CConfig.Config.Graphics.BorderRight++;
+ break;
+ case Keys.Down:
+ if (keyEvent.ModShift)
+ CConfig.Config.Graphics.BorderTop++;
+ else
+ CConfig.Config.Graphics.BorderBottom--;
+ break;
+ case Keys.Up:
+ if (keyEvent.ModShift)
+ CConfig.Config.Graphics.BorderTop--;
+ else
+ CConfig.Config.Graphics.BorderBottom++;
break;
case Keys.D0:
case Keys.NumPad0:
- CConfig.BorderLeft = 0;
- CConfig.BorderRight = 0;
- CConfig.BorderTop = 0;
- CConfig.BorderBottom = 0;
+ CConfig.Config.Graphics.BorderLeft =
+ CConfig.Config.Graphics.BorderRight = CConfig.Config.Graphics.BorderTop = CConfig.Config.Graphics.BorderBottom = 0;
+ break;
+ case Keys.Add:
+ switch (CConfig.Config.Graphics.ScreenAlignment)
+ {
+ case EGeneralAlignment.Middle:
+ CConfig.Config.Graphics.ScreenAlignment = EGeneralAlignment.End;
+ break;
+ case EGeneralAlignment.End:
+ CConfig.Config.Graphics.ScreenAlignment = EGeneralAlignment.Start;
+ break;
+ default:
+ CConfig.Config.Graphics.ScreenAlignment = EGeneralAlignment.Middle;
+ break;
+ }
break;
}
CConfig.SaveConfig();
@@ -396,13 +430,13 @@ namespace Vocaluxe.Base
if (popupPlayerControlAllowed && keyEvent.Key == Keys.Tab)
{
- if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
+ if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
ShowPopup(EPopupScreens.PopupPlayerControl);
else
HidePopup(EPopupScreens.PopupPlayerControl);
}
- if (popupPlayerControlAllowed && CConfig.BackgroundMusic != EBackgroundMusicOffOn.TR_CONFIG_OFF)
+ if (popupPlayerControlAllowed && CConfig.Config.Sound.BackgroundMusic != EBackgroundMusicOffOn.TR_CONFIG_OFF)
{
if (keyEvent.Key == Keys.MediaNextTrack)
CBackgroundMusic.Next();
@@ -417,57 +451,10 @@ namespace Vocaluxe.Base
}
}
- if (popupVolumeControlAllowed)
- {
- //TODO: Handle this in the volume popup
- int diff = 0;
- if ((keyEvent.ModShift && (keyEvent.Key == Keys.Add || keyEvent.Key == Keys.PageUp)) || (keyEvent.Sender == ESender.WiiMote && keyEvent.Key == Keys.Add))
- diff = 5;
- else if ((keyEvent.ModShift && (keyEvent.Key == Keys.Subtract || keyEvent.Key == Keys.PageDown)) ||
- (keyEvent.Sender == ESender.WiiMote && keyEvent.Key == Keys.Subtract))
- diff = -5;
-
- if (diff != 0)
- {
- switch (CurrentScreen)
- {
- case EScreens.ScreenSong:
- if (CSongs.IsInCategory)
- {
- CConfig.PreviewMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
- }
- else
- {
- CConfig.BackgroundMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
- }
- break;
-
- case EScreens.ScreenSing:
- CConfig.GameMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.GameMusicVolume);
- break;
-
- default:
- CConfig.BackgroundMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
- break;
- }
- CConfig.SaveConfig();
- }
-
- if (_CurrentPopupScreen == EPopupScreens.NoPopup && diff != 0)
- {
- ShowPopup(EPopupScreens.PopupVolumeControl);
- _VolumePopupTimer.Restart();
- }
- }
-
if (keyEvent.ModShift && (keyEvent.Key == Keys.F1))
CSettings.ProgramState = EProgramState.EditTheme;
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter))
- CConfig.FullScreen = (CConfig.FullScreen == EOffOn.TR_CONFIG_ON) ? EOffOn.TR_CONFIG_OFF : EOffOn.TR_CONFIG_ON;
+ CConfig.Config.Graphics.FullScreen = (CConfig.Config.Graphics.FullScreen == EOffOn.TR_CONFIG_ON) ? EOffOn.TR_CONFIG_OFF : EOffOn.TR_CONFIG_ON;
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.P))
CDraw.MakeScreenShot();
else
@@ -476,10 +463,19 @@ namespace Vocaluxe.Base
{
bool handled = false;
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
+ {
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleInput(keyEvent);
+ if (popupVolumeControlAllowed && _CurrentPopupScreen == EPopupScreens.PopupVolumeControl && handled)
+ _VolumePopupTimer.Restart();
+ }
+ else if (popupVolumeControlAllowed && _PopupScreens[(int)EPopupScreens.PopupVolumeControl].HandleInput(keyEvent))
+ {
+ ShowPopup(EPopupScreens.PopupVolumeControl);
+ _VolumePopupTimer.Restart();
+ }
if (!handled)
- resume &= _Screens[(int)_CurrentScreen].HandleInput(keyEvent);
+ resume &= CurrentScreen.HandleInput(keyEvent);
}
}
@@ -502,7 +498,7 @@ namespace Vocaluxe.Base
bool isOverPopupPlayerControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupPlayerControl].ScreenArea, mouseEvent);
if (popupPlayerControlAllowed && isOverPopupPlayerControl)
{
- if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
+ if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
ShowPopup(EPopupScreens.PopupPlayerControl);
}
@@ -536,7 +532,7 @@ namespace Vocaluxe.Base
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleMouse(mouseEvent);
if (!handled && _Fading == null && (_Cursor.IsActive || mouseEvent.LB || mouseEvent.RB || mouseEvent.MB))
- resume &= _Screens[(int)_CurrentScreen].HandleMouse(mouseEvent);
+ resume &= CurrentScreen.HandleMouse(mouseEvent);
if (!eventsAvailable)
inputEventsAvailable = CController.PollMouseEvent(ref inputMouseEvent);
@@ -554,23 +550,23 @@ namespace Vocaluxe.Base
if (keyEvent.ModShift && (keyEvent.Key == Keys.F1))
{
CSettings.ProgramState = EProgramState.Normal;
- _Screens[(int)_CurrentScreen].NextInteraction();
+ CurrentScreen.NextElement();
}
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter))
- CConfig.FullScreen = (CConfig.FullScreen == EOffOn.TR_CONFIG_ON) ? EOffOn.TR_CONFIG_OFF : EOffOn.TR_CONFIG_ON;
+ CConfig.Config.Graphics.FullScreen = (CConfig.Config.Graphics.FullScreen == EOffOn.TR_CONFIG_ON) ? EOffOn.TR_CONFIG_OFF : EOffOn.TR_CONFIG_ON;
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.P))
CDraw.MakeScreenShot();
else
{
if (_Fading == null)
- _Screens[(int)_CurrentScreen].HandleInputThemeEditor(keyEvent);
+ CurrentScreen.HandleInputThemeEditor(keyEvent);
}
}
while (mouse.PollEvent(ref mouseEvent))
{
if (_Fading == null)
- _Screens[(int)_CurrentScreen].HandleMouseThemeEditor(mouseEvent);
+ CurrentScreen.HandleMouseThemeEditor(mouseEvent);
_UpdateMousePosition(mouseEvent.X, mouseEvent.Y);
}
@@ -595,17 +591,17 @@ namespace Vocaluxe.Base
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
_PopupScreens[(int)_CurrentPopupScreen].UpdateGame();
- return _Screens[(int)_CurrentScreen].UpdateGame();
+ return CurrentScreen.UpdateGame();
}
private static void _DrawDebugInfos()
{
- if (CConfig.DebugLevel == EDebugLevel.TR_CONFIG_OFF)
+ if (CConfig.Config.Debug.DebugLevel == EDebugLevel.TR_CONFIG_OFF)
return;
List debugOutput = new List {CTime.GetFPS().ToString("FPS: 000")};
- if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL1)
+ if (CConfig.Config.Debug.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL1)
{
debugOutput.Add(CSound.GetStreamCount().ToString(CLanguage.Translate("TR_DEBUG_AUDIO_STREAMS") + ": 00"));
debugOutput.Add(CVideo.GetNumStreams().ToString(CLanguage.Translate("TR_DEBUG_VIDEO_STREAMS") + ": 00"));
@@ -613,32 +609,31 @@ namespace Vocaluxe.Base
long memory = GC.GetTotalMemory(false);
debugOutput.Add((memory / 1000000L).ToString(CLanguage.Translate("TR_DEBUG_MEMORY") + ": 00000 MB"));
- if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL2)
+ if (CConfig.Config.Debug.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL2)
{
debugOutput.Add(CRecord.GetToneAbs(0).ToString(CLanguage.Translate("TR_DEBUG_TONE_ABS") + " P1: 00"));
debugOutput.Add(CRecord.GetMaxVolume(0).ToString(CLanguage.Translate("TR_DEBUG_MAX_VOLUME") + " P1: 0.000"));
debugOutput.Add(CRecord.GetToneAbs(1).ToString(CLanguage.Translate("TR_DEBUG_TONE_ABS") + " P2: 00"));
debugOutput.Add(CRecord.GetMaxVolume(1).ToString(CLanguage.Translate("TR_DEBUG_MAX_VOLUME") + " P2: 0.000"));
- if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL3)
+ if (CConfig.Config.Debug.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL3)
{
debugOutput.Add(CSongs.NumSongsWithCoverLoaded.ToString(CLanguage.Translate("TR_DEBUG_SONGS") + ": 00000"));
- if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL_MAX)
+ if (CConfig.Config.Debug.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL_MAX)
debugOutput.Add(_Cursor.X.ToString(CLanguage.Translate("TR_DEBUG_MOUSE") + " : (0000/") + _Cursor.Y.ToString("0000)"));
}
}
}
- CFonts.Style = EStyle.Normal;
- CFonts.SetFont("Normal");
- CFonts.Height = 25;
+ CFont font = new CFont("Normal", EStyle.Normal, 25);
SColorF gray = new SColorF(1f, 1f, 1f, 0.5f);
float y = 0;
foreach (string txt in debugOutput)
{
- RectangleF rect = new RectangleF(CSettings.RenderW - CFonts.GetTextWidth(txt), y, CFonts.GetTextWidth(txt), CFonts.GetTextHeight(txt));
- CDraw.DrawColor(gray, new SRectF(rect.X, rect.Top, rect.Width, rect.Height, CSettings.ZNear));
- CFonts.DrawText(txt, rect.X, rect.Y, CSettings.ZNear);
+ float textWidth = CFonts.GetTextWidth(txt, font);
+ RectangleF rect = new RectangleF(CSettings.RenderW - textWidth, y, textWidth, CFonts.GetTextHeight(txt, font));
+ CDraw.DrawRect(gray, new SRectF(rect.X, rect.Top, rect.Width, rect.Height, CSettings.ZNear));
+ CFonts.DrawText(txt, font, rect.X, rect.Y, CSettings.ZNear);
y += rect.Height;
}
}
diff --git a/Vocaluxe/Base/CLanguage.cs b/Vocaluxe/Base/CLanguage.cs
index a86faf0f..d6b1cbe4 100644
--- a/Vocaluxe/Base/CLanguage.cs
+++ b/Vocaluxe/Base/CLanguage.cs
@@ -20,13 +20,14 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using VocaluxeLib;
+using VocaluxeLib.Xml;
namespace Vocaluxe.Base
{
struct SLanguage
{
public string Name;
- public string LanguageFilePath;
+ public string FilePath;
public Dictionary Texts;
public List PartyModeTexts;
@@ -40,7 +41,7 @@ namespace Vocaluxe.Base
static class CLanguage
{
- private static List _Languages;
+ private static readonly List _Languages = new List();
private static int _CurrentLanguage = -1;
private static int _FallbackLanguage;
@@ -54,11 +55,6 @@ namespace Vocaluxe.Base
}
}
- public static string GetLanguageName(int lang)
- {
- return _Languages[lang].Name;
- }
-
public static IEnumerable GetLanguageNames()
{
var languages = new string[_Languages.Count];
@@ -71,8 +67,6 @@ namespace Vocaluxe.Base
public static bool Init()
{
- _Languages = new List();
-
var files = new List();
files.AddRange(CHelper.ListFiles(CSettings.FolderNameLanguages, "*.xml", true, true));
@@ -83,7 +77,7 @@ namespace Vocaluxe.Base
public static bool SetLanguage(string language)
{
- int nr = GetLanguageNr(language);
+ int nr = _GetLanguageNr(language);
if (nr != -1)
{
_CurrentLanguage = nr;
@@ -92,7 +86,7 @@ namespace Vocaluxe.Base
return false;
}
- public static int GetLanguageNr(string language)
+ private static int _GetLanguageNr(string language)
{
for (int i = 0; i < _Languages.Count; i++)
{
@@ -102,59 +96,58 @@ namespace Vocaluxe.Base
return -1;
}
- public static string Translate(string keyWord, int partyModeID = -1)
+ ///
+ /// Checks if a translation exists and returns it
+ ///
+ /// Word to translate
+ ///
+ /// Translated word or keyWord if translation does not exist
+ /// True if word was translated
+ private static bool _GetTranslation(string keyWord, int partyModeID, out string translation)
{
if (keyWord == null)
- return "Error";
-
- if (keyWord.Length < 3 || keyWord.Substring(0, 3) != "TR_")
- return keyWord;
-
- string result;
- if (partyModeID != -1)
{
- int partyModeNr = _GetPartyModeNr(partyModeID, _CurrentLanguage);
- if (partyModeNr != -1 && _Languages[_CurrentLanguage].PartyModeTexts[partyModeNr].Texts.TryGetValue(keyWord, out result))
- return result;
-
- partyModeNr = _GetPartyModeNr(partyModeID, _FallbackLanguage);
- if (partyModeNr != -1 && _Languages[_CurrentLanguage].PartyModeTexts[partyModeNr].Texts.TryGetValue(keyWord, out result))
- return result;
+ translation = "Error";
+ return false;
}
- if (_Languages[_CurrentLanguage].Texts.TryGetValue(keyWord, out result))
- return result;
- if (_Languages[_FallbackLanguage].Texts.TryGetValue(keyWord, out result))
- return result;
+ if (keyWord.Length < 3 || keyWord.Substring(0, 3) != "TR_")
+ {
+ translation = keyWord;
+ return false;
+ }
- return keyWord;
+ if (partyModeID != -1)
+ {
+ Dictionary partyModeTexts = _GetPartyModeTexts(_CurrentLanguage, partyModeID);
+ if (partyModeTexts != null && partyModeTexts.TryGetValue(keyWord, out translation))
+ return true;
+
+ partyModeTexts = _GetPartyModeTexts(_FallbackLanguage, partyModeID);
+ if (partyModeTexts != null && partyModeTexts.TryGetValue(keyWord, out translation))
+ return true;
+ }
+
+ if (_Languages[_CurrentLanguage].Texts.TryGetValue(keyWord, out translation))
+ return true;
+ if (_Languages[_FallbackLanguage].Texts.TryGetValue(keyWord, out translation))
+ return true;
+
+ translation = keyWord;
+ return false;
+ }
+
+ public static string Translate(string keyWord, int partyModeID = -1)
+ {
+ string translation;
+ _GetTranslation(keyWord, partyModeID, out translation);
+ return translation;
}
public static bool TranslationExists(string keyWord, int partyModeID = -1)
{
- if (keyWord == null)
- return false;
-
- if (keyWord.Length < 3 || keyWord.Substring(0, 3) != "TR_")
- return false;
-
- if (partyModeID != -1)
- {
- int partyModeNr = _GetPartyModeNr(partyModeID, _CurrentLanguage);
- if (partyModeNr != -1 && _Languages[_CurrentLanguage].PartyModeTexts[partyModeNr].Texts.ContainsKey(keyWord))
- return true;
-
- partyModeNr = _GetPartyModeNr(partyModeID, _FallbackLanguage);
- if (partyModeNr != -1 && _Languages[_CurrentLanguage].PartyModeTexts[partyModeNr].Texts.ContainsKey(keyWord))
- return true;
- }
-
- if (_Languages[_CurrentLanguage].Texts.ContainsKey(keyWord))
- return true;
- if (_Languages[_FallbackLanguage].Texts.ContainsKey(keyWord))
- return true;
-
- return false;
+ string translation;
+ return _GetTranslation(keyWord, partyModeID, out translation);
}
public static bool LoadPartyLanguageFiles(int partyModeID, string path)
@@ -165,89 +158,60 @@ namespace Vocaluxe.Base
return files.All(file => _LoadPartyLanguageFile(partyModeID, file));
}
- private static bool _LoadLanguageEntries(CXMLReader xmlReader, out Dictionary texts)
+ private static bool _LoadLanguageEntries(string filePath, out Dictionary texts)
{
- texts = new Dictionary();
- IEnumerable names = xmlReader.GetAttributes("//resources/string", "name");
- foreach (string name in names)
+ var deser = new CXmlDeserializer();
+ try
{
- string value;
- if (!xmlReader.GetValue("//resources/string[@name='" + name + "']", out value, ""))
- continue;
- try
- {
- texts.Add(name, value);
- }
- catch (Exception e)
- {
- CLog.LogError("Error reading language file " + xmlReader.FileName + ": " + e.Message);
- return false;
- }
+ texts = deser.Deserialize>(filePath);
+ string language;
+ if (!texts.TryGetValue("language", out language))
+ throw new Exception("'language' entry is missing");
+ }
+ catch (Exception e)
+ {
+ CLog.LogError("Error reading language file " + filePath + ": " + e.Message);
+ texts = null;
+ return false;
}
return true;
}
- private static bool _LoadPartyLanguageFile(int partyModeID, string file)
+ private static bool _LoadPartyLanguageFile(int partyModeID, string filePath)
{
- CXMLReader xmlReader = CXMLReader.OpenFile(file);
- if (xmlReader == null)
+ var lang = new SPartyLanguage {PartyModeID = partyModeID};
+
+ if (!_LoadLanguageEntries(filePath, out lang.Texts))
return false;
- string value = string.Empty;
- if (xmlReader.GetValue("//resources/string[@name='language']", out value, value))
- {
- int nr = GetLanguageNr(value);
-
- if (nr == -1)
- return true;
-
- var lang = new SPartyLanguage {PartyModeID = partyModeID};
- if (!_LoadLanguageEntries(xmlReader, out lang.Texts))
- return false;
+ int nr = _GetLanguageNr(lang.Texts["language"]);
+ if (nr >= 0)
_Languages[nr].PartyModeTexts.Add(lang);
- return true;
- }
- CLog.LogError("Error reading Party Language File " + file);
- return false;
+ return true;
}
private static void _LoadLanguageFile(string fileName)
{
- var lang = new SLanguage {LanguageFilePath = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameLanguages, fileName)};
-
- CXMLReader xmlReader = CXMLReader.OpenFile(lang.LanguageFilePath);
- if (xmlReader == null)
+ var lang = new SLanguage {FilePath = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameLanguages, fileName), PartyModeTexts = new List()};
+ if (!_LoadLanguageEntries(lang.FilePath, out lang.Texts))
return;
- string value = string.Empty;
- if (xmlReader.GetValue("//resources/string[@name='language']", out value, value))
+ lang.Name = lang.Texts["language"];
+ if (lang.Name == CSettings.FallbackLanguage)
{
- lang.Name = value;
-
- if (lang.Name == CSettings.FallbackLanguage)
- {
- _FallbackLanguage = _Languages.Count;
- if (_CurrentLanguage < 0)
- _CurrentLanguage = _FallbackLanguage;
- }
-
- lang.PartyModeTexts = new List();
-
- _LoadLanguageEntries(xmlReader, out lang.Texts);
-
- _Languages.Add(lang);
+ _FallbackLanguage = _Languages.Count;
+ if (_CurrentLanguage < 0)
+ _CurrentLanguage = _FallbackLanguage;
}
+
+ _Languages.Add(lang);
}
- private static int _GetPartyModeNr(int partyModeID, int language)
+ private static Dictionary _GetPartyModeTexts(int language, int partyModeID)
{
- for (int i = 0; i < _Languages[language].PartyModeTexts.Count; i++)
- {
- if (_Languages[language].PartyModeTexts[i].PartyModeID == partyModeID)
- return i;
- }
- return -1;
+ return
+ _Languages[language].PartyModeTexts.Where(partyLanguage => partyLanguage.PartyModeID == partyModeID).Select(partyLanguage => partyLanguage.Texts).FirstOrDefault();
}
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CLog.cs b/Vocaluxe/Base/CLog.cs
index 31d26f5a..f91b9d00 100644
--- a/Vocaluxe/Base/CLog.cs
+++ b/Vocaluxe/Base/CLog.cs
@@ -130,7 +130,7 @@ namespace Vocaluxe.Base
_Initialized = true;
}
- public static void CloseAll()
+ public static void Close()
{
if (_Initialized)
{
diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs
index 68bdb588..fab4eaa0 100644
--- a/Vocaluxe/Base/CMain.cs
+++ b/Vocaluxe/Base/CMain.cs
@@ -19,8 +19,8 @@ using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
-using System.Xml;
using Vocaluxe.Base.Fonts;
+using Vocaluxe.Base.ThemeSystem;
using VocaluxeLib;
using VocaluxeLib.Game;
using VocaluxeLib.Draw;
@@ -34,7 +34,7 @@ namespace Vocaluxe.Base
{
private static readonly IConfig _Config = new CBconfig();
private static readonly ISettings _Settings = new CBsettings();
- private static readonly ITheme _Theme = new CBtheme();
+ private static readonly IThemes _Themes = new CBtheme();
private static readonly IBackgroundMusic _BackgroundMusic = new CBbackgroundMusic();
private static readonly IDrawing _Draw = new CBdraw();
private static readonly IGraphics _Graphics = new CBGraphics();
@@ -54,7 +54,7 @@ namespace Vocaluxe.Base
public static void Init()
{
- CBase.Assign(_Config, _Settings, _Theme, _Log, _BackgroundMusic, _Draw, _Graphics, _Fonts, _Language,
+ CBase.Assign(_Config, _Settings, _Themes, _Log, _BackgroundMusic, _Draw, _Graphics, _Fonts, _Language,
_Game, _Profiles, _Record, _Songs, _Video, _Sound, _Cover, _DataBase, _Controller, _Playlist);
}
}
@@ -63,7 +63,7 @@ namespace Vocaluxe.Base
{
public EOffOn GetSaveModifiedSongs()
{
- return CConfig.SaveModifiedSongs;
+ return CConfig.Config.Debug.SaveModifiedSongs;
}
public void SetBackgroundMusicVolume(int newVolume)
@@ -71,14 +71,14 @@ namespace Vocaluxe.Base
CConfig.BackgroundMusicVolume = newVolume;
}
- public int GetBackgroundMusicVolume()
+ public int GetMusicVolume(EMusicType type)
{
- return CConfig.BackgroundMusicVolume;
+ return CConfig.GetVolumeByType(type);
}
public EBackgroundMusicOffOn GetBackgroundMusicStatus()
{
- return CConfig.BackgroundMusic;
+ return CConfig.Config.Sound.BackgroundMusic;
}
public int GetPreviewMusicVolume()
@@ -93,32 +93,32 @@ namespace Vocaluxe.Base
public EOffOn GetVideosToBackground()
{
- return CConfig.VideosToBackground;
+ return CConfig.Config.Video.VideosToBackground;
}
public EOffOn GetVideoBackgrounds()
{
- return CConfig.VideoBackgrounds;
+ return CConfig.Config.Video.VideoBackgrounds;
}
public EOffOn GetVideoPreview()
{
- return CConfig.VideoPreview;
+ return CConfig.Config.Video.VideoPreview;
}
public EOffOn GetDrawNoteLines()
{
- return CConfig.DrawNoteLines;
+ return CConfig.Config.Theme.DrawNoteLines;
}
public EOffOn GetDrawToneHelper()
{
- return CConfig.DrawToneHelper;
+ return CConfig.Config.Theme.DrawToneHelper;
}
public int GetCoverSize()
{
- return CConfig.CoverSize;
+ return CConfig.Config.Graphics.CoverSize;
}
public IEnumerable GetSongFolders()
@@ -128,17 +128,17 @@ namespace Vocaluxe.Base
public ESongSorting GetSongSorting()
{
- return CConfig.SongSorting;
+ return CConfig.Config.Game.SongSorting;
}
public EOffOn GetTabs()
{
- return CConfig.Tabs;
+ return CConfig.Config.Game.Tabs;
}
public EOffOn GetIgnoreArticles()
{
- return CConfig.IgnoreArticles;
+ return CConfig.Config.Game.IgnoreArticles;
}
public bool IsMicConfigured(int playerNr)
@@ -151,9 +151,19 @@ namespace Vocaluxe.Base
return CConfig.GetMaxNumMics();
}
- public XmlWriterSettings GetXMLSettings()
+ public bool GetLoadOldThemeFiles()
{
- return CConfig.XMLSettings;
+ return CConfig.LoadOldThemeFiles;
+ }
+
+ public void AddSongMenuListener(OnSongMenuChanged onSongMenuChanged)
+ {
+ CConfig.SongMenuChanged += onSongMenuChanged;
+ }
+
+ public void RemoveSongMenuListener(OnSongMenuChanged onSongMenuChanged)
+ {
+ CConfig.SongMenuChanged -= onSongMenuChanged;
}
}
@@ -169,6 +179,11 @@ namespace Vocaluxe.Base
return CSettings.RenderH;
}
+ public SRectF GetRenderRect()
+ {
+ return CSettings.RenderRect;
+ }
+
public bool IsTabNavigation()
{
return CSettings.TabNavigation;
@@ -255,71 +270,36 @@ namespace Vocaluxe.Base
}
}
- class CBtheme : ITheme
+ class CBtheme : IThemes
{
public string GetThemeScreensPath(int partyModeID)
{
- return CTheme.GetThemeScreensPath(partyModeID);
+ return CThemes.GetThemeScreensPath(partyModeID);
}
- public int GetSkinIndex(int partyModeID)
+ public CTextureRef GetSkinTexture(string textureName, int partyModeID)
{
- return CTheme.GetSkinIndex(partyModeID);
+ return CThemes.GetSkinTexture(textureName, partyModeID);
}
- public CTexture GetSkinTexture(string textureName, int partyModeID)
+ public CVideoStream GetSkinVideo(string videoName, int partyModeID, bool loop)
{
- return CTheme.GetSkinTexture(textureName, partyModeID);
+ return CThemes.GetSkinVideo(videoName, partyModeID, loop);
}
- public CTexture GetSkinVideoTexture(string videoName, int partyModeID)
+ public bool GetColor(string colorName, int partyModeID, out SColorF color)
{
- return CTheme.GetSkinVideoTexture(videoName, partyModeID);
- }
-
- public void SkinVideoResume(string videoName, int partyModeID)
- {
- CTheme.SkinVideoResume(videoName, partyModeID);
- }
-
- public void SkinVideoPause(string videoName, int partyModeID)
- {
- CTheme.SkinVideoPause(videoName, partyModeID);
- }
-
- public SColorF GetColor(string colorName, int partyModeID)
- {
- return CTheme.GetColor(colorName, partyModeID);
- }
-
- public bool GetColor(string colorName, int skinIndex, out SColorF color)
- {
- return CTheme.GetColor(colorName, skinIndex, out color);
+ return CThemes.GetColor(colorName, partyModeID, out color);
}
public SColorF GetPlayerColor(int playerNr)
{
- return CTheme.GetPlayerColor(playerNr);
+ return CThemes.GetPlayerColor(playerNr);
}
- public void UnloadSkins()
+ public void Reload()
{
- CTheme.UnloadSkins();
- }
-
- public void ListSkins()
- {
- CTheme.ListSkins();
- }
-
- public void LoadSkins()
- {
- CTheme.LoadSkins();
- }
-
- public void LoadTheme()
- {
- CTheme.LoadTheme();
+ CThemes.Reload();
}
}
@@ -400,7 +380,7 @@ namespace Vocaluxe.Base
CBackgroundMusic.StopPreview();
}
- public CTexture GetVideoTexture()
+ public CTextureRef GetVideoTexture()
{
return CBackgroundMusic.GetVideoTexture();
}
@@ -408,44 +388,59 @@ namespace Vocaluxe.Base
class CBdraw : IDrawing
{
- public void DrawTexture(CTexture texture, SRectF rect)
+ public void DrawTexture(CTextureRef texture, SRectF rect)
{
CDraw.DrawTexture(texture, rect);
}
- public void DrawTexture(CTexture texture, SRectF rect, SColorF color)
+ public void DrawTexture(CTextureRef texture, SRectF rect, SColorF color)
{
CDraw.DrawTexture(texture, rect, color);
}
- public void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
+ public void DrawTexture(CTextureRef texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
{
CDraw.DrawTexture(texture, rect, color, bounds, mirrored);
}
- public void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float reflectionSpace, float reflectionHeight)
+ public void DrawTexture(CTextureRef textureRef, SRectF bounds, EAspect aspect)
+ {
+ CDraw.DrawTexture(textureRef, bounds, aspect);
+ }
+
+ public void DrawTexture(CTextureRef textureRef, SRectF bounds, EAspect aspect, SColorF color)
+ {
+ CDraw.DrawTexture(textureRef, bounds, aspect, color);
+ }
+
+ public void DrawTextureReflection(CTextureRef texture, SRectF rect, SColorF color, SRectF bounds, float reflectionSpace, float reflectionHeight)
{
CDraw.DrawTextureReflection(texture, rect, color, bounds, reflectionSpace, reflectionHeight);
}
- public CTexture AddTexture(string fileName)
+ public CTextureRef AddTexture(string fileName)
{
return CDraw.AddTexture(fileName);
}
- public void RemoveTexture(ref CTexture texture)
+ public CTextureRef EnqueueTexture(string fileName)
+ {
+ return CDraw.EnqueueTexture(fileName);
+ }
+
+ public void RemoveTexture(ref CTextureRef texture)
{
CDraw.RemoveTexture(ref texture);
}
- public void DrawColor(SColorF color, SRectF rect)
+ public void DrawRect(SColorF color, SRectF rect)
{
- CDraw.DrawColor(color, rect);
+ CDraw.DrawRect(color, rect);
}
- public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
+ public void DrawRectReflection(SColorF color, SRectF rect, float space, float height)
{
- CDraw.DrawColorReflection(color, rect, space, height);
+ CDraw.DrawRectReflection(color, rect, space, height);
}
}
@@ -461,7 +456,12 @@ namespace Vocaluxe.Base
CGraphics.SaveTheme();
}
- public void FadeTo(EScreens nextScreen)
+ public void FadeTo(EScreen nextScreen)
+ {
+ CGraphics.FadeTo(nextScreen);
+ }
+
+ public void FadeTo(IMenu nextScreen)
{
CGraphics.FadeTo(nextScreen);
}
@@ -471,17 +471,27 @@ namespace Vocaluxe.Base
return CGraphics.GlobalAlpha;
}
- public EScreens GetNextScreen()
+ public IMenu GetNextScreen()
{
return CGraphics.NextScreen;
}
+
+ public EScreen GetNextScreenType()
+ {
+ return CGraphics.NextScreenType;
+ }
+
+ public IMenu GetScreen(EScreen screen)
+ {
+ return CGraphics.GetScreen(screen);
+ }
}
class CBlog : ILog
{
- public void LogError(string errorText)
+ public void LogError(string errorText, bool showMsg = false, bool exit = false)
{
- CLog.LogError(errorText);
+ CLog.LogError(errorText, showMsg, exit);
}
public void LogDebug(string text)
@@ -497,39 +507,24 @@ namespace Vocaluxe.Base
class CBfonts : IFonts
{
- public void SetFont(string fontName)
- {
- CFonts.SetFont(fontName);
- }
-
- public void SetStyle(EStyle fontStyle)
- {
- CFonts.Style = fontStyle;
- }
-
public RectangleF GetTextBounds(CText text)
{
return CFonts.GetTextBounds(text);
}
- public RectangleF GetTextBounds(CText text, float textHeight)
+ public void DrawText(string text, CFont font, float x, float y, float z, SColorF color)
{
- return CFonts.GetTextBounds(text, textHeight);
+ CFonts.DrawText(text, font, x, y, z, color);
}
- public void DrawText(string text, float textHeight, float x, float y, float z, SColorF color)
+ public void DrawTextReflection(string text, CFont font, float x, float y, float z, SColorF color, float reflectionSpace, float reflectionHeight)
{
- CFonts.DrawText(text, textHeight, x, y, z, color);
+ CFonts.DrawTextReflection(text, font, x, y, z, color, reflectionSpace, reflectionHeight);
}
- public void DrawTextReflection(string text, float textHeight, float x, float y, float z, SColorF color, float reflectionSpace, float reflectionHeight)
+ public void DrawText(string text, CFont font, float x, float y, float z, SColorF color, float begin, float end)
{
- CFonts.DrawTextReflection(text, textHeight, x, y, z, color, reflectionSpace, reflectionHeight);
- }
-
- public void DrawText(string text, float textHeight, float x, float y, float z, SColorF color, float begin, float end)
- {
- CFonts.DrawText(text, textHeight, x, y, z, color, begin, end);
+ CFonts.DrawText(text, font, x, y, z, color, begin, end);
}
}
@@ -555,12 +550,12 @@ namespace Vocaluxe.Base
{
public int GetNumPlayer()
{
- return CGame.NumPlayer;
+ return CGame.NumPlayers;
}
public void SetNumPlayer(int numPlayer)
{
- CGame.NumPlayer = numPlayer;
+ CGame.NumPlayers = numPlayer;
}
public SPlayer[] GetPlayers()
@@ -651,7 +646,7 @@ namespace Vocaluxe.Base
return CProfiles.GetPlayerName(profileID, playerNum);
}
- public CTexture GetAvatar(int profileID)
+ public CTextureRef GetAvatar(int profileID)
{
return CProfiles.GetAvatarTextureFromProfile(profileID);
}
@@ -679,9 +674,9 @@ namespace Vocaluxe.Base
class CBrecord : IRecording
{
- public int GetToneAbs(int playerNr)
+ public int GetToneAbs(int player)
{
- return CRecord.GetToneAbs(playerNr);
+ return CRecord.GetToneAbs(player);
}
}
@@ -800,44 +795,44 @@ namespace Vocaluxe.Base
class CBvideo : IVideo
{
- public int Load(string videoFileName)
+ public CVideoStream Load(string videoFileName)
{
return CVideo.Load(videoFileName);
}
- public bool Skip(int videoStream, float startPosition, float videoGap)
+ public bool Skip(CVideoStream stream, float startPosition, float videoGap)
{
- return CVideo.Skip(videoStream, startPosition, videoGap);
+ return CVideo.Skip(stream, startPosition, videoGap);
}
- public bool GetFrame(int videoStream, ref CTexture videoTexture, float time, out float videoTime)
+ public bool GetFrame(CVideoStream stream, float time)
{
- return CVideo.GetFrame(videoStream, ref videoTexture, time, out videoTime);
+ return CVideo.GetFrame(stream, time);
}
- public bool IsFinished(int videoStream)
+ public bool IsFinished(CVideoStream stream)
{
- return CVideo.Finished(videoStream);
+ return CVideo.Finished(stream);
}
- public bool Close(int videoStream)
+ public void Close(ref CVideoStream stream)
{
- return CVideo.Close(videoStream);
+ CVideo.Close(ref stream);
}
- public void SetLoop(int streamID, bool loop = true)
+ public void SetLoop(CVideoStream stream, bool loop = true)
{
- CVideo.SetLoop(streamID, loop);
+ CVideo.SetLoop(stream, loop);
}
- public void Pause(int streamID)
+ public void Pause(CVideoStream stream)
{
- CVideo.Pause(streamID);
+ CVideo.Pause(stream);
}
- public void Resume(int streamID)
+ public void Resume(CVideoStream stream)
{
- CVideo.Resume(streamID);
+ CVideo.Resume(stream);
}
}
@@ -858,7 +853,7 @@ namespace Vocaluxe.Base
CSound.Play(soundStream);
}
- public void Fade(int soundStream, float targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing)
+ public void Fade(int soundStream, int targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing)
{
CSound.Fade(soundStream, targetVolume, duration, afterFadeAction);
}
@@ -883,23 +878,33 @@ namespace Vocaluxe.Base
return CSound.GetLength(soundStream);
}
- public void SetStreamVolume(int soundStream, float volume)
+ public void SetStreamVolume(int soundStream, int volume)
{
CSound.SetStreamVolume(soundStream, volume);
}
+
+ public void SetGlobalVolume(int volume)
+ {
+ CSound.SetGlobalVolume(volume);
+ }
}
class CBcover : ICover
{
- public CTexture GetNoCover()
+ public CTextureRef GetNoCover()
{
return CCover.NoCover;
}
+
+ public CTextureRef GenerateCover(string text, ECoverGeneratorType type, CSong firstSong)
+ {
+ return CCover.GenerateCover(text, type, firstSong);
+ }
}
class CBdataBase : IDataBase
{
- public bool GetCover(string fileName, ref CTexture texture, int coverSize)
+ public bool GetCover(string fileName, ref CTextureRef texture, int coverSize)
{
return CDataBase.GetCover(fileName, ref texture, coverSize);
}
diff --git a/Vocaluxe/Base/CParty.cs b/Vocaluxe/Base/CParty.cs
index 22bc3b33..6408281b 100644
--- a/Vocaluxe/Base/CParty.cs
+++ b/Vocaluxe/Base/CParty.cs
@@ -20,38 +20,20 @@ using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
+using Vocaluxe.Base.ThemeSystem;
using VocaluxeLib;
using VocaluxeLib.Menu;
using VocaluxeLib.PartyModes;
+using VocaluxeLib.Xml;
namespace Vocaluxe.Base
{
-
- #region Structs
- struct SPartyMode
- {
- public int PartyModeID;
- public int PartyModeSystemVersion;
- public string Name;
- public string Description;
- public string Author;
- public string Folder;
- public string PartyModeFile;
- public List ScreenFiles;
- public int PartyModeVersionMajor;
- public int PartyModeVersionMinor;
- public string TargetAudience;
- public bool NoErrors;
- public IPartyMode PartyMode;
- }
- #endregion Structs
-
static class CParty
{
private const int _PartyModeSystemVersion = 1;
private static Dictionary _PartyModes;
- private static Queue _IDs;
+ private static int _NextID;
private static int _NormalGameModeID;
private static SPartyMode _CurrentPartyMode;
@@ -60,17 +42,12 @@ namespace Vocaluxe.Base
public static void Init()
{
_PartyModes = new Dictionary();
- _IDs = new Queue(1000);
-
- for (int i = 0; i < 1000; i++)
- _IDs.Enqueue(i);
+ _NextID = 0;
//add dummy normal game mode and set it as default
- var pm = new SPartyMode {PartyMode = new CPartyModeNone(), ScreenFiles = new List()};
- pm.PartyMode.Initialize();
- pm.PartyModeID = _IDs.Dequeue();
- _NormalGameModeID = pm.PartyModeID;
- _PartyModes.Add(pm.PartyModeID, pm);
+ var pm = new SPartyMode {ScreenFiles = new List(), PartyMode = new CPartyModeNone(_NextID++, null)};
+ _NormalGameModeID = pm.PartyMode.ID;
+ _PartyModes.Add(pm.PartyMode.ID, pm);
_CurrentPartyMode = pm;
//load other party modes
@@ -81,8 +58,8 @@ namespace Vocaluxe.Base
{
get
{
- if (_CurrentPartyMode.PartyModeID != _NormalGameModeID)
- return _CurrentPartyMode.PartyModeID;
+ if (_CurrentPartyMode.PartyMode.ID != _NormalGameModeID)
+ return _CurrentPartyMode.PartyMode.ID;
return -1;
}
@@ -93,41 +70,32 @@ namespace Vocaluxe.Base
get { return _PartyModes.Count; }
}
+ public static void ReloadTheme()
+ {
+ foreach (SPartyMode pm in _PartyModes.Values)
+ pm.PartyMode.ReloadTheme();
+ }
+
+ public static void ReloadSkin()
+ {
+ foreach (SPartyMode pm in _PartyModes.Values)
+ pm.PartyMode.ReloadSkin();
+ }
+
+ public static void SaveThemes()
+ {
+ foreach (SPartyMode pm in _PartyModes.Values)
+ pm.PartyMode.SaveScreens();
+ }
+
public static List GetPartyModeInfos()
{
var infos = new List();
- var pmIDs = new int[_PartyModes.Count];
- _PartyModes.Keys.CopyTo(pmIDs, 0);
-
- foreach (int pmID in pmIDs)
+ foreach (KeyValuePair kvp in _PartyModes)
{
- if (pmID != _NormalGameModeID)
- {
- SPartyMode mode;
- _PartyModes.TryGetValue(pmID, out mode);
-
- if (mode.PartyMode != null)
- {
- var info = new SPartyModeInfos
- {
- Author = mode.Author,
- Description = mode.Description,
- Name = mode.Name,
- PartyModeID = mode.PartyModeID,
- Playable = mode.NoErrors,
- VersionMajor = mode.PartyModeVersionMajor,
- VersionMinor = mode.PartyModeVersionMinor,
- TargetAudience = mode.TargetAudience,
- MaxPlayers = mode.PartyMode.GetMaxPlayer(),
- MinPlayers = mode.PartyMode.GetMinPlayer(),
- MaxTeams = mode.PartyMode.GetMaxTeams(),
- MinTeams = mode.PartyMode.GetMinTeams()
- };
-
- infos.Add(info);
- }
- }
+ if (kvp.Key != _NormalGameModeID)
+ infos.Add(kvp.Value.Info);
}
return infos;
}
@@ -145,11 +113,6 @@ namespace Vocaluxe.Base
_CurrentPartyMode.PartyMode.Init();
}
-
- public static CMenu GetNextPartyScreen(out EScreens alternativeScreen)
- {
- return _CurrentPartyMode.PartyMode.GetNextPartyScreen(out alternativeScreen);
- }
#endregion public stuff
#region Interface
@@ -158,16 +121,11 @@ namespace Vocaluxe.Base
_CurrentPartyMode.PartyMode.UpdateGame();
}
- public static EScreens GetStartScreen()
+ public static IMenu GetStartScreen()
{
return _CurrentPartyMode.PartyMode.GetStartScreen();
}
- public static EScreens GetMainScreen()
- {
- return _CurrentPartyMode.PartyMode.GetMainScreen();
- }
-
public static SScreenSongOptions GetSongSelectionOptions()
{
return _CurrentPartyMode.PartyMode.GetScreenSongOptions();
@@ -222,54 +180,32 @@ namespace Vocaluxe.Base
foreach (string file in files)
{
- SPartyMode pm = _LoadPartyMode(file);
- if (pm.NoErrors)
- _PartyModes.Add(pm.PartyModeID, pm);
+ SPartyMode pm;
+ if (_LoadPartyMode(file, out pm))
+ _PartyModes.Add(pm.PartyMode.ID, pm);
}
}
- private static SPartyMode _LoadPartyMode(string file)
+ private static bool _LoadPartyMode(string filePath, out SPartyMode pm)
{
- var pm = new SPartyMode {PartyModeID = _IDs.Dequeue(), ScreenFiles = new List(), NoErrors = false};
-
- CXMLReader xmlReader = CXMLReader.OpenFile(file);
-
- //Error...
- if (xmlReader == null)
- return pm;
-
- bool loaded = true;
-
- loaded &= xmlReader.TryGetIntValue("//root/PartyModeSystemVersion", ref pm.PartyModeSystemVersion);
- loaded &= xmlReader.GetValue("//root/Info/Name", out pm.Name, "ERROR Name");
- loaded &= xmlReader.GetValue("//root/Info/Description", out pm.Description, "ERROR Description");
- loaded &= xmlReader.GetValue("//root/Info/Author", out pm.Author, "ERROR Author");
- loaded &= xmlReader.GetValue("//root/Info/Folder", out pm.Folder, "ERROR Folder");
- loaded &= xmlReader.GetValue("//root/Info/PartyModeFile", out pm.PartyModeFile, "ERROR PartyModeFile");
- loaded &= xmlReader.TryGetIntValue("//root/Info/PartyModeVersionMajor", ref pm.PartyModeVersionMajor);
- loaded &= xmlReader.TryGetIntValue("//root/Info/PartyModeVersionMinor", ref pm.PartyModeVersionMinor);
- loaded &= xmlReader.GetValue("//root/Info/TargetAudience", out pm.TargetAudience, "ERROR TargetAudience");
- loaded &= xmlReader.GetValues("//root/PartyScreens/*", ref pm.ScreenFiles);
-
- if (!loaded)
+ CXmlDeserializer deser = new CXmlDeserializer();
+ try
{
- CLog.LogError("Error loading PartyMode file: " + file);
- return pm;
+ pm = deser.Deserialize(filePath);
+ if (pm.PartyModeSystemVersion != _PartyModeSystemVersion)
+ throw new Exception("Wrong PartyModeSystemVersion " + pm.PartyModeSystemVersion + " expected: " + _PartyModeSystemVersion);
+
+ if (pm.ScreenFiles.Count == 0)
+ throw new Exception("No ScreenFiles found");
+ }
+ catch (Exception e)
+ {
+ pm = new SPartyMode();
+ CLog.LogError("Error loading PartyMode file " + filePath + ": " + e.Message);
+ return false;
}
- if (pm.PartyModeSystemVersion != _PartyModeSystemVersion)
- {
- CLog.LogError("Error loading PartyMode file (wrong PartyModeSystemVersion): " + file);
- return pm;
- }
-
- if (pm.ScreenFiles.Count == 0)
- {
- CLog.LogError("Error loading PartyMode file (no ScreenFiles found): " + file);
- return pm;
- }
-
- string pathToPm = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNamePartyModes, pm.Folder);
+ string pathToPm = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNamePartyModes, pm.Info.Folder);
string pathToCode = Path.Combine(pathToPm, CSettings.FolderNamePartyModeCode);
var filesToCompile = new List();
@@ -277,19 +213,14 @@ namespace Vocaluxe.Base
Assembly output = _CompileFiles(filesToCompile.ToArray());
if (output == null)
- return pm;
+ return false;
- if (!CLanguage.LoadPartyLanguageFiles(pm.PartyModeID, Path.Combine(pathToPm, CSettings.FolderNamePartyModeLanguages)))
- {
- CLog.LogError("Error loading language files for PartyMode: " + file);
- return pm;
- }
-
- object instance = output.CreateInstance(typeof(IPartyMode).Namespace + "." + pm.Folder + "." + pm.PartyModeFile);
+ object instance = output.CreateInstance(typeof(IPartyMode).Namespace + "." + pm.Info.Folder + "." + pm.Info.PartyModeFile, false,
+ BindingFlags.Public | BindingFlags.Instance, null, new object[] {_NextID++, pathToPm}, null, null);
if (instance == null)
{
- CLog.LogError("Error creating Instance of PartyMode file: " + file);
- return pm;
+ CLog.LogError("Error creating Instance of PartyMode file: " + filePath);
+ return false;
}
try
@@ -298,44 +229,37 @@ namespace Vocaluxe.Base
}
catch (Exception e)
{
- CLog.LogError("Error casting PartyMode file: " + file + "; " + e.Message);
- return pm;
+ CLog.LogError("Error casting PartyMode file: " + filePath + "; " + e.Message);
+ return false;
}
- pm.PartyMode.Initialize();
- pm.PartyMode.SetFolder(pathToPm);
- if (!CTheme.AddTheme(Path.Combine(pathToPm, "Theme.xml"), pm.PartyModeID))
- return pm;
+ if (!CLanguage.LoadPartyLanguageFiles(pm.PartyMode.ID, Path.Combine(pathToPm, CSettings.FolderNamePartyModeLanguages)))
+ {
+ CLog.LogError("Error loading language files for PartyMode: " + filePath);
+ return false;
+ }
- int themeIndex = CTheme.GetThemeIndex(pm.PartyModeID);
- CTheme.ListSkins(themeIndex);
- int skinIndex = CTheme.GetSkinIndex(pm.PartyModeID);
+ if (!CThemes.ReadThemesFromFolder(Path.Combine(pathToPm, CSettings.FolderNameThemes), pm.PartyMode.ID))
+ return false;
- if (!CTheme.LoadSkin(skinIndex))
- return pm;
-
- if (!CTheme.LoadTheme(themeIndex))
- return pm;
+ if (!CThemes.LoadPartymodeTheme(pm.PartyMode.ID))
+ return false;
foreach (string screenfile in pm.ScreenFiles)
{
- string xmlPath = Path.Combine(pathToPm, CSettings.FolderNamePartyModeScreens);
- CMenuParty screen = _GetPartyScreenInstance(output, screenfile, pm.Folder);
+ CMenuParty screen = _GetPartyScreenInstance(output, screenfile, pm.Info.Folder);
if (screen != null)
{
- screen.Init();
screen.AssignPartyMode(pm.PartyMode);
- screen.SetPartyModeID(pm.PartyModeID);
- screen.LoadTheme(xmlPath);
pm.PartyMode.AddScreen(screen, screenfile);
}
else
- return pm;
+ return false;
}
-
- pm.NoErrors = true;
- return pm;
+ pm.PartyMode.LoadTheme();
+ pm.Info.LoadData(pm.PartyMode);
+ return true;
}
private static Assembly _CompileFiles(string[] files)
diff --git a/Vocaluxe/Base/CPlaylistElement.cs b/Vocaluxe/Base/CPlaylistElement.cs
index 3b6588de..eec209c1 100644
--- a/Vocaluxe/Base/CPlaylistElement.cs
+++ b/Vocaluxe/Base/CPlaylistElement.cs
@@ -61,7 +61,7 @@ namespace Vocaluxe.Base
get { return _Song != null ? _Song.Finish : 0f; }
}
- public CTexture Cover
+ public CTextureRef Cover
{
get { return _Song != null ? _Song.CoverTextureSmall : CCover.NoCover; }
}
diff --git a/Vocaluxe/Base/CPlaylists.cs b/Vocaluxe/Base/CPlaylists.cs
index 2189fee2..f2f84ed8 100644
--- a/Vocaluxe/Base/CPlaylists.cs
+++ b/Vocaluxe/Base/CPlaylists.cs
@@ -31,7 +31,6 @@ namespace Vocaluxe.Base
static class CPlaylists
{
private static List _Playlists;
- private static int _NextID;
public static IEnumerable Playlists
{
@@ -78,8 +77,9 @@ namespace Vocaluxe.Base
foreach (string file in files)
{
- CPlaylistFile playlist = new CPlaylistFile(files.IndexOf(file), file);
- _Playlists.Add(playlist);
+ CPlaylistFile playlist = new CPlaylistFile();
+ if (playlist._Load(file))
+ _Playlists.Add(playlist);
}
}
@@ -130,7 +130,7 @@ namespace Vocaluxe.Base
public static int NewPlaylist(string name = "New Playlist")
{
- CPlaylistFile pl = new CPlaylistFile(_NextID++) {Name = name};
+ CPlaylistFile pl = new CPlaylistFile {Name = name};
_Playlists.Add(pl);
return pl.Id;
}
@@ -212,7 +212,7 @@ namespace Vocaluxe.Base
private static CPlaylistFile _ConvertUSDXPlaylist(string file)
{
- var pl = new CPlaylistFile(_NextID++);
+ var pl = new CPlaylistFile();
ReadOnlyCollection allSongs = CSongs.AllSongs;
if (!File.Exists(file))
diff --git a/Vocaluxe/Base/CProfiles.cs b/Vocaluxe/Base/CProfiles.cs
index 8c5c9887..1cf1d983 100644
--- a/Vocaluxe/Base/CProfiles.cs
+++ b/Vocaluxe/Base/CProfiles.cs
@@ -297,7 +297,7 @@ namespace Vocaluxe.Base
public static CProfile[] GetProfiles()
{
if (_Profiles.Count == 0)
- return null;
+ return new CProfile[0];
var list = new List(_Profiles.Values);
list.Sort(_CompareByPlayerName);
@@ -327,10 +327,10 @@ namespace Vocaluxe.Base
{
var profile = new CProfile
{
- FileName = fileName != "" ? Path.Combine(CConfig.ProfileFolders[0], fileName) : String.Empty
+ FilePath = fileName != "" ? Path.Combine(CConfig.ProfileFolders[0], fileName) : String.Empty
};
- if (File.Exists(profile.FileName))
+ if (File.Exists(profile.FilePath))
return -1;
profile.ID = _ProfileIDs.Dequeue();
@@ -393,7 +393,7 @@ namespace Vocaluxe.Base
if (!IsProfileIDValid(profileID))
return String.Empty;
- return Path.GetFileName(_Profiles[profileID].FileName);
+ return Path.GetFileName(_Profiles[profileID].FilePath);
}
public static string AddGetPlayerName(int profileID, char chr)
@@ -504,7 +504,7 @@ namespace Vocaluxe.Base
#endregion profile properties
#region avatar texture
- public static CTexture GetAvatarTexture(int avatarID)
+ public static CTextureRef GetAvatarTexture(int avatarID)
{
if (!IsAvatarIDValid(avatarID))
return null;
@@ -512,7 +512,7 @@ namespace Vocaluxe.Base
return _Avatars[avatarID].Texture;
}
- public static CTexture GetAvatarTextureFromProfile(int profileID)
+ public static CTextureRef GetAvatarTextureFromProfile(int profileID)
{
if (!IsProfileIDValid(profileID) || _Profiles[profileID].Avatar == null)
return null;
@@ -534,7 +534,7 @@ namespace Vocaluxe.Base
foreach (int id in ids)
{
if (_Profiles[id].LoadProfile())
- knownFiles.Add(Path.GetFileName(_Profiles[id].FileName));
+ knownFiles.Add(Path.GetFileName(_Profiles[id].FilePath));
else
_Profiles.Remove(id);
}
@@ -550,13 +550,9 @@ namespace Vocaluxe.Base
if (knownFiles.Contains(Path.GetFileName(file)))
continue;
- var profile = new CProfile
- {
- FileName = Path.GetFileName(file),
- FilePath = Path.GetDirectoryName(file)
- };
+ var profile = new CProfile();
- if (profile.LoadProfile())
+ if (profile.LoadProfile(file))
{
profile.ID = _ProfileIDs.Dequeue();
_Profiles.Add(profile.ID, profile);
@@ -605,7 +601,7 @@ namespace Vocaluxe.Base
if (!IsProfileIDValid(profileID))
return;
- if (_Profiles[profileID].FileName == "")
+ if (string.IsNullOrEmpty(_Profiles[profileID].FilePath))
{
_RemoveProfile(profileID);
return;
@@ -614,15 +610,15 @@ namespace Vocaluxe.Base
try
{
//Check if profile saved in config
- for (int i = 0; i < CConfig.Players.Length; i++)
+ for (int i = 0; i < CSettings.MaxNumPlayer; i++)
{
- if (CConfig.Players[i] == _Profiles[profileID].FileName)
+ if (CConfig.Config.Game.Players[i] == GetProfileFileName(profileID))
{
- CConfig.Players[i] = string.Empty;
+ CConfig.Config.Game.Players[i] = string.Empty;
CConfig.SaveConfig();
}
}
- File.Delete(Path.Combine(_Profiles[profileID].FilePath, _Profiles[profileID].FileName));
+ File.Delete(_Profiles[profileID].FilePath);
_RemoveProfile(profileID);
//Check if profile is selected in game
@@ -636,7 +632,7 @@ namespace Vocaluxe.Base
}
catch (Exception)
{
- CLog.LogError("Can't delete Profile File " + _Profiles[profileID].FileName + ".xml");
+ CLog.LogError("Can't delete Profile File " + _Profiles[profileID].FilePath);
}
_ProfilesChanged = true;
}
diff --git a/Vocaluxe/Base/CRecord.cs b/Vocaluxe/Base/CRecord.cs
index 43c8f099..9b671f76 100644
--- a/Vocaluxe/Base/CRecord.cs
+++ b/Vocaluxe/Base/CRecord.cs
@@ -31,7 +31,7 @@ namespace Vocaluxe.Base
{
if (_Record != null)
return false;
- switch (CConfig.RecordLib)
+ switch (CConfig.Config.Sound.RecordLib)
{
#if WIN
case ERecordLib.DirectSound:
@@ -137,10 +137,9 @@ namespace Vocaluxe.Base
{
for (int p = 0; p < CSettings.MaxNumPlayer; p++)
{
- if (CConfig.MicConfig[p].Channel != 0 &&
- CConfig.MicConfig[p].DeviceName == device &&
- CConfig.MicConfig[p].DeviceDriver == devicedriver &&
- CConfig.MicConfig[p].Channel == channel)
+ if (CConfig.Config.Record.MicConfig[p].DeviceName == device &&
+ CConfig.Config.Record.MicConfig[p].DeviceDriver == devicedriver &&
+ CConfig.Config.Record.MicConfig[p].Channel == channel)
return p + 1;
}
return 0;
diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs
index b419e7b1..0063a2e6 100644
--- a/Vocaluxe/Base/CSettings.cs
+++ b/Vocaluxe/Base/CSettings.cs
@@ -19,6 +19,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
+using System.Windows.Forms;
using VocaluxeLib;
namespace Vocaluxe.Base
@@ -53,8 +54,6 @@ namespace Vocaluxe.Base
//Adjusting of programName and version now in the assembly config.
//I'd use the major and minor for Main releases, build number for every public release and revision for every bugfix version without any features
- //As it is different than before, this is open for discussion.
- //TODO: Remove this when this is decided
private const string _ProgramCodeName = "Shining Heaven";
public const ERevision VersionRevision = ERevision.Beta;
@@ -65,6 +64,7 @@ namespace Vocaluxe.Base
public const int RenderW = 1280;
public const int RenderH = 720;
+ public static readonly SRectF RenderRect = new SRectF(0, 0, RenderW, RenderH, 0);
public const int ZNear = -100;
public const int ZFar = 100;
@@ -95,6 +95,8 @@ namespace Vocaluxe.Base
public const string FileNameDebugLog = "Debug.log";
public const string FileNameSongInfoLog = "SongInformation.log";
+ public const string FileNameRequiredSkinElements = "RequiredSkinElements.xml";
+
public const string FileNameSoundT440 = "440Hz.mp3";
public const string FolderNameSongs = "Songs";
@@ -113,7 +115,6 @@ namespace Vocaluxe.Base
public const string FolderNamePartyModes = "PartyModes";
public const string FolderNamePartyModeCode = "Code";
- public const string FolderNamePartyModeScreens = "Screens";
public const string FolderNamePartyModeLanguages = "Languages";
public const string FolderNamePartyModeFonts = "Fonts";
@@ -122,6 +123,11 @@ namespace Vocaluxe.Base
public const string LinkWebOSApp = "https://build.phonegap.com/apps/639714/download/webos/?qr_key=uY98ymvTr6K144RyTdhs";
public const string LinkWindowsPhoneApp = "https://build.phonegap.com/apps/639714/download/winphone/?qr_key=uY98ymvTr6K144RyTdhs";
+ ///
+ /// Default name for themes, skins...
+ ///
+ public const string DefaultName = "Default";
+
//public const String[] ToneStrings = new String[]{ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
public const int ToneMin = -36;
public const int ToneMax = 89;
@@ -180,8 +186,11 @@ namespace Vocaluxe.Base
// ReSharper disable ConditionIsAlwaysTrueOrFalse
if (VersionRevision != ERevision.Release)
+ {
// ReSharper restore ConditionIsAlwaysTrueOrFalse
- version += " " + _GetVersionStatus() + String.Format(" ({0:0000)}", _Assembly.Version.Revision);
+ string gitversion = Application.ProductVersion;
+ version += " " + _GetVersionStatus() + String.Format(" ({0})", gitversion);
+ }
return version;
}
diff --git a/Vocaluxe/Base/CSongCategorizer.cs b/Vocaluxe/Base/CSongCategorizer.cs
index 4c16bf3a..ab7fb777 100644
--- a/Vocaluxe/Base/CSongCategorizer.cs
+++ b/Vocaluxe/Base/CSongCategorizer.cs
@@ -26,7 +26,7 @@ namespace Vocaluxe.Base
class CSongCategorizer : CObservable
{
private readonly List _Categories = new List();
- private EOffOn _Tabs = CConfig.Tabs;
+ private EOffOn _Tabs = CConfig.Config.Game.Tabs;
public CSongCategorizer()
{
@@ -178,7 +178,11 @@ namespace Vocaluxe.Base
}
foreach (CCategory cat in _Categories)
+ {
cat.CoverTextureSmall = CCover.Cover(cat.Name);
+ if (cat.CoverTextureSmall == CCover.NoCover)
+ cat.CoverTextureSmall = CCover.GenerateCover(cat.Name, CCover._SongSortingToType(CSongs.Sorter.SongSorting), cat.GetSong(0));
+ }
_Changed = false;
}
}
diff --git a/Vocaluxe/Base/CSongSorter.cs b/Vocaluxe/Base/CSongSorter.cs
index f521118f..8a956107 100644
--- a/Vocaluxe/Base/CSongSorter.cs
+++ b/Vocaluxe/Base/CSongSorter.cs
@@ -27,8 +27,8 @@ namespace Vocaluxe.Base
class CSongSorter : CObservable
{
private CSongPointer[] _SortedSongs = new CSongPointer[0];
- private EOffOn _IgnoreArticles = CConfig.IgnoreArticles;
- private ESongSorting _SongSorting = CConfig.SongSorting;
+ private EOffOn _IgnoreArticles = CConfig.Config.Game.IgnoreArticles;
+ private ESongSorting _SongSorting = CConfig.Config.Game.SongSorting;
public CSongSorter()
{
diff --git a/Vocaluxe/Base/CSongs.cs b/Vocaluxe/Base/CSongs.cs
index 2bf74681..3216d620 100644
--- a/Vocaluxe/Base/CSongs.cs
+++ b/Vocaluxe/Base/CSongs.cs
@@ -21,6 +21,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Threading;
using System.IO;
+using System.Threading.Tasks;
using VocaluxeLib;
using VocaluxeLib.Songs;
@@ -28,6 +29,8 @@ namespace Vocaluxe.Base
{
static class CSongs
{
+ public delegate void CategoryChangedHandler();
+
private static readonly List _Songs = new List();
private static readonly List _SongsForRandom = new List();
@@ -40,6 +43,7 @@ namespace Vocaluxe.Base
public static readonly CSongCategorizer Categorizer = new CSongCategorizer();
private static Thread _CoverLoaderThread;
+ public static event CategoryChangedHandler OnCategoryChanged;
public static List Songs
{
@@ -83,8 +87,14 @@ namespace Vocaluxe.Base
}
set
{
+ if (value == _CatIndex)
+ return;
if (value == -1 || _IsCatIndexValid(value))
+ {
_CatIndex = value;
+ if (OnCategoryChanged != null)
+ OnCategoryChanged();
+ }
}
}
@@ -134,23 +144,13 @@ namespace Vocaluxe.Base
Category--;
}
- public static int GetNextSongWithoutCover(ref CSong song)
+ private static int _NumSongsWithCoverLoaded;
+ public static int NumSongsWithCoverLoaded
{
- if (!SongsLoaded)
- return -1;
-
- if (NumSongsWithCoverLoaded < _Songs.Count)
- {
- song = _Songs[NumSongsWithCoverLoaded];
- NumSongsWithCoverLoaded++;
- return NumSongsWithCoverLoaded;
- }
-
- return -2;
+ get { return _NumSongsWithCoverLoaded; }
+ private set { _NumSongsWithCoverLoaded = value; }
}
- public static int NumSongsWithCoverLoaded { get; private set; }
-
public static string GetCurrentCategoryName()
{
return _IsCatIndexValid(_CatIndex) ? Categories[_CatIndex].Name : "";
@@ -363,67 +363,58 @@ namespace Vocaluxe.Base
CLog.StopBenchmark("Read TXTs");
CLog.StartBenchmark("Sort Songs");
- Sorter.SongSorting = CConfig.SongSorting;
- Sorter.IgnoreArticles = CConfig.IgnoreArticles;
- Categorizer.Tabs = CConfig.Tabs;
+ Sorter.SongSorting = CConfig.Config.Game.SongSorting;
+ Sorter.IgnoreArticles = CConfig.Config.Game.IgnoreArticles;
+ Categorizer.Tabs = CConfig.Config.Game.Tabs;
Categorizer.ObjectChanged += _HandleCategoriesChanged;
CLog.StopBenchmark("Sort Songs");
Category = -1;
SongsLoaded = true;
- if (CConfig.CoverLoading == ECoverLoading.TR_CONFIG_COVERLOADING_ATSTART)
+ switch (CConfig.Config.Theme.CoverLoading)
{
- CLog.StartBenchmark("Load Covers/Notes");
- _LoadCover();
- CLog.StopBenchmark("Load Covers/Notes");
+ case ECoverLoading.TR_CONFIG_COVERLOADING_ATSTART:
+ _LoadCovers();
+ break;
+ case ECoverLoading.TR_CONFIG_COVERLOADING_DYNAMIC:
+ _LoadCoversAsync();
+ break;
}
- CLog.StopBenchmark("Load Songs ");
+ CLog.StopBenchmark("Load Songs");
}
- public static void LoadCover()
+ private static void _LoadCoversAsync()
{
- if (CConfig.Renderer == ERenderer.TR_CONFIG_SOFTWARE)
- return; //should be removed as soon as the other renderer are ready for queue
-
if (!SongsLoaded || CoverLoaded)
return;
if (_CoverLoaderThread != null)
return;
- _CoverLoaderThread = new Thread(_LoadCover) {Name = "CoverLoader", Priority = ThreadPriority.BelowNormal, IsBackground = true};
+ _CoverLoaderThread = new Thread(_LoadCovers) {Name = "CoverLoader", Priority = ThreadPriority.BelowNormal, IsBackground = true};
_CoverLoaderThread.Start();
-
- /*
- if (_CoverLoadTimer.ElapsedMilliseconds >= WaitTime)
- {
- for (int i = 0; i < NumLoads; i++)
- {
- CSong song = null;
- int n = GetNextSongWithoutCover(ref song);
-
- if (n < 0)
- return;
-
- song.LoadSmallCover();
-
- if (n == NumAllSongs)
- CDataBase.CommitCovers();
- }
- _CoverLoadTimer.Reset();
- _CoverLoadTimer.Start();
- }
- * */
}
- private static void _LoadCover()
+ private static void _LoadCovers()
{
+ CLog.StartBenchmark("Load Covers");
+ int songCount = _Songs.Count;
+ AutoResetEvent ev = new AutoResetEvent(songCount == 0);
+
+ NumSongsWithCoverLoaded = 0;
foreach (CSong song in _Songs)
{
- song.LoadSmallCover();
- NumSongsWithCoverLoaded++;
+ CSong tmp = song;
+ Task.Factory.StartNew(() =>
+ {
+ tmp.LoadSmallCover();
+ if (Interlocked.Increment(ref _NumSongsWithCoverLoaded) >= songCount)
+ ev.Set();
+ });
}
+ ev.WaitOne();
_CoverLoaded = true;
CDataBase.CommitCovers();
+ CLog.StopBenchmark("Load Covers");
}
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs
index d20061f2..dc76f86f 100644
--- a/Vocaluxe/Base/CSound.cs
+++ b/Vocaluxe/Base/CSound.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.IO;
using Vocaluxe.Lib.Sound.Playback;
using Vocaluxe.Lib.Sound.Playback.GstreamerSharp;
@@ -40,7 +39,7 @@ namespace Vocaluxe.Base
{
if (_Playback != null)
return false;
- switch (CConfig.PlayBackLib)
+ switch (CConfig.Config.Sound.PlayBackLib)
{
case EPlaybackLib.PortAudio:
_Playback = new CPortAudioPlay();
@@ -61,7 +60,11 @@ namespace Vocaluxe.Base
return _Playback.Init();
}
- public static void SetGlobalVolume(float volume)
+ ///
+ /// Sets the volume (in percent 0-100)
+ ///
+ ///
+ public static void SetGlobalVolume(int volume)
{
_Playback.SetGlobalVolume(volume);
}
@@ -110,27 +113,27 @@ namespace Vocaluxe.Base
_Playback.Stop(stream);
}
- public static void Fade(int stream, float targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing)
+ public static void Fade(int stream, int targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing)
{
_Playback.Fade(stream, targetVolume, seconds, afterFadeAction);
}
- public static void FadeAndPause(int stream, float targetVolume, float seconds)
+ public static void FadeAndPause(int stream, int targetVolume, float seconds)
{
Fade(stream, targetVolume, seconds, EStreamAction.Pause);
}
- public static void FadeAndClose(int stream, float targetVolume, float seconds)
+ public static void FadeAndClose(int stream, int targetVolume, float seconds)
{
Fade(stream, targetVolume, seconds, EStreamAction.Close);
}
- public static void FadeAndStop(int stream, float targetVolume, float seconds)
+ public static void FadeAndStop(int stream, int targetVolume, float seconds)
{
Fade(stream, targetVolume, seconds, EStreamAction.Stop);
}
- public static void SetStreamVolume(int stream, float volume)
+ public static void SetStreamVolume(int stream, int volume)
{
_Playback.SetStreamVolume(stream, volume);
}
@@ -205,8 +208,8 @@ namespace Vocaluxe.Base
}
if (length > 0f)
{
- SetStreamVolume(stream, 0f);
- Fade(stream, 100f, length);
+ SetStreamVolume(stream, 0);
+ Fade(stream, 100, length);
}
}
return stream;
diff --git a/Vocaluxe/Base/CTheme.cs b/Vocaluxe/Base/CTheme.cs
deleted file mode 100644
index 520353a4..00000000
--- a/Vocaluxe/Base/CTheme.cs
+++ /dev/null
@@ -1,836 +0,0 @@
-#region license
-// This file is part of Vocaluxe.
-//
-// Vocaluxe 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 3 of the License, or
-// (at your option) any later version.
-//
-// Vocaluxe 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 Vocaluxe. If not, see .
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Windows.Forms;
-using System.Xml;
-using Vocaluxe.Base.Fonts;
-using VocaluxeLib;
-using VocaluxeLib.Draw;
-
-namespace Vocaluxe.Base
-{
-
- #region Structs
- struct STheme
- {
- public string Name;
- public string Author;
- public string SkinFolder;
- public int ThemeVersionMajor;
- public int ThemeVersionMinor;
-
- public string Path;
- public string FileName;
- public int PartyModeID;
- }
-
- class CSkinElement
- {
- public string Value;
- public CTexture Texture;
- }
-
- class CVideoSkinElement : CSkinElement
- {
- public int VideoIndex = -1;
- }
-
- struct SSkin
- {
- public string Name;
- public string Author;
- public int SkinVersionMajor;
- public int SkinVersionMinor;
-
- public string Path;
- public string FileName;
- public int PartyModeID;
-
- public Dictionary SkinList;
- public Dictionary VideoList;
-
- public SColors ThemeColors;
- }
-
- struct SColors
- {
- public SColorF[] Player;
- public SColorScheme[] ColorSchemes;
- }
-
- struct SColorScheme
- {
- public string Name;
- public SColorF Color;
- }
-
- struct SCursor
- {
- public string SkinName;
-
- public float W;
- public float H;
-
- public float R;
- public float G;
- public float B;
- public float A;
-
- public string Color;
- }
- #endregion Structs
-
- static class CTheme
- {
- // Version number for main theme and skin files. Increment it, if you've changed something on the theme files!
- private const int _ThemeSystemVersion = 5;
- private const int _SkinSystemVersion = 3;
-
- #region Vars
- private static readonly List _Themes = new List();
- public static string[] ThemeNames
- {
- get
- {
- var names = new List();
- // ReSharper disable LoopCanBeConvertedToQuery
- foreach (STheme th in _Themes)
- // ReSharper restore LoopCanBeConvertedToQuery
- {
- if (th.PartyModeID == -1)
- names.Add(th.Name);
- }
- return names.ToArray();
- }
- }
-
- private static readonly List _Skins = new List();
- public static string[] SkinNames
- {
- get
- {
- var names = new List();
- // ReSharper disable LoopCanBeConvertedToQuery
- foreach (SSkin sk in _Skins)
- // ReSharper restore LoopCanBeConvertedToQuery
- {
- if (sk.PartyModeID == -1)
- names.Add(sk.Name);
- }
- return names.ToArray();
- }
- }
-
- public static SCursor Cursor;
- #endregion Vars
-
- #region Theme and Skin loading and writing
- public static bool Init()
- {
- _ListThemes();
- ListSkins();
-
- return LoadSkins() && LoadTheme();
- }
-
- public static bool LoadSkins()
- {
- //Fail if loading of any skin failed or no skin was loaded
- //TODO: implement handlers that failing skins are logged and ignored
- bool result = false;
- for (int index = 0; index < _Skins.Count; index++)
- {
- if (_Skins[index].PartyModeID == -1)
- {
- if (LoadSkin(index))
- result = true;
- else
- return false;
- }
- }
- return result;
- }
-
- public static bool LoadSkin(int skinIndex)
- {
- CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(_Skins[skinIndex].Path, _Skins[skinIndex].FileName));
- if (xmlReader == null)
- return false;
-
- // load skins/textures
- foreach (KeyValuePair valuePair in _Skins[skinIndex].SkinList)
- {
- CSkinElement sk = valuePair.Value;
- try
- {
- xmlReader.GetValue("//root/Skins/" + valuePair.Key, out sk.Value, String.Empty);
- sk.Texture = CDraw.AddTexture(Path.Combine(_Skins[skinIndex].Path, sk.Value));
- }
- catch (Exception e)
- {
- MessageBox.Show("Error on loading texture \"" + valuePair.Key + "\": " + e.Message + e.StackTrace);
- CLog.LogError("Error on loading texture \"" + valuePair.Key + "\": " + e.Message + e.StackTrace);
- }
- }
-
-
- // load videos
- foreach (KeyValuePair valuePair in _Skins[skinIndex].VideoList)
- {
- try
- {
- xmlReader.GetValue("//root/Videos/" + valuePair.Key, out valuePair.Value.Value, String.Empty);
- }
- catch (Exception e)
- {
- MessageBox.Show("Error on loading video \"" + valuePair.Key + "\": " + e.Message + e.StackTrace);
- CLog.LogError("Error on loading video \"" + valuePair.Key + "\": " + e.Message + e.StackTrace);
- }
- }
-
- // load colors
- _LoadColors(xmlReader, skinIndex);
- return true;
- }
-
- public static void UnloadSkins()
- {
- for (int i = 0; i < _Skins.Count; i++)
- {
- foreach (CSkinElement sk in _Skins[i].SkinList.Values)
- CDraw.RemoveTexture(ref sk.Texture);
-
- foreach (CVideoSkinElement vsk in _Skins[i].VideoList.Values)
- {
- CVideo.Close(vsk.VideoIndex);
- CDraw.RemoveTexture(ref vsk.Texture);
- }
- }
-
- for (int i = 0; i < _Skins.Count; i++)
- {
- if (_Skins[i].PartyModeID != -1)
- continue;
- _Skins.RemoveAt(i);
- i--;
- }
- }
-
- public static bool LoadTheme()
- {
- for (int i = 0; i < _Themes.Count; i++)
- {
- if (_Themes[i].Name == CConfig.Theme && _Themes[i].PartyModeID == -1)
- return LoadTheme(i);
- }
- return false;
- }
-
- public static bool LoadTheme(int themeIndex)
- {
- if (themeIndex < 0 || themeIndex >= _Themes.Count)
- {
- CLog.LogError("Can't find Theme Index " + themeIndex);
- return false;
- }
-
- CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(_Themes[themeIndex].Path, _Themes[themeIndex].FileName));
- if (xmlReader == null)
- return false;
-
- int skinIndex = GetSkinIndex(_Themes[themeIndex].PartyModeID);
-
- // Load Cursor
- if (_Themes[themeIndex].PartyModeID == -1)
- _LoadCursor(xmlReader, skinIndex);
-
- // load fonts
- if (_Themes[themeIndex].PartyModeID == -1)
- {
- CFonts.LoadThemeFonts(
- _Themes[themeIndex].Name,
- Path.Combine(Path.Combine(_Themes[themeIndex].Path, _Themes[themeIndex].SkinFolder), CSettings.FolderNameThemeFonts),
- xmlReader);
- }
- else
- {
- CFonts.LoadPartyModeFonts(_Themes[themeIndex].PartyModeID,
- Path.Combine(_Themes[themeIndex].Path, CSettings.FolderNamePartyModeFonts),
- xmlReader);
- }
- return true;
- }
-
- public static void SaveTheme()
- {
- SaveSkin();
-
- for (int i = 0; i < _Themes.Count; i++)
- {
- if (_Themes[i].Name == CConfig.Theme && _Themes[i].PartyModeID == -1 || _Themes[i].PartyModeID != -1)
- _SaveTheme(i);
- }
- }
-
- private static void _SaveTheme(int themeIndex)
- {
- #region ThemeMainFile
- using (XmlWriter writer = XmlWriter.Create(Path.Combine(_Themes[themeIndex].Path, _Themes[themeIndex].FileName), CConfig.XMLSettings))
- {
- writer.WriteStartDocument();
- writer.WriteStartElement("root");
-
- // ThemeSystemVersion
- writer.WriteElementString("ThemeSystemVersion", _ThemeSystemVersion.ToString());
-
- #region Info
- writer.WriteStartElement("Info");
-
- writer.WriteElementString("Name", _Themes[themeIndex].Name);
- writer.WriteElementString("Author", _Themes[themeIndex].Author);
- writer.WriteElementString("SkinFolder", _Themes[themeIndex].SkinFolder);
- writer.WriteElementString("ThemeVersionMajor", _Themes[themeIndex].ThemeVersionMajor.ToString());
- writer.WriteElementString("ThemeVersionMinor", _Themes[themeIndex].ThemeVersionMinor.ToString());
-
- writer.WriteEndElement();
- #endregion Info
-
- // Cursor
- if (_Themes[themeIndex].PartyModeID == -1)
- _SaveCursor(writer);
-
- // save fonts
- if (_Themes[themeIndex].PartyModeID == -1)
- CFonts.SaveThemeFonts(_Themes[themeIndex].Name, writer);
-
-
- // End of File
- writer.WriteEndElement(); //end of root
- writer.WriteEndDocument();
-
- writer.Flush();
- }
- #endregion ThemeMainFile
- }
-
- public static void SaveSkin()
- {
- for (int skinIndex = 0; skinIndex < _Skins.Count; skinIndex++)
- {
- using (XmlWriter writer = XmlWriter.Create(Path.Combine(_Skins[skinIndex].Path, _Skins[skinIndex].FileName), CConfig.XMLSettings))
- {
- writer.WriteStartDocument();
- writer.WriteStartElement("root");
-
- // ThemeSystemVersion
- writer.WriteElementString("SkinSystemVersion", _SkinSystemVersion.ToString());
-
- #region Info
- writer.WriteStartElement("Info");
-
- writer.WriteElementString("Name", _Skins[skinIndex].Name);
- writer.WriteElementString("Author", _Skins[skinIndex].Author);
- writer.WriteElementString("SkinVersionMajor", _Skins[skinIndex].SkinVersionMajor.ToString());
- writer.WriteElementString("SkinVersionMinor", _Skins[skinIndex].SkinVersionMinor.ToString());
-
- writer.WriteEndElement();
- #endregion Info
-
- // save colors
- _SaveColors(writer, skinIndex);
-
- #region Skins
- writer.WriteStartElement("Skins");
-
- foreach (KeyValuePair element in _Skins[skinIndex].SkinList)
- writer.WriteElementString(element.Key, element.Value.Value);
- writer.WriteEndElement();
- #endregion Skins
-
- #region Videos
- writer.WriteStartElement("Videos");
-
- foreach (KeyValuePair element in _Skins[skinIndex].VideoList)
- writer.WriteElementString(element.Key, element.Value.Value);
- writer.WriteEndElement();
- #endregion Videos
-
- // End of File
- writer.WriteEndElement(); //end of root
- writer.WriteEndDocument();
-
- writer.Flush();
- }
- }
- }
-
- private static void _ListThemes()
- {
- _Themes.Clear();
-
- string path = Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameThemes);
- List files = CHelper.ListFiles(path, "*.xml", false, true);
-
- foreach (string file in files)
- AddTheme(file, -1);
- }
-
- public static bool AddTheme(string filePath, int partyModeID)
- {
- CXMLReader xmlReader = CXMLReader.OpenFile(filePath);
- if (xmlReader == null)
- return false;
-
- var theme = new STheme();
-
- int version = 0;
- xmlReader.TryGetIntValue("//root/ThemeSystemVersion", ref version);
-
- if (version == _ThemeSystemVersion)
- {
- xmlReader.GetValue("//root/Info/Name", out theme.Name, String.Empty);
- if (theme.Name != "")
- {
- xmlReader.GetValue("//root/Info/Author", out theme.Author, String.Empty);
- xmlReader.GetValue("//root/Info/SkinFolder", out theme.SkinFolder, String.Empty);
- xmlReader.TryGetIntValue("//root/Info/ThemeVersionMajor", ref theme.ThemeVersionMajor);
- xmlReader.TryGetIntValue("//root/Info/ThemeVersionMinor", ref theme.ThemeVersionMinor);
- theme.Path = Path.GetDirectoryName(filePath);
- theme.FileName = Path.GetFileName(filePath);
- theme.PartyModeID = partyModeID;
-
- _Themes.Add(theme);
- }
- }
- else
- {
- string msg = "Can't load Theme \"" + filePath + "\", ";
- if (version < _ThemeSystemVersion)
- msg += "the file is outdated! ";
- else
- msg += "the file is for newer program versions! ";
-
- msg += "Current ThemeSystemVersion is " + _ThemeSystemVersion + " but found " + version;
- CLog.LogError(msg);
- }
- return true;
- }
-
- public static void ListSkins()
- {
- int themeIndex = GetThemeIndex(-1);
- _Skins.Clear();
-
- if (themeIndex < 0 || themeIndex >= _Themes.Count)
- {
- CLog.LogError("Error List Skins. Can't find Theme: " + CConfig.Theme);
- return;
- }
- ListSkins(themeIndex);
- }
-
- public static void ListSkins(int themeIndex)
- {
- if (themeIndex < 0 || themeIndex >= _Themes.Count)
- {
- CLog.LogError("Error List Skins. Can't find Theme index: " + themeIndex);
- return;
- }
-
- STheme theme = _Themes[themeIndex];
-
- string path = Path.Combine(theme.Path, theme.SkinFolder);
- List files = CHelper.ListFiles(path, "*.xml");
-
- foreach (string file in files)
- {
- CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(path, file));
- if (xmlReader == null)
- continue;
-
- var skin = new SSkin();
-
- int version = 0;
- xmlReader.TryGetIntValue("//root/SkinSystemVersion", ref version);
-
- if (version == _SkinSystemVersion)
- {
- xmlReader.GetValue("//root/Info/Name", out skin.Name, String.Empty);
- if (skin.Name != "")
- {
- xmlReader.GetValue("//root/Info/Author", out skin.Author, String.Empty);
- xmlReader.TryGetIntValue("//root/Info/SkinVersionMajor", ref skin.SkinVersionMajor);
- xmlReader.TryGetIntValue("//root/Info/SkinVersionMinor", ref skin.SkinVersionMinor);
-
-
- skin.Path = path;
- skin.FileName = file;
- skin.PartyModeID = theme.PartyModeID;
-
- skin.SkinList = new Dictionary();
- List names = xmlReader.GetNames("//root/Skins/*");
- foreach (string str in names)
- skin.SkinList[str] = new CSkinElement();
-
- skin.VideoList = new Dictionary();
- names = xmlReader.GetNames("//root/Videos/*");
- foreach (string str in names)
- skin.VideoList[str] = new CVideoSkinElement();
- _Skins.Add(skin);
- }
- }
- else
- {
- string msg = "Can't load Skin \"" + file + "\", ";
- if (version < _SkinSystemVersion)
- msg += "the file ist outdated! ";
- else
- msg += "the file is for newer program versions! ";
-
- msg += "Current SkinSystemVersion is " + _SkinSystemVersion;
- CLog.LogError(msg);
- }
- }
- }
- #endregion Theme and Skin loading and writing
-
- #region Theme and Skin index handling
- public static int GetSkinIndex(int partyModeID)
- {
- for (int i = 0; i < _Skins.Count; i++)
- {
- if (partyModeID != -1 && _Skins[i].PartyModeID == partyModeID)
- return i;
- if (partyModeID == -1 && _Skins[i].Name == CConfig.Skin)
- return i;
- }
-
- return -1;
- }
-
- public static int GetThemeIndex(int partyModeID)
- {
- for (int i = 0; i < _Themes.Count; i++)
- {
- if (partyModeID != -1 && _Themes[i].PartyModeID == partyModeID)
- return i;
- if (partyModeID == -1 && _Themes[i].Name == CConfig.Theme)
- return i;
- }
-
- return -1;
- }
-
- public static string GetThemeScreensPath(int partyModeID)
- {
- string path = String.Empty;
-
- int themeIndex = GetThemeIndex(partyModeID);
- if (themeIndex != -1)
- {
- path = Path.Combine(_Themes[themeIndex].Path, _Themes[themeIndex].SkinFolder);
- path = Path.Combine(path, CSettings.FolderNameScreens);
- }
- else
- CLog.LogError("Can't find current Theme");
-
- return path;
- }
-
- public static CTexture GetSkinTexture(string textureName, int partyModeID)
- {
- int skinIndex = GetSkinIndex(partyModeID);
- CSkinElement sk;
- if (skinIndex != -1 && textureName != null && _Skins[skinIndex].SkinList.TryGetValue(textureName, out sk))
- return sk.Texture;
- return null;
- }
-
- public static string GetSkinFilePath(string skinName, int partyModeID)
- {
- return _GetSkinFileName(skinName, GetSkinIndex(partyModeID), true);
- }
-
- private static string _GetSkinFileName(string skinName, int skinIndex, bool returnPath = false)
- {
- CSkinElement sk;
- if (_Skins[skinIndex].SkinList.TryGetValue(skinName, out sk))
- return !returnPath ? sk.Value : Path.Combine(_Skins[skinIndex].Path, sk.Value);
-
- CLog.LogError("Can't find Skin Element \"" + skinName);
- return skinName;
- }
-
- public static CVideoSkinElement GetSkinVideo(string videoName, int partyModeID, bool load = true)
- {
- int skinIndex = GetSkinIndex(partyModeID);
- if (skinIndex != -1)
- {
- CVideoSkinElement sk;
- if (_Skins[skinIndex].VideoList.TryGetValue(videoName, out sk))
- {
- if (sk.VideoIndex == -1 && load)
- {
- sk.VideoIndex = CVideo.Load(GetVideoFilePath(videoName, partyModeID));
- CVideo.SetLoop(sk.VideoIndex, true);
- }
- return sk;
- }
- }
- return null;
- }
-
- public static CTexture GetSkinVideoTexture(string videoName, int partyModeID)
- {
- CVideoSkinElement sk = GetSkinVideo(videoName, partyModeID);
- if (sk == null)
- return null;
- float time = 0f;
- CVideo.GetFrame(sk.VideoIndex, ref sk.Texture, time, out time);
- return sk.Texture;
- }
-
- public static void SkinVideoPause(string videoName, int partyModeID)
- {
- CVideoSkinElement sk = GetSkinVideo(videoName, partyModeID, false);
- if (sk == null)
- return;
- CVideo.Pause(sk.VideoIndex);
- }
-
- public static void SkinVideoResume(string videoName, int partyModeID)
- {
- CVideoSkinElement sk = GetSkinVideo(videoName, partyModeID);
- if (sk == null)
- return;
- CVideo.Resume(sk.VideoIndex);
- }
-
- public static string GetVideoFilePath(string videoName, int partyModeID)
- {
- return _GetVideoFileName(videoName, GetSkinIndex(partyModeID), true);
- }
-
- private static string _GetVideoFileName(string videoName, int skinIndex, bool returnPath = false)
- {
- CVideoSkinElement sk;
- if (_Skins[skinIndex].VideoList.TryGetValue(videoName, out sk))
- return !returnPath ? sk.Value : Path.Combine(_Skins[skinIndex].Path, sk.Value);
-
- CLog.LogError("Can't find Video Element \"" + videoName);
- return videoName;
- }
- #endregion Theme and Skin index handling
-
- #region Element loading
- private static void _LoadColors(CXMLReader xmlReader, int skinIndex)
- {
- SSkin skin = _Skins[skinIndex];
-
- if (_Skins[skinIndex].PartyModeID == -1)
- {
- var playerColors = new List();
- float value = 0f;
-
- int i = 1;
- while (xmlReader.TryGetFloatValue("//root/Colors/Player" + i + "/R", ref value))
- {
- var color = new SColorF {R = value};
-
- xmlReader.TryGetFloatValue("//root/Colors/Player" + i + "/G", ref color.G);
- xmlReader.TryGetFloatValue("//root/Colors/Player" + i + "/B", ref color.B);
- xmlReader.TryGetFloatValue("//root/Colors/Player" + i + "/A", ref color.A);
-
- playerColors.Add(color);
- i++;
- }
- skin.ThemeColors.Player = playerColors.ToArray();
- }
-
- var colorScheme = new List();
- List names = xmlReader.GetNames("//root/ColorSchemes/*");
- foreach (string str in names)
- {
- var scheme = new SColorScheme {Name = str};
-
- xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/R", ref scheme.Color.R);
- xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/G", ref scheme.Color.G);
- xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/B", ref scheme.Color.B);
- xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/A", ref scheme.Color.A);
-
- colorScheme.Add(scheme);
- }
- skin.ThemeColors.ColorSchemes = colorScheme.ToArray();
-
- _Skins[skinIndex] = skin;
- }
-
- private static void _LoadCursor(CXMLReader xmlReader, int skinIndex)
- {
- string value = String.Empty;
- xmlReader.GetValue("//root/Cursor/Skin", out Cursor.SkinName, value);
-
- xmlReader.TryGetFloatValue("//root/Cursor/W", ref Cursor.W);
- xmlReader.TryGetFloatValue("//root/Cursor/H", ref Cursor.H);
-
- if (xmlReader.GetValue("//root/Cursor/Color", out value, value))
- {
- SColorF color = GetColor(value, _Skins[skinIndex].PartyModeID);
- Cursor.R = color.R;
- Cursor.G = color.G;
- Cursor.B = color.B;
- Cursor.A = color.A;
- Cursor.Color = value;
- }
- else
- {
- Cursor.Color = String.Empty;
- xmlReader.TryGetFloatValue("//root/Cursor/R", ref Cursor.R);
- xmlReader.TryGetFloatValue("//root/Cursor/G", ref Cursor.G);
- xmlReader.TryGetFloatValue("//root/Cursor/B", ref Cursor.B);
- xmlReader.TryGetFloatValue("//root/Cursor/A", ref Cursor.A);
- }
- }
- #endregion Element loading
-
- #region Element Writing
- private static void _SaveColors(XmlWriter writer, int skinIndex)
- {
- if (_Skins[skinIndex].PartyModeID == -1)
- {
- writer.WriteStartElement("Colors");
- for (int i = 0; i < _Skins[skinIndex].ThemeColors.Player.Length; i++)
- {
- writer.WriteStartElement("Player" + (i + 1));
-
- writer.WriteElementString("R", _Skins[skinIndex].ThemeColors.Player[i].R.ToString("#0.000"));
- writer.WriteElementString("G", _Skins[skinIndex].ThemeColors.Player[i].G.ToString("#0.000"));
- writer.WriteElementString("B", _Skins[skinIndex].ThemeColors.Player[i].B.ToString("#0.000"));
- writer.WriteElementString("A", _Skins[skinIndex].ThemeColors.Player[i].A.ToString("#0.000"));
-
- writer.WriteEndElement();
- }
- writer.WriteEndElement();
- }
-
- writer.WriteStartElement("ColorSchemes");
- foreach (SColorScheme scheme in _Skins[skinIndex].ThemeColors.ColorSchemes)
- {
- writer.WriteStartElement(scheme.Name);
-
- writer.WriteElementString("R", scheme.Color.R.ToString("#0.000"));
- writer.WriteElementString("G", scheme.Color.G.ToString("#0.000"));
- writer.WriteElementString("B", scheme.Color.B.ToString("#0.000"));
- writer.WriteElementString("A", scheme.Color.A.ToString("#0.000"));
-
- writer.WriteEndElement();
- }
- writer.WriteEndElement();
- }
-
- private static void _SaveCursor(XmlWriter writer)
- {
- writer.WriteStartElement("Cursor");
-
- writer.WriteElementString("Skin", Cursor.SkinName);
-
- writer.WriteElementString("W", Cursor.W.ToString("#0.000"));
- writer.WriteElementString("H", Cursor.H.ToString("#0.000"));
-
- if (!String.IsNullOrEmpty(Cursor.Color))
- writer.WriteElementString("Color", Cursor.Color);
- else
- {
- writer.WriteElementString("R", Cursor.R.ToString("#0.000"));
- writer.WriteElementString("G", Cursor.G.ToString("#0.000"));
- writer.WriteElementString("B", Cursor.B.ToString("#0.000"));
- writer.WriteElementString("A", Cursor.A.ToString("#0.000"));
- }
-
- writer.WriteEndElement();
- }
- #endregion ElementWriting
-
- #region Color Handling
- public static SColorF GetColor(string colorName, int partyModeID)
- {
- SColorF color;
-
- int skinIndex = GetSkinIndex(partyModeID);
-
- GetColor(colorName, skinIndex, out color);
- return color;
- }
-
- public static bool GetColor(string colorName, int skinIndex, out SColorF color)
- {
- foreach (SColorScheme scheme in _Skins[skinIndex].ThemeColors.ColorSchemes)
- {
- if (scheme.Name == colorName)
- {
- color = new SColorF(scheme.Color);
- return true;
- }
- }
-
- bool success;
- color = GetPlayerColor(colorName, GetSkinIndex(-1), out success);
- return success;
- }
-
- public static SColorF GetPlayerColor(int playerNr)
- {
- bool dummy;
- return GetPlayerColor(playerNr, out dummy);
- }
-
- public static SColorF GetPlayerColor(string playerNrString)
- {
- bool dummy;
- return GetPlayerColor(playerNrString, GetSkinIndex(-1), out dummy);
- }
-
- public static SColorF GetPlayerColor(string playerNrString, int skinIndex, out bool success)
- {
- int selection = 0;
- if (playerNrString != null && playerNrString.StartsWith("Player"))
- int.TryParse(playerNrString.Substring(6), out selection);
-
- return GetPlayerColor(selection, skinIndex, out success);
- }
-
- public static SColorF GetPlayerColor(int playerNr, out bool success)
- {
- return GetPlayerColor(playerNr, GetSkinIndex(-1), out success);
- }
-
- public static SColorF GetPlayerColor(int playerNr, int skinIndex, out bool success)
- {
- success = false;
-
- if (_Skins[skinIndex].ThemeColors.Player.Length < playerNr || playerNr < 1)
- return new SColorF(1f, 1f, 1f, 1f);
-
- success = true;
- return _Skins[skinIndex].ThemeColors.Player[playerNr - 1];
- }
- #endregion Color Handling
- }
-}
\ No newline at end of file
diff --git a/Vocaluxe/Base/CVideo.cs b/Vocaluxe/Base/CVideo.cs
index 3d57cbd3..d9400cc8 100644
--- a/Vocaluxe/Base/CVideo.cs
+++ b/Vocaluxe/Base/CVideo.cs
@@ -17,7 +17,6 @@
using Vocaluxe.Lib.Video;
using VocaluxeLib;
-using VocaluxeLib.Draw;
namespace Vocaluxe.Base
{
@@ -31,7 +30,7 @@ namespace Vocaluxe.Base
{
if (_VideoDecoder != null)
return false;
- switch (CConfig.VideoDecoder)
+ switch (CConfig.Config.Video.VideoDecoder)
{
case EVideoDecoder.FFmpeg:
_VideoDecoder = new CVideoDecoderFFmpeg();
@@ -60,49 +59,51 @@ namespace Vocaluxe.Base
return _VideoDecoder.GetNumStreams();
}
- public static int Load(string videoFileName)
+ public static CVideoStream Load(string videoFileName)
{
return _VideoDecoder.Load(videoFileName);
}
- public static bool Close(int streamID)
+ public static void Close(ref CVideoStream stream)
{
- return _VideoDecoder.Close(streamID);
+ //Check for null because the videostreams may close themselves on destroy (GC)
+ if (_VideoDecoder != null)
+ _VideoDecoder.Close(ref stream);
}
- public static float GetLength(int streamID)
+ public static float GetLength(CVideoStream stream)
{
- return _VideoDecoder.GetLength(streamID);
+ return _VideoDecoder.GetLength(stream);
}
- public static bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime)
+ public static bool GetFrame(CVideoStream stream, float time)
{
- return _VideoDecoder.GetFrame(streamID, ref frame, time, out videoTime);
+ return _VideoDecoder.GetFrame(stream, time);
}
- public static bool Skip(int streamID, float start, float gap)
+ public static bool Skip(CVideoStream stream, float start, float gap)
{
- return _VideoDecoder.Skip(streamID, start, gap);
+ return _VideoDecoder.Skip(stream, start, gap);
}
- public static void SetLoop(int streamID, bool loop)
+ public static void SetLoop(CVideoStream stream, bool loop)
{
- _VideoDecoder.SetLoop(streamID, loop);
+ _VideoDecoder.SetLoop(stream, loop);
}
- public static void Pause(int streamID)
+ public static void Pause(CVideoStream stream)
{
- _VideoDecoder.Pause(streamID);
+ _VideoDecoder.Pause(stream);
}
- public static void Resume(int streamID)
+ public static void Resume(CVideoStream stream)
{
- _VideoDecoder.Resume(streamID);
+ _VideoDecoder.Resume(stream);
}
- public static bool Finished(int streamID)
+ public static bool Finished(CVideoStream stream)
{
- return _VideoDecoder.Finished(streamID);
+ return _VideoDecoder.Finished(stream);
}
public static void Update()
diff --git a/Vocaluxe/Base/CVideoPlayer.cs b/Vocaluxe/Base/CVideoPlayer.cs
index 8dd47d4b..86e8537b 100644
--- a/Vocaluxe/Base/CVideoPlayer.cs
+++ b/Vocaluxe/Base/CVideoPlayer.cs
@@ -1,14 +1,29 @@
-using System.Diagnostics;
-using System.Drawing;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe 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 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe 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 Vocaluxe. If not, see .
+#endregion
+
+using System.Diagnostics;
+using Vocaluxe.Base.ThemeSystem;
using VocaluxeLib;
-using VocaluxeLib.Draw;
namespace Vocaluxe.Base
{
class CVideoPlayer
{
- private CTexture _VideoTexture;
- private int _VideoStream;
+ private CVideoStream _VideoStream;
private readonly Stopwatch _VideoTimer = new Stopwatch();
private bool _Finished;
private bool _Loaded;
@@ -25,7 +40,7 @@ namespace Vocaluxe.Base
public void Load(string videoName)
{
- _VideoStream = CVideo.Load(CTheme.GetVideoFilePath(videoName, -1));
+ _VideoStream = CThemes.GetSkinVideo(videoName, -1, false);
_Loaded = true;
CVideo.Pause(_VideoStream);
}
@@ -58,15 +73,12 @@ namespace Vocaluxe.Base
float videoTime = _VideoTimer.ElapsedMilliseconds / 1000f;
_Finished = CVideo.Finished(_VideoStream);
- CVideo.GetFrame(_VideoStream, ref _VideoTexture, videoTime, out videoTime);
+ CVideo.GetFrame(_VideoStream, videoTime);
}
- if (_VideoTexture == null)
+ if (_VideoStream.Texture == null)
return;
- var bounds = new RectangleF(0f, 0f, CSettings.RenderW, CSettings.RenderH);
- RectangleF rect;
- CHelper.SetRect(bounds, out rect, _VideoTexture.OrigAspect, EAspect.Crop);
- CDraw.DrawTexture(_VideoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CSettings.ZFar / 4));
+ CDraw.DrawTexture(_VideoStream.Texture, CSettings.RenderRect, EAspect.Crop);
}
public void PreLoad()
@@ -75,10 +87,9 @@ namespace Vocaluxe.Base
if (paused)
CVideo.Resume(_VideoStream);
float videoTime = 0f;
- while (_VideoTexture == null && videoTime < 1f)
+ while (_VideoStream.Texture == null && videoTime < 1f)
{
- float dummy;
- CVideo.GetFrame(_VideoStream, ref _VideoTexture, 0, out dummy);
+ CVideo.GetFrame(_VideoStream, 0);
videoTime += 0.05f;
}
if (paused)
@@ -87,8 +98,7 @@ namespace Vocaluxe.Base
public void Close()
{
- CVideo.Close(_VideoStream);
- CDraw.RemoveTexture(ref _VideoTexture);
+ CVideo.Close(ref _VideoStream);
_Loaded = false;
_Finished = false;
_VideoTimer.Reset();
diff --git a/Vocaluxe/Base/CWebcam.cs b/Vocaluxe/Base/CWebcam.cs
index af66025a..a73e1fd0 100644
--- a/Vocaluxe/Base/CWebcam.cs
+++ b/Vocaluxe/Base/CWebcam.cs
@@ -30,7 +30,7 @@ namespace Vocaluxe.Base
{
if (_Webcam != null)
return false;
- switch (CConfig.WebcamLib)
+ switch (CConfig.Config.Video.WebcamLib)
{
case EWebcamLib.AForgeNet:
_Webcam = new CAForgeNet();
@@ -42,9 +42,9 @@ namespace Vocaluxe.Base
}
if (!_Webcam.Init())
return false;
- _Webcam.Select(CConfig.WebcamConfig);
+ _Webcam.Select(CConfig.Config.Video.WebcamConfig.HasValue ? CConfig.Config.Video.WebcamConfig.Value : new SWebcamConfig());
- CConfig.WebcamConfig = _Webcam.GetConfig();
+ CConfig.Config.Video.WebcamConfig = _Webcam.GetConfig();
CConfig.SaveConfig();
return true;
}
@@ -57,7 +57,7 @@ namespace Vocaluxe.Base
_Webcam = null;
}
- public static bool GetFrame(ref CTexture tex)
+ public static bool GetFrame(ref CTextureRef tex)
{
return _Webcam != null && _Webcam.GetFrame(ref tex);
}
@@ -69,23 +69,20 @@ namespace Vocaluxe.Base
public static void Pause()
{
- if (_Webcam == null)
- return;
- _Webcam.Pause();
+ if (_Webcam != null)
+ _Webcam.Pause();
}
public static void Start()
{
- if (_Webcam == null)
- return;
- _Webcam.Start();
+ if (_Webcam != null)
+ _Webcam.Start();
}
public static void Stop()
{
- if (_Webcam == null)
- return;
- _Webcam.Stop();
+ if (_Webcam != null)
+ _Webcam.Stop();
}
public static bool Select(SWebcamConfig c)
@@ -95,9 +92,8 @@ namespace Vocaluxe.Base
public static void DeSelect()
{
- if (_Webcam == null)
- return;
- _Webcam.DeSelect();
+ if (_Webcam != null)
+ _Webcam.DeSelect();
}
public static SWebcamDevice[] GetDevices()
diff --git a/Vocaluxe/Base/Fonts/CFont.cs b/Vocaluxe/Base/Fonts/CFontStyle.cs
similarity index 52%
rename from Vocaluxe/Base/Fonts/CFont.cs
rename to Vocaluxe/Base/Fonts/CFontStyle.cs
index e1408b72..ba59e87b 100644
--- a/Vocaluxe/Base/Fonts/CFont.cs
+++ b/Vocaluxe/Base/Fonts/CFontStyle.cs
@@ -24,48 +24,64 @@ using VocaluxeLib.Draw;
namespace Vocaluxe.Base.Fonts
{
- class CFont : IDisposable
+ class CFontStyle : IDisposable
{
- private readonly Dictionary _Glyphs;
+ private readonly string _FilePath;
+ private readonly EStyle _Style;
+ public readonly float Outline; //0..1, 0=not outline 1=100% outline
+ public readonly SColorF OutlineColor;
+ private readonly float _MaxGlyphHeight;
+ private readonly Dictionary _Glyphs = new Dictionary();
private PrivateFontCollection _Fonts;
private FontFamily _Family;
- private readonly float _MaxGlyphHeight;
- private readonly string _FilePath;
-
- private bool _Disposed;
-
- public CFont(string file)
+ public CFontStyle(string file, EStyle style, float outline, SColorF outlineColor)
{
_FilePath = file;
+ _Style = style;
+ Outline = outline;
+ OutlineColor = outlineColor;
- _Glyphs = new Dictionary();
-
- switch (CConfig.TextureQuality)
+ switch (CConfig.Config.Graphics.TextureQuality)
{
case ETextureQuality.TR_CONFIG_TEXTURE_LOWEST:
- _MaxGlyphHeight = 25f;
+ _MaxGlyphHeight = 20f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_LOW:
- _MaxGlyphHeight = 50f;
+ _MaxGlyphHeight = 40f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_MEDIUM:
- _MaxGlyphHeight = 100f;
+ _MaxGlyphHeight = 60f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_HIGH:
- _MaxGlyphHeight = 200f;
+ _MaxGlyphHeight = 80f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_HIGHEST:
- _MaxGlyphHeight = 400f;
- break;
- default:
_MaxGlyphHeight = 100f;
break;
+ default:
+ _MaxGlyphHeight = 60f;
+ break;
}
- _MaxGlyphHeight = 50;
}
- public Font GetFont()
+ private FontStyle _GetSystemFontStyle()
+ {
+ switch (_Style)
+ {
+ case EStyle.Normal:
+ return FontStyle.Regular;
+ case EStyle.Italic:
+ return FontStyle.Italic;
+ case EStyle.Bold:
+ return FontStyle.Bold;
+ case EStyle.BoldItalic:
+ return FontStyle.Bold | FontStyle.Italic;
+ }
+ throw new ArgumentException("Invalid style: " + _Style);
+ }
+
+ public Font GetSystemFont(float height)
{
if (_Fonts == null)
{
@@ -80,100 +96,83 @@ namespace Vocaluxe.Base.Fonts
CLog.LogError("Error opening font file " + _FilePath + ": " + e.Message);
}
}
- return new Font(_Family, CFonts.Height, CFonts.GetFontStyle(), GraphicsUnit.Pixel);
+ return new Font(_Family, height, _GetSystemFontStyle(), GraphicsUnit.Pixel);
}
- public void DrawGlyph(char chr, float x, float y, float z, SColorF color)
+ public void DrawGlyph(char chr, float fontHeight, float x, float y, float z, SColorF color)
{
- CTexture texture;
+ CTextureRef texture;
SRectF rect;
- GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
+ GetOrAddGlyph(chr, fontHeight).GetTextureAndRect(fontHeight, x, y, z, out texture, out rect);
CDraw.DrawTexture(texture, rect, color);
}
- public void DrawGlyph(char chr, float x, float y, float z, SColorF color, float begin, float end)
+ public void DrawGlyph(char chr, float fontHeight, float x, float y, float z, SColorF color, float begin, float end)
{
- CTexture texture;
+ CTextureRef texture;
SRectF rect;
- GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
+ GetOrAddGlyph(chr, fontHeight).GetTextureAndRect(fontHeight, x, y, z, out texture, out rect);
CDraw.DrawTexture(texture, rect, color, begin, end);
}
- public void DrawGlyphReflection(char chr, float x, float y, float z, SColorF color, float rspace, float rheight)
+ public void DrawGlyphReflection(char chr, float fontHeight, float x, float y, float z, SColorF color, float rspace, float rheight)
{
- CTexture texture;
+ CTextureRef texture;
SRectF rect;
- GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
+ GetOrAddGlyph(chr, fontHeight).GetTextureAndRect(fontHeight, x, y, z, out texture, out rect);
CDraw.DrawTextureReflection(texture, rect, color, rect, rspace, rheight);
}
- public float GetWidth(char chr)
+ public float GetWidth(char chr, float height)
{
- return GetOrAddGlyph(chr).Width;
+ return GetOrAddGlyph(chr, height).GetWidth(height);
}
- public float GetHeight(char chr)
+ public float GetHeight(char chr, float height)
{
- return GetOrAddGlyph(chr).Height;
+ return GetOrAddGlyph(chr, height).GetHeight(height);
}
- public CGlyph GetOrAddGlyph(char chr)
+ public CGlyph GetOrAddGlyph(char chr, float height)
{
CGlyph glyph;
if (!_Glyphs.TryGetValue(chr, out glyph))
{
- glyph = new CGlyph(chr, _MaxGlyphHeight);
+ float maxHeight = (height < 0 || _MaxGlyphHeight + 50 >= height) ? _MaxGlyphHeight : (float)Math.Round(height / 50) * 50;
+ glyph = new CGlyph(chr, this, maxHeight);
_Glyphs.Add(chr, glyph);
}
- if (glyph.MaxHeight + 50 < CFonts.Height)
+ if (glyph.MaxHeight + 50 < height)
{
glyph.UnloadTexture();
- glyph = new CGlyph(chr, (float)Math.Round(CFonts.Height / 50) * 50);
+ glyph = new CGlyph(chr, this, (float)Math.Round(height / 50) * 50);
_Glyphs[chr] = glyph;
}
return glyph;
}
- public void UnloadGlyphs()
+ private void _UnloadGlyphs()
{
foreach (CGlyph glyph in _Glyphs.Values)
glyph.UnloadTexture();
_Glyphs.Clear();
}
+ private bool _Disposed;
+
public void Dispose()
{
if (!_Disposed)
{
if (_Fonts != null)
+ {
_Fonts.Dispose();
- UnloadGlyphs();
+ _Fonts = null;
+ }
+ _UnloadGlyphs();
_Disposed = true;
}
GC.SuppressFinalize(this);
}
}
-
- struct SFont
- {
- public string Name;
-
- public bool IsThemeFont;
- public int PartyModeID;
- public string ThemeName;
-
- public string Folder;
- public string FileNormal;
- public string FileItalic;
- public string FileBold;
- public string FileBoldItalic;
-
- public float Outline; //0..1, 0=not outline 1=100% outline
- public SColorF OutlineColor;
-
- public CFont Normal;
- public CFont Italic;
- public CFont Bold;
- public CFont BoldItalic;
- }
}
\ No newline at end of file
diff --git a/Vocaluxe/Base/Fonts/CFonts.cs b/Vocaluxe/Base/Fonts/CFonts.cs
index 1fa9ee31..b0ab10d8 100644
--- a/Vocaluxe/Base/Fonts/CFonts.cs
+++ b/Vocaluxe/Base/Fonts/CFonts.cs
@@ -15,216 +15,132 @@
// along with Vocaluxe. If not, see .
#endregion
+using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
-using System.Xml;
using VocaluxeLib;
using VocaluxeLib.Menu;
+using VocaluxeLib.Xml;
namespace Vocaluxe.Base.Fonts
{
static class CFonts
{
- private static readonly List _Fonts = new List();
- private static int _CurrentFont;
- private static float _Height = 1f;
+ private static bool _IsInitialized;
+ private static readonly List _FontFamilies = new List();
+ private static readonly List