Fix Arena TOCTOU

This commit is contained in:
SilicaAndPina 2021-05-12 22:14:22 +12:00
parent ab05db6cbf
commit 51223172c4
4 changed files with 35 additions and 11 deletions

View file

@ -132,12 +132,12 @@ namespace HISP.Game
}
public void Start()
{
if(Entries.Count <= 0)
Mode = "COMPETING";
if (Entries.Count <= 0)
{
reset();
return;
}
Mode = "COMPETING";
foreach(ArenaEntry entry in Entries.ToArray())
{
string swf = getSwf(entry);
@ -299,7 +299,6 @@ namespace HISP.Game
if (Entries.Count >= 4 && Type == "DRESSAGE")
entry.EnteredUser.Awards.AddAward(Award.GetAwardById(10)); // Great Dressage
if (Entries.Count >= 2 && Type == "DRAFT")
entry.EnteredUser.Awards.AddAward(Award.GetAwardById(38)); // Strong Horse Award
@ -341,12 +340,15 @@ namespace HISP.Game
break;
}
}
public void AddEntry(User user, Horse.HorseInstance horse)
public void AddEntry(User user, HorseInstance horse)
{
ArenaEntry arenaEntry = new ArenaEntry();
arenaEntry.EnteredUser = user;
arenaEntry.EnteredHorse = horse;
Entries.Add(arenaEntry);
if(!UserHasHorseEntered(user))
{
ArenaEntry arenaEntry = new ArenaEntry();
arenaEntry.EnteredUser = user;
arenaEntry.EnteredHorse = horse;
Entries.Add(arenaEntry);
}
}
public static Arena GetArenaUserEnteredIn(User user)
@ -369,7 +371,8 @@ namespace HISP.Game
foreach(Arena arena in Arenas)
{
if (minutes % arena.RaceEvery == 0)
arena.Start();
if(arena.Mode == "TAKINGENTRIES")
arena.Start();
}
}