reconstructed CProfiles (preparing for async profile adding)
This commit is contained in:
1 parent
967e2eb4b1
commit
19339c6888
11 files changed
+353
-225
No files matched your search
@@ -30,6 +30,7 @@ using Vocaluxe.Lib.Sound;
|
|||||||
using Vocaluxe.Lib.Webcam;
|
using Vocaluxe.Lib.Webcam;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
using VocaluxeLib.Profile;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -810,12 +811,13 @@ namespace Vocaluxe.Base
|
|||||||
CGame.Players[j].ProfileID = -1;
|
CGame.Players[j].ProfileID = -1;
|
||||||
if (Players[j] == "")
|
if (Players[j] == "")
|
||||||
continue;
|
continue;
|
||||||
for (int i = 0; i < CProfiles.Profiles.Length; i++)
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
|
for (int i = 0; i < profiles.Length; i++)
|
||||||
{
|
{
|
||||||
if (Path.GetFileName(CProfiles.Profiles[i].FileName) == Players[j] && CProfiles.Profiles[i].Active == EOffOn.TR_CONFIG_ON)
|
if (Path.GetFileName(profiles[i].FileName) == Players[j] && profiles[i].Active == EOffOn.TR_CONFIG_ON)
|
||||||
{
|
{
|
||||||
//Update Game-infos with player
|
//Update Game-infos with player
|
||||||
CGame.Players[j].ProfileID = i;
|
CGame.Players[j].ProfileID = profiles[i].ID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,6 +214,11 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
return CSettings.MedleyMinDuration;
|
return CSettings.MedleyMinDuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetFolderProfiles()
|
||||||
|
{
|
||||||
|
return CSettings.FolderProfiles;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CBtheme : ITheme
|
class CBtheme : ITheme
|
||||||
@@ -549,7 +554,7 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
public CProfile[] GetProfiles()
|
public CProfile[] GetProfiles()
|
||||||
{
|
{
|
||||||
return CProfiles.Profiles;
|
return CProfiles.GetProfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public EGameDifficulty GetDifficulty(int profileID)
|
public EGameDifficulty GetDifficulty(int profileID)
|
||||||
|
|||||||
+208
-141
@@ -30,24 +30,21 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
static class CProfiles
|
static class CProfiles
|
||||||
{
|
{
|
||||||
private static List<CProfile> _Profiles;
|
private static Dictionary<int, CProfile> _Profiles;
|
||||||
private static readonly List<CAvatar> _Avatars = new List<CAvatar>();
|
private static Queue<int> _ProfileIDs;
|
||||||
|
private static Object _ProfileMutex = new Object();
|
||||||
|
|
||||||
public static CProfile[] Profiles
|
private static Dictionary<int, CAvatar> _Avatars;
|
||||||
{
|
private static Queue<int> _AvatarIDs;
|
||||||
get { return _Profiles.ToArray(); }
|
private static Object _AvatarMutex = new Object();
|
||||||
}
|
|
||||||
|
private static List<Delegate> _Callbacks;
|
||||||
|
|
||||||
public static int NumProfiles
|
public static int NumProfiles
|
||||||
{
|
{
|
||||||
get { return _Profiles.Count; }
|
get { return _Profiles.Count; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CAvatar[] Avatars
|
|
||||||
{
|
|
||||||
get { return _Avatars.ToArray(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int NumAvatars
|
public static int NumAvatars
|
||||||
{
|
{
|
||||||
get { return _Avatars.Count; }
|
get { return _Avatars.Count; }
|
||||||
@@ -55,80 +52,175 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
|
_Avatars = new Dictionary<int, CAvatar>();
|
||||||
|
_AvatarIDs = new Queue<int>(1000);
|
||||||
|
for (int i = 0; i < 1000; i++)
|
||||||
|
{
|
||||||
|
_AvatarIDs.Enqueue(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
_Profiles = new Dictionary<int, CProfile>();
|
||||||
|
_ProfileIDs = new Queue<int>(100);
|
||||||
|
for (int i = 0; i < 100; i++)
|
||||||
|
{
|
||||||
|
_ProfileIDs.Enqueue(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
_Callbacks = new List<Delegate>();
|
||||||
|
|
||||||
LoadProfiles();
|
LoadProfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static CProfile[] GetProfiles()
|
||||||
|
{
|
||||||
|
List<CProfile> list = new List<CProfile>();
|
||||||
|
|
||||||
|
lock (_ProfileMutex)
|
||||||
|
{
|
||||||
|
if (_Profiles.Count == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
CProfile[] result = new CProfile[_Profiles.Count];
|
||||||
|
_Profiles.Values.CopyTo(result, 0);
|
||||||
|
for (int i = 0; i < result.Length; i++)
|
||||||
|
{
|
||||||
|
list.Add(result[i]);
|
||||||
|
}
|
||||||
|
list.Sort(_CompareByPlayerName);
|
||||||
|
}
|
||||||
|
return list.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CAvatar[] GetAvatars()
|
||||||
|
{
|
||||||
|
CAvatar[] result = null;
|
||||||
|
lock (_AvatarMutex)
|
||||||
|
{
|
||||||
|
if (_Avatars.Count == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
result = new CAvatar[_Avatars.Count];
|
||||||
|
_Avatars.Values.CopyTo(result, 0);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetPlayerName(int profileID, int playerNum = 0)
|
public static string GetPlayerName(int profileID, int playerNum = 0)
|
||||||
{
|
{
|
||||||
if (ICProfileIDValid(profileID))
|
if (ICProfileIDValid(profileID))
|
||||||
return _Profiles[profileID].PlayerName;
|
return _Profiles[profileID].PlayerName;
|
||||||
|
|
||||||
string playerName = CLanguage.Translate("TR_SCREENNAMES_PLAYER");
|
string playerName = CLanguage.Translate("TR_SCREENNAMES_PLAYER");
|
||||||
if (playerNum > 0)
|
if (playerNum > 0)
|
||||||
playerName += " " + playerNum;
|
playerName += " " + playerNum;
|
||||||
return playerName;
|
return playerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetProfileFileName(int profileID)
|
||||||
|
{
|
||||||
|
if (!ICProfileIDValid(profileID))
|
||||||
|
return String.Empty;
|
||||||
|
|
||||||
|
return Path.GetFileName(_Profiles[profileID].FileName);
|
||||||
|
}
|
||||||
|
|
||||||
public static int NewProfile(string fileName = "")
|
public static int NewProfile(string fileName = "")
|
||||||
{
|
{
|
||||||
CProfile profile = new CProfile
|
CProfile profile = new CProfile
|
||||||
{
|
{
|
||||||
PlayerName = String.Empty,
|
|
||||||
Difficulty = EGameDifficulty.TR_CONFIG_EASY,
|
|
||||||
Avatar = new CAvatar(-1),
|
|
||||||
GuestProfile = EOffOn.TR_CONFIG_OFF,
|
|
||||||
Active = EOffOn.TR_CONFIG_ON,
|
|
||||||
FileName = fileName != "" ? Path.Combine(CSettings.FolderProfiles, fileName) : String.Empty
|
FileName = fileName != "" ? Path.Combine(CSettings.FolderProfiles, fileName) : String.Empty
|
||||||
};
|
};
|
||||||
|
|
||||||
if (File.Exists(profile.FileName))
|
if (File.Exists(profile.FileName))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
_Profiles.Add(profile);
|
lock (_ProfileMutex)
|
||||||
return _Profiles.Count - 1;
|
{
|
||||||
|
profile.ID = _ProfileIDs.Dequeue();
|
||||||
|
_Profiles.Add(profile.ID, profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return profile.ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SaveProfiles()
|
public static void SaveProfiles()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _Profiles.Count; i++)
|
foreach (int id in _Profiles.Keys)
|
||||||
_SaveProfile(i);
|
{
|
||||||
|
_Profiles[id].SaveProfile();
|
||||||
|
}
|
||||||
|
|
||||||
LoadProfiles();
|
LoadProfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void LoadProfiles()
|
public static void LoadProfiles()
|
||||||
{
|
{
|
||||||
LoadAvatars();
|
LoadAvatars();
|
||||||
_Profiles = new List<CProfile>();
|
|
||||||
List<string> files = new List<string>();
|
|
||||||
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.xml", true, true));
|
|
||||||
|
|
||||||
foreach (string file in files)
|
lock (_ProfileMutex)
|
||||||
_LoadProfile(file);
|
{
|
||||||
|
List<string> knownFiles = new List<string>();
|
||||||
|
foreach (int id in _Profiles.Keys)
|
||||||
|
{
|
||||||
|
_Profiles[id].LoadProfile();
|
||||||
|
knownFiles.Add(_Profiles[id].FileName);
|
||||||
|
}
|
||||||
|
|
||||||
_SortProfilesByName();
|
List<string> files = new List<string>();
|
||||||
|
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.xml", true, true));
|
||||||
|
|
||||||
|
foreach (string file in knownFiles)
|
||||||
|
{
|
||||||
|
files.Remove(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
CProfile profile = new CProfile
|
||||||
|
{
|
||||||
|
FileName = Path.Combine(CSettings.FolderProfiles, file)
|
||||||
|
};
|
||||||
|
|
||||||
|
if (profile.LoadProfile())
|
||||||
|
{
|
||||||
|
profile.Avatar = _GetAvatar(profile.AvatarFileName);
|
||||||
|
profile.ID = _ProfileIDs.Dequeue();
|
||||||
|
_Profiles.Add(profile.ID, profile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void LoadAvatars()
|
public static void LoadAvatars()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _Avatars.Count; i++)
|
lock (_AvatarMutex)
|
||||||
{
|
{
|
||||||
STexture texture = _Avatars[i].Texture;
|
List<string> knownFiles = new List<string>();
|
||||||
CDraw.RemoveTexture(ref texture);
|
foreach (int id in _Avatars.Keys)
|
||||||
}
|
|
||||||
_Avatars.Clear();
|
|
||||||
|
|
||||||
List<string> files = new List<string>();
|
|
||||||
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.png", true, true));
|
|
||||||
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpg", true, true));
|
|
||||||
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpeg", true, true));
|
|
||||||
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.bmp", true, true));
|
|
||||||
|
|
||||||
foreach (string file in files)
|
|
||||||
{
|
|
||||||
STexture tex = CDraw.AddTexture(file);
|
|
||||||
if (tex.Index != -1)
|
|
||||||
{
|
{
|
||||||
CAvatar avatar = new CAvatar(-1) {Texture = tex, FileName = Path.GetFileName(file)};
|
_Avatars[id].Reload();
|
||||||
_Avatars.Add(avatar);
|
knownFiles.Add(_Avatars[id].FileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<string> files = new List<string>();
|
||||||
|
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.png", true, true));
|
||||||
|
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpg", true, true));
|
||||||
|
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpeg", true, true));
|
||||||
|
files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.bmp", true, true));
|
||||||
|
|
||||||
|
foreach (string file in knownFiles)
|
||||||
|
{
|
||||||
|
files.Remove(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
CAvatar avatar = new CAvatar(-1);
|
||||||
|
if (avatar.LoadFromFile(file))
|
||||||
|
{
|
||||||
|
avatar.ID = _AvatarIDs.Dequeue();
|
||||||
|
_Avatars.Add(avatar.ID, avatar);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,11 +230,8 @@ namespace Vocaluxe.Base
|
|||||||
if (!ICProfileIDValid(profileID))
|
if (!ICProfileIDValid(profileID))
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
|
|
||||||
CProfile profile = _Profiles[profileID];
|
_Profiles[profileID].PlayerName += chr;
|
||||||
profile.PlayerName += chr;
|
return _Profiles[profileID].PlayerName;
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
|
|
||||||
return profile.PlayerName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetDeleteCharInPlayerName(int profileID)
|
public static string GetDeleteCharInPlayerName(int profileID)
|
||||||
@@ -153,14 +242,18 @@ namespace Vocaluxe.Base
|
|||||||
CProfile profile = _Profiles[profileID];
|
CProfile profile = _Profiles[profileID];
|
||||||
if (profile.PlayerName != "")
|
if (profile.PlayerName != "")
|
||||||
profile.PlayerName = profile.PlayerName.Remove(profile.PlayerName.Length - 1);
|
profile.PlayerName = profile.PlayerName.Remove(profile.PlayerName.Length - 1);
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
|
|
||||||
return profile.PlayerName;
|
return profile.PlayerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ICProfileIDValid(int profileID)
|
public static bool ICProfileIDValid(int profileID)
|
||||||
{
|
{
|
||||||
return profileID >= 0 && profileID < _Profiles.Count;
|
return _Profiles.ContainsKey(profileID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ICAvatarIDValid(int avatarID)
|
||||||
|
{
|
||||||
|
return _Avatars.ContainsKey(avatarID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EGameDifficulty GetDifficulty(int profileID)
|
public static EGameDifficulty GetDifficulty(int profileID)
|
||||||
@@ -173,9 +266,7 @@ namespace Vocaluxe.Base
|
|||||||
if (!ICProfileIDValid(profileID))
|
if (!ICProfileIDValid(profileID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CProfile profile = _Profiles[profileID];
|
_Profiles[profileID].Difficulty = difficulty;
|
||||||
profile.Difficulty = difficulty;
|
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EOffOn GetGuestProfile(int profileID)
|
public static EOffOn GetGuestProfile(int profileID)
|
||||||
@@ -193,18 +284,14 @@ namespace Vocaluxe.Base
|
|||||||
if (!ICProfileIDValid(profileID))
|
if (!ICProfileIDValid(profileID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CProfile profile = _Profiles[profileID];
|
_Profiles[profileID].GuestProfile = option;
|
||||||
profile.GuestProfile = option;
|
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetActive(int profileID, EOffOn option)
|
public static void SetActive(int profileID, EOffOn option)
|
||||||
{
|
{
|
||||||
if (!ICProfileIDValid(profileID))
|
if (!ICProfileIDValid(profileID))
|
||||||
return;
|
return;
|
||||||
CProfile profile = _Profiles[profileID];
|
_Profiles[profileID].Active = option;
|
||||||
profile.Active = option;
|
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsGuestProfile(int profileID)
|
public static bool IsGuestProfile(int profileID)
|
||||||
@@ -222,126 +309,106 @@ namespace Vocaluxe.Base
|
|||||||
return _Profiles[profileID].Active == EOffOn.TR_CONFIG_ON;
|
return _Profiles[profileID].Active == EOffOn.TR_CONFIG_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetAvatar(int profileID, int avatarNr)
|
public static void SetAvatar(int profileID, int avatarID)
|
||||||
{
|
{
|
||||||
if (!ICProfileIDValid(profileID) || avatarNr < 0 || avatarNr >= _Avatars.Count)
|
if (!ICProfileIDValid(profileID) || !ICAvatarIDValid(avatarID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CProfile profile = _Profiles[profileID];
|
_Profiles[profileID].Avatar = _Avatars[avatarID];
|
||||||
profile.Avatar = _Avatars[avatarNr];
|
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetAvatarNr(int profileID)
|
public static int GetAvatarID(int profileID)
|
||||||
{
|
{
|
||||||
if (!ICProfileIDValid(profileID))
|
if (!ICProfileIDValid(profileID))
|
||||||
return 0;
|
return -1;
|
||||||
|
|
||||||
for (int i = 0; i < _Avatars.Count; i++)
|
return _Profiles[profileID].Avatar.ID;
|
||||||
{
|
}
|
||||||
if (_Profiles[profileID].Avatar.FileName == _Avatars[i].FileName)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
public static STexture GetAvatarTexture(int avatarID)
|
||||||
|
{
|
||||||
|
if (!ICAvatarIDValid(avatarID))
|
||||||
|
return new STexture(-1);
|
||||||
|
|
||||||
|
return _Avatars[avatarID].Texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static STexture GetAvatarTextureFromProfile(int profileID)
|
||||||
|
{
|
||||||
|
if (!ICProfileIDValid(profileID))
|
||||||
|
return new STexture(-1);
|
||||||
|
|
||||||
|
return _Profiles[profileID].Avatar.Texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DeleteProfile(int profileID)
|
public static void DeleteProfile(int profileID)
|
||||||
{
|
{
|
||||||
if (!ICProfileIDValid(profileID))
|
lock (_ProfileMutex)
|
||||||
return;
|
|
||||||
if (_Profiles[profileID].FileName == "")
|
|
||||||
return;
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
//Check if profile saved in config
|
if (!ICProfileIDValid(profileID))
|
||||||
for (int i = 0; i < CConfig.Players.Length; i++)
|
return;
|
||||||
|
|
||||||
|
if (_Profiles[profileID].FileName == "")
|
||||||
{
|
{
|
||||||
if (CConfig.Players[i] == _Profiles[profileID].FileName)
|
_RemoveProfile(profileID);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Check if profile saved in config
|
||||||
|
for (int i = 0; i < CConfig.Players.Length; i++)
|
||||||
{
|
{
|
||||||
CConfig.Players[i] = string.Empty;
|
if (CConfig.Players[i] == _Profiles[profileID].FileName)
|
||||||
CConfig.SaveConfig();
|
{
|
||||||
|
CConfig.Players[i] = string.Empty;
|
||||||
|
CConfig.SaveConfig();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
File.Delete(_Profiles[profileID].FileName);
|
||||||
|
_RemoveProfile(profileID);
|
||||||
|
|
||||||
|
//Check if profile is selected in game
|
||||||
|
for (int i = 0; i < CGame.Players.Length; i++)
|
||||||
|
{
|
||||||
|
if (CGame.Players[i].ProfileID > profileID)
|
||||||
|
CGame.Players[i].ProfileID--;
|
||||||
|
else if (CGame.Players[i].ProfileID == profileID)
|
||||||
|
CGame.Players[i].ProfileID = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File.Delete(_Profiles[profileID].FileName);
|
catch (Exception)
|
||||||
_Profiles.RemoveAt(profileID);
|
|
||||||
//Check if profile is selected in game
|
|
||||||
for (int i = 0; i < CGame.Players.Length; i++)
|
|
||||||
{
|
{
|
||||||
if (CGame.Players[i].ProfileID > profileID)
|
CLog.LogError("Can't delete Profile File " + _Profiles[profileID].FileName + ".xml");
|
||||||
CGame.Players[i].ProfileID--;
|
|
||||||
else if (CGame.Players[i].ProfileID == profileID)
|
|
||||||
CGame.Players[i].ProfileID = -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
CLog.LogError("Can't delete Profile File " + _Profiles[profileID].FileName + ".xml");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void _SortProfilesByName()
|
|
||||||
{
|
|
||||||
_Profiles.Sort(_CompareByPlayerName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region private methods
|
||||||
private static int _CompareByPlayerName(CProfile a, CProfile b)
|
private static int _CompareByPlayerName(CProfile a, CProfile b)
|
||||||
{
|
{
|
||||||
return String.CompareOrdinal(a.PlayerName, b.PlayerName);
|
return String.CompareOrdinal(a.PlayerName, b.PlayerName);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region private methods
|
|
||||||
private static CAvatar _GetAvatar(string fileName)
|
private static CAvatar _GetAvatar(string fileName)
|
||||||
{
|
{
|
||||||
foreach (CAvatar avatar in _Avatars)
|
lock (_AvatarMutex)
|
||||||
{
|
{
|
||||||
if (fileName == avatar.FileName)
|
foreach (int id in _Avatars.Keys)
|
||||||
return avatar;
|
{
|
||||||
|
if (Path.GetFileName(_Avatars[id].FileName) == fileName)
|
||||||
|
return _Avatars[id];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new CAvatar(-1);
|
return new CAvatar(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void _SaveProfile(int profileID)
|
private static void _RemoveProfile(int profileID)
|
||||||
{
|
{
|
||||||
if (!ICProfileIDValid(profileID))
|
if (!ICProfileIDValid(profileID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_Profiles[profileID].FileName == "")
|
_Profiles.Remove(profileID);
|
||||||
{
|
|
||||||
string filename = string.Empty;
|
|
||||||
foreach (char chr in _Profiles[profileID].PlayerName)
|
|
||||||
{
|
|
||||||
if (char.IsLetter(chr))
|
|
||||||
filename += chr.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (filename == "")
|
|
||||||
filename = "1";
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
while (File.Exists(Path.Combine(CSettings.FolderProfiles, filename + ".xml")))
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
if (!File.Exists(Path.Combine(CSettings.FolderProfiles, filename + i + ".xml")))
|
|
||||||
filename += i;
|
|
||||||
}
|
|
||||||
|
|
||||||
CProfile profile = _Profiles[profileID];
|
|
||||||
profile.FileName = Path.Combine(CSettings.FolderProfiles, filename + ".xml");
|
|
||||||
_Profiles[profileID] = profile;
|
|
||||||
}
|
|
||||||
|
|
||||||
_Profiles[profileID].SaveProfile();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void _LoadProfile(string fileName)
|
|
||||||
{
|
|
||||||
CProfile profile = new CProfile {FileName = Path.Combine(CSettings.FolderProfiles, fileName)};
|
|
||||||
if (profile.LoadProfile())
|
|
||||||
{
|
|
||||||
profile.Avatar = _GetAvatar(profile.AvatarFileName);
|
|
||||||
_Profiles.Add(profile);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion private methods
|
#endregion private methods
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ using System.Windows.Forms;
|
|||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
using VocaluxeLib.Profile;
|
||||||
|
|
||||||
namespace Vocaluxe.Screens
|
namespace Vocaluxe.Screens
|
||||||
{
|
{
|
||||||
@@ -166,15 +167,19 @@ namespace Vocaluxe.Screens
|
|||||||
//Check, if a player is selected
|
//Check, if a player is selected
|
||||||
if (_NameSelections[_NameSelection].Selection > -1)
|
if (_NameSelections[_NameSelection].Selection > -1)
|
||||||
{
|
{
|
||||||
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
_SelectedPlayerNr = _NameSelections[_NameSelection].Selection;
|
_SelectedPlayerNr = _NameSelections[_NameSelection].Selection;
|
||||||
|
if (profiles.Length <= _SelectedPlayerNr)
|
||||||
|
return true;
|
||||||
|
|
||||||
//Update Game-infos with new player
|
//Update Game-infos with new player
|
||||||
CGame.Players[_SelectingFastPlayerNr - 1].ProfileID = _SelectedPlayerNr;
|
CGame.Players[_SelectingFastPlayerNr - 1].ProfileID = profiles[_SelectedPlayerNr].ID;
|
||||||
//Update config for default players.
|
//Update config for default players.
|
||||||
CConfig.Players[_SelectingFastPlayerNr - 1] = CProfiles.Profiles[_SelectedPlayerNr].FileName;
|
CConfig.Players[_SelectingFastPlayerNr - 1] = profiles[_SelectedPlayerNr].FileName;
|
||||||
CConfig.SaveConfig();
|
CConfig.SaveConfig();
|
||||||
//Update texture and name
|
//Update texture and name
|
||||||
_Statics[_StaticPlayerAvatar[_SelectingFastPlayerNr - 1]].Texture = CProfiles.Profiles[_SelectedPlayerNr].Avatar.Texture;
|
_Statics[_StaticPlayerAvatar[_SelectingFastPlayerNr - 1]].Texture = profiles[_SelectedPlayerNr].Avatar.Texture;
|
||||||
_Texts[_TextPlayer[_SelectingFastPlayerNr - 1]].Text = CProfiles.Profiles[_SelectedPlayerNr].PlayerName;
|
_Texts[_TextPlayer[_SelectingFastPlayerNr - 1]].Text = profiles[_SelectedPlayerNr].PlayerName;
|
||||||
//Update profile-warning
|
//Update profile-warning
|
||||||
_CheckPlayers();
|
_CheckPlayers();
|
||||||
//Update Tiles-List
|
//Update Tiles-List
|
||||||
@@ -418,10 +423,10 @@ namespace Vocaluxe.Screens
|
|||||||
//Update Game-infos with new player
|
//Update Game-infos with new player
|
||||||
CGame.Players[_SelectingSwitchNr].ProfileID = CGame.Players[i].ProfileID;
|
CGame.Players[_SelectingSwitchNr].ProfileID = CGame.Players[i].ProfileID;
|
||||||
//Update config for default players.
|
//Update config for default players.
|
||||||
CConfig.Players[_SelectingSwitchNr] = CProfiles.Profiles[i].FileName;
|
CConfig.Players[_SelectingSwitchNr] = CProfiles.GetProfileFileName(CGame.Players[i].ProfileID);
|
||||||
//Update texture and name
|
//Update texture and name
|
||||||
_Statics[_StaticPlayerAvatar[_SelectingSwitchNr]].Texture = CProfiles.Profiles[CGame.Players[i].ProfileID].Avatar.Texture;
|
_Statics[_StaticPlayerAvatar[_SelectingSwitchNr]].Texture = CProfiles.GetAvatarTextureFromProfile(CGame.Players[i].ProfileID);
|
||||||
_Texts[_TextPlayer[_SelectingSwitchNr]].Text = CProfiles.Profiles[CGame.Players[i].ProfileID].PlayerName;
|
_Texts[_TextPlayer[_SelectingSwitchNr]].Text = CProfiles.GetPlayerName(CGame.Players[i].ProfileID);
|
||||||
}
|
}
|
||||||
else if (_SelectingSwitchNr > -1)
|
else if (_SelectingSwitchNr > -1)
|
||||||
{
|
{
|
||||||
@@ -433,14 +438,19 @@ namespace Vocaluxe.Screens
|
|||||||
_Statics[_StaticPlayerAvatar[_SelectingSwitchNr]].Texture = _OriginalPlayerAvatarTextures[_SelectingSwitchNr];
|
_Statics[_StaticPlayerAvatar[_SelectingSwitchNr]].Texture = _OriginalPlayerAvatarTextures[_SelectingSwitchNr];
|
||||||
_Texts[_TextPlayer[_SelectingSwitchNr]].Text = CProfiles.GetPlayerName(-1, (_SelectingSwitchNr+1));
|
_Texts[_TextPlayer[_SelectingSwitchNr]].Text = CProfiles.GetPlayerName(-1, (_SelectingSwitchNr+1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
|
if (profiles.Length <= _SelectedPlayerNr)
|
||||||
|
return true;
|
||||||
|
|
||||||
//Update Game-infos with new player
|
//Update Game-infos with new player
|
||||||
CGame.Players[i].ProfileID = _SelectedPlayerNr;
|
CGame.Players[i].ProfileID = profiles[_SelectedPlayerNr].ID;
|
||||||
//Update config for default players.
|
//Update config for default players.
|
||||||
CConfig.Players[i] = CProfiles.Profiles[_SelectedPlayerNr].FileName;
|
CConfig.Players[i] = profiles[_SelectedPlayerNr].FileName;
|
||||||
CConfig.SaveConfig();
|
CConfig.SaveConfig();
|
||||||
//Update texture and name
|
//Update texture and name
|
||||||
_Statics[_StaticPlayerAvatar[i]].Texture = _ChooseAvatarStatic.Texture;
|
_Statics[_StaticPlayerAvatar[i]].Texture = _ChooseAvatarStatic.Texture;
|
||||||
_Texts[_TextPlayer[i]].Text = CProfiles.Profiles[_SelectedPlayerNr].PlayerName;
|
_Texts[_TextPlayer[i]].Text = profiles[_SelectedPlayerNr].PlayerName;
|
||||||
//Update profile-warning
|
//Update profile-warning
|
||||||
_CheckPlayers();
|
_CheckPlayers();
|
||||||
//Update Tiles-List
|
//Update Tiles-List
|
||||||
@@ -473,14 +483,18 @@ namespace Vocaluxe.Screens
|
|||||||
_SelectedPlayerNr = _NameSelections[_NameSelection].TilePlayerNr(mouseEvent);
|
_SelectedPlayerNr = _NameSelections[_NameSelection].TilePlayerNr(mouseEvent);
|
||||||
if (_SelectedPlayerNr != -1)
|
if (_SelectedPlayerNr != -1)
|
||||||
{
|
{
|
||||||
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
|
if (profiles.Length <= _SelectedPlayerNr)
|
||||||
|
return true;
|
||||||
|
|
||||||
//Update Game-infos with new player
|
//Update Game-infos with new player
|
||||||
CGame.Players[_SelectingFastPlayerNr - 1].ProfileID = _SelectedPlayerNr;
|
CGame.Players[_SelectingFastPlayerNr - 1].ProfileID = profiles[_SelectedPlayerNr].ID;
|
||||||
//Update config for default players.
|
//Update config for default players.
|
||||||
CConfig.Players[_SelectingFastPlayerNr - 1] = CProfiles.Profiles[_SelectedPlayerNr].FileName;
|
CConfig.Players[_SelectingFastPlayerNr - 1] = profiles[_SelectedPlayerNr].FileName;
|
||||||
CConfig.SaveConfig();
|
CConfig.SaveConfig();
|
||||||
//Update texture and name
|
//Update texture and name
|
||||||
_Statics[_StaticPlayerAvatar[_SelectingFastPlayerNr - 1]].Texture = CProfiles.Profiles[_SelectedPlayerNr].Avatar.Texture;
|
_Statics[_StaticPlayerAvatar[_SelectingFastPlayerNr - 1]].Texture = profiles[_SelectedPlayerNr].Avatar.Texture;
|
||||||
_Texts[_TextPlayer[_SelectingFastPlayerNr - 1]].Text = CProfiles.Profiles[_SelectedPlayerNr].PlayerName;
|
_Texts[_TextPlayer[_SelectingFastPlayerNr - 1]].Text = profiles[_SelectedPlayerNr].PlayerName;
|
||||||
//Update profile-warning
|
//Update profile-warning
|
||||||
_CheckPlayers();
|
_CheckPlayers();
|
||||||
//Update Tiles-List
|
//Update Tiles-List
|
||||||
@@ -516,14 +530,18 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
if (CGame.Players[i].ProfileID == -1)
|
if (CGame.Players[i].ProfileID == -1)
|
||||||
{
|
{
|
||||||
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
|
if (profiles.Length <= _SelectedPlayerNr)
|
||||||
|
return true;
|
||||||
|
|
||||||
//Update Game-infos with new player
|
//Update Game-infos with new player
|
||||||
CGame.Players[i].ProfileID = _SelectedPlayerNr;
|
CGame.Players[i].ProfileID = profiles[_SelectedPlayerNr].ID;
|
||||||
//Update config for default players.
|
//Update config for default players.
|
||||||
CConfig.Players[i] = CProfiles.Profiles[_SelectedPlayerNr].FileName;
|
CConfig.Players[i] = profiles[_SelectedPlayerNr].FileName;
|
||||||
CConfig.SaveConfig();
|
CConfig.SaveConfig();
|
||||||
//Update texture and name
|
//Update texture and name
|
||||||
_Statics[_StaticPlayerAvatar[i]].Texture = CProfiles.Profiles[_SelectedPlayerNr].Avatar.Texture;
|
_Statics[_StaticPlayerAvatar[i]].Texture = profiles[_SelectedPlayerNr].Avatar.Texture;
|
||||||
_Texts[_TextPlayer[i]].Text = CProfiles.Profiles[_SelectedPlayerNr].PlayerName;
|
_Texts[_TextPlayer[i]].Text = profiles[_SelectedPlayerNr].PlayerName;
|
||||||
//Update profile-warning
|
//Update profile-warning
|
||||||
_CheckPlayers();
|
_CheckPlayers();
|
||||||
//Update Tiles-List
|
//Update Tiles-List
|
||||||
@@ -624,7 +642,7 @@ namespace Vocaluxe.Screens
|
|||||||
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
|
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
|
||||||
{
|
{
|
||||||
_Statics[_StaticPlayerAvatar[i]].Texture = CProfiles.ICProfileIDValid(CGame.Players[i].ProfileID) ?
|
_Statics[_StaticPlayerAvatar[i]].Texture = CProfiles.ICProfileIDValid(CGame.Players[i].ProfileID) ?
|
||||||
CProfiles.Profiles[CGame.Players[i].ProfileID].Avatar.Texture :
|
CProfiles.GetAvatarTextureFromProfile(CGame.Players[i].ProfileID) :
|
||||||
_OriginalPlayerAvatarTextures[i];
|
_OriginalPlayerAvatarTextures[i];
|
||||||
_Texts[_TextPlayer[i]].Text = CProfiles.GetPlayerName(CGame.Players[i].ProfileID, i + 1);
|
_Texts[_TextPlayer[i]].Text = CProfiles.GetPlayerName(CGame.Players[i].ProfileID, i + 1);
|
||||||
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
|
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Imaging;
|
using System.Drawing.Imaging;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -25,6 +26,7 @@ using System.Windows.Forms;
|
|||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
using VocaluxeLib.Profile;
|
||||||
|
|
||||||
namespace Vocaluxe.Screens
|
namespace Vocaluxe.Screens
|
||||||
{
|
{
|
||||||
@@ -103,7 +105,7 @@ namespace Vocaluxe.Screens
|
|||||||
break;
|
break;
|
||||||
case EEditMode.PlayerName:
|
case EEditMode.PlayerName:
|
||||||
_SelectSlides[_SelectSlideProfiles].RenameValue(
|
_SelectSlides[_SelectSlideProfiles].RenameValue(
|
||||||
CProfiles.AddGetPlayerName(_SelectSlides[_SelectSlideProfiles].Selection, keyEvent.Unicode));
|
CProfiles.AddGetPlayerName(_SelectSlides[_SelectSlideProfiles].ValueIndex, keyEvent.Unicode));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,7 +147,7 @@ namespace Vocaluxe.Screens
|
|||||||
if (_EditMode == EEditMode.PlayerName)
|
if (_EditMode == EEditMode.PlayerName)
|
||||||
{
|
{
|
||||||
_SelectSlides[_SelectSlideProfiles].RenameValue(
|
_SelectSlides[_SelectSlideProfiles].RenameValue(
|
||||||
CProfiles.GetDeleteCharInPlayerName(_SelectSlides[_SelectSlideProfiles].Selection));
|
CProfiles.GetDeleteCharInPlayerName(_SelectSlides[_SelectSlideProfiles].ValueIndex));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CGraphics.FadeTo(EScreens.ScreenMain);
|
CGraphics.FadeTo(EScreens.ScreenMain);
|
||||||
@@ -157,22 +159,22 @@ namespace Vocaluxe.Screens
|
|||||||
}
|
}
|
||||||
if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetDifficulty(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetDifficulty(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
(EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection);
|
(EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection);
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
_SelectSlides[_SelectSlideAvatars].Selection);
|
_SelectSlides[_SelectSlideAvatars].ValueIndex);
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideGuestProfile].Selected)
|
else if (_SelectSlides[_SelectSlideGuestProfile].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetGuestProfile(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetGuestProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
(EOffOn)_SelectSlides[_SelectSlideGuestProfile].Selection);
|
(EOffOn)_SelectSlides[_SelectSlideGuestProfile].Selection);
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideActive].Selected)
|
else if (_SelectSlides[_SelectSlideActive].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetActive(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetActive(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
(EOffOn)_SelectSlides[_SelectSlideActive].Selection);
|
(EOffOn)_SelectSlides[_SelectSlideActive].Selection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -204,24 +206,24 @@ namespace Vocaluxe.Screens
|
|||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
else if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetDifficulty(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetDifficulty(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
(EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection);
|
(EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection);
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
_SelectSlides[_SelectSlideAvatars].Selection);
|
_SelectSlides[_SelectSlideAvatars].ValueIndex);
|
||||||
if (CWebcam.IsDeviceAvailable() && _WebcamTexture.Index > 0)
|
if (CWebcam.IsDeviceAvailable() && _WebcamTexture.Index > 0)
|
||||||
_OnDiscardSnapshot();
|
_OnDiscardSnapshot();
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideGuestProfile].Selected)
|
else if (_SelectSlides[_SelectSlideGuestProfile].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetGuestProfile(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetGuestProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
(EOffOn)_SelectSlides[_SelectSlideGuestProfile].Selection);
|
(EOffOn)_SelectSlides[_SelectSlideGuestProfile].Selection);
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideActive].Selected)
|
else if (_SelectSlides[_SelectSlideActive].Selected)
|
||||||
{
|
{
|
||||||
CProfiles.SetActive(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetActive(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
(EOffOn)_SelectSlides[_SelectSlideActive].Selection);
|
(EOffOn)_SelectSlides[_SelectSlideActive].Selection);
|
||||||
}
|
}
|
||||||
else if (_Buttons[_ButtonWebcam].Selected && CWebcam.IsDeviceAvailable())
|
else if (_Buttons[_ButtonWebcam].Selected && CWebcam.IsDeviceAvailable())
|
||||||
@@ -272,11 +274,12 @@ namespace Vocaluxe.Screens
|
|||||||
CWebcam.Stop();
|
CWebcam.Stop();
|
||||||
CDraw.RemoveTexture(ref _WebcamTexture);
|
CDraw.RemoveTexture(ref _WebcamTexture);
|
||||||
|
|
||||||
for (int j = 0; j < CProfiles.Avatars.Length; j++)
|
CAvatar[] avatars = CProfiles.GetAvatars();
|
||||||
|
for (int j = 0; j < avatars.Length; j++)
|
||||||
{
|
{
|
||||||
if (CProfiles.Avatars[j].FileName == (filename + i + ".png"))
|
if (Path.GetFileName(avatars[j].FileName) == (filename + i + ".png"))
|
||||||
{
|
{
|
||||||
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].Selection, j);
|
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].ValueIndex, avatars[j].ID);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -302,17 +305,17 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
if (_SelectSlides[_SelectSlideProfiles].Selection > -1)
|
if (_SelectSlides[_SelectSlideProfiles].Selection > -1)
|
||||||
{
|
{
|
||||||
_Buttons[_ButtonPlayerName].Text.Text = CProfiles.GetPlayerName(_SelectSlides[_SelectSlideProfiles].Selection);
|
_Buttons[_ButtonPlayerName].Text.Text = CProfiles.GetPlayerName(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
if (_EditMode == EEditMode.PlayerName)
|
if (_EditMode == EEditMode.PlayerName)
|
||||||
_Buttons[_ButtonPlayerName].Text.Text += "|";
|
_Buttons[_ButtonPlayerName].Text.Text += "|";
|
||||||
|
|
||||||
_SelectSlides[_SelectSlideDifficulty].Selection = (int)CProfiles.GetDifficulty(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideDifficulty].Selection = (int)CProfiles.GetDifficulty(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_SelectSlides[_SelectSlideGuestProfile].Selection = (int)CProfiles.GetGuestProfile(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideGuestProfile].Selection = (int)CProfiles.GetGuestProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_SelectSlides[_SelectSlideActive].Selection = (int)CProfiles.GetActive(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideActive].Selection = (int)CProfiles.GetActive(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
|
|
||||||
int avatarNr = CProfiles.GetAvatarNr(_SelectSlides[_SelectSlideProfiles].Selection);
|
int avatarID = CProfiles.GetAvatarID(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_SelectSlides[_SelectSlideAvatars].Selection = avatarNr;
|
_SelectSlides[_SelectSlideAvatars].SetSelectionByValueIndex(avatarID);
|
||||||
if (CWebcam.IsDeviceAvailable() && _WebcamTexture.Index > 0)
|
if (CWebcam.IsDeviceAvailable() && _WebcamTexture.Index != -1)
|
||||||
{
|
{
|
||||||
if (_Snapshot == null)
|
if (_Snapshot == null)
|
||||||
CWebcam.GetFrame(ref _WebcamTexture);
|
CWebcam.GetFrame(ref _WebcamTexture);
|
||||||
@@ -320,7 +323,7 @@ namespace Vocaluxe.Screens
|
|||||||
_Statics[_StaticAvatar].Texture = _WebcamTexture;
|
_Statics[_StaticAvatar].Texture = _WebcamTexture;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_Statics[_StaticAvatar].Texture = CProfiles.Avatars[avatarNr].Texture;
|
_Statics[_StaticAvatar].Texture = CProfiles.GetAvatarTexture(avatarID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -353,7 +356,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
private void _DeleteProfile()
|
private void _DeleteProfile()
|
||||||
{
|
{
|
||||||
CProfiles.DeleteProfile(_SelectSlides[_SelectSlideProfiles].Selection);
|
CProfiles.DeleteProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_LoadProfiles();
|
_LoadProfiles();
|
||||||
UpdateGame();
|
UpdateGame();
|
||||||
}
|
}
|
||||||
@@ -363,34 +366,44 @@ namespace Vocaluxe.Screens
|
|||||||
_EditMode = EEditMode.None;
|
_EditMode = EEditMode.None;
|
||||||
_SelectSlides[_SelectSlideProfiles].Clear();
|
_SelectSlides[_SelectSlideProfiles].Clear();
|
||||||
|
|
||||||
for (int i = 0; i < CProfiles.NumProfiles; i++)
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
_SelectSlides[_SelectSlideProfiles].AddValue(CProfiles.GetPlayerName(i));
|
for (int i = 0; i < profiles.Length; i++)
|
||||||
|
_SelectSlides[_SelectSlideProfiles].AddValue(
|
||||||
|
profiles[i].PlayerName,
|
||||||
|
new STexture(-1),
|
||||||
|
profiles[i].ID,
|
||||||
|
-1);
|
||||||
|
|
||||||
if (CProfiles.NumProfiles > 0 && CProfiles.NumAvatars > 0)
|
if (CProfiles.NumProfiles > 0 && CProfiles.NumAvatars > 0)
|
||||||
{
|
{
|
||||||
_SelectSlides[_SelectSlideDifficulty].Selection = (int)CProfiles.GetDifficulty(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideDifficulty].Selection = (int)CProfiles.GetDifficulty(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_SelectSlides[_SelectSlideGuestProfile].Selection = (int)CProfiles.GetGuestProfile(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideGuestProfile].Selection = (int)CProfiles.GetGuestProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_SelectSlides[_SelectSlideActive].Selection = (int)CProfiles.GetActive(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideActive].Selection = (int)CProfiles.GetActive(_SelectSlides[_SelectSlideProfiles].ValueIndex);
|
||||||
_SelectSlides[_SelectSlideAvatars].Selection = CProfiles.GetAvatarNr(_SelectSlides[_SelectSlideProfiles].Selection);
|
_SelectSlides[_SelectSlideAvatars].SetSelectionByValueIndex(CProfiles.GetAvatarID(_SelectSlides[_SelectSlideProfiles].ValueIndex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _LoadAvatars()
|
private void _LoadAvatars()
|
||||||
{
|
{
|
||||||
_SelectSlides[_SelectSlideAvatars].Clear();
|
_SelectSlides[_SelectSlideAvatars].Clear();
|
||||||
for (int i = 0; i < CProfiles.NumAvatars; i++)
|
CAvatar[] avatars = CProfiles.GetAvatars();
|
||||||
_SelectSlides[_SelectSlideAvatars].AddValue(CProfiles.Avatars[i].FileName);
|
for (int i = 0; i < avatars.Length; i++)
|
||||||
|
_SelectSlides[_SelectSlideAvatars].AddValue(
|
||||||
|
Path.GetFileName(avatars[i].FileName),
|
||||||
|
new STexture(-1),
|
||||||
|
avatars[i].ID,
|
||||||
|
-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _NewProfile()
|
private void _NewProfile()
|
||||||
{
|
{
|
||||||
_EditMode = EEditMode.None;
|
_EditMode = EEditMode.None;
|
||||||
CProfiles.NewProfile();
|
int id = CProfiles.NewProfile();
|
||||||
_LoadProfiles();
|
_LoadProfiles();
|
||||||
_SelectSlides[_SelectSlideProfiles].LastValue();
|
_SelectSlides[_SelectSlideProfiles].SetSelectionByValueIndex(id);
|
||||||
|
|
||||||
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].Selection,
|
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
_SelectSlides[_SelectSlideAvatars].Selection);
|
_SelectSlides[_SelectSlideAvatars].ValueIndex);
|
||||||
|
|
||||||
_SetInteractionToButton(_Buttons[_ButtonPlayerName]);
|
_SetInteractionToButton(_Buttons[_ButtonPlayerName]);
|
||||||
_EditMode = EEditMode.PlayerName;
|
_EditMode = EEditMode.PlayerName;
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ namespace Vocaluxe.Screens
|
|||||||
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H;
|
_Statics[_StaticPointsBar[p, CGame.NumPlayer - 1]].Rect.H;
|
||||||
}
|
}
|
||||||
if (CProfiles.ICProfileIDValid(players[p].ProfileID))
|
if (CProfiles.ICProfileIDValid(players[p].ProfileID))
|
||||||
_Statics[_StaticAvatar[p, CGame.NumPlayer - 1]].Texture = CProfiles.Profiles[players[p].ProfileID].Avatar.Texture;
|
_Statics[_StaticAvatar[p, CGame.NumPlayer - 1]].Texture = CProfiles.GetAvatarTextureFromProfile(players[p].ProfileID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CConfig.ScoreAnimationTime < 1)
|
if (CConfig.ScoreAnimationTime < 1)
|
||||||
|
|||||||
@@ -1384,7 +1384,7 @@ namespace Vocaluxe.Screens
|
|||||||
for (int i = 0; i < CGame.NumPlayer; i++)
|
for (int i = 0; i < CGame.NumPlayer; i++)
|
||||||
{
|
{
|
||||||
if (CProfiles.ICProfileIDValid(CGame.Players[i].ProfileID))
|
if (CProfiles.ICProfileIDValid(CGame.Players[i].ProfileID))
|
||||||
_Statics[_StaticAvatars[i, CGame.NumPlayer - 1]].Texture = CProfiles.Profiles[CGame.Players[i].ProfileID].Avatar.Texture;
|
_Statics[_StaticAvatars[i, CGame.NumPlayer - 1]].Texture = CProfiles.GetAvatarTextureFromProfile(CGame.Players[i].ProfileID);
|
||||||
else
|
else
|
||||||
_Statics[_StaticAvatars[i, CGame.NumPlayer - 1]].Visible = false;
|
_Statics[_StaticAvatars[i, CGame.NumPlayer - 1]].Visible = false;
|
||||||
}
|
}
|
||||||
@@ -1395,7 +1395,7 @@ namespace Vocaluxe.Screens
|
|||||||
for (int i = 0; i < CGame.NumPlayer; i++)
|
for (int i = 0; i < CGame.NumPlayer; i++)
|
||||||
{
|
{
|
||||||
if (CProfiles.ICProfileIDValid(CGame.Players[i].ProfileID))
|
if (CProfiles.ICProfileIDValid(CGame.Players[i].ProfileID))
|
||||||
_Texts[_TextNames[i, CGame.NumPlayer - 1]].Text = CProfiles.Profiles[CGame.Players[i].ProfileID].PlayerName;
|
_Texts[_TextNames[i, CGame.NumPlayer - 1]].Text = CProfiles.GetPlayerName(CGame.Players[i].ProfileID);
|
||||||
else
|
else
|
||||||
_Texts[_TextNames[i, CGame.NumPlayer - 1]].Visible = false;
|
_Texts[_TextNames[i, CGame.NumPlayer - 1]].Visible = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ namespace VocaluxeLib
|
|||||||
float GetDefaultMedleyFadeOutTime();
|
float GetDefaultMedleyFadeOutTime();
|
||||||
int GetMedleyMinSeriesLength();
|
int GetMedleyMinSeriesLength();
|
||||||
float GetMedleyMinDuration();
|
float GetMedleyMinDuration();
|
||||||
|
|
||||||
|
string GetFolderProfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ITheme
|
public interface ITheme
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
|
||||||
|
using VocaluxeLib.Profile;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
struct SThemeNameSelection
|
struct SThemeNameSelection
|
||||||
@@ -497,16 +499,18 @@ namespace VocaluxeLib.Menu
|
|||||||
private void _UpdateVisibleProfiles()
|
private void _UpdateVisibleProfiles()
|
||||||
{
|
{
|
||||||
_VisibleProfiles.Clear();
|
_VisibleProfiles.Clear();
|
||||||
for (int i = 0; i < CBase.Profiles.GetProfiles().Length; i++)
|
CProfile[] profiles = CBase.Profiles.GetProfiles();
|
||||||
|
|
||||||
|
for (int i = 0; i < profiles.Length; i++)
|
||||||
{
|
{
|
||||||
bool visible = CBase.Profiles.GetProfiles()[i].Active == EOffOn.TR_CONFIG_ON;
|
bool visible = profiles[i].Active == EOffOn.TR_CONFIG_ON;
|
||||||
if (visible)
|
if (visible)
|
||||||
{
|
{
|
||||||
//Show profile only if active
|
//Show profile only if active
|
||||||
for (int p = 0; p < CBase.Game.GetNumPlayer(); p++)
|
for (int p = 0; p < CBase.Game.GetNumPlayer(); p++)
|
||||||
{
|
{
|
||||||
//Don't show profile if is selected, but if selected and guest
|
//Don't show profile if is selected, but if selected and guest
|
||||||
if (CBase.Game.GetPlayers()[p].ProfileID == i && CBase.Profiles.GetProfiles()[i].GuestProfile == EOffOn.TR_CONFIG_OFF)
|
if (CBase.Game.GetPlayers()[p].ProfileID == profiles[i].ID && profiles[i].GuestProfile == EOffOn.TR_CONFIG_OFF)
|
||||||
visible = false;
|
visible = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,28 +9,23 @@ namespace VocaluxeLib.Profile
|
|||||||
{
|
{
|
||||||
public class CAvatar
|
public class CAvatar
|
||||||
{
|
{
|
||||||
private int _ID;
|
public int ID;
|
||||||
|
|
||||||
public int ID
|
|
||||||
{
|
|
||||||
get { return _ID; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string FileName;
|
public string FileName;
|
||||||
public STexture Texture;
|
public STexture Texture;
|
||||||
|
|
||||||
public CAvatar(int ID)
|
public CAvatar(int ID)
|
||||||
{
|
{
|
||||||
_ID = ID;
|
this.ID = ID;
|
||||||
FileName = String.Empty;
|
FileName = String.Empty;
|
||||||
Texture = new STexture(-1);
|
Texture = new STexture(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadFromFile(string NewFileName)
|
public bool LoadFromFile(string NewFileName)
|
||||||
{
|
{
|
||||||
FileName = NewFileName;
|
FileName = NewFileName;
|
||||||
CBase.Drawing.RemoveTexture(ref Texture);
|
CBase.Drawing.RemoveTexture(ref Texture);
|
||||||
Texture = CBase.Drawing.AddTexture(FileName);
|
Texture = CBase.Drawing.AddTexture(FileName);
|
||||||
|
return (Texture.Index != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reload()
|
public void Reload()
|
||||||
@@ -38,5 +33,10 @@ namespace VocaluxeLib.Profile
|
|||||||
CBase.Drawing.RemoveTexture(ref Texture);
|
CBase.Drawing.RemoveTexture(ref Texture);
|
||||||
Texture = CBase.Drawing.AddTexture(FileName);
|
Texture = CBase.Drawing.AddTexture(FileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Unload()
|
||||||
|
{
|
||||||
|
CBase.Drawing.RemoveTexture(ref Texture);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,20 +16,14 @@ namespace VocaluxeLib.Profile
|
|||||||
ConformanceLevel = ConformanceLevel.Document
|
ConformanceLevel = ConformanceLevel.Document
|
||||||
};
|
};
|
||||||
|
|
||||||
private int _ID;
|
public int ID;
|
||||||
private int _AvatarID;
|
|
||||||
|
|
||||||
public int ID
|
|
||||||
{
|
|
||||||
get { return _ID; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public string PlayerName;
|
public string PlayerName;
|
||||||
public string FileName;
|
public string FileName;
|
||||||
public string AvatarFileName;
|
public string AvatarFileName;
|
||||||
|
|
||||||
public EGameDifficulty Difficulty;
|
public EGameDifficulty Difficulty;
|
||||||
public CAvatar Avatar; //should be removed! use avatar id
|
public CAvatar Avatar;
|
||||||
|
|
||||||
public EOffOn GuestProfile;
|
public EOffOn GuestProfile;
|
||||||
public EOffOn Active;
|
public EOffOn Active;
|
||||||
@@ -78,6 +72,29 @@ namespace VocaluxeLib.Profile
|
|||||||
|
|
||||||
public void SaveProfile()
|
public void SaveProfile()
|
||||||
{
|
{
|
||||||
|
if (FileName == String.Empty)
|
||||||
|
{
|
||||||
|
string filename = string.Empty;
|
||||||
|
foreach (char chr in PlayerName)
|
||||||
|
{
|
||||||
|
if (char.IsLetter(chr))
|
||||||
|
filename += chr.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filename == "")
|
||||||
|
filename = "1";
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (File.Exists(Path.Combine(CBase.Settings.GetFolderProfiles(), filename + ".xml")))
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
if (!File.Exists(Path.Combine(CBase.Settings.GetFolderProfiles(), filename + i + ".xml")))
|
||||||
|
filename += i;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileName = Path.Combine(Environment.CurrentDirectory, CBase.Settings.GetFolderProfiles(), filename + ".xml");
|
||||||
|
}
|
||||||
|
|
||||||
if (FileName == String.Empty)
|
if (FileName == String.Empty)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -99,7 +116,7 @@ namespace VocaluxeLib.Profile
|
|||||||
writer.WriteStartElement("Info");
|
writer.WriteStartElement("Info");
|
||||||
writer.WriteElementString("PlayerName", PlayerName);
|
writer.WriteElementString("PlayerName", PlayerName);
|
||||||
writer.WriteElementString("Difficulty", Enum.GetName(typeof(EGameDifficulty), Difficulty));
|
writer.WriteElementString("Difficulty", Enum.GetName(typeof(EGameDifficulty), Difficulty));
|
||||||
writer.WriteElementString("Avatar", Avatar.FileName);
|
writer.WriteElementString("Avatar", Path.GetFileName(Avatar.FileName));
|
||||||
writer.WriteElementString("GuestProfile", Enum.GetName(typeof(EOffOn), GuestProfile));
|
writer.WriteElementString("GuestProfile", Enum.GetName(typeof(EOffOn), GuestProfile));
|
||||||
writer.WriteElementString("Active", Enum.GetName(typeof(EOffOn), Active));
|
writer.WriteElementString("Active", Enum.GetName(typeof(EOffOn), Active));
|
||||||
writer.WriteEndElement();
|
writer.WriteEndElement();
|
||||||
|
|||||||
Reference in new issue
Block a user