Merge branch 'develop' into More-Customisable-Notes
This commit is contained in:
commit
dcfbdad4e7
60 files changed
+5852
-1888
No files matched your search
@@ -0,0 +1,9 @@
|
|||||||
|
Write-Host "Deployment finished -> do en empty commit on the gh-pages branch to update the page"
|
||||||
|
cd ..
|
||||||
|
git clone -q "https://github.com/Vocaluxe/Vocaluxe.git" -b "gh-pages" --single-branch "VocaluxeWeb"
|
||||||
|
cd VocaluxeWeb
|
||||||
|
git config --global user.email "noreply@vocaluxe.org"
|
||||||
|
git config --global user.name "VocaluxeBuildBot"
|
||||||
|
git commit --allow-empty -m "Trigger page update after a new publish (triggered by $Env:APPVEYOR_REPO_COMMIT_MESSAGE [$Env:APPVEYOR_REPO_COMMIT])"
|
||||||
|
git push -q "https://$($Env:GitHubKey):x-oauth-basic@github.com/Vocaluxe/Vocaluxe.git" "gh-pages"
|
||||||
|
cd ..\Vocaluxe
|
||||||
@@ -7,6 +7,8 @@ else{
|
|||||||
Return;
|
Return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$Env:IS_BETA_RELEASE = ($Env:APPVEYOR_REPO_TAG_NAME -match "beta")
|
||||||
|
|
||||||
$getRelaseInfoParams = @{
|
$getRelaseInfoParams = @{
|
||||||
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/tags/$targetTag";
|
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/tags/$targetTag";
|
||||||
Method = 'GET';
|
Method = 'GET';
|
||||||
@@ -23,20 +25,26 @@ catch [System.Net.WebException]
|
|||||||
# No Release found for this tag
|
# No Release found for this tag
|
||||||
$statusCode = [int]$_.Exception.Response.StatusCode
|
$statusCode = [int]$_.Exception.Response.StatusCode
|
||||||
$html = $_.Exception.Response.StatusDescription
|
$html = $_.Exception.Response.StatusDescription
|
||||||
Write-Host "No Release found for this tag ($html): $($Env:APPVEYOR_REPO_TAG_NAME)"
|
Write-Host "No Release found for this tag ($html): $targetTag"
|
||||||
Return;
|
Return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$assetId = ($result.assets | where {$_.name -EQ "Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip" } | Select-Object -first 1 ).id
|
$releaseId = $result.id
|
||||||
|
|
||||||
if(!$assetId){
|
if(!$releaseId){
|
||||||
# No matching asset found in this release
|
# No matching release found in this release
|
||||||
Write-Host "No matching asset found in this release: Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip"
|
Write-Host "No matching release found"
|
||||||
|
Return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($result.body -match $Env:APPVEYOR_REPO_COMMIT){
|
||||||
|
# An other build already recreated the release
|
||||||
|
Write-Host "An other build already recreated the release"
|
||||||
Return;
|
Return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$deleteAssetParams = @{
|
$deleteAssetParams = @{
|
||||||
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/assets/$assetId";
|
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/$releaseId";
|
||||||
Method = 'DELETE';
|
Method = 'DELETE';
|
||||||
Headers = @{
|
Headers = @{
|
||||||
Authorization = 'Basic ' + [Convert]::ToBase64String(
|
Authorization = 'Basic ' + [Convert]::ToBase64String(
|
||||||
@@ -45,14 +53,14 @@ $deleteAssetParams = @{
|
|||||||
}
|
}
|
||||||
try{
|
try{
|
||||||
$result = Invoke-RestMethod @deleteAssetParams
|
$result = Invoke-RestMethod @deleteAssetParams
|
||||||
Write-Host "Successfully deleted asset: Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip"
|
Write-Host "Successfully deleted release for: $targetTag"
|
||||||
}
|
}
|
||||||
catch [System.Net.WebException]
|
catch [System.Net.WebException]
|
||||||
{
|
{
|
||||||
# Could not delete asset
|
# Could not delete release
|
||||||
$statusCode = [int]$_.Exception.Response.StatusCode
|
$statusCode = [int]$_.Exception.Response.StatusCode
|
||||||
$html = $_.Exception.Response.StatusDescription
|
$html = $_.Exception.Response.StatusDescription
|
||||||
Write-Host "Could not delete asset ($html): Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip"
|
Write-Host "Could not delete release ($html) for: $targetTag"
|
||||||
Return;
|
Return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Executable → Regular
+1
@@ -4,4 +4,5 @@ cd $PROJECT
|
|||||||
sed -i -r -e 's/AssemblyInformationalVersion\(".*?"\)/AssemblyInformationalVersion("GITVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
sed -i -r -e 's/AssemblyInformationalVersion\(".*?"\)/AssemblyInformationalVersion("GITVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
||||||
sed -i -r -e 's/AssemblyVersion\(".*?"\)/AssemblyVersion("SHORTVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
sed -i -r -e 's/AssemblyVersion\(".*?"\)/AssemblyVersion("SHORTVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
||||||
sed -i -r -e 's/AssemblyFileVersion\(".*?"\)/AssemblyFileVersion("SHORTVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
sed -i -r -e 's/AssemblyFileVersion\(".*?"\)/AssemblyFileVersion("SHORTVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
||||||
|
sed -i -r -e 's/AssemblyTitle\(".*?"\)/AssemblyTitle("FULLVERSION")/' $PROJECT/Properties/AssemblyInfo.cs
|
||||||
sed -i -e 's/var matchingServerVersion = "";/var matchingServerVersion = "'$(git describe --long)'";/' $PROJECT/../Output/Website/js/main.js
|
sed -i -e 's/var matchingServerVersion = "";/var matchingServerVersion = "'$(git describe --long)'";/' $PROJECT/../Output/Website/js/main.js
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
PROJECT=$1
|
||||||
|
cd $PROJECT
|
||||||
|
arch=$2
|
||||||
|
version=$(git describe --long)
|
||||||
|
shortVersion=${version%%-*}
|
||||||
|
shortVersionClean=$(echo $shortVersion | sed -e 's/alpha/0/' -e 's/beta/1/' -e 's/rc/2/' -e 's/[[:alpha:]]//g')
|
||||||
|
|
||||||
|
case ${shortVersion##*.} in
|
||||||
|
alpha*)
|
||||||
|
releaseType='Alpha'
|
||||||
|
;;
|
||||||
|
beta*)
|
||||||
|
releaseType='Beta'
|
||||||
|
;;
|
||||||
|
rc*)
|
||||||
|
releaseType='RC'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
releaseType='Release'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
versionName=$(grep -oP "\"${shortVersionClean%.*}.\" *: *\"\K([^\"]+)(?=\")" ../.build/versionNames.json)
|
||||||
|
fullVersionName="Vocaluxe $([ "$versionName" == "" ] && echo "" || echo "'$versionName' ")$shortVersion ($arch) $([ "$releaseType" == "Release" ] && echo "" || echo "$releaseType ")($version)"
|
||||||
|
|
||||||
|
sed -i -e s/GITVERSION/$(git describe --long)/ $PROJECT/Properties/AssemblyInfo.cs
|
||||||
|
sed -i -e s/SHORTVERSION/"$shortVersionClean"/ $PROJECT/Properties/AssemblyInfo.cs
|
||||||
|
sed -i -e s/FULLVERSION/"$fullVersionName"/ $PROJECT/Properties/AssemblyInfo.cs
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"0.0.": "Unversioned Build",
|
||||||
|
"0.1.": "Rising Start",
|
||||||
|
"0.2.": "Sparkling Sky",
|
||||||
|
"0.3.": "Shining Heaven",
|
||||||
|
"0.4.": "Blue Sunrise"
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[String]$ProjectDir
|
||||||
|
)
|
||||||
|
|
||||||
|
if($Env:GIT_VERSION_TAG)
|
||||||
|
{
|
||||||
|
$version = $Env:GIT_VERSION_TAG;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$version = git describe --long;
|
||||||
|
}
|
||||||
|
|
||||||
|
(Get-Content -Encoding UTF8 "$($ProjectDir)..\Output\Website\js\main.js") `
|
||||||
|
| Foreach-Object {$_ -replace '(?<=var *matchingServerVersion * = *\")\w*(?=\" *;)', "$version"} `
|
||||||
|
| Set-Content -Encoding UTF8 "$($ProjectDir)..\Output\Website\js\main.js"
|
||||||
|
|
||||||
|
(Get-Content -Encoding UTF8 "$($ProjectDir)Properties\AssemblyInfo.cs") `
|
||||||
|
| Foreach-Object {$_ -replace '(?<=AssemblyInformationalVersion\(\").*(?=\")', 'GITVERSION'} `
|
||||||
|
| Foreach-Object {$_ -replace '(?<=(AssemblyVersion|AssemblyFileVersion)\(\").*(?=\")', 'SHORTVERSION'} `
|
||||||
|
| Foreach-Object {$_ -replace '(?<=AssemblyTitle\(\").*(?=\")', 'FULLVERSION'} `
|
||||||
|
| Set-Content -Encoding UTF8 "$($ProjectDir)Properties\AssemblyInfo.cs"
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[String]$ProjectDir,
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[String]$Arch
|
||||||
|
)
|
||||||
|
|
||||||
|
if($Env:GIT_VERSION_TAG)
|
||||||
|
{
|
||||||
|
$version = $Env:GIT_VERSION_TAG;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$version = git describe --long;
|
||||||
|
}
|
||||||
|
|
||||||
|
$shortVersion = $version.Split('-')[0];
|
||||||
|
|
||||||
|
[System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")
|
||||||
|
$versionName = (New-Object System.Web.Script.Serialization.JavaScriptSerializer).Deserialize((Get-Content "$($ProjectDir)..\.build\versionNames.json"), `
|
||||||
|
[System.Collections.Hashtable])[([regex]"[0-9]+\.[0-9]+\.").Match($shortVersion).Value]
|
||||||
|
|
||||||
|
$releaseType = switch -wildcard ($shortVersion.Split('.')[2])
|
||||||
|
{
|
||||||
|
"alpha*" {"Alpha"}
|
||||||
|
"beta*" {"Beta"}
|
||||||
|
"rc*" {"RC"}
|
||||||
|
default {"Release"}
|
||||||
|
};
|
||||||
|
|
||||||
|
$fullVersionName = "Vocaluxe $(if($versionName) {"'"+$versionName+"' "} else {''})$shortVersion ($Arch) $(if($releaseType -ne "Release") {'$releaseType '} else {''})($version)"
|
||||||
|
|
||||||
|
(Get-Content -Encoding UTF8 "$($ProjectDir)Properties\AssemblyInfo.cs") `
|
||||||
|
| Foreach-Object {$_ `
|
||||||
|
-replace '(?<=AssemblyInformationalVersion\(").*(?=")', $version `
|
||||||
|
-replace '(?<=(AssemblyVersion|AssemblyFileVersion)\(").*(?=")', `
|
||||||
|
($version.Split('-')[0].replace('alpha','0').replace('beta','1').replace('rc','2') -replace "[a-zA-Z]+","")`
|
||||||
|
-replace '(?<=AssemblyTitle\(").*(?=")', $fullVersionName `
|
||||||
|
-replace '(?<=AssemblyCopyright\(".*)[0-9]+(?=")', (Get-Date).Year} `
|
||||||
|
| Set-Content -Encoding UTF8 "$($ProjectDir)Properties\AssemblyInfo.cs"
|
||||||
+7
-5
@@ -2,6 +2,7 @@ obj
|
|||||||
PitchTracker.dll
|
PitchTracker.dll
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
.transifexrc
|
.transifexrc
|
||||||
|
.vs
|
||||||
tx.exe
|
tx.exe
|
||||||
*.mp4
|
*.mp4
|
||||||
*.pdb
|
*.pdb
|
||||||
@@ -30,6 +31,7 @@ tx.exe
|
|||||||
*.user
|
*.user
|
||||||
*.VC.db
|
*.VC.db
|
||||||
*.VC.opendb
|
*.VC.opendb
|
||||||
|
*.dll.config
|
||||||
/*.vsp
|
/*.vsp
|
||||||
/*.ctl
|
/*.ctl
|
||||||
/Output/Config.xml
|
/Output/Config.xml
|
||||||
@@ -48,16 +50,16 @@ tx.exe
|
|||||||
/Output/Songs
|
/Output/Songs
|
||||||
/Output/Playlists/*.xml
|
/Output/Playlists/*.xml
|
||||||
/Output/Profiles/*.xml
|
/Output/Profiles/*.xml
|
||||||
|
/Output/Profiles/*.png
|
||||||
/Output/PartyModes/*/Code/*
|
/Output/PartyModes/*/Code/*
|
||||||
/PartyModes/*/*/*.dll
|
/PartyModes/*/*/*.dll
|
||||||
/VocaluxeLib/bin
|
/VocaluxeLib/bin
|
||||||
/ServerLib/bin/ClientServerLib.dll
|
/ServerLib/bin/ClientServerLib.dll
|
||||||
/Installer/setup-cache
|
/Installer/setup-cache
|
||||||
/Installer/setup-SetupFiles
|
/Installer/Files
|
||||||
/Installer/vocaluxe-*-setup.exe
|
/Installer/log.txt
|
||||||
/Installer/Vocaluxe*.rar
|
/Installer/setup-cache
|
||||||
/Installer/Prerequisites/GStreamer x64/gstreamer-1.0-x86_64-1.4.1.msi
|
/Installer/Setup Files
|
||||||
/Installer/Prerequisites/GStreamer x86/gstreamer-1.0-x86-1.4.1.msi
|
|
||||||
/WebserverInitalConfig/bin
|
/WebserverInitalConfig/bin
|
||||||
/PhoneGap/
|
/PhoneGap/
|
||||||
/TestResults
|
/TestResults
|
||||||
|
|||||||
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -1,14 +0,0 @@
|
|||||||
REM compile x64
|
|
||||||
call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
|
|
||||||
devenv.com ..\Vocaluxe.sln /Rebuild "InstallerWin|x64"
|
|
||||||
|
|
||||||
REM remove old x64 executables if found and rename
|
|
||||||
if exist "..\Output\Vocaluxe_x64.exe" del "..\Output\Vocaluxe_x64.exe"
|
|
||||||
ren "..\Output\Vocaluxe.exe" "Vocaluxe_x64.exe"
|
|
||||||
|
|
||||||
REM compile x86
|
|
||||||
call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x86
|
|
||||||
devenv.com ..\Vocaluxe.sln /Rebuild "InstallerWin|x86"
|
|
||||||
|
|
||||||
REM compile installer
|
|
||||||
AdvancedInstaller.com /rebuild setup.aip
|
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
:: Build script for vocaluxe installer (x86 and x64 versions)
|
||||||
|
::
|
||||||
|
:: Requirements
|
||||||
|
:: - wget.exe: http://gnuwin32.sourceforge.net/packages/wget.htm
|
||||||
|
:: - unzip.exe: http://gnuwin32.sourceforge.net/packages/unzip.htm
|
||||||
|
:: - nuget.exe: https://www.nuget.org/downloads
|
||||||
|
:: - Visual Studio with devenv.exe (should be located in somewhere in Visual Studio folder, e.g. C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE)
|
||||||
|
:: - AdvancedInstaller
|
||||||
|
|
||||||
|
@ECHO OFF
|
||||||
|
echo Cloning vocaluxe from github and checkout master
|
||||||
|
if exist "Files" (
|
||||||
|
cd Files
|
||||||
|
git checkout -q develop >> log.txt
|
||||||
|
git pull -q >> log.txt
|
||||||
|
cd ../
|
||||||
|
) else (
|
||||||
|
git clone -q https://github.com/Vocaluxe/Vocaluxe.git Files > log.txt
|
||||||
|
cd Files
|
||||||
|
git checkout -q develop >> log.txt
|
||||||
|
cd ../
|
||||||
|
)
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Download ambient videos and move them to themes folder
|
||||||
|
wget --append-output=log.txt -q -O videos.zip https://github.com/lukeIam/VocaluxeDependencies/blob/master/zips/themes/vocaluxe.themes.ambient.video.zip?raw=true || goto :error
|
||||||
|
unzip -q -o -d Files/Output videos.zip || goto :error
|
||||||
|
del /q videos.zip >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Delete lib-folder to prevent packing wrong dlls
|
||||||
|
del /q Files\Output\libs >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Restore dependencies and build x64
|
||||||
|
nuget restore Files/Vocaluxe.sln >> log.txt || goto :error
|
||||||
|
devenv Files/Vocaluxe.sln /Build "InstallerWin|x64" >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Build x64 installer
|
||||||
|
AdvancedInstaller.com /rebuild setup.aip -buildslist x64 >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Delete lib-folder to prevent packing wrong dlls
|
||||||
|
del /q Files\Output\libs >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Restore dependencies and build x86
|
||||||
|
nuget restore Files/Vocaluxe.sln >> log.txt || goto :error
|
||||||
|
devenv Files/Vocaluxe.sln /Build "InstallerWin|x86" >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Build x86 installer
|
||||||
|
AdvancedInstaller.com /rebuild setup.aip -buildslist x86 >> log.txt || goto :error
|
||||||
|
echo - Done
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo Everything is done!
|
||||||
|
|
||||||
|
pause
|
||||||
|
goto :EOF
|
||||||
|
|
||||||
|
:error
|
||||||
|
echo Failed with error #%errorlevel%.
|
||||||
|
echo See log.txt for more details.
|
||||||
|
pause
|
||||||
|
exit /b %errorlevel%
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
@echo off
|
|
||||||
SET version=v0.3.0
|
|
||||||
SET status=Beta
|
|
||||||
SET buildnum=0081
|
|
||||||
SET buildname=Vocaluxe %version% %status% (%buildnum%).rar
|
|
||||||
|
|
||||||
REM compile x64
|
|
||||||
call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x64
|
|
||||||
devenv.com ..\Vocaluxe.sln /Rebuild "ReleaseWin|x64"
|
|
||||||
|
|
||||||
REM remove old x64 executables if found and rename
|
|
||||||
if exist "..\Output\Vocaluxe_x64.exe" del "..\Output\Vocaluxe_x64.exe"
|
|
||||||
ren "..\Output\Vocaluxe.exe" "Vocaluxe_x64.exe"
|
|
||||||
|
|
||||||
REM compile x86
|
|
||||||
call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" x86
|
|
||||||
devenv.com ..\Vocaluxe.sln /Rebuild "ReleaseWin|x86"
|
|
||||||
|
|
||||||
REM package
|
|
||||||
rar a -r -ep1 -x..\Output\CoverDB.sqlite -x..\Output\HighscoreDB.sqlite -x..\Output\*.log -x..\Output\*.pdb -x..\Output\Config.xml -x..\Output\Vocaluxe.vshost* -x..\Output\Songs -x..\Output\Screenshots -x..\Output\Playlists "%buildname%" "..\Output\*"
|
|
||||||
+3864
-846
File diff suppressed because it is too large.
Load diff
@@ -73,6 +73,8 @@
|
|||||||
<string name="TR_CONFIG_TIMERMODE_TOTAL">Celkem</string>
|
<string name="TR_CONFIG_TIMERMODE_TOTAL">Celkem</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normální</string>
|
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normální</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Rozšířené</string>
|
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Rozšířené</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Uvést vše</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Uvést nejlepší</string>
|
||||||
<string name="TR_CONFIG_OWN_MUSIC">Vlastní hudba a hudba na pozadí</string>
|
<string name="TR_CONFIG_OWN_MUSIC">Vlastní hudba a hudba na pozadí</string>
|
||||||
<string name="TR_CONFIG_NO_OWN_MUSIC">Žádná vlastní hudba</string>
|
<string name="TR_CONFIG_NO_OWN_MUSIC">Žádná vlastní hudba</string>
|
||||||
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Pouze vlastní hudba</string>
|
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Pouze vlastní hudba</string>
|
||||||
@@ -183,6 +185,7 @@
|
|||||||
<string name="TR_SCREENOGAME_TABS">Karty</string>
|
<string name="TR_SCREENOGAME_TABS">Karty</string>
|
||||||
<string name="TR_SCREENOGAME_DIFFICULTY">Obtížnost hry</string>
|
<string name="TR_SCREENOGAME_DIFFICULTY">Obtížnost hry</string>
|
||||||
<string name="TR_SCREENOGAME_TIMERMODE">Režim časomíry</string>
|
<string name="TR_SCREENOGAME_TIMERMODE">Režim časomíry</string>
|
||||||
|
<string name="TR_SCREENOGAME_HIGHSCORESTYLE">Styl pro nejlepší výsledky</string>
|
||||||
<string name="TR_SCREENORECORD_OPTIONS">Nastavení nahrávání</string>
|
<string name="TR_SCREENORECORD_OPTIONS">Nastavení nahrávání</string>
|
||||||
<string name="TR_SCREENORECORD_DEVICE">Zařízení</string>
|
<string name="TR_SCREENORECORD_DEVICE">Zařízení</string>
|
||||||
<string name="TR_SCREENORECORD_INPUT">Vstup</string>
|
<string name="TR_SCREENORECORD_INPUT">Vstup</string>
|
||||||
@@ -201,6 +204,7 @@
|
|||||||
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Zdroj hudby na pozadí</string>
|
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Zdroj hudby na pozadí</string>
|
||||||
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Hlasitost ukázky</string>
|
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Hlasitost ukázky</string>
|
||||||
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Hlasitost hry</string>
|
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Hlasitost hry</string>
|
||||||
|
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Efekt Karaoke</string>
|
||||||
<string name="TR_SCREENOTHEME_OPTIONS">Nastavení tématu</string>
|
<string name="TR_SCREENOTHEME_OPTIONS">Nastavení tématu</string>
|
||||||
<string name="TR_SCREENOTHEME_THEME">Téma</string>
|
<string name="TR_SCREENOTHEME_THEME">Téma</string>
|
||||||
<string name="TR_SCREENOTHEME_SKIN">Vzhled</string>
|
<string name="TR_SCREENOTHEME_SKIN">Vzhled</string>
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
<string name="TR_CONFIG_LEVEL2">Niveau 2</string>
|
<string name="TR_CONFIG_LEVEL2">Niveau 2</string>
|
||||||
<string name="TR_CONFIG_LEVEL3">Niveau 3</string>
|
<string name="TR_CONFIG_LEVEL3">Niveau 3</string>
|
||||||
<string name="TR_CONFIG_LEVEL_MAX">Max</string>
|
<string name="TR_CONFIG_LEVEL_MAX">Max</string>
|
||||||
|
<string name="TR_CONFIG_LIST">Afficher</string>
|
||||||
<string name="TR_CONFIG_DREIDEL">Caroussel</string>
|
<string name="TR_CONFIG_DREIDEL">Caroussel</string>
|
||||||
<string name="TR_CONFIG_TILE_BOARD">Damier</string>
|
<string name="TR_CONFIG_TILE_BOARD">Damier</string>
|
||||||
<string name="TR_CONFIG_BOOK">Livre</string>
|
<string name="TR_CONFIG_BOOK">Livre</string>
|
||||||
@@ -72,6 +73,8 @@
|
|||||||
<string name="TR_CONFIG_TIMERMODE_TOTAL">Total</string>
|
<string name="TR_CONFIG_TIMERMODE_TOTAL">Total</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normal</string>
|
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normal</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Développé</string>
|
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Développé</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Tout afficher</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Afficher les meilleurs</string>
|
||||||
<string name="TR_CONFIG_OWN_MUSIC">Musique personnelle et Musique de fond</string>
|
<string name="TR_CONFIG_OWN_MUSIC">Musique personnelle et Musique de fond</string>
|
||||||
<string name="TR_CONFIG_NO_OWN_MUSIC">Pas de Musique personnelle</string>
|
<string name="TR_CONFIG_NO_OWN_MUSIC">Pas de Musique personnelle</string>
|
||||||
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Seulement la Musique personnelle</string>
|
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Seulement la Musique personnelle</string>
|
||||||
@@ -79,6 +82,10 @@
|
|||||||
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Tout</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Tout</string>
|
||||||
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Seulement noms et avatars</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Seulement noms et avatars</string>
|
||||||
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Rien</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Rien</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_FILL">Remplir</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_JUMP">Sauter</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_SLIDE">Glisser</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_ZOOM">Zoomer</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">En bas</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">En bas</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_TOP">En haut</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_TOP">En haut</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">En haut et en bas</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">En haut et en bas</string>
|
||||||
@@ -178,6 +185,7 @@
|
|||||||
<string name="TR_SCREENOGAME_TABS">Dossiers</string>
|
<string name="TR_SCREENOGAME_TABS">Dossiers</string>
|
||||||
<string name="TR_SCREENOGAME_DIFFICULTY">Difficulté du Jeu</string>
|
<string name="TR_SCREENOGAME_DIFFICULTY">Difficulté du Jeu</string>
|
||||||
<string name="TR_SCREENOGAME_TIMERMODE">Mode du Minuteur</string>
|
<string name="TR_SCREENOGAME_TIMERMODE">Mode du Minuteur</string>
|
||||||
|
<string name="TR_SCREENOGAME_HIGHSCORESTYLE">Style meilleur score</string>
|
||||||
<string name="TR_SCREENORECORD_OPTIONS">Options d'Enregistrement</string>
|
<string name="TR_SCREENORECORD_OPTIONS">Options d'Enregistrement</string>
|
||||||
<string name="TR_SCREENORECORD_DEVICE">Appareil</string>
|
<string name="TR_SCREENORECORD_DEVICE">Appareil</string>
|
||||||
<string name="TR_SCREENORECORD_INPUT">Entrée</string>
|
<string name="TR_SCREENORECORD_INPUT">Entrée</string>
|
||||||
@@ -196,6 +204,7 @@
|
|||||||
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Source de la Musique de fond</string>
|
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Source de la Musique de fond</string>
|
||||||
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Volume de la Musique de prévisualisation</string>
|
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Volume de la Musique de prévisualisation</string>
|
||||||
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volume de la Musique du jeu</string>
|
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volume de la Musique du jeu</string>
|
||||||
|
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Effet Karaoké</string>
|
||||||
<string name="TR_SCREENOTHEME_OPTIONS">Options du Thème</string>
|
<string name="TR_SCREENOTHEME_OPTIONS">Options du Thème</string>
|
||||||
<string name="TR_SCREENOTHEME_THEME">Thème</string>
|
<string name="TR_SCREENOTHEME_THEME">Thème</string>
|
||||||
<string name="TR_SCREENOTHEME_SKIN">Environnement graphique</string>
|
<string name="TR_SCREENOTHEME_SKIN">Environnement graphique</string>
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
<string name="TR_CONFIG_LEVEL2">Livello 2</string>
|
<string name="TR_CONFIG_LEVEL2">Livello 2</string>
|
||||||
<string name="TR_CONFIG_LEVEL3">Livello 3</string>
|
<string name="TR_CONFIG_LEVEL3">Livello 3</string>
|
||||||
<string name="TR_CONFIG_LEVEL_MAX">Max</string>
|
<string name="TR_CONFIG_LEVEL_MAX">Max</string>
|
||||||
|
<string name="TR_CONFIG_LIST">Elenco</string>
|
||||||
<string name="TR_CONFIG_DREIDEL">Dreidel</string>
|
<string name="TR_CONFIG_DREIDEL">Dreidel</string>
|
||||||
<string name="TR_CONFIG_TILE_BOARD">Scacchiera</string>
|
<string name="TR_CONFIG_TILE_BOARD">Scacchiera</string>
|
||||||
<string name="TR_CONFIG_BOOK">Libro</string>
|
<string name="TR_CONFIG_BOOK">Libro</string>
|
||||||
@@ -72,6 +73,8 @@
|
|||||||
<string name="TR_CONFIG_TIMERMODE_TOTAL">Totale</string>
|
<string name="TR_CONFIG_TIMERMODE_TOTAL">Totale</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normale</string>
|
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normale</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Espanso</string>
|
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Espanso</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Elenco tutti</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Elenco migliori</string>
|
||||||
<string name="TR_CONFIG_OWN_MUSIC">Musica personale e musica di sfondo</string>
|
<string name="TR_CONFIG_OWN_MUSIC">Musica personale e musica di sfondo</string>
|
||||||
<string name="TR_CONFIG_NO_OWN_MUSIC">Nessuna musica personale</string>
|
<string name="TR_CONFIG_NO_OWN_MUSIC">Nessuna musica personale</string>
|
||||||
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Solo musica personale</string>
|
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Solo musica personale</string>
|
||||||
@@ -79,6 +82,9 @@
|
|||||||
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Tutto</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Tutto</string>
|
||||||
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Solo nomi e avatar</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Solo nomi e avatar</string>
|
||||||
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Niente</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Niente</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_FILL">Riempi</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_JUMP">Salta</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_ZOOM">Zoom</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">Sotto</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">Sotto</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_TOP">Sopra</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_TOP">Sopra</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">Sopra e sotto</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">Sopra e sotto</string>
|
||||||
@@ -196,6 +202,7 @@
|
|||||||
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Sorgente musica di sfondo</string>
|
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Sorgente musica di sfondo</string>
|
||||||
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Anteprima volume musica</string>
|
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Anteprima volume musica</string>
|
||||||
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volume musica di gioco</string>
|
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volume musica di gioco</string>
|
||||||
|
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Effetto karaoke</string>
|
||||||
<string name="TR_SCREENOTHEME_OPTIONS">Opzioni tema</string>
|
<string name="TR_SCREENOTHEME_OPTIONS">Opzioni tema</string>
|
||||||
<string name="TR_SCREENOTHEME_THEME">Tema</string>
|
<string name="TR_SCREENOTHEME_THEME">Tema</string>
|
||||||
<string name="TR_SCREENOTHEME_SKIN">Skin</string>
|
<string name="TR_SCREENOTHEME_SKIN">Skin</string>
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
<string name="TR_CONFIG_LEVEL2">Nivel 2</string>
|
<string name="TR_CONFIG_LEVEL2">Nivel 2</string>
|
||||||
<string name="TR_CONFIG_LEVEL3">Nivel 3</string>
|
<string name="TR_CONFIG_LEVEL3">Nivel 3</string>
|
||||||
<string name="TR_CONFIG_LEVEL_MAX">Máx</string>
|
<string name="TR_CONFIG_LEVEL_MAX">Máx</string>
|
||||||
|
<string name="TR_CONFIG_LIST">Listado</string>
|
||||||
<string name="TR_CONFIG_DREIDEL">Dreidel</string>
|
<string name="TR_CONFIG_DREIDEL">Dreidel</string>
|
||||||
<string name="TR_CONFIG_TILE_BOARD">Cuadrícula</string>
|
<string name="TR_CONFIG_TILE_BOARD">Cuadrícula</string>
|
||||||
<string name="TR_CONFIG_BOOK">Libro</string>
|
<string name="TR_CONFIG_BOOK">Libro</string>
|
||||||
@@ -72,6 +73,8 @@
|
|||||||
<string name="TR_CONFIG_TIMERMODE_TOTAL">Total</string>
|
<string name="TR_CONFIG_TIMERMODE_TOTAL">Total</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normal</string>
|
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normal</string>
|
||||||
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Expandido</string>
|
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Expandido</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Ver todo</string>
|
||||||
|
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Mejores puntuaciones</string>
|
||||||
<string name="TR_CONFIG_OWN_MUSIC">Canciones del juego y tema Vocaluxe</string>
|
<string name="TR_CONFIG_OWN_MUSIC">Canciones del juego y tema Vocaluxe</string>
|
||||||
<string name="TR_CONFIG_NO_OWN_MUSIC">Sin canciones del juego</string>
|
<string name="TR_CONFIG_NO_OWN_MUSIC">Sin canciones del juego</string>
|
||||||
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Solo canciones del juego</string>
|
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Solo canciones del juego</string>
|
||||||
@@ -79,6 +82,10 @@
|
|||||||
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Todas</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Todas</string>
|
||||||
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Solo nombres y avatares</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Solo nombres y avatares</string>
|
||||||
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Nada</string>
|
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Nada</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_FILL">Rellenar</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_JUMP">Saltar</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_SLIDE">Deslizar</string>
|
||||||
|
<string name="TR_CONFIG_LYRICSTYLE_ZOOM">Zoom</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">Abajo</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">Abajo</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_TOP">Arriba</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_TOP">Arriba</string>
|
||||||
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">Arriba y abajo</string>
|
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">Arriba y abajo</string>
|
||||||
@@ -89,11 +96,22 @@
|
|||||||
<string name="TR_SCREENLOAD_LOADED">cargadas</string>
|
<string name="TR_SCREENLOAD_LOADED">cargadas</string>
|
||||||
<string name="TR_SCREENMAIN_MENU">Menú Principal</string>
|
<string name="TR_SCREENMAIN_MENU">Menú Principal</string>
|
||||||
<string name="TR_SCREENMAIN_BUTTON_SING">Cantar</string>
|
<string name="TR_SCREENMAIN_BUTTON_SING">Cantar</string>
|
||||||
|
<string name="TR_SCREENMAIN_BUTTON_PARTY">Fiesta</string>
|
||||||
<string name="TR_SCREENMAIN_BUTTON_OPTIONS">Opciones</string>
|
<string name="TR_SCREENMAIN_BUTTON_OPTIONS">Opciones</string>
|
||||||
<string name="TR_SCREENMAIN_BUTTON_PROFILES">Perfiles</string>
|
<string name="TR_SCREENMAIN_BUTTON_PROFILES">Perfiles</string>
|
||||||
<string name="TR_SCREENMAIN_TEXT_NOPROFILES">¡No se encuentra perfil!</string>
|
<string name="TR_SCREENMAIN_TEXT_NOPROFILES">¡No se encuentra perfil!</string>
|
||||||
|
<string name="TR_SCREENPARTY_TITLE">Selección del modo fiesta</string>
|
||||||
|
<string name="TR_SCREENPARTY_MODES">Modo fiesta</string>
|
||||||
|
<string name="TR_SCREENPARTY_DESCRIPTION">Descripción</string>
|
||||||
|
<string name="TR_SCREENPARTY_AUTHOR">Autor</string>
|
||||||
|
<string name="TR_SCREENPARTY_VERSION">Versión</string>
|
||||||
|
<string name="TR_SCREENPARTY_ERROR">No se puede cargar este modo de fiesta</string>
|
||||||
<string name="TR_SCREENPARTY_ERROR_MICS">¡No hay micrófonos configurados!</string>
|
<string name="TR_SCREENPARTY_ERROR_MICS">¡No hay micrófonos configurados!</string>
|
||||||
<string name="TR_SCREENPARTY_ERROR_MIC_NUM">¡Se necesitan %d micrófonos para este modo fiesta!</string>
|
<string name="TR_SCREENPARTY_ERROR_MIC_NUM">¡Se necesitan %d micrófonos para este modo fiesta!</string>
|
||||||
|
<string name="TR_SCREENPARTY_TARGETAUDIENCE">Audiencia objetiva</string>
|
||||||
|
<string name="TR_SCREENPARTY_NOTEAMS">No hay equipos</string>
|
||||||
|
<string name="TR_SCREENPARTY_NUMTEAMS">Número de equipos</string>
|
||||||
|
<string name="TR_SCREENPARTY_NUMPLAYERS">Número de jugadores</string>
|
||||||
<string name="TR_SCREENNAMES_MENU">Selección de Jugadores</string>
|
<string name="TR_SCREENNAMES_MENU">Selección de Jugadores</string>
|
||||||
<string name="TR_SCREENNAMES_PLAYER">Jugador</string>
|
<string name="TR_SCREENNAMES_PLAYER">Jugador</string>
|
||||||
<string name="TR_SCREENNAMES_1PLAYER">1 Jugador</string>
|
<string name="TR_SCREENNAMES_1PLAYER">1 Jugador</string>
|
||||||
@@ -107,7 +125,19 @@
|
|||||||
<string name="TR_SCREENNAMES_WARNING_PROFILES_SG">Advertencia: ¡No hay perfil asignados al jugador %v!</string>
|
<string name="TR_SCREENNAMES_WARNING_PROFILES_SG">Advertencia: ¡No hay perfil asignados al jugador %v!</string>
|
||||||
<string name="TR_SCREENNAMES_WARNING_PROFILES_PL">Advertencia: ¡No hay perfiles asignados a los jugadores %v!</string>
|
<string name="TR_SCREENNAMES_WARNING_PROFILES_PL">Advertencia: ¡No hay perfiles asignados a los jugadores %v!</string>
|
||||||
<string name="TR_SCREENSONG_MENU">Selección de Canciones</string>
|
<string name="TR_SCREENSONG_MENU">Selección de Canciones</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_SING">Cantar</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_PLAYLIST">Añadir a lista de reproducción</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_CANCEL">Cerrar</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_RANDOM">Seleccionar una canción aleatoriamente</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_RANDOMCAT">Seleccionar una categoria aleatoriamente</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_SINGALL">Cantar todas las canciones</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_SINGALLVISIBLE">Cantar todas las canciones visibles</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_OPENPLAYLIST">Abrir lista de reproducción</string>
|
||||||
<string name="TR_SCREENSONG_BUTTON_OPEN_SELECTED_ITEM">Seleccionar</string>
|
<string name="TR_SCREENSONG_BUTTON_OPEN_SELECTED_ITEM">Seleccionar</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_RANDOMMEDLEY">Cantar una versión corta de canción aleatoria</string>
|
||||||
|
<string name="TR_SCREENSONG_BUTTON_STARTMEDLEY">Cantar versión corta de canción</string>
|
||||||
|
<string name="TR_SCREENSONG_NEWPLAYLIST">Nueva lista de reproducción</string>
|
||||||
|
<string name="TR_SCREENSONG_SONGOPTIONS">Opciones de canción</string>
|
||||||
<string name="TR_SCREENSONG_SEARCH">Buscar:</string>
|
<string name="TR_SCREENSONG_SEARCH">Buscar:</string>
|
||||||
<string name="TR_SCREENSONG_NOLANGUAGE">Sin Idioma</string>
|
<string name="TR_SCREENSONG_NOLANGUAGE">Sin Idioma</string>
|
||||||
<string name="TR_SCREENSONG_NOYEAR">Sin Año</string>
|
<string name="TR_SCREENSONG_NOYEAR">Sin Año</string>
|
||||||
@@ -155,6 +185,7 @@
|
|||||||
<string name="TR_SCREENOGAME_TABS">Etiquetas</string>
|
<string name="TR_SCREENOGAME_TABS">Etiquetas</string>
|
||||||
<string name="TR_SCREENOGAME_DIFFICULTY">Dificultad del Juego</string>
|
<string name="TR_SCREENOGAME_DIFFICULTY">Dificultad del Juego</string>
|
||||||
<string name="TR_SCREENOGAME_TIMERMODE">Modo del Timer</string>
|
<string name="TR_SCREENOGAME_TIMERMODE">Modo del Timer</string>
|
||||||
|
<string name="TR_SCREENOGAME_HIGHSCORESTYLE">Estilo de puntuación máxima</string>
|
||||||
<string name="TR_SCREENORECORD_OPTIONS">Opciones de Grabación</string>
|
<string name="TR_SCREENORECORD_OPTIONS">Opciones de Grabación</string>
|
||||||
<string name="TR_SCREENORECORD_DEVICE">Dispositivo</string>
|
<string name="TR_SCREENORECORD_DEVICE">Dispositivo</string>
|
||||||
<string name="TR_SCREENORECORD_INPUT">Entrada</string>
|
<string name="TR_SCREENORECORD_INPUT">Entrada</string>
|
||||||
@@ -173,6 +204,7 @@
|
|||||||
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Origen de la Música de Fondo</string>
|
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Origen de la Música de Fondo</string>
|
||||||
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Volumen de la música de la vista previa</string>
|
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Volumen de la música de la vista previa</string>
|
||||||
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volumen de la música del juego</string>
|
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volumen de la música del juego</string>
|
||||||
|
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Efecto karaoke</string>
|
||||||
<string name="TR_SCREENOTHEME_OPTIONS">Opciones de Estilo</string>
|
<string name="TR_SCREENOTHEME_OPTIONS">Opciones de Estilo</string>
|
||||||
<string name="TR_SCREENOTHEME_THEME">Estilo</string>
|
<string name="TR_SCREENOTHEME_THEME">Estilo</string>
|
||||||
<string name="TR_SCREENOTHEME_SKIN">Skin</string>
|
<string name="TR_SCREENOTHEME_SKIN">Skin</string>
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
<string name="TR_SCREENCONFIG_NUMPLAYERS">Počet hráčů</string>
|
<string name="TR_SCREENCONFIG_NUMPLAYERS">Počet hráčů</string>
|
||||||
<string name="TR_SCREENCONFIG_NUMMICS">Počet mikrofonů</string>
|
<string name="TR_SCREENCONFIG_NUMMICS">Počet mikrofonů</string>
|
||||||
<string name="TR_SCREENCONFIG_NUMROUNDS">Počet kol</string>
|
<string name="TR_SCREENCONFIG_NUMROUNDS">Počet kol</string>
|
||||||
|
<string name="TR_SCREENCONFIG_NUMJOKERS">Počet žolíků</string>
|
||||||
|
<string name="TR_SCREENCONFIG_REFILLJOKERS">Doplnit žolíky každé kolo</string>
|
||||||
<string name="TR_SCREENNAMES_TITLE">Soutěžní režim: Výběr hráče</string>
|
<string name="TR_SCREENNAMES_TITLE">Soutěžní režim: Výběr hráče</string>
|
||||||
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Vybrat náhodně</string>
|
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Vybrat náhodně</string>
|
||||||
<string name="TR_SCREENMAIN_TITLE">Soutěžní režim: Přehled</string>
|
<string name="TR_SCREENMAIN_TITLE">Soutěžní režim: Přehled</string>
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
<string name="TR_SCREENCONFIG_NUMPLAYERS">Nombre de joueurs</string>
|
<string name="TR_SCREENCONFIG_NUMPLAYERS">Nombre de joueurs</string>
|
||||||
<string name="TR_SCREENCONFIG_NUMMICS">Nombre de micros</string>
|
<string name="TR_SCREENCONFIG_NUMMICS">Nombre de micros</string>
|
||||||
<string name="TR_SCREENCONFIG_NUMROUNDS">Nombre de tours</string>
|
<string name="TR_SCREENCONFIG_NUMROUNDS">Nombre de tours</string>
|
||||||
|
<string name="TR_SCREENCONFIG_NUMJOKERS">Nombre de jokers</string>
|
||||||
|
<string name="TR_SCREENCONFIG_REFILLJOKERS">Remplir de nouveau les jokers à tour</string>
|
||||||
<string name="TR_SCREENNAMES_TITLE">Mode Challenge: Choix des joueurs</string>
|
<string name="TR_SCREENNAMES_TITLE">Mode Challenge: Choix des joueurs</string>
|
||||||
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Sélectionner au hasard</string>
|
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Sélectionner au hasard</string>
|
||||||
<string name="TR_SCREENMAIN_TITLE">Mode Challenge: Résumé</string>
|
<string name="TR_SCREENMAIN_TITLE">Mode Challenge: Résumé</string>
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
<string name="TR_SCREENCONFIG_NUMPLAYERS">TODO: Number of players</string>
|
<string name="TR_SCREENCONFIG_NUMPLAYERS">TODO: Number of players</string>
|
||||||
<string name="TR_SCREENCONFIG_NUMMICS">TODO: Number of mics</string>
|
<string name="TR_SCREENCONFIG_NUMMICS">TODO: Number of mics</string>
|
||||||
<string name="TR_SCREENCONFIG_NUMROUNDS">TODO: Number of rounds</string>
|
<string name="TR_SCREENCONFIG_NUMROUNDS">TODO: Number of rounds</string>
|
||||||
|
<string name="TR_SCREENCONFIG_NUMJOKERS">Número de comodines</string>
|
||||||
|
<string name="TR_SCREENCONFIG_REFILLJOKERS">Rellenar comodines cada ronda</string>
|
||||||
<string name="TR_SCREENNAMES_TITLE">TODO: Challenge Mode: Choose Player</string>
|
<string name="TR_SCREENNAMES_TITLE">TODO: Challenge Mode: Choose Player</string>
|
||||||
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Seleccionar aleatoriamente</string>
|
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Seleccionar aleatoriamente</string>
|
||||||
<string name="TR_SCREENMAIN_TITLE">TODO: Challenge Mode: Overview</string>
|
<string name="TR_SCREENMAIN_TITLE">TODO: Challenge Mode: Overview</string>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<root>
|
<root>
|
||||||
<PlayerName>Guest 3</PlayerName>
|
<PlayerName>Guest 3</PlayerName>
|
||||||
<Difficulty>TR_CONFIG_EASY</Difficulty>
|
<Difficulty>TR_CONFIG_EASY</Difficulty>
|
||||||
<UserRole>TR_USERROLE_NORMAL</UserRole>
|
<UserRole>TR_USERROLE_GUEST</UserRole>
|
||||||
<Active>TR_CONFIG_ON</Active>
|
<Active>TR_CONFIG_ON</Active>
|
||||||
<Avatar>Avatar_m.png</Avatar>
|
<Avatar>Avatar_m.png</Avatar>
|
||||||
</root>
|
</root>
|
||||||
+28
-13
@@ -1,4 +1,4 @@
|
|||||||
Vocaluxe 0.3 README
|
Vocaluxe 0.4 README
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
=================================
|
=================================
|
||||||
@@ -23,25 +23,29 @@ Vocaluxe is an entirely new development in C#, inspired by the original UltraSta
|
|||||||
and the great Ultrastar Deluxe project.
|
and the great Ultrastar Deluxe project.
|
||||||
|
|
||||||
Supported Operating Systems / Requirements:
|
Supported Operating Systems / Requirements:
|
||||||
- WinXP, Vista, Windows 7 or Windows 8 with .NET 4.0
|
- Windows Vista, Windows 7, Windows 8 or Windows 10 with .NET 4.0
|
||||||
|
- Linux (no official support)
|
||||||
- 1 GHz CPU, 512 MB RAM, Graphics card with OpenGL 2.1 or DirectX 9.0 support
|
- 1 GHz CPU, 512 MB RAM, Graphics card with OpenGL 2.1 or DirectX 9.0 support
|
||||||
- Visual C++ Redistributable Packages 2008 and 2012
|
- Visual C++ Redistributable Package 2010
|
||||||
|
|
||||||
|
|
||||||
=================================
|
=================================
|
||||||
= 2. Release Notes =
|
= 2. Release Notes =
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
- The program supports 32bit and 64bit (Vocaluxe_x64.exe) operating systems.
|
- The program supports 32bit and 64bit (appropriate download package) operating systems.
|
||||||
|
|
||||||
- To add your existing song collection to Vocaluxe, put your songs into the 'Songs' subfolder.
|
- When using installer, you can find all mentioned folder in 'Documents/Vocaluxe', otherwise
|
||||||
|
they should be created just next to 'Vocaluxe.exe'
|
||||||
|
|
||||||
|
- To add your existing song collection to Vocaluxe, put your songs into the 'Songs' subfolder.
|
||||||
|
|
||||||
Alternatively, you can add multiple song paths to Vocaluxe by editing your Config.xml:
|
Alternatively, you can add multiple song paths to Vocaluxe by editing your Config.xml:
|
||||||
|
|
||||||
<Game>
|
<Game>
|
||||||
<!--SongFolder: SongFolder1, SongFolder2, SongFolder3, ...-->
|
<!--SongFolder: Add each song folder in a seperate SongFolder entry-->
|
||||||
<SongFolder1>C:\Vocaluxe\Songs</SongFolder1>
|
<SongFolder>C:\Vocaluxe\Songs</SongFolder>
|
||||||
<SongFolder2>D:\EvenMore\Songs</SongFolder2>
|
<SongFolder>D:\EvenMore\Songs</SongFolder>
|
||||||
|
|
||||||
- To use your highscore database from UltraStar deluxe 1.0.1, UltraStar deluxe CMD Mod or
|
- To use your highscore database from UltraStar deluxe 1.0.1, UltraStar deluxe CMD Mod or
|
||||||
UltraStar deluxe 1.1, simply copy your Ultrastar.db (rename if necessary) into the main
|
UltraStar deluxe 1.1, simply copy your Ultrastar.db (rename if necessary) into the main
|
||||||
@@ -101,6 +105,8 @@ or from the console:
|
|||||||
load playlist from this path.
|
load playlist from this path.
|
||||||
Example:
|
Example:
|
||||||
Vocaluxe.exe -PlaylistFolder D:\MyPlaylists
|
Vocaluxe.exe -PlaylistFolder D:\MyPlaylists
|
||||||
|
|
||||||
|
-OldTheme yes : Try to load theme that is created for vocaluxe 0.2 or older (or some pre-release version of 0.3). Enter theme editor and save your theme to convert every file to new syntax. This will be removed in a future version.
|
||||||
|
|
||||||
|
|
||||||
Complete example:
|
Complete example:
|
||||||
@@ -128,14 +134,18 @@ Vocaluxe.exe -ConfigFile MyConfig.xml -ScoreFile C:\Vocaluxe\Highscores\MyHighsc
|
|||||||
Song screen
|
Song screen
|
||||||
[F3] to open/close the song search menu
|
[F3] to open/close the song search menu
|
||||||
[SPACE] to open/close the song menu
|
[SPACE] to open/close the song menu
|
||||||
|
[TAB] to switch selection of song menu and playlist (if opened)
|
||||||
[CTRL] + [R] to select a random song
|
[CTRL] + [R] to select a random song
|
||||||
[CTRL] + [A] to sing all songs
|
[CTRL] + [A] to sing all songs
|
||||||
|
[CTRL] + [S] to sing current song in medley version
|
||||||
[CTRL] + [V] to sing all songs from a category
|
[CTRL] + [V] to sing all songs from a category
|
||||||
[NUM_1]..[NUM_6] to use a Joker for team 1..6
|
[NUM_1]..[NUM_6] to use a Joker for team 1..6
|
||||||
[A]..[Z] to jump to category/song title starting with that letter
|
[A]..[Z] to jump to category/song title starting with that letter
|
||||||
|
|
||||||
Name selection screen
|
Name selection screen
|
||||||
[1]..[6] to activate player selection.
|
[1]..[6] to activate player selection.
|
||||||
|
[P] to activate fast player selection
|
||||||
|
[+] or [-] to increase/decrease number of player
|
||||||
[Cursor] to select a profile.
|
[Cursor] to select a profile.
|
||||||
[Enter] to confirm a selection.
|
[Enter] to confirm a selection.
|
||||||
|
|
||||||
@@ -145,20 +155,25 @@ Sing screen
|
|||||||
[T] to change the time format of the timer.
|
[T] to change the time format of the timer.
|
||||||
[I] to change view of player information.
|
[I] to change view of player information.
|
||||||
[W] to activate the configured webcam.
|
[W] to activate the configured webcam.
|
||||||
|
[V] to change video aspect ratio
|
||||||
|
|
||||||
|
Score and highscore screen
|
||||||
|
[LEFT] or [RIGHT] to show (high)scores of another round (if there is more than one)
|
||||||
|
|
||||||
|
|
||||||
=================================
|
=================================
|
||||||
= 5. Help & Suppport =
|
= 5. Help & Suppport =
|
||||||
=================================
|
=================================
|
||||||
Bug Tracker: http://84.200.73.138/redmine/projects/vocaluxe
|
Vocaluxe Homepage: https://vocaluxe.org
|
||||||
|
Bug Tracker: https://github.com/Vocaluxe/Vocaluxe/issues
|
||||||
Translations: https://www.transifex.com/projects/p/vocaluxe/
|
Translations: https://www.transifex.com/projects/p/vocaluxe/
|
||||||
GitHub Wiki: https://github.com/Vocaluxe/Vocaluxe/wiki
|
GitHub Wiki: https://github.com/Vocaluxe/Vocaluxe/wiki
|
||||||
Support Forum (German): http://www.ultra-star.de
|
Support Forum (German): http://www.ultra-star.de
|
||||||
Song-DataBase (USDB): http://usdb.animux.de/
|
Song-DataBase (USDB): http://usdb.animux.de/
|
||||||
|
|
||||||
|
|
||||||
=================================
|
=================================
|
||||||
= 6. Source Code =
|
= 6. Source Code =
|
||||||
=================================
|
=================================
|
||||||
Source Code (GitHub): https://github.com/Vocaluxe/Vocaluxe
|
Source Code (GitHub): https://github.com/Vocaluxe/Vocaluxe
|
||||||
SF.Net Page: http://sourceforge.net/projects/vocaluxe/
|
SF.Net Page (outdated): http://sourceforge.net/projects/vocaluxe/
|
||||||
@@ -37,6 +37,7 @@ namespace VocaluxeLib.PartyModes.Challenge
|
|||||||
base.Init();
|
base.Init();
|
||||||
_PartyMode = (CPartyModeChallenge)base._PartyMode;
|
_PartyMode = (CPartyModeChallenge)base._PartyMode;
|
||||||
_AllowChangePlayerNum = false;
|
_AllowChangePlayerNum = false;
|
||||||
|
_Teams = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnShow()
|
public override void OnShow()
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
|
|||||||
base.Init();
|
base.Init();
|
||||||
_PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
|
_PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
|
||||||
_AllowChangePlayerNum = false;
|
_AllowChangePlayerNum = false;
|
||||||
|
_Teams = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnShow()
|
public override void OnShow()
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
|
|
||||||
// ReSharper disable ClassNeverInstantiated.Global
|
// ReSharper disable ClassNeverInstantiated.Global
|
||||||
public sealed class CPartyModeTicTacToe : CPartyMode
|
public sealed class CPartyModeTicTacToe : CPartyMode
|
||||||
// ReSharper restore ClassNeverInstantiated.Global
|
// ReSharper restore ClassNeverInstantiated.Global
|
||||||
{
|
{
|
||||||
public override int MinMics
|
public override int MinMics
|
||||||
{
|
{
|
||||||
@@ -96,7 +96,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
get { return 10; }
|
get { return 10; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum EStage
|
public readonly EGameMode[] AvailableGameModes = { EGameMode.TR_GAMEMODE_NORMAL, EGameMode.TR_GAMEMODE_SHORTSONG, EGameMode.TR_GAMEMODE_DUET };
|
||||||
|
|
||||||
|
private enum EStage
|
||||||
{
|
{
|
||||||
Config,
|
Config,
|
||||||
Names,
|
Names,
|
||||||
@@ -119,7 +121,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
public int CategoryIndex;
|
public int CategoryIndex;
|
||||||
public int PlaylistID;
|
public int PlaylistID;
|
||||||
|
|
||||||
public EGameMode GameMode;
|
public int GameMode;
|
||||||
|
|
||||||
public List<CRound> Rounds;
|
public List<CRound> Rounds;
|
||||||
public List<int> Songs;
|
public List<int> Songs;
|
||||||
@@ -160,7 +162,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
SongSource = ESongSource.TR_ALLSONGS,
|
SongSource = ESongSource.TR_ALLSONGS,
|
||||||
PlaylistID = 0,
|
PlaylistID = 0,
|
||||||
CategoryIndex = 0,
|
CategoryIndex = 0,
|
||||||
GameMode = EGameMode.TR_GAMEMODE_NORMAL,
|
GameMode = 0,
|
||||||
Rounds = new List<CRound>(),
|
Rounds = new List<CRound>(),
|
||||||
Songs = new List<int>(),
|
Songs = new List<int>(),
|
||||||
NumJokerRandom = new int[2],
|
NumJokerRandom = new int[2],
|
||||||
@@ -432,20 +434,20 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++)
|
for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++)
|
||||||
{
|
{
|
||||||
int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID;
|
int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID;
|
||||||
if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(GameData.GameMode))
|
if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode]))
|
||||||
GameData.Songs.Add(id);
|
GameData.Songs.Add(id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ESongSource.TR_ALLSONGS:
|
case ESongSource.TR_ALLSONGS:
|
||||||
ReadOnlyCollection<CSong> avSongs = CBase.Songs.GetSongs();
|
ReadOnlyCollection<CSong> avSongs = CBase.Songs.GetSongs();
|
||||||
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(GameData.GameMode)).Select(song => song.ID));
|
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])).Select(song => song.ID));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ESongSource.TR_CATEGORY:
|
case ESongSource.TR_CATEGORY:
|
||||||
CBase.Songs.SetCategory(GameData.CategoryIndex);
|
CBase.Songs.SetCategory(GameData.CategoryIndex);
|
||||||
avSongs = CBase.Songs.GetVisibleSongs();
|
avSongs = CBase.Songs.GetVisibleSongs();
|
||||||
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(GameData.GameMode)).Select(song => song.ID));
|
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])).Select(song => song.ID));
|
||||||
|
|
||||||
CBase.Songs.SetCategory(-1);
|
CBase.Songs.SetCategory(-1);
|
||||||
break;
|
break;
|
||||||
@@ -493,7 +495,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
if (isDuet)
|
if (isDuet)
|
||||||
players[1].VoiceNr = 1;
|
players[1].VoiceNr = 1;
|
||||||
|
|
||||||
CBase.Game.AddSong(round.SongID, GameData.GameMode);
|
CBase.Game.AddSong(round.SongID, AvailableGameModes[GameData.GameMode]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _SetNumJokers()
|
private void _SetNumJokers()
|
||||||
|
|||||||
@@ -160,8 +160,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
|
|
||||||
_SelectSlides[_SelectSlideGameMode].Visible = true;
|
_SelectSlides[_SelectSlideGameMode].Visible = true;
|
||||||
_SelectSlides[_SelectSlideGameMode].Clear();
|
_SelectSlides[_SelectSlideGameMode].Clear();
|
||||||
_SelectSlides[_SelectSlideGameMode].SetValues<EGameMode>((int)_PartyMode.GameData.GameMode);
|
_SelectSlides[_SelectSlideGameMode].AddValues(_PartyMode.AvailableGameModes.Select(gm => gm.ToString()));
|
||||||
_SelectSlides[_SelectSlideGameMode].RemoveValue(EGameMode.TR_GAMEMODE_MEDLEY.ToString());
|
_SelectSlides[_SelectSlideGameMode].Selection = _PartyMode.GameData.GameMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _UpdateSlides()
|
private void _UpdateSlides()
|
||||||
@@ -171,9 +171,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
|||||||
_PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
|
_PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
|
||||||
_PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
|
_PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
|
||||||
_PartyMode.GameData.CategoryIndex = _SelectSlides[_SelectSlideCategory].Selection;
|
_PartyMode.GameData.CategoryIndex = _SelectSlides[_SelectSlideCategory].Selection;
|
||||||
_PartyMode.GameData.GameMode = (EGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
|
_PartyMode.GameData.GameMode = _SelectSlides[_SelectSlideGameMode].Selection;
|
||||||
|
|
||||||
EGameMode gm = _PartyMode.GameData.GameMode;
|
EGameMode gm = _PartyMode.AvailableGameModes[_PartyMode.GameData.GameMode];
|
||||||
|
|
||||||
if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST)
|
if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||

|

|
||||||
|
|
||||||
|
[](https://ci.appveyor.com/project/VocaluxeBuildBot/vocaluxe/branch/develop)
|
||||||
|
[](https://vocaluxe.org/#download)
|
||||||
|
[](https://vocaluxe.org/#download)
|
||||||
|
[](https://github.com/Vocaluxe/Vocaluxe/labels/bug)
|
||||||
|
[](https://github.com/Vocaluxe/Vocaluxe/labels/feature%20request)
|
||||||
|
[](https://github.com/Vocaluxe/Vocaluxe/blob/develop/LICENSE.txt)
|
||||||
|
|
||||||
[1. About](#1-about)
|
[1. About](#1-about)
|
||||||
[2. Download](#2-download)
|
[2. Download](#2-download)
|
||||||
@@ -12,17 +19,15 @@ It features mouse, keyboard, gamepad and Wiimote navigation, a multi-language in
|
|||||||
Vocaluxe offers diversified party modes and can optionally be controlled via a browser (desktop and mobile supported).
|
Vocaluxe offers diversified party modes and can optionally be controlled via a browser (desktop and mobile supported).
|
||||||
|
|
||||||
Supported Operating Systems / Requirements:
|
Supported Operating Systems / Requirements:
|
||||||
- WinXP, Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10 with .NET 4.0
|
- Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10 with .NET 4.0
|
||||||
- Linux (tested on Arch Linux)
|
- *Linux* (no official support)
|
||||||
- 1 GHz CPU, 512 MB RAM, Graphics card with OpenGL 2.1 or DirectX 9.0 support
|
- 1 GHz CPU, 512 MB RAM, Graphics card with OpenGL 2.1 or DirectX 9.0 support
|
||||||
|
- Visual C++ Redistributable Package 2010
|
||||||
|
|
||||||
|
|
||||||
## 2. Download
|
## 2. Download
|
||||||
You can download precompiled Windows binaries at here:
|
You can download precompiled Windows binaries at here:
|
||||||
http://vocaluxe.sourceforge.net/index.php?p=download
|
https://vocaluxe.org/#download
|
||||||
|
|
||||||
Nightly builds are available here:
|
|
||||||
https://github.com/Vocaluxe/Vocaluxe/releases
|
|
||||||
|
|
||||||
## 3. Contributing
|
## 3. Contributing
|
||||||
You want to fix a bug or add a cool new feature to Vocaluxe? Awesome!
|
You want to fix a bug or add a cool new feature to Vocaluxe? Awesome!
|
||||||
@@ -43,6 +48,7 @@ You have a problem or a question implementing your change?
|
|||||||
Just [open an issue](https://github.com/Vocaluxe/Vocaluxe/issues/new) or mention `@Vocaluxe` in a comment on GitHub.
|
Just [open an issue](https://github.com/Vocaluxe/Vocaluxe/issues/new) or mention `@Vocaluxe` in a comment on GitHub.
|
||||||
|
|
||||||
## 4. Help & Support
|
## 4. Help & Support
|
||||||
|
Vocaluxe Homepage: https://vocaluxe.org/
|
||||||
GitHub Wiki: https://github.com/Vocaluxe/Vocaluxe/wiki
|
GitHub Wiki: https://github.com/Vocaluxe/Vocaluxe/wiki
|
||||||
GitHub Issues Tracker: https://github.com/Vocaluxe/Vocaluxe/issues
|
GitHub Issues Tracker: https://github.com/Vocaluxe/Vocaluxe/issues
|
||||||
Translations: https://www.transifex.com/projects/p/vocaluxe/
|
Translations: https://www.transifex.com/projects/p/vocaluxe/
|
||||||
|
|||||||
@@ -193,11 +193,11 @@ namespace Vocaluxe.Base
|
|||||||
//Folders
|
//Folders
|
||||||
public static readonly List<string> SongFolders = new List<string>
|
public static readonly List<string> SongFolders = new List<string>
|
||||||
{
|
{
|
||||||
#if WIN
|
#if INSTALLER
|
||||||
|
Path.Combine(CSettings.DataFolder, CSettings.FolderNameSongs),
|
||||||
|
CSettings.FolderNameSongs
|
||||||
|
#elif WIN
|
||||||
CSettings.FolderNameSongs
|
CSettings.FolderNameSongs
|
||||||
#elif INSTALLER
|
|
||||||
CSettings.FolderNameSongs,
|
|
||||||
Path.Combine(CSettings.DataFolder, CSettings.FolderNameSongs)
|
|
||||||
#elif LINUX
|
#elif LINUX
|
||||||
Path.Combine(CSettings.DataFolder, CSettings.FolderNameSongs)
|
Path.Combine(CSettings.DataFolder, CSettings.FolderNameSongs)
|
||||||
#endif
|
#endif
|
||||||
@@ -208,11 +208,11 @@ namespace Vocaluxe.Base
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly List<string> ProfileFolders = new List<string>
|
public static readonly List<string> ProfileFolders = new List<string>
|
||||||
{
|
{
|
||||||
#if WIN
|
#if INSTALLER
|
||||||
|
Path.Combine(CSettings.DataFolder, CSettings.FolderNameProfiles),
|
||||||
|
CSettings.FolderNameProfiles
|
||||||
|
#elif WIN
|
||||||
CSettings.FolderNameProfiles
|
CSettings.FolderNameProfiles
|
||||||
#elif INSTALLER
|
|
||||||
CSettings.FolderNameProfiles,
|
|
||||||
Path.Combine(CSettings.DataFolder, CSettings.FolderNameProfiles)
|
|
||||||
#elif LINUX
|
#elif LINUX
|
||||||
Path.Combine(CSettings.DataFolder, CSettings.FolderNameProfiles)
|
Path.Combine(CSettings.DataFolder, CSettings.FolderNameProfiles)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -20,8 +20,10 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Xml;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -35,6 +37,8 @@ namespace Vocaluxe.Base
|
|||||||
// ReSharper restore UnusedMember.Global
|
// ReSharper restore UnusedMember.Global
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This class contains settings for the program
|
/// This class contains settings for the program
|
||||||
/// These are not editable, everything that can be changed by the user is in CConfig
|
/// These are not editable, everything that can be changed by the user is in CConfig
|
||||||
@@ -52,26 +56,7 @@ namespace Vocaluxe.Base
|
|||||||
//TODO: This should not be here as it can change
|
//TODO: This should not be here as it can change
|
||||||
//State of the program
|
//State of the program
|
||||||
public static EProgramState ProgramState = EProgramState.Start;
|
public static EProgramState ProgramState = EProgramState.Start;
|
||||||
|
|
||||||
//Adjusting of programName and version now in the assembly config.
|
|
||||||
private static readonly Dictionary<string,string> _CodeNames = new Dictionary<string, string>()
|
|
||||||
{
|
|
||||||
{"0.3.", "Shining Heaven"},
|
|
||||||
{"0.4.", "Blue Sunrise"}
|
|
||||||
};
|
|
||||||
|
|
||||||
private static string _ProgramCodeName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var versionParts = Application.ProductVersion.Split('.');
|
|
||||||
string name;
|
|
||||||
_CodeNames.TryGetValue($"{versionParts[0]}.{versionParts[1]}.", out name);
|
|
||||||
if (name != null)
|
|
||||||
return name;
|
|
||||||
return "Unnamed Version";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ERevision VersionRevision
|
public static ERevision VersionRevision
|
||||||
{
|
{
|
||||||
@@ -208,6 +193,7 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
get { return _Assembly.Name; }
|
get { return _Assembly.Name; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string _Version
|
private static string _Version
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -215,39 +201,10 @@ namespace Vocaluxe.Base
|
|||||||
return Application.ProductVersion.Split('-').First();
|
return Application.ProductVersion.Split('-').First();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string _GetVersionText()
|
|
||||||
{
|
|
||||||
string version = _Version + " (" + _Arch + ")";
|
|
||||||
|
|
||||||
string gitversion = Application.ProductVersion;
|
|
||||||
|
|
||||||
if (VersionRevision != ERevision.Release || gitversion.Split('-')[1] != "0")
|
|
||||||
{
|
|
||||||
version += " " + _GetVersionStatus() + String.Format(" ({0})", gitversion);
|
|
||||||
}
|
|
||||||
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string GetFullVersionText()
|
public static string GetFullVersionText()
|
||||||
{
|
{
|
||||||
string version = ProgramName;
|
return ((AssemblyTitleAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false).First()).Title;
|
||||||
|
|
||||||
if (_ProgramCodeName != "")
|
|
||||||
version += " \"" + _ProgramCodeName + "\"";
|
|
||||||
|
|
||||||
return version + " " + _GetVersionText();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string _GetVersionStatus()
|
|
||||||
{
|
|
||||||
string result = "";
|
|
||||||
|
|
||||||
if (VersionRevision != ERevision.Release)
|
|
||||||
result = Enum.GetName(typeof(ERevision), VersionRevision);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float GetRenderAspect()
|
public static float GetRenderAspect()
|
||||||
|
|||||||
@@ -126,10 +126,10 @@ namespace Vocaluxe.Base
|
|||||||
string noCategoryName;
|
string noCategoryName;
|
||||||
switch (CSongs.Sorter.SongSorting)
|
switch (CSongs.Sorter.SongSorting)
|
||||||
{
|
{
|
||||||
|
case ESongSorting.TR_CONFIG_FOLDER:
|
||||||
case ESongSorting.TR_CONFIG_NONE:
|
case ESongSorting.TR_CONFIG_NONE:
|
||||||
noCategoryName = CLanguage.Translate("TR_SCREENSONG_ALLSONGS");
|
noCategoryName = CLanguage.Translate("TR_SCREENSONG_ALLSONGS");
|
||||||
break;
|
break;
|
||||||
case ESongSorting.TR_CONFIG_FOLDER:
|
|
||||||
case ESongSorting.TR_CONFIG_ARTIST:
|
case ESongSorting.TR_CONFIG_ARTIST:
|
||||||
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
|
case ESongSorting.TR_CONFIG_ARTIST_LETTER:
|
||||||
case ESongSorting.TR_CONFIG_TITLE_LETTER:
|
case ESongSorting.TR_CONFIG_TITLE_LETTER:
|
||||||
|
|||||||
@@ -116,13 +116,20 @@ namespace Vocaluxe
|
|||||||
public static bool CheckRequirements()
|
public static bool CheckRequirements()
|
||||||
{
|
{
|
||||||
#if WIN
|
#if WIN
|
||||||
if (!_IsVC2012Installed())
|
if (!_IsVC2010Installed())
|
||||||
|
{
|
||||||
|
CLog.LogError(
|
||||||
|
"VC++ 2010 Redistributables are missing. Please install them first. \r\nDownload(x86): https://www.microsoft.com/de-de/download/details.aspx?id=5555 \r\nDownload(x64): https://www.microsoft.com/de-de/download/details.aspx?id=14632",
|
||||||
|
true, true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*if (!_IsVC2012Installed())
|
||||||
{
|
{
|
||||||
CLog.LogError(
|
CLog.LogError(
|
||||||
"VC++ 2012 Redistributables are missing. Please install them first.\r\nDownload: http://www.microsoft.com/de-de/download/details.aspx?id=30679",
|
"VC++ 2012 Redistributables are missing. Please install them first.\r\nDownload: http://www.microsoft.com/de-de/download/details.aspx?id=30679",
|
||||||
true, true);
|
true, true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}*/
|
||||||
/*
|
/*
|
||||||
bool vc2008Installed = _IsVC2008Installed();
|
bool vc2008Installed = _IsVC2008Installed();
|
||||||
if (!vc2008Installed)
|
if (!vc2008Installed)
|
||||||
|
|||||||
@@ -88,18 +88,24 @@
|
|||||||
- Spectrum Analyzer (Record Screen and Player Selection Screen)
|
- Spectrum Analyzer (Record Screen and Player Selection Screen)
|
||||||
- WiiMote Support
|
- WiiMote Support
|
||||||
|
|
||||||
+ v0.3.0 Shining Heaven (reached: ??.0?.2013):
|
+ v0.3.0 Shining Heaven (release skipped):
|
||||||
- Party Mode Support
|
- Party Mode Support
|
||||||
- Party Mode: Challenge Mode (with more than 2 player at once)
|
- Party Mode: Challenge Mode (with more than 2 player at once)
|
||||||
- Party Mode: Challenge Medley Mode
|
- Party Mode: Challenge Medley Mode
|
||||||
- Party Mode: Tic, Tac, Toe
|
- Party Mode: Tic, Tac, Toe
|
||||||
- GStreamer Audio Support
|
- GStreamer Audio Support
|
||||||
|
- Smartphone control (webserver)
|
||||||
|
- Dynamic cover generation
|
||||||
|
- New Song View: List
|
||||||
|
|
||||||
+ v0.4.0 (reached: ??.??.201?):
|
+ v0.4.0 Blue Sunrise (reached: ??.??.201?):
|
||||||
|
- A lot of restructered and rewritten lines of code
|
||||||
|
- Some minor and bigger improvements and additions
|
||||||
|
- Updated audio and video libs
|
||||||
|
- New infrastructure: CI with nightly builds, new homepage, updated installer
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
just some ideas:
|
just some ideas:
|
||||||
- Installer
|
|
||||||
- More Song List Views
|
- More Song List Views
|
||||||
- Tile Board: Show title and artist under each tile
|
- Tile Board: Show title and artist under each tile
|
||||||
- OnScreen Keyboard?
|
- OnScreen Keyboard?
|
||||||
@@ -121,4 +127,4 @@ some feature wishes:
|
|||||||
|
|
||||||
- Party Modes:
|
- Party Modes:
|
||||||
* add sing modes: hide notes, hide lyrics, ...
|
* add sing modes: hide notes, hide lyrics, ...
|
||||||
* add a party mode where you can assign song categories and/or playlists to the profiles
|
* add a party mode where you can assign song categories and/or playlists to the profiles
|
||||||
@@ -235,6 +235,11 @@ namespace Vocaluxe.Lib.Sound.Playback.GstreamerSharp
|
|||||||
element = _Element;
|
element = _Element;
|
||||||
_Element = null; //Now everything "seems" closed
|
_Element = null; //Now everything "seems" closed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Should not be needed but we had an error report (#226) - so we double check here to prevent a crash
|
||||||
|
if (element == null)
|
||||||
|
return;
|
||||||
|
|
||||||
if (element.TargetState == State.Playing)
|
if (element.TargetState == State.Playing)
|
||||||
element.SetState(State.Paused); //Stop output
|
element.SetState(State.Paused); //Stop output
|
||||||
if (_CloseStreamListener != null)
|
if (_CloseStreamListener != null)
|
||||||
|
|||||||
@@ -58,7 +58,22 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
||||||
public struct SACFileInfo
|
public struct SACFileInfo
|
||||||
{
|
{
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
|
||||||
|
public readonly string title;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
|
||||||
|
public readonly string author;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
|
||||||
|
public readonly string copyright;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
|
||||||
|
public readonly string comment;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
|
||||||
|
public readonly string album;
|
||||||
|
public readonly int year;
|
||||||
|
public readonly int track;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
||||||
|
public readonly string genre;
|
||||||
public readonly Int64 Duration;
|
public readonly Int64 Duration;
|
||||||
|
public readonly int Bitrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TAc_instance represents an Acinerella instance. Each instance can open and
|
// TAc_instance represents an Acinerella instance. Each instance can open and
|
||||||
@@ -105,14 +120,17 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Contains information about an Acinerella stream.
|
// Contains information about an Acinerella stream.
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Explicit)]
|
||||||
public struct SACStreamInfo
|
public struct SACStreamInfo
|
||||||
{
|
{
|
||||||
//Contains the type of the stream.
|
//Contains the type of the stream.
|
||||||
|
[FieldOffset(0)]
|
||||||
public readonly EACStreamType StreamType;
|
public readonly EACStreamType StreamType;
|
||||||
|
|
||||||
//Additional info about the stream
|
//Additional info about the stream
|
||||||
|
[FieldOffset(8)]
|
||||||
public SACAudioStreamInfo AudioInfo;
|
public SACAudioStreamInfo AudioInfo;
|
||||||
|
[FieldOffset(8)]
|
||||||
public SACVideoStreamInfo VideoInfo;
|
public SACVideoStreamInfo VideoInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,7 +146,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
//The timecode of the currently decoded picture in seconds.
|
//The timecode of the currently decoded picture in seconds.
|
||||||
public readonly double Timecode;
|
public readonly double Timecode;
|
||||||
|
|
||||||
public readonly double VideoClock;
|
//public readonly double VideoClock;
|
||||||
|
|
||||||
//Contains information about the stream the decoder is attached to.
|
//Contains information about the stream the decoder is attached to.
|
||||||
public SACStreamInfo StreamInfo;
|
public SACStreamInfo StreamInfo;
|
||||||
@@ -219,14 +237,14 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
|
|
||||||
// Initializes an Acinerella instance.
|
// Initializes an Acinerella instance.
|
||||||
//function ac_init(): PAc_instance; cdecl; external ac_dll;
|
//function ac_init(): PAc_instance; cdecl; external ac_dll;
|
||||||
[DllImport(_AcDll, EntryPoint = "ac_init", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
[DllImport(_AcDll, EntryPoint = "ac_init_of", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
||||||
private static extern IntPtr _ac_init();
|
private static extern IntPtr _ac_init(EACOutputFormat outputFormat);
|
||||||
|
|
||||||
public static IntPtr AcInit()
|
public static IntPtr AcInit()
|
||||||
{
|
{
|
||||||
lock (_Lock)
|
lock (_Lock)
|
||||||
{
|
{
|
||||||
return _ac_init();
|
return _ac_init(EACOutputFormat.ACOutputRGBA32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,52 +261,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opens a media file.
|
[DllImport(_AcDll, EntryPoint = "ac_open_file", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
||||||
// @param(inst specifies the Acinerella Instance the stream should be opened for)
|
|
||||||
// @param(sender specifies a pointer that is sent to all callback functions to
|
|
||||||
// allow you to do object orientated programming. May be NULL.)
|
|
||||||
// @param(open_proc specifies the callback function that is called, when the
|
|
||||||
// media file is opened. May be NULL.)
|
|
||||||
// @param(close_proc specifies the callback function that is called when the media
|
|
||||||
// file is closed. May be NULL.)
|
|
||||||
/*function ac_open(
|
|
||||||
inst: PAc_instance;
|
|
||||||
sender: Pointer;
|
|
||||||
open_proc: TAc_openclose_callback;
|
|
||||||
read_proc: TAc_read_callback;
|
|
||||||
seek_proc: TAc_seek_callback;
|
|
||||||
close_proc: TAc_openclose_callback;
|
|
||||||
proberesult: PAc_proberesult): integer; cdecl; external ac_dll;
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
[DllImport(AcDll, EntryPoint = "ac_open", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
|
||||||
private static extern Int32 _ac_open(
|
|
||||||
IntPtr PAc_instance,
|
|
||||||
IntPtr sender,
|
|
||||||
TAc_openclose_callback open_proc,
|
|
||||||
TAc_read_callback read_proc,
|
|
||||||
TAc_seek_callback seek_proc,
|
|
||||||
TAc_openclose_callback close_proc,
|
|
||||||
IntPtr proberesult
|
|
||||||
);
|
|
||||||
|
|
||||||
public static Int32 ac_open(
|
|
||||||
IntPtr PAc_instance,
|
|
||||||
IntPtr sender,
|
|
||||||
TAc_openclose_callback open_proc,
|
|
||||||
TAc_read_callback read_proc,
|
|
||||||
TAc_seek_callback seek_proc,
|
|
||||||
TAc_openclose_callback close_proc,
|
|
||||||
IntPtr proberesult
|
|
||||||
)
|
|
||||||
{
|
|
||||||
lock (_GetLockToken(pAcDecoder))
|
|
||||||
{
|
|
||||||
return _ac_open(PAc_instance, sender, open_proc, read_proc, seek_proc, close_proc, proberesult);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
[DllImport(_AcDll, EntryPoint = "ac_open", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
|
|
||||||
private static extern Int32 _ac_open2(IntPtr pAcInstance, string filename);
|
private static extern Int32 _ac_open2(IntPtr pAcInstance, string filename);
|
||||||
|
|
||||||
// ReSharper disable UnusedMethodReturnValue.Global
|
// ReSharper disable UnusedMethodReturnValue.Global
|
||||||
@@ -337,28 +310,55 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
[DllImport(_AcDll, EntryPoint = "ac_free_package", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
[DllImport(_AcDll, EntryPoint = "ac_free_package", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
||||||
public static extern void ac_free_package(IntPtr pAcPackage);
|
public static extern void ac_free_package(IntPtr pAcPackage);
|
||||||
|
|
||||||
[DllImport(_AcDll, EntryPoint = "ac_create_video_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
[DllImport(_AcDll, EntryPoint = "ac_create_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
||||||
private static extern IntPtr _ac_create_video_decoder(IntPtr pAcInstance);
|
private static extern IntPtr _ac_create_decoder(IntPtr pAcInstance, int i);
|
||||||
|
|
||||||
public static IntPtr AcCreateVideoDecoder(IntPtr pAcInstance)
|
public static IntPtr AcCreateVideoDecoder(IntPtr pAcInstance)
|
||||||
{
|
{
|
||||||
lock (_GetLockToken(pAcInstance))
|
lock (_GetLockToken(pAcInstance))
|
||||||
{
|
{
|
||||||
return _ac_create_video_decoder(pAcInstance);
|
var firstVideoStreamId = _GetFirstStreamByType(pAcInstance, EACStreamType.ACStreamTypeVideo);
|
||||||
|
|
||||||
|
if (firstVideoStreamId < 0)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("The instace does not contain a video stream.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return _ac_create_decoder(pAcInstance, firstVideoStreamId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[DllImport(_AcDll, EntryPoint = "ac_create_audio_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
|
||||||
private static extern IntPtr _ac_create_audio_decoder(IntPtr pAcInstance);
|
|
||||||
|
|
||||||
public static IntPtr AcCreateAudioDecoder(IntPtr pAcInstance)
|
public static IntPtr AcCreateAudioDecoder(IntPtr pAcInstance)
|
||||||
{
|
{
|
||||||
lock (_GetLockToken(pAcInstance))
|
lock (_GetLockToken(pAcInstance))
|
||||||
{
|
{
|
||||||
return _ac_create_audio_decoder(pAcInstance);
|
var firstAudioStreamId = _GetFirstStreamByType(pAcInstance, EACStreamType.ACStreamTypeAudio);
|
||||||
|
|
||||||
|
if (firstAudioStreamId < 0)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("The instace does not contain a audio stream.");
|
||||||
|
}
|
||||||
|
return _ac_create_decoder(pAcInstance, firstAudioStreamId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int _GetFirstStreamByType(IntPtr pAcInstance, EACStreamType type)
|
||||||
|
{
|
||||||
|
var instance = (SACInstance)Marshal.PtrToStructure(pAcInstance, typeof(SACInstance));
|
||||||
|
|
||||||
|
int currentStream = 0;
|
||||||
|
SACStreamInfo currentStreamInfo;
|
||||||
|
|
||||||
|
while (currentStream < instance.StreamCount)
|
||||||
|
{
|
||||||
|
AcGetStreamInfo(pAcInstance, currentStream, out currentStreamInfo);
|
||||||
|
if (currentStreamInfo.StreamType == type)
|
||||||
|
return currentStream;
|
||||||
|
currentStream++;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// Frees an created decoder.
|
// Frees an created decoder.
|
||||||
//procedure ac_free_decoder(pDecoder: PAc_decoder); cdecl; external ac_dll;
|
//procedure ac_free_decoder(pDecoder: PAc_decoder); cdecl; external ac_dll;
|
||||||
[DllImport(_AcDll, EntryPoint = "ac_free_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
[DllImport(_AcDll, EntryPoint = "ac_free_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
|
||||||
|
|||||||
@@ -447,6 +447,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
|
|||||||
{
|
{
|
||||||
_Free();
|
_Free();
|
||||||
Stop();
|
Stop();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!_Terminated)
|
while (!_Terminated)
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -15,8 +15,8 @@
|
|||||||
along with Acinerella. If not, see <http://www.gnu.org/licenses/>.
|
along with Acinerella. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef VIDEOPLAY_H
|
#ifndef _ACINERELLA_H_
|
||||||
#define VIDEOPLAY_H
|
#define _ACINERELLA_H_
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -24,187 +24,495 @@
|
|||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define CALL_CONVT __cdecl
|
#define CALL_CONVT __cdecl
|
||||||
|
#define EXTERN extern __declspec(dllexport)
|
||||||
#else
|
#else
|
||||||
#define CALL_CONVT
|
#define CALL_CONVT
|
||||||
|
#define EXTERN extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef long long int64;
|
/**
|
||||||
|
* Defines the type of an Acinerella media stream. Currently only video and
|
||||||
|
* audio streams are supported, subtitle and data streams will be marked as
|
||||||
|
* "unknown".
|
||||||
|
*/
|
||||||
|
typedef enum _ac_stream_type {
|
||||||
|
/**
|
||||||
|
* The type of the media stream is not known. This kind of stream can not be
|
||||||
|
* decoded.
|
||||||
|
*/
|
||||||
|
AC_STREAM_TYPE_VIDEO = 0,
|
||||||
|
|
||||||
/*Defines the type of an Acinerella media stream. Currently only video and
|
/**
|
||||||
audio streams are supported, subtitle and data streams will be marked as
|
* This media stream is a video stream.
|
||||||
"unknown".*/
|
*/
|
||||||
enum _ac_stream_type {
|
AC_STREAM_TYPE_AUDIO = 1,
|
||||||
/*The type of the media stream is not known. This kind of stream can not be
|
|
||||||
decoded.*/
|
|
||||||
AC_STREAM_TYPE_VIDEO = 0,
|
|
||||||
/*This media stream is a video stream.*/
|
|
||||||
AC_STREAM_TYPE_AUDIO = 1,
|
|
||||||
/*This media stream is an audio stream.*/
|
|
||||||
AC_STREAM_TYPE_UNKNOWN = -1
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum _ac_stream_type ac_stream_type;
|
/**
|
||||||
|
* This media stream is an audio stream.
|
||||||
|
*/
|
||||||
|
AC_STREAM_TYPE_UNKNOWN = -1
|
||||||
|
} ac_stream_type;
|
||||||
|
|
||||||
/*Defines the type of an Acinerella media decoder.*/
|
/**
|
||||||
enum _ac_decoder_type {
|
* Defines the type of an Acinerella media decoder.
|
||||||
/*This decoder is used to decode a video stream.*/
|
*/
|
||||||
AC_DECODER_TYPE_VIDEO = 0,
|
typedef enum _ac_decoder_type {
|
||||||
/* This decoder is used to decode an audio stram.*/
|
/**
|
||||||
AC_DECODER_TYPE_AUDIO = 1
|
* This decoder is used to decode a video stream.
|
||||||
};
|
*/
|
||||||
|
AC_DECODER_TYPE_VIDEO = 0,
|
||||||
|
|
||||||
typedef enum _ac_decoder_type ac_decoder_type;
|
/**
|
||||||
|
* This decoder is used to decode an audio stram.
|
||||||
|
*/
|
||||||
|
AC_DECODER_TYPE_AUDIO = 1
|
||||||
|
} ac_decoder_type;
|
||||||
|
|
||||||
/*Defines the format video/image data is outputted in*/
|
/**
|
||||||
enum _ac_output_format {
|
* Defines the format video/image data is returned in.
|
||||||
AC_OUTPUT_RGB24 = 0,
|
*/
|
||||||
AC_OUTPUT_BGR24 = 1,
|
typedef enum _ac_output_format {
|
||||||
AC_OUTPUT_RGBA32 = 2,
|
AC_OUTPUT_RGB24 = 0,
|
||||||
AC_OUTPUT_BGRA32 = 3
|
AC_OUTPUT_BGR24 = 1,
|
||||||
};
|
AC_OUTPUT_RGBA32 = 2,
|
||||||
|
AC_OUTPUT_BGRA32 = 3,
|
||||||
|
AC_OUTPUT_YUV420P = 4,
|
||||||
|
AC_OUTPUT_UYVY422 = 5,
|
||||||
|
AC_OUTPUT_YUYV422 = 6
|
||||||
|
} ac_output_format;
|
||||||
|
|
||||||
typedef enum _ac_output_format ac_output_format;
|
/*Contains information about the whole file/stream that has been opened. Default
|
||||||
|
values are ""
|
||||||
/*Contains information about the whole file/stream that has been opened. Default values are ""
|
|
||||||
for strings and -1 for integer values.*/
|
for strings and -1 for integer values.*/
|
||||||
struct _ac_file_info {
|
typedef struct _ac_file_info {
|
||||||
/*Length of the file*/
|
/**
|
||||||
int64_t duration;
|
* Title of the media file
|
||||||
};
|
*/
|
||||||
|
char title[512];
|
||||||
|
|
||||||
typedef struct _ac_file_info ac_file_info;
|
/**
|
||||||
typedef ac_file_info* lp_ac_file_info;
|
* Author or artist of the media file.
|
||||||
|
*/
|
||||||
|
char author[512];
|
||||||
|
|
||||||
/*TAc_instance represents an Acinerella instance. Each instance can open and
|
/**
|
||||||
decode one file at once. There can be only 26 Acinerella instances opened at
|
* Copyright information.
|
||||||
once.*/
|
*/
|
||||||
struct _ac_instance {
|
char copyright[512];
|
||||||
/*If true, the instance currently opened a media file.*/
|
|
||||||
bool opened;
|
|
||||||
/*Contains the count of streams the media file has. This value is available
|
|
||||||
after calling the ac_open function.*/
|
|
||||||
int stream_count;
|
|
||||||
/*Set this value to change the image output format */
|
|
||||||
ac_output_format output_format;
|
|
||||||
/*Contains information about the opened stream/file*/
|
|
||||||
ac_file_info info;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _ac_instance ac_instance;
|
/**
|
||||||
/*Pointer on the Acinerella instance record.*/
|
* Comment stored in the file.
|
||||||
typedef ac_instance* lp_ac_instance;
|
*/
|
||||||
|
char comment[512];
|
||||||
|
|
||||||
/*Contains information about an Acinerella video stream.*/
|
/**
|
||||||
|
* Album the media file is from.
|
||||||
|
*/
|
||||||
|
char album[512];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Year in which the media file was created.
|
||||||
|
*/
|
||||||
|
int year;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Track number.
|
||||||
|
*/
|
||||||
|
int track;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Genre of the media file.
|
||||||
|
*/
|
||||||
|
char genre[32];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Length of the file in milliseconds.
|
||||||
|
*/
|
||||||
|
int64_t duration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bitrate of the file.
|
||||||
|
*/
|
||||||
|
int bitrate;
|
||||||
|
} ac_file_info;
|
||||||
|
|
||||||
|
typedef ac_file_info *lp_ac_file_info;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ac_instance represents an Acinerella instance. Each instance can open and
|
||||||
|
* decode one file at once.
|
||||||
|
*/
|
||||||
|
typedef struct _ac_instance {
|
||||||
|
/**
|
||||||
|
* If true, the instance currently opened a media file.
|
||||||
|
*/
|
||||||
|
bool opened;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the count of streams the media file has. This value is available
|
||||||
|
* after calling the ac_open function.
|
||||||
|
*/
|
||||||
|
int stream_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set this value to change the image output format
|
||||||
|
*/
|
||||||
|
ac_output_format output_format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains information about the opened stream/file
|
||||||
|
*/
|
||||||
|
ac_file_info info;
|
||||||
|
} ac_instance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pointer on the Acinerella instance record.
|
||||||
|
*/
|
||||||
|
typedef ac_instance *lp_ac_instance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains information about an Acinerella video stream.
|
||||||
|
*/
|
||||||
struct _ac_video_stream_info {
|
struct _ac_video_stream_info {
|
||||||
/*The width of one frame.*/
|
/**
|
||||||
int frame_width;
|
* The width of one frame.
|
||||||
/*The height of one frame.*/
|
*/
|
||||||
int frame_height;
|
int frame_width;
|
||||||
/*The width of one pixel. 1.07 for 4:3 format, 1,42 for the 16:9 format*/
|
|
||||||
float pixel_aspect;
|
|
||||||
/*Frames per second that should be played.*/
|
|
||||||
double frames_per_second;
|
|
||||||
};
|
|
||||||
typedef struct _ac_video_stream_info ac_video_stream_info;
|
|
||||||
/*Contains information about an Acinerella audio stream.*/
|
|
||||||
struct _ac_audio_stream_info {
|
|
||||||
/*Samples per second. Default values are 44100 or 48000.*/
|
|
||||||
int samples_per_second;
|
|
||||||
/*Bits per sample. Can be 8 or 16 Bit.*/
|
|
||||||
int bit_depth;
|
|
||||||
/*Count of channels in the audio stream.*/
|
|
||||||
int channel_count;
|
|
||||||
};
|
|
||||||
typedef struct _ac_audio_stream_info ac_audio_stream_info;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The height of one frame.
|
||||||
|
*/
|
||||||
|
int frame_height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The width of one pixel. 1.07 for 4:3 format, 1,42 for the 16:9 format
|
||||||
|
*/
|
||||||
|
float pixel_aspect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frames per second that should be played.
|
||||||
|
*/
|
||||||
|
double frames_per_second;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains information about an Acinerella audio stream.
|
||||||
|
*/
|
||||||
|
struct _ac_audio_stream_info {
|
||||||
|
/**
|
||||||
|
* Samples per second. Default values are 44100 or 48000.
|
||||||
|
*/
|
||||||
|
int samples_per_second;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bits per sample. Can be 8, 16 or 32 Bit. In the latter case the data is
|
||||||
|
* in floating point format.
|
||||||
|
*/
|
||||||
|
int bit_depth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count of channels in the audio stream.
|
||||||
|
*/
|
||||||
|
int channel_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Additional info about the stream - use "video_info" when the stream
|
||||||
|
* is an video stream, "audio_info" when the stream is an audio stream.
|
||||||
|
*/
|
||||||
|
union _ac_additional_stream_info {
|
||||||
|
struct _ac_audio_stream_info audio_info;
|
||||||
|
struct _ac_video_stream_info video_info;
|
||||||
|
};
|
||||||
|
|
||||||
/*Contains information about an Acinerella stream.*/
|
/*Contains information about an Acinerella stream.*/
|
||||||
struct _ac_stream_info {
|
typedef struct _ac_stream_info {
|
||||||
/*Contains the type of the stream.*/
|
/**
|
||||||
ac_stream_type stream_type;
|
* Contains the type of the stream.
|
||||||
ac_audio_stream_info audio_info;
|
*/
|
||||||
ac_video_stream_info video_info;
|
ac_stream_type stream_type;
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _ac_stream_info ac_stream_info;
|
/**
|
||||||
/*Pointer on TAc_stream_info*/
|
* Additional data depending on the stream type. Either access the
|
||||||
typedef ac_stream_info* lp_ac_stream_info;
|
* "audio_info" or the "video_info" field, depending on the value stored in
|
||||||
|
* the "stream_type" member.
|
||||||
|
*/
|
||||||
|
union _ac_additional_stream_info additional_info;
|
||||||
|
} ac_stream_info;
|
||||||
|
|
||||||
/*Contains information about an Acinerella video/audio decoder.*/
|
/**
|
||||||
struct _ac_decoder {
|
* Pointer on ac_stream_info
|
||||||
/*Pointer on the Acinerella instance*/
|
*/
|
||||||
lp_ac_instance pacInstance;
|
typedef ac_stream_info *lp_ac_stream_info;
|
||||||
/*Contains the type of the decoder.*/
|
|
||||||
ac_decoder_type type;
|
|
||||||
|
|
||||||
/*The timecode of the currently decoded picture in seconds */
|
|
||||||
double timecode;
|
|
||||||
|
|
||||||
double video_clock;
|
|
||||||
|
|
||||||
/*Contains information about the stream the decoder is attached to.*/
|
|
||||||
ac_stream_info stream_info;
|
|
||||||
/*The index of the stream the decoder is attached to.*/
|
|
||||||
int stream_index;
|
|
||||||
|
|
||||||
/*Pointer to the buffer which contains the data.*/
|
|
||||||
char *pBuffer;
|
|
||||||
/*Size of the data in the buffer.*/
|
|
||||||
int buffer_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _ac_decoder ac_decoder;
|
/**
|
||||||
/*Pointer on TAc_decoder.*/
|
* Contains information about an Acinerella video/audio decoder.
|
||||||
typedef ac_decoder* lp_ac_decoder;
|
*/
|
||||||
|
typedef struct _ac_decoder {
|
||||||
|
/**
|
||||||
|
* Pointer on the Acinerella instance.
|
||||||
|
*/
|
||||||
|
lp_ac_instance pacInstance;
|
||||||
|
|
||||||
/*Contains information about an Acinerella package.*/
|
/**
|
||||||
struct _ac_package {
|
* Contains the type of the decoder.
|
||||||
/*The stream the package belongs to.*/
|
*/
|
||||||
int stream_index;
|
ac_decoder_type type;
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct _ac_package ac_package;
|
/**
|
||||||
/*Pointer on TAc_package*/
|
* The timecode of the currently decoded picture in seconds.
|
||||||
typedef ac_package* lp_ac_package;
|
*/
|
||||||
|
double timecode;
|
||||||
|
|
||||||
/*Initializes an Acinerella instance.*/
|
/**
|
||||||
extern lp_ac_instance CALL_CONVT ac_init(void);
|
* Contains information about the stream the decoder is attached to.
|
||||||
extern void CALL_CONVT ac_free(lp_ac_instance pacInstance);
|
*/
|
||||||
|
ac_stream_info stream_info;
|
||||||
|
|
||||||
/*Opens a media file.*/
|
/**
|
||||||
|
* The index of the stream the decoder is attached to.
|
||||||
extern int CALL_CONVT ac_open2(
|
*/
|
||||||
lp_ac_instance pacInstance,
|
int stream_index;
|
||||||
const char* filename
|
|
||||||
);
|
|
||||||
|
|
||||||
/*Closes an opened media file.*/
|
|
||||||
extern void CALL_CONVT ac_close(lp_ac_instance pacInstance);
|
|
||||||
|
|
||||||
/*Stores information in "pInfo" about stream number "nb".*/
|
|
||||||
extern void CALL_CONVT ac_get_stream_info(lp_ac_instance pacInstance, int nb, lp_ac_stream_info info);
|
|
||||||
|
|
||||||
/*Reads a package from an opened media file.*/
|
/**
|
||||||
extern lp_ac_package CALL_CONVT ac_read_package(lp_ac_instance pacInstance);
|
* Pointer to the buffer which contains the data.
|
||||||
/*Frees a package that has been read.*/
|
*/
|
||||||
extern void CALL_CONVT ac_free_package(lp_ac_package pPackage);
|
uint8_t *pBuffer;
|
||||||
|
|
||||||
extern lp_ac_decoder CALL_CONVT ac_create_audio_decoder(lp_ac_instance pacInstance);
|
/**
|
||||||
extern lp_ac_decoder CALL_CONVT ac_create_video_decoder(lp_ac_instance pacInstance);
|
* Size of the data in the buffer.
|
||||||
/*Frees an created decoder.*/
|
*/
|
||||||
extern void CALL_CONVT ac_free_decoder(lp_ac_decoder pDecoder);
|
int buffer_size;
|
||||||
/*Decodes a package using the specified decoder. The decodec data is stored in the
|
} ac_decoder;
|
||||||
"buffer" property of the decoder.*/
|
|
||||||
extern int CALL_CONVT ac_decode_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
|
typedef ac_decoder *lp_ac_decoder;
|
||||||
extern int CALL_CONVT ac_drop_decode_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
|
|
||||||
|
/**
|
||||||
|
* Contains information about an Acinerella package.
|
||||||
|
*/
|
||||||
|
typedef struct _ac_package {
|
||||||
|
/*The stream the package belongs to.*/
|
||||||
|
int stream_index;
|
||||||
|
} ac_package;
|
||||||
|
|
||||||
|
typedef ac_package *lp_ac_package;
|
||||||
|
|
||||||
|
typedef void *lp_ac_proberesult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback function used to ask the application to read data. Should return
|
||||||
|
* the number of bytes read or an value smaller than zero if an error occured.
|
||||||
|
*/
|
||||||
|
typedef int (CALL_CONVT *ac_read_callback)(void *sender, uint8_t *buf,
|
||||||
|
int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback function used to ask the application to seek.
|
||||||
|
*
|
||||||
|
* @param sender is the pointer specified in ac_open.
|
||||||
|
* @param pos is the position to which the stream should be seeked.
|
||||||
|
* @param whence specifies whether the seeking should be relative to the
|
||||||
|
* beginning of the file (0, SEEK_SET), relative to the current location (1,
|
||||||
|
* SEEK_CUR), or relative to the end of the file (2, SEEK_END)
|
||||||
|
* @return 0 if the function succeeds, -1 on failure.
|
||||||
|
*/
|
||||||
|
typedef int64_t (CALL_CONVT *ac_seek_callback)(void *sender, int64_t pos,
|
||||||
|
int whence);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback function that is used to notify the application when the data stream
|
||||||
|
* is opened or closed. For example the file pointer should be resetted to zero
|
||||||
|
* when the "open" function is called.
|
||||||
|
*/
|
||||||
|
typedef int (CALL_CONVT *ac_openclose_callback)(void *sender);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes an Acinerella instance.
|
||||||
|
*
|
||||||
|
* @return a pointer at an acinerella instance. The instance must be freed using
|
||||||
|
* ac_free.
|
||||||
|
*/
|
||||||
|
EXTERN lp_ac_instance CALL_CONVT ac_init(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes an Acinerella instance with a specific output format.
|
||||||
|
*
|
||||||
|
* @return a pointer at an acinerella instance. The instance must be freed using
|
||||||
|
* ac_free.
|
||||||
|
*/
|
||||||
|
EXTERN lp_ac_instance CALL_CONVT ac_init_of(ac_output_format outputFormat);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frees a previously created Acinerella instance.
|
||||||
|
*
|
||||||
|
* @param pacInstance is the Acinerella instance that should be freed.
|
||||||
|
*/
|
||||||
|
EXTERN void CALL_CONVT ac_free(lp_ac_instance pacInstance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens a media stream.
|
||||||
|
*
|
||||||
|
* @param inst specifies the Acinerella Instance the stream should be opened
|
||||||
|
* for.
|
||||||
|
* @param sender specifies a pointer that is sent to all callback functions to
|
||||||
|
* allow you to do object orientated programming. May be NULL.
|
||||||
|
* @param open_proc specifies the callback function that is called, when the
|
||||||
|
* media file is opened. May be NULL.
|
||||||
|
* @param seek_proc specifies the callback function that is called, when the
|
||||||
|
* ffmpeg decoder wants to seek in the file. May be NULL.
|
||||||
|
* @param close_proc specifies the callback function that is called when the
|
||||||
|
* media file is closed. May be NULL.
|
||||||
|
* @param proberesult is a pointer at a structure previously returned by
|
||||||
|
* ac_probe_input_buffer. May be NULL.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_open(lp_ac_instance pacInstance, void *sender,
|
||||||
|
ac_openclose_callback open_proc, ac_read_callback read_proc,
|
||||||
|
ac_seek_callback seek_proc, ac_openclose_callback close_proc,
|
||||||
|
lp_ac_proberesult proberesult);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens a media file.
|
||||||
|
*
|
||||||
|
* @param inst specifies the Acinerella Instance the stream should be opened
|
||||||
|
* for.
|
||||||
|
* @param file is the name of the file that should be opened.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_open_file(lp_ac_instance pacInstance, const char *filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes an opened media file.
|
||||||
|
*/
|
||||||
|
EXTERN void CALL_CONVT ac_close(lp_ac_instance pacInstance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores information in "pInfo" about stream number "nb".
|
||||||
|
*/
|
||||||
|
EXTERN void CALL_CONVT ac_get_stream_info(lp_ac_instance pacInstance, int nb,
|
||||||
|
lp_ac_stream_info info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a package from an opened media file.
|
||||||
|
*
|
||||||
|
* @param pacInstance is the Acinerella instance from which the data should be
|
||||||
|
* read.
|
||||||
|
* @return a pointer at a ac_package structure or NULL on failure. The returned
|
||||||
|
* pointer must be freed with ac_free_package after use.
|
||||||
|
*/
|
||||||
|
EXTERN lp_ac_package CALL_CONVT ac_read_package(lp_ac_instance pacInstance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frees a package that has been read.
|
||||||
|
*
|
||||||
|
* @param pPackage is a pointer at the ac_package that should be freed. May be
|
||||||
|
* NULL in which case no operation is performed.
|
||||||
|
*/
|
||||||
|
EXTERN void CALL_CONVT ac_free_package(lp_ac_package pPackage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an decoder for the specified stream number. Returns NULL if no
|
||||||
|
* decoder could be found.
|
||||||
|
*/
|
||||||
|
EXTERN lp_ac_decoder CALL_CONVT
|
||||||
|
ac_create_decoder(lp_ac_instance pacInstance, int nb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frees an created decoder.
|
||||||
|
*/
|
||||||
|
EXTERN void CALL_CONVT ac_free_decoder(lp_ac_decoder pDecoder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes a package using the specified decoder. The decoded data is stored in
|
||||||
|
* the "buffer" property of the decoder.
|
||||||
|
*
|
||||||
|
* @param pPackage is the package that should be decoded, previously read by the
|
||||||
|
* ac_read_package method.
|
||||||
|
* @param pDecoder is the decoder instance that should be used to decode the
|
||||||
|
* package -- use the stream index stored in the package to determine the
|
||||||
|
* correct decoder.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_decode_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes a package using the specified decoder and skips it. Returns true if a frame was skiped.
|
||||||
|
*
|
||||||
|
* @param pPackage is the package that should be decoded, previously read by the
|
||||||
|
* ac_read_package method.
|
||||||
|
* @param pDecoder is the decoder instance that should be used to decode the
|
||||||
|
* package -- use the stream index stored in the package to determine the
|
||||||
|
* correct decoder.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_skip_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes a packages using the specified decoder and skips num frames. Returns true if num frames where skiped.
|
||||||
|
*
|
||||||
|
* @param pacInstance is the Acinerella instance from which the data should be
|
||||||
|
* read.
|
||||||
|
* @param pDecoder is the decoder instance that should be used to decode the
|
||||||
|
* package -- use the stream index stored in the package to determine the
|
||||||
|
* correct decoder.
|
||||||
|
* @num number of frames to skip.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_skip_frames(lp_ac_instance pacInstance, lp_ac_decoder pDecoder, int num);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes a video frame using the specified decoder and strores the result in the decoder. Returns true if a frame cloud be decoded.
|
||||||
|
*
|
||||||
|
* @param pacInstance is the Acinerella instance from which the data should be
|
||||||
|
* read.
|
||||||
|
* @param pDecoder is the decoder instance that should be used to decode the
|
||||||
|
* package -- use the stream index stored in the package to determine the
|
||||||
|
* correct decoder.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_get_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes a audio frame using the specified decoder and strores the result in the decoder. Returns true if a frame cloud be decoded.
|
||||||
|
*
|
||||||
|
* @param pacInstance is the Acinerella instance from which the data should be
|
||||||
|
* read.
|
||||||
|
* @param pDecoder is the decoder instance that should be used to decode the
|
||||||
|
* package -- use the stream index stored in the package to determine the
|
||||||
|
* correct decoder.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_get_audio_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seeks to the given target position in the file. The seek funtion is not able
|
||||||
|
* to seek a single audio/video stream but seeks the whole file forward. The
|
||||||
|
* stream number paremter (nb) is only used for the timecode reference.
|
||||||
|
* The parameter "dir" specifies the seek direction: 0 for forward, -1 for
|
||||||
|
* backward. The target_pos paremeter is in milliseconds. Returns 1 if the
|
||||||
|
* functions succeded.
|
||||||
|
*/
|
||||||
|
EXTERN int CALL_CONVT
|
||||||
|
ac_seek(lp_ac_decoder pDecoder, int dir, int64_t target_pos);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given input buffer contains data that can potentially be
|
||||||
|
* decoded by Acinerella. If yes, returns a pointer that may be passed to
|
||||||
|
* ac_open in order to speed up the open process. Otherwise returns NULL.
|
||||||
|
*
|
||||||
|
* @param buf is a pointer to the buffer in which the data is stored.
|
||||||
|
* @param bufsize is the size of the buffer.
|
||||||
|
* @param filename is the name of the file the buffer originated from. May be
|
||||||
|
* empty or NULL.
|
||||||
|
* @param score_max is set to the maximum of the previous value of score_max
|
||||||
|
* and an internal score value.
|
||||||
|
* @return either a pointer at an internal "probe result" or NULL if the buffer
|
||||||
|
* contains no decodeable data.
|
||||||
|
*/
|
||||||
|
EXTERN lp_ac_proberesult CALL_CONVT
|
||||||
|
ac_probe_input_buffer(uint8_t *buf, int bufsize, char *filename,
|
||||||
|
int *score_max);
|
||||||
|
|
||||||
|
#endif /* _ACINERELLA_H_ */
|
||||||
|
|
||||||
extern int CALL_CONVT ac_get_audio_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
|
|
||||||
extern int CALL_CONVT ac_get_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
|
|
||||||
extern int CALL_CONVT ac_skip_frames(lp_ac_instance pacInstance, lp_ac_decoder pDecoder, int num);
|
|
||||||
|
|
||||||
/*Seeks to the given target position in the file. The seek funtion is not able to seek a single audio/video stream
|
|
||||||
but seeks the whole file forward. The stream number paremter (nb) is only used for the timecode reference.
|
|
||||||
The parameter "dir" specifies the seek direction: 0 for forward, -1 for backward.
|
|
||||||
The target_pos paremeter is in milliseconds. Returns 1 if the functions succeded.*/
|
|
||||||
extern int CALL_CONVT ac_seek(lp_ac_decoder pDecoder, int dir, int64_t target_pos);
|
|
||||||
#endif /*VIDEOPLAY_H*/
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
PROJECT=$1
|
|
||||||
cd $PROJECT
|
|
||||||
sed -i -e s/GITVERSION/$(git describe --long)/ $PROJECT/Properties/AssemblyInfo.cs
|
|
||||||
shortv=$(git describe --abbrev=0 | sed -e 's/alpha/0/' -e 's/beta/1/' -e 's/rc/2/')
|
|
||||||
sed -i -e s/SHORTVERSION/${shortv}/ $PROJECT/Properties/AssemblyInfo.cs
|
|
||||||
@@ -92,6 +92,9 @@ namespace Vocaluxe
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// Create data folder
|
||||||
|
Directory.CreateDirectory(CSettings.DataFolder);
|
||||||
|
|
||||||
// Init Log
|
// Init Log
|
||||||
CLog.Init();
|
CLog.Init();
|
||||||
|
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ using System.Runtime.InteropServices;
|
|||||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||||
// die mit einer Assembly verknüpft sind.
|
// die mit einer Assembly verknüpft sind.
|
||||||
|
|
||||||
[assembly: AssemblyTitle("Vocaluxe")]
|
[assembly: AssemblyTitle("FULLVERSION")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("Vocaluxe")]
|
[assembly: AssemblyProduct("Vocaluxe")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
[assembly: AssemblyCopyright("Copyright © 2017")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
private void _ChangePos(int num)
|
private void _ChangePos(int num)
|
||||||
{
|
{
|
||||||
if (_Scores[_Round].Count == 0)
|
if (_Scores[_Round].Count == 0 || _Scores[_Round].Count <= _NumEntrys)
|
||||||
_Pos = 0;
|
_Pos = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ namespace Vocaluxe.Screens
|
|||||||
_Texts[_TextRelease].Visible = true;
|
_Texts[_TextRelease].Visible = true;
|
||||||
_Statics[_StaticWarningProfiles].Visible = false;
|
_Statics[_StaticWarningProfiles].Visible = false;
|
||||||
_Texts[_TextWarningProfiles].Visible = false;
|
_Texts[_TextWarningProfiles].Visible = false;
|
||||||
|
_SelectElement(_Buttons[_ButtonSing]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool HandleInput(SKeyEvent keyEvent)
|
public override bool HandleInput(SKeyEvent keyEvent)
|
||||||
@@ -105,6 +106,10 @@ namespace Vocaluxe.Screens
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Keys.Escape:
|
||||||
|
_SelectElement(_Buttons[_ButtonExit]);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveMicConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
case Keys.S:
|
case Keys.S:
|
||||||
CParty.SetNormalGameMode();
|
CParty.SetNormalGameMode();
|
||||||
|
_SaveConfig();
|
||||||
CGraphics.FadeTo(EScreen.Song);
|
CGraphics.FadeTo(EScreen.Song);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -319,6 +319,8 @@ namespace Vocaluxe.Screens
|
|||||||
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
||||||
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
||||||
_Buttons[_ButtonWebcam].Visible = false;
|
_Buttons[_ButtonWebcam].Visible = false;
|
||||||
|
|
||||||
|
_SelectElement(_Buttons[_ButtonSave]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -330,6 +332,8 @@ namespace Vocaluxe.Screens
|
|||||||
_Buttons[_ButtonDiscardSnapshot].Visible = true;
|
_Buttons[_ButtonDiscardSnapshot].Visible = true;
|
||||||
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
||||||
_Buttons[_ButtonWebcam].Visible = false;
|
_Buttons[_ButtonWebcam].Visible = false;
|
||||||
|
|
||||||
|
_SelectElement(_Buttons[_ButtonSaveSnapshot]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,6 +345,8 @@ namespace Vocaluxe.Screens
|
|||||||
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
||||||
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
||||||
_Buttons[_ButtonWebcam].Visible = CWebcam.IsDeviceAvailable();
|
_Buttons[_ButtonWebcam].Visible = CWebcam.IsDeviceAvailable();
|
||||||
|
|
||||||
|
_SelectElement(_Buttons[_ButtonWebcam]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _OnSaveSnapshot()
|
private void _OnSaveSnapshot()
|
||||||
@@ -359,6 +365,8 @@ namespace Vocaluxe.Screens
|
|||||||
int id = CProfiles.NewAvatar(file);
|
int id = CProfiles.NewAvatar(file);
|
||||||
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].SelectedTag, id);
|
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].SelectedTag, id);
|
||||||
_LoadAvatars(false);
|
_LoadAvatars(false);
|
||||||
|
|
||||||
|
_SelectElement(_Buttons[_ButtonSave]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _OnWebcam()
|
private void _OnWebcam()
|
||||||
@@ -374,6 +382,8 @@ namespace Vocaluxe.Screens
|
|||||||
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
||||||
_Buttons[_ButtonTakeSnapshot].Visible = true;
|
_Buttons[_ButtonTakeSnapshot].Visible = true;
|
||||||
_Buttons[_ButtonWebcam].Visible = false;
|
_Buttons[_ButtonWebcam].Visible = false;
|
||||||
|
|
||||||
|
_SelectElement(_Buttons[_ButtonTakeSnapshot]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _NewProfile()
|
private void _NewProfile()
|
||||||
|
|||||||
@@ -172,7 +172,12 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
keyEvent.Handled = _Playlist.HandleInput(keyEvent);
|
keyEvent.Handled = _Playlist.HandleInput(keyEvent);
|
||||||
if (keyEvent.Handled)
|
if (keyEvent.Handled)
|
||||||
|
{
|
||||||
|
//Check if playlist was closed and song menu needed to be resized
|
||||||
|
if (!_Playlist.Visible)
|
||||||
|
_SongMenu.SmallView = false;
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
if (!keyEvent.KeyPressed && keyEvent.Key == Keys.Escape)
|
if (!keyEvent.KeyPressed && keyEvent.Key == Keys.Escape)
|
||||||
{
|
{
|
||||||
_ClosePlaylist();
|
_ClosePlaylist();
|
||||||
@@ -362,7 +367,10 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
if (CSongs.IsInCategory)
|
if (CSongs.IsInCategory)
|
||||||
_SongMenu.SetSelectedSong(CSongs.GetRandomSong());
|
_SongMenu.SetSelectedSong(CSongs.GetRandomSong());
|
||||||
else
|
}
|
||||||
|
else if (_Buttons[_ButtonOptionsRandomCategory].Selected)
|
||||||
|
{
|
||||||
|
if (!CSongs.IsInCategory)
|
||||||
_SongMenu.SetSelectedCategory(CSongs.GetRandomCategory());
|
_SongMenu.SetSelectedCategory(CSongs.GetRandomCategory());
|
||||||
}
|
}
|
||||||
else if (_Buttons[_ButtonOptionsSingAll].Selected)
|
else if (_Buttons[_ButtonOptionsSingAll].Selected)
|
||||||
@@ -411,7 +419,12 @@ namespace Vocaluxe.Screens
|
|||||||
_SongMenu.Selected = false;
|
_SongMenu.Selected = false;
|
||||||
_ToggleSongOptions(ESongOptionsView.None);
|
_ToggleSongOptions(ESongOptionsView.None);
|
||||||
if (_Playlist.HandleMouse(mouseEvent))
|
if (_Playlist.HandleMouse(mouseEvent))
|
||||||
|
{
|
||||||
|
//Check if playlist was closed and song menu needed to be resized
|
||||||
|
if (!_Playlist.Visible)
|
||||||
|
_SongMenu.SmallView = false;
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (CHelper.IsInBounds(_SongMenu.Rect, mouseEvent))
|
else if (CHelper.IsInBounds(_SongMenu.Rect, mouseEvent))
|
||||||
{
|
{
|
||||||
@@ -1261,6 +1274,8 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
_SongMenu.SmallView = true;
|
_SongMenu.SmallView = true;
|
||||||
_Playlist.Visible = true;
|
_Playlist.Visible = true;
|
||||||
|
_SelectElement(_Playlist);
|
||||||
|
_ToggleSongOptions(ESongOptionsView.None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-12
@@ -477,15 +477,14 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">xcopy /E /D /Y "$(ProjectDir)\Website" "$(SolutionDir)\PhoneGap"
|
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">xcopy /E /D /Y "$(ProjectDir)\Website" "$(SolutionDir)\PhoneGap"</PostBuildEvent>
|
||||||
powershell -command "if($Env:GIT_VERSION_TAG) {$version = $Env:GIT_VERSION_TAG;} else {$version = git describe --long;}(Get-Content -Encoding UTF8 '$(ProjectDir)..\Output\Website\js\main.js') | Foreach-Object {$_ -replace '(?<=var *matchingServerVersion * = *\")\w*(?=\" *;)', "$version"} | Set-Content -Encoding UTF8 '$(ProjectDir)..\Output\Website\js\main.js'"
|
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">powershell -ExecutionPolicy Bypass -File $(SolutionDir)\.build\winPostBuild.ps1 $(ProjectDir)</PostBuildEvent>
|
||||||
powershell -command "(Get-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs') | Foreach-Object {$_ -replace '(?<=AssemblyInformationalVersion\(\").*(?=\")', 'GITVERSION'} | Foreach-Object {$_ -replace '(?<=(AssemblyVersion|AssemblyFileVersion)\(\").*(?=\")', 'SHORTVERSION'} | Set-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs' "</PostBuildEvent>
|
|
||||||
<PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">cp -ruT "$(ProjectDir)Website" "$(SolutionDir)/PhoneGap"</PostBuildEvent>
|
<PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">cp -ruT "$(ProjectDir)Website" "$(SolutionDir)/PhoneGap"</PostBuildEvent>
|
||||||
<PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">$(ProjectDir)Linux/Build/PostBuildEvent.sh $(ProjectDir)</PostBuildEvent>
|
<PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">$(SolutionDir)/.build/linuxPostBuildEvent.sh $(ProjectDir)</PostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">powershell -command " if($Env:GIT_VERSION_TAG) {$version = $Env:GIT_VERSION_TAG;} else {$version = git describe --long;} (Get-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs') | Foreach-Object {$_ -replace '(?<=AssemblyInformationalVersion\(\").*(?=\")', $version} | Foreach-Object {$_ -replace '(?<=(AssemblyVersion|AssemblyFileVersion)\(\").*(?=\")', $version.Split('-')[0].replace('alpha','0').replace('beta','1').replace('rc','2')} | Foreach-Object {$_ -replace '(?<=AssemblyCopyright\(\".*)[0-9]+(?=\")', (Get-Date).Year} | Set-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs' "</PreBuildEvent>
|
<PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">powershell -ExecutionPolicy Bypass -File $(SolutionDir)\.build\winPreBuild.ps1 $(ProjectDir) $(Platform)</PreBuildEvent>
|
||||||
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">$(ProjectDir)Linux/Build/PreBuildEvent.sh $(ProjectDir)</PreBuildEvent>
|
<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">$(SolutionDir)/.build/linuxPreBuildEvent.sh $(ProjectDir) $(Platform)</PreBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
@@ -536,10 +535,10 @@ powershell -command "(Get-Content -Encoding UTF8 '$(ProjectDir)Properties\Assemb
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Rebuild for automatic package restore. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Rebuild for automatic package restore. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets'))" />
|
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets'))" />
|
||||||
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets'))" />
|
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets'))" />
|
||||||
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets'))" />
|
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets'))" />
|
||||||
@@ -548,12 +547,12 @@ powershell -command "(Get-Content -Encoding UTF8 '$(ProjectDir)Properties\Assemb
|
|||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets'))" />
|
||||||
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets'))" />
|
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets'))" />
|
||||||
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets'))" />
|
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets" Condition="Exists('..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets" Condition="Exists('..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets" Condition="Exists('..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets" Condition="Exists('..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets" Condition="Exists('..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets" Condition="Exists('..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets" Condition="Exists('..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets" Condition="Exists('..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets')" />
|
||||||
@@ -562,5 +561,5 @@ powershell -command "(Get-Content -Encoding UTF8 '$(ProjectDir)Properties\Assemb
|
|||||||
<Import Project="..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets" Condition="Exists('..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets" Condition="Exists('..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets" Condition="Exists('..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets" Condition="Exists('..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets')" />
|
||||||
<Import Project="..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets" Condition="Exists('..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets')" />
|
<Import Project="..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets" Condition="Exists('..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets')" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="vocaluxe.dependencies" version="1.0.10" targetFramework="net40" />
|
<package id="vocaluxe.dependencies" version="1.0.11" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.acinerella" version="1.0.3" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.acinerella" version="1.0.5" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.aforgevideo" version="1.0.1" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.aforgevideo" version="1.0.1" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.csharpsqlite" version="1.0.1" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.csharpsqlite" version="1.0.1" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.ffmpeg" version="1.0.3" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.ffmpeg" version="1.0.4" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.gstreamer" version="1.0.2" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.gstreamer" version="1.0.2" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.gstreamersharp" version="1.0.1" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.gstreamersharp" version="1.0.1" targetFramework="net40" />
|
||||||
<package id="vocaluxe.dependencies.hidapi" version="1.0.4" targetFramework="net40" />
|
<package id="vocaluxe.dependencies.hidapi" version="1.0.4" targetFramework="net40" />
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace VocaluxeLib.Menu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _Teams;
|
protected bool _Teams = true;
|
||||||
protected int _NumTeams = -1;
|
protected int _NumTeams = -1;
|
||||||
protected int _NumPlayer = -1;
|
protected int _NumPlayer = -1;
|
||||||
protected int[] _NumPlayerTeams;
|
protected int[] _NumPlayerTeams;
|
||||||
@@ -106,8 +106,6 @@ namespace VocaluxeLib.Menu
|
|||||||
for (int i = 0; i < _TeamList.Length; i++)
|
for (int i = 0; i < _TeamList.Length; i++)
|
||||||
_TeamList[i] = new List<int>();
|
_TeamList[i] = new List<int>();
|
||||||
|
|
||||||
_Teams = _NumTeams > 0;
|
|
||||||
|
|
||||||
_UpdateSlides();
|
_UpdateSlides();
|
||||||
_LoadProfiles();
|
_LoadProfiles();
|
||||||
_UpdateButtonVisibility();
|
_UpdateButtonVisibility();
|
||||||
|
|||||||
@@ -119,18 +119,24 @@ namespace VocaluxeLib.Menu
|
|||||||
keyEvent.Handled = PrevValue();
|
keyEvent.Handled = PrevValue();
|
||||||
else
|
else
|
||||||
keyEvent.Handled = _NextElement(keyEvent);
|
keyEvent.Handled = _NextElement(keyEvent);
|
||||||
}
|
|
||||||
|
|
||||||
if (keyEvent.Key == Keys.Right)
|
return true;
|
||||||
|
}
|
||||||
|
else if (keyEvent.Key == Keys.Right)
|
||||||
{
|
{
|
||||||
if (_IsSelectionValid() && _Elements[_Selection].Type == EType.SelectSlide && keyEvent.Mod != EModifier.Shift)
|
if (_IsSelectionValid() && _Elements[_Selection].Type == EType.SelectSlide && keyEvent.Mod != EModifier.Shift)
|
||||||
keyEvent.Handled = NextValue();
|
keyEvent.Handled = NextValue();
|
||||||
else
|
else
|
||||||
keyEvent.Handled = _NextElement(keyEvent);
|
keyEvent.Handled = _NextElement(keyEvent);
|
||||||
}
|
|
||||||
|
|
||||||
if (keyEvent.Key == Keys.Up || keyEvent.Key == Keys.Down)
|
return true;
|
||||||
|
}
|
||||||
|
else if (keyEvent.Key == Keys.Up || keyEvent.Key == Keys.Down)
|
||||||
|
{
|
||||||
keyEvent.Handled = _NextElement(keyEvent);
|
keyEvent.Handled = _NextElement(keyEvent);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -140,16 +146,25 @@ namespace VocaluxeLib.Menu
|
|||||||
PrevElement();
|
PrevElement();
|
||||||
else
|
else
|
||||||
NextElement();
|
NextElement();
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyEvent.Key == Keys.Left)
|
if (keyEvent.Key == Keys.Left)
|
||||||
|
{
|
||||||
PrevValue();
|
PrevValue();
|
||||||
|
|
||||||
if (keyEvent.Key == Keys.Right)
|
return true;
|
||||||
|
}
|
||||||
|
else if (keyEvent.Key == Keys.Right)
|
||||||
|
{
|
||||||
NextValue();
|
NextValue();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool HandleMouse(SMouseEvent mouseEvent)
|
public virtual bool HandleMouse(SMouseEvent mouseEvent)
|
||||||
|
|||||||
+6
-3
@@ -80,15 +80,17 @@ after_build:
|
|||||||
test: off
|
test: off
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- ps: ./.appveyor/prepareDeploy.ps1
|
- ps: ./.appveyor/prepareDeploy.ps1
|
||||||
|
after_deploy:
|
||||||
|
- ps: ./.appveyor/afterDeploy.ps1
|
||||||
deploy:
|
deploy:
|
||||||
- provider: GitHub
|
- provider: GitHub
|
||||||
tag: $(APPVEYOR_REPO_TAG_NAME)
|
tag: $(APPVEYOR_REPO_TAG_NAME)
|
||||||
release: $(APPVEYOR_REPO_TAG_NAME)
|
release: $(APPVEYOR_REPO_TAG_NAME)
|
||||||
description:
|
description: $(APPVEYOR_REPO_COMMIT)
|
||||||
auth_token:
|
auth_token:
|
||||||
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
||||||
artifact: ReleaseZip
|
artifact: ReleaseZip
|
||||||
prerelease: true
|
prerelease: $(IS_BETA_RELEASE)
|
||||||
on:
|
on:
|
||||||
APPVEYOR_REPO_TAG: true
|
APPVEYOR_REPO_TAG: true
|
||||||
NIGHTLY_BUILD: false
|
NIGHTLY_BUILD: false
|
||||||
@@ -96,10 +98,11 @@ deploy:
|
|||||||
- provider: GitHub
|
- provider: GitHub
|
||||||
tag: $(APPVEYOR_REPO_TAG_NAME)
|
tag: $(APPVEYOR_REPO_TAG_NAME)
|
||||||
release: Latest Nightly build
|
release: Latest Nightly build
|
||||||
description:
|
description: $(APPVEYOR_REPO_COMMIT)
|
||||||
auth_token:
|
auth_token:
|
||||||
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
|
||||||
artifact: ReleaseZip
|
artifact: ReleaseZip
|
||||||
|
prerelease: true
|
||||||
on:
|
on:
|
||||||
APPVEYOR_REPO_TAG: true
|
APPVEYOR_REPO_TAG: true
|
||||||
NIGHTLY_BUILD: true
|
NIGHTLY_BUILD: true
|
||||||
|
|||||||
Reference in new issue
Block a user