private void Reset()
{
ResetRound();
lock (fPriorityFetchQ) {
fPriorityFetchQ.Clear();
Monitor.Pulse(fPriorityFetchQ);
}
lock (fMoveQ) {
fMoveQ.Clear();
Monitor.Pulse(fMoveQ);
}
lock (fListPlayersQ) {
fListPlayersQ.Clear();
Monitor.Pulse(fListPlayersQ);
}
lock (fAllPlayers) {
fAllPlayers.Clear();
}
lock (fMoving) {
fMoving.Clear();
}
lock (fMoveStash) {
fMoveStash.Clear();
}
lock (fExtrasLock) {
fExtraNames.Clear();
fDebugScramblerSuspects.Clear();
}
fReassigned.Clear();
fPendingTeamChange.Clear();
fUnassigned.Clear();
/*
fKnownPlayers is not cleared right away, since we want to retain stats from previous plugin sessions.
It will be garbage collected after MODEL_MINUTES.
*/
fServerInfo = null; // release Procon reference
fListPlayersTimestamp = DateTime.MinValue;
fRefreshCommand = false;
fServerUptime = 0;
fServerCrashed = false;
fFinalStatus = null;
fMaxTickets = -1;
fBalanceIsActive = false;
fIsFullRound = false;
fLastMsg = null;
fRoundsEnabled = 0;
fGrandTotalQuits = 0;
fGrandRageQuits = 0;
fWhileScrambling = false;
fUpdateTicketsRequest = null;
fTotalRoundEndingRounds = 0;
fTotalRoundEndingSeconds = 0;
fLastAutoChatTimestamp = DateTime.MinValue;
fDebugScramblerBefore[0].Clear();
fDebugScramblerBefore[1].Clear();
fDebugScramblerAfter[0].Clear();
fDebugScramblerAfter[1].Clear();
fDebugScramblerStartRound[0].Clear();
fDebugScramblerStartRound[1].Clear();
}