Fix: SetTeam logic - Replace or add teams based on TeamNumber (#55)

This commit is contained in:
fxz2018
2025-09-25 21:14:00 +08:00
committed by GitHub
parent de1b4081b2
commit 71be17a043

View File

@@ -20,11 +20,57 @@ namespace EpinelPS.LobbyServer.Team
// Add team data to user data
NetUserTeamData teamData = new() { LastContentsTeamNumber = req.ContentsId + 1, Type = req.Type };
teamData.Teams.AddRange(req.Teams);
// Check for existing teams with same TeamNumber and replace or add accordingly
foreach (var newTeam in req.Teams)
{
bool teamUpdated = false;
for (int i = 0; i < teamData.Teams.Count; i++)
{
if (teamData.Teams[i].TeamNumber == newTeam.TeamNumber)
{
// Replace existing team with same TeamNumber
teamData.Teams[i] = newTeam;
teamUpdated = true;
break;
}
}
if (!teamUpdated)
{
// Add new team if TeamNumber doesn't exist
teamData.Teams.Add(newTeam);
}
}
if (!user.UserTeams.TryAdd(req.Type, teamData))
{
user.UserTeams[req.Type] = teamData;
// If key already exists, we need to merge teams properly
var existingTeamData = user.UserTeams[req.Type];
existingTeamData.LastContentsTeamNumber = req.ContentsId + 1;
existingTeamData.Type = req.Type;
// Apply same logic to existing team data
foreach (var newTeam in req.Teams)
{
bool teamUpdated = false;
for (int i = 0; i < existingTeamData.Teams.Count; i++)
{
if (existingTeamData.Teams[i].TeamNumber == newTeam.TeamNumber)
{
// Replace existing team with same TeamNumber
existingTeamData.Teams[i] = newTeam;
teamUpdated = true;
break;
}
}
if (!teamUpdated)
{
// Add new team if TeamNumber doesn't exist
existingTeamData.Teams.Add(newTeam);
}
}
}
JsonDb.Save();