ZeroLauncher/Manager/AccountManager.cs

135 lines
3.7 KiB
C#
Raw Permalink Normal View History

2024-03-07 21:04:59 +08:00

2024-06-23 10:04:00 +08:00
using System.Diagnostics;
using System.Windows.Input;
2024-06-23 10:04:00 +08:00
2024-03-07 21:04:59 +08:00
namespace Zerolauncher.Manager
{
2024-08-04 18:24:17 +08:00
internal static class AccountManager
2024-03-07 21:04:59 +08:00
{
2024-08-04 18:24:17 +08:00
static int _teamId;
2024-03-07 21:04:59 +08:00
2024-08-04 18:24:17 +08:00
public static string TeamName = "";
2024-03-07 21:04:59 +08:00
2024-08-04 18:24:17 +08:00
public static List<AccountNew>? AccountsList;
2024-03-07 21:04:59 +08:00
2024-08-04 18:24:17 +08:00
public static void InitLoadData()
2024-03-07 21:04:59 +08:00
{
2024-08-04 18:24:17 +08:00
_teamId = AccountData.TeamIndex;
foreach (var pair in GroupsData.Data)
2024-03-07 21:04:59 +08:00
{
2024-06-23 10:04:00 +08:00
Trace.WriteLine(pair.Key, pair.Value);
2024-03-07 21:04:59 +08:00
}
2024-08-04 18:24:17 +08:00
TeamName = GroupsData.Data[_teamId];
AccountsList = AccountData.Data[_teamId];
2024-03-07 21:04:59 +08:00
}
2024-06-23 10:04:00 +08:00
public static void ChangeTeam(int index)
2024-03-07 21:04:59 +08:00
{
2024-08-04 18:24:17 +08:00
_teamId = TeamManager.Index2Key(index);
AccountData.TeamIndex = _teamId;
2024-08-04 18:24:17 +08:00
TeamName = GroupsData.Data[_teamId];
if (!AccountData.Data.ContainsKey(_teamId))
AccountData.Data.Add(_teamId, []);
2024-08-04 18:24:17 +08:00
AccountsList = AccountData.Data[_teamId];
DataStreamNew.Save();
2024-06-23 10:04:00 +08:00
}
2024-03-07 21:04:59 +08:00
2024-08-04 18:24:17 +08:00
public static void SaveEdit()
2024-03-07 21:04:59 +08:00
{
2024-06-23 10:04:00 +08:00
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
MainWindow.Instance.ReloadBtn();
}
2024-06-23 10:04:00 +08:00
public static bool AddAccount(AccountNew account)
2024-03-07 21:04:59 +08:00
{
account.GroupId = _teamId;
2024-06-23 10:04:00 +08:00
AccountData.AddAccount(account);
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
MainWindow.Instance.ReloadBtn();
return true;
}
2024-06-23 10:04:00 +08:00
public static bool AddAccounts(AccountNew account)
2024-03-07 21:04:59 +08:00
{
account.GroupId = _teamId;
2024-06-23 10:04:00 +08:00
AccountData.AddAccount(account);
2024-03-07 21:04:59 +08:00
return true;
}
public static void MoveAccount(int memberId, int newIndex)
{
2024-08-04 18:24:17 +08:00
var groupId = TeamManager.Index2Key(newIndex);
if (AccountsList != null)
{
var acc = AccountsList[memberId];
AccountsList.RemoveAt(memberId);
if (!AccountData.CheckGroup(groupId)) return;
AccountData.Data[groupId].Add(acc);
}
2024-06-23 10:04:00 +08:00
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
MainWindow.Instance.ReloadBtn();
}
public static void DeleteAccount(int index) {
2024-08-04 18:24:17 +08:00
if (AccountsList != null)
{
var nick = AccountsList[index].nickName;
AccountsList.RemoveAt(index);
AccountData.Dict.Remove(nick);
}
2024-06-23 10:04:00 +08:00
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
MainWindow.Instance.ReloadBtn();
}
2024-08-04 18:24:17 +08:00
public static void EditTeamName(string teamName0)
2024-03-07 21:04:59 +08:00
{
2024-08-04 18:24:17 +08:00
TeamName = teamName0;
GroupsData.Data[_teamId] = TeamName;
2024-06-23 10:04:00 +08:00
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
}
public static bool DeleteTeam()
{
2024-08-04 18:24:17 +08:00
if (GroupsData.Data.Keys.Count == 1)
2024-03-07 21:04:59 +08:00
{
return false;
}
2024-06-23 10:04:00 +08:00
AccountData.RemoveGroup();
2024-08-04 18:24:17 +08:00
ChangeTeam(GroupsData.Data.Keys.First());
2024-06-23 10:04:00 +08:00
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
MainWindow.Instance.ReloadBtn();
return true;
}
}
2024-08-04 18:24:17 +08:00
internal static class TeamManager
2024-03-07 21:04:59 +08:00
{
2024-06-23 10:04:00 +08:00
2024-08-04 18:24:17 +08:00
public static int Index2Key(int index) { return GroupsData.Data.ElementAt(index).Key; }
2024-03-07 21:04:59 +08:00
public static string[] GetAllTeamName()
{
2024-08-04 18:24:17 +08:00
return GroupsData.Data.Values.ToArray();
2024-03-07 21:04:59 +08:00
}
2024-08-04 18:24:17 +08:00
public static void AddTeam(string teamName)
2024-03-07 21:04:59 +08:00
{
var key = GroupsData.Data.Keys.LastOrDefault() + 1;
GroupsData.Data.Add(key, teamName);
2024-06-23 10:04:00 +08:00
DataStreamNew.Save();
2024-03-07 21:04:59 +08:00
}
//运行时才能决定是否执行内联
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
2024-06-23 10:04:00 +08:00
public static AccountNew? Nick2Acc(string nickName)
2024-03-07 21:04:59 +08:00
{
2024-08-04 18:24:17 +08:00
return AccountData.Dict.GetValueOrDefault(nickName);
2024-03-07 21:04:59 +08:00
}
}
}