mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-12 15:04:36 +01:00
Fix: SetTeam logic - Replace or add teams based on TeamNumber (#55)
This commit is contained in:
@@ -20,11 +20,57 @@ namespace EpinelPS.LobbyServer.Team
|
|||||||
|
|
||||||
// Add team data to user data
|
// Add team data to user data
|
||||||
NetUserTeamData teamData = new() { LastContentsTeamNumber = req.ContentsId + 1, Type = req.Type };
|
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))
|
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();
|
JsonDb.Save();
|
||||||
@@ -32,4 +78,4 @@ namespace EpinelPS.LobbyServer.Team
|
|||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user