Use GUID instead of int for player-ids; ID is now unique and saved to player.xml-file

This commit is contained in:
Florian Küpper committed 2015-12-23 14:23:55 +01:00
1 parent 804647f480
commit e3497641dd
29 files changed
+275 -235

No files matched your search

+34 -33
View File
@@ -16,6 +16,7 @@
#endregion
using System;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Xml.Serialization;
@@ -60,11 +61,11 @@ namespace VocaluxeLib.Menu
{
private class CTile
{
public int ProfileID;
public Guid ProfileID;
public readonly CStatic Avatar;
public readonly CText Name;
public CTile(CStatic av, CText tex, int pID)
public CTile(CStatic av, CText tex, Guid pID)
{
Avatar = av;
Name = tex;
@@ -96,12 +97,12 @@ namespace VocaluxeLib.Menu
public int Offset;
private int _ActualSelection = -1;
public int Selection = -1;
public Guid SelectedID = Guid.Empty;
private int _Player = -1;
private readonly List<int> _VisibleProfiles;
private readonly List<int> _UsedProfiles;
private readonly List<Guid> _VisibleProfiles;
private readonly List<Guid> _UsedProfiles;
private CStatic _PlayerSelector;
@@ -122,8 +123,8 @@ namespace VocaluxeLib.Menu
_Theme = new SThemeNameSelection {Tiles = new SThemeNameSelectionTiles {Name = new SThemeNameSelectionName()}};
_Tiles = new List<CTile>();
_VisibleProfiles = new List<int>();
_UsedProfiles = new List<int>();
_VisibleProfiles = new List<Guid>();
_UsedProfiles = new List<Guid>();
}
public CNameSelection(SThemeNameSelection theme, int partyModeID)
@@ -132,8 +133,8 @@ namespace VocaluxeLib.Menu
_Theme = theme;
_Tiles = new List<CTile>();
_VisibleProfiles = new List<int>();
_UsedProfiles = new List<int>();
_VisibleProfiles = new List<Guid>();
_UsedProfiles = new List<Guid>();
ThemeLoaded = true;
}
@@ -244,7 +245,7 @@ namespace VocaluxeLib.Menu
case Keys.Right:
if (_ActualSelection + 1 < _Tiles.Count)
{
if (_Tiles[_ActualSelection + 1].ProfileID != -1)
if (_Tiles[_ActualSelection + 1].ProfileID != Guid.Empty)
_ActualSelection++;
}
else
@@ -279,7 +280,7 @@ namespace VocaluxeLib.Menu
case Keys.Down:
if (_ActualSelection + _Theme.Tiles.NumW < _Tiles.Count)
{
if (_Tiles[_ActualSelection + _Theme.Tiles.NumW].ProfileID != -1)
if (_Tiles[_ActualSelection + _Theme.Tiles.NumW].ProfileID != Guid.Empty)
_ActualSelection += _Theme.Tiles.NumW;
}
else
@@ -289,11 +290,11 @@ namespace VocaluxeLib.Menu
if (offset != Offset)
{
_ActualSelection = _ActualSelection - _Tiles.Count + _Theme.Tiles.NumW;
if (_Tiles[_ActualSelection].ProfileID == -1)
if (_Tiles[_ActualSelection].ProfileID == Guid.Empty)
{
for (int i = _Tiles.Count - 1; i >= 0; i--)
{
if (_Tiles[i].ProfileID != -1)
if (_Tiles[i].ProfileID != Guid.Empty)
{
_ActualSelection = i;
break;
@@ -306,9 +307,9 @@ namespace VocaluxeLib.Menu
}
if (Offset * _Tiles.Count + _ActualSelection < _VisibleProfiles.Count)
Selection = _VisibleProfiles[Offset * _Tiles.Count + _ActualSelection];
SelectedID = _VisibleProfiles.ElementAt(Offset * _Tiles.Count + _ActualSelection);
else
Selection = -1;
SelectedID = Guid.Empty;
}
public void HandleMouse(SMouseEvent mevent)
@@ -320,9 +321,9 @@ namespace VocaluxeLib.Menu
_ActualSelection = i;
if (Offset * _Tiles.Count + _ActualSelection < _VisibleProfiles.Count)
Selection = _VisibleProfiles[Offset * _Tiles.Count + _ActualSelection];
SelectedID = _VisibleProfiles.ElementAt(Offset * _Tiles.Count + _ActualSelection);
else
Selection = -1;
SelectedID = Guid.Empty;
}
}
}
@@ -330,7 +331,7 @@ namespace VocaluxeLib.Menu
public void FastSelection(bool active, int player)
{
//Overwrite player-selection; Same profile, but other player
if (active && Selection != -1)
if (active && SelectedID != Guid.Empty)
{
_Player = player;
_PlayerSelector.Color = CBase.Themes.GetPlayerColor(player);
@@ -338,7 +339,7 @@ namespace VocaluxeLib.Menu
//Normal activation
else if (active)
{
Selection = 0;
SelectedID = _VisibleProfiles.ElementAt(0);
_ActualSelection = 0;
_Player = player;
_PlayerSelector.Color = CBase.Themes.GetPlayerColor(player);
@@ -347,7 +348,7 @@ namespace VocaluxeLib.Menu
//Deactivate
else
{
Selection = -1;
SelectedID = Guid.Empty;
_ActualSelection = -1;
_Player = -1;
_PlayerSelector.Visible = false;
@@ -375,14 +376,14 @@ namespace VocaluxeLib.Menu
_Tiles[i].Avatar.Texture = CBase.Profiles.GetAvatar(_VisibleProfiles[i + offset * _Tiles.Count]);
_Tiles[i].Avatar.Color = new SColorF(1, 1, 1, 1);
_Tiles[i].Name.Text = CBase.Profiles.GetPlayerName(_VisibleProfiles[i + offset * _Tiles.Count]);
_Tiles[i].ProfileID = _VisibleProfiles[i + offset * _Tiles.Count];
_Tiles[i].ProfileID = _VisibleProfiles.ElementAt(i + offset * _Tiles.Count);
}
else
{
_Tiles[i].Avatar.Texture = _TextureEmptyTile;
_Tiles[i].Avatar.Color = _ColorEmptyTile;
_Tiles[i].Name.Text = "";
_Tiles[i].ProfileID = -1;
_Tiles[i].ProfileID = Guid.Empty;
}
}
Offset = offset;
@@ -399,7 +400,7 @@ namespace VocaluxeLib.Menu
return isOver;
}
public int TilePlayerNr(SMouseEvent mevent)
public Guid TilePlayerID(SMouseEvent mevent)
{
foreach (CTile tile in _Tiles)
{
@@ -407,7 +408,7 @@ namespace VocaluxeLib.Menu
return tile.ProfileID;
}
return -1;
return Guid.Empty;
}
public CStatic TilePlayerAvatar(SMouseEvent mevent)
@@ -442,9 +443,9 @@ namespace VocaluxeLib.Menu
_PrepareTiles();
}
public void UseProfile(int id)
public void UseProfile(Guid id)
{
if (id > -1)
if (id != Guid.Empty)
{
if (!_UsedProfiles.Contains(id) && CBase.Profiles.IsProfileIDValid(id) && !CBase.Profiles.IsGuest(id))
{
@@ -454,18 +455,18 @@ namespace VocaluxeLib.Menu
}
}
public void RemoveUsedProfile(int id)
public void RemoveUsedProfile(Guid id)
{
if (id > -1)
if (id != Guid.Empty)
{
_UsedProfiles.Remove(id);
UpdateList();
}
}
public int GetRandomUnusedProfile()
public Guid GetRandomUnusedProfile()
{
int id = -1;
Guid id = Guid.Empty;
if (_VisibleProfiles.Count == 0)
return id;
@@ -473,12 +474,12 @@ namespace VocaluxeLib.Menu
if (_VisibleProfiles.Count == _UsedProfiles.Count)
return id;
while (id == -1)
while (id == Guid.Empty)
{
int rand = CBase.Game.GetRandom(_VisibleProfiles.Count);
if (_UsedProfiles.Contains(_VisibleProfiles[rand]))
continue;
id = _VisibleProfiles[rand];
id = _VisibleProfiles.ElementAt(rand);
}
return id;
@@ -496,7 +497,7 @@ namespace VocaluxeLib.Menu
var tileStatic = new CStatic(_PartyModeID, _TextureEmptyTile, _ColorEmptyTile, rect) {Aspect = EAspect.Crop};
var tileText = new CText(rect.X + rect.W / 2, rect.Y + rect.H + _Theme.Tiles.Name.Space, rect.Z, _Theme.Tiles.Name.Height, rect.W, EAlignment.Center,
_Theme.Tiles.Name.Style, _Theme.Tiles.Name.Font, _ColorNameTile, "");
_Tiles.Add(new CTile(tileStatic, tileText, -1));
_Tiles.Add(new CTile(tileStatic, tileText, Guid.Empty));
}
}
_Rect.X = MaxRect.X;