ZeroLauncher/Manager/AccountManager.cs

157 lines
4.6 KiB
C#
Raw Normal View History

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

namespace Zerolauncher.Manager
{
internal class AccountManager
{
static int teamIndex=0;
public static string teamName = "";
public static List<Account> accountsList = new List<Account>();
public static void initLoadData()
{
teamIndex = DataStream.dataStream.teamIndex;
var group = DataStream.dataStream.Groups[teamIndex];
teamName = group.Name;
foreach (var acc in group.Accounts)
{
accountsList.Add(acc);
}
}
public static void reloadData(int index = -1)
{
if (index < 0) index = teamIndex;
var group = DataStream.dataStream.Groups[index];
if (teamIndex!=index)
{
teamIndex = index;
teamName = group.Name;
DataStream.dataStream.teamIndex = index;
DataStream.write();
}
accountsList.Clear();
foreach (var acc in group.Accounts)
{
accountsList.Add(acc);
}
}
public static void saveEdit()
{
DataStream.write();
MainWindow.Instance.ReloadBtn();
}
public static bool AddAccount(Account account)
{
if (TeamManager.Nick2Acc(account.nickName) != null)
{
return false;
}
var group = DataStream.dataStream.Groups[teamIndex];
group.Accounts.Add(account);
accountsList.Add(account);
DataStream.write();
MainWindow.Instance.ReloadBtn();
return true;
}
public static bool AddAccounts(Account account)
{
if (TeamManager.Nick2Acc(account.nickName) != null)
{
return false;
}
var group = DataStream.dataStream.Groups[teamIndex];
group.Accounts.Add(account);
accountsList.Add(account);
//DataStream.write(); 不写
//MainWindow.Instance.ReloadBtn(); 不更新
return true;
}
public static void MoveAccount(int memberId, int newIndex)
{
var group1 = DataStream.dataStream.Groups[newIndex];
group1.Accounts.Add(accountsList[memberId]);
var group = DataStream.dataStream.Groups[teamIndex];
group.Accounts.RemoveAt(memberId);
DataStream.write();
MainWindow.Instance.ReloadBtn();
}
public static void DeleteAccount(int index) {
var group = DataStream.dataStream.Groups[teamIndex];
group.Accounts.RemoveAt(index);
DataStream.write();
reloadData();
MainWindow.Instance.ReloadBtn();
}
public static void editTeamName(string teamName0)
{
teamName = teamName0;
var group = DataStream.dataStream.Groups[teamIndex];
group.Name = teamName;
DataStream.write();
}
public static bool DeleteTeam()
{
if (DataStream.dataStream.Groups.Count == 1)
{
return false;
}
DataStream.dataStream.Groups.RemoveAt(teamIndex);
DataStream.write();
reloadData(0);
MainWindow.Instance.ReloadBtn();
return true;
}
}
internal class TeamManager
{
public static string[] GetAllTeamName()
{
string[] names = new string[DataStream.dataStream.Groups.Count];
int i = 0;
foreach (var group in DataStream.dataStream.Groups)
{
names[i++] = group.Name;
}
return names;
}
public static void addTeam(string teamName)
{
var group = new Group { Name = teamName, Accounts = new List<Account> { } };
DataStream.dataStream.Groups.Add(group);
DataStream.write();
}
//运行时才能决定是否执行内联
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
public static Account? Nick2Acc(string nickName)
{
// find and return first take
foreach (var group in DataStream.dataStream.Groups)
{
foreach (var acc in group.Accounts)
{
if (acc.nickName.Equals(nickName)) return acc;
}
}
return null;
}
}
}