private void EndNegotiation() { NegotiationActive = false; _timer.Enabled = false; NegotiationEndTime = DateTime.Now; HumanChannel.NegotiationEnded(); AiChannel.NegotiationEnded(); UnregisterChannel(HumanChannel); UnregisterChannel(AiChannel); NegotiationManager.SaveNegotiationEnd(NegotiationId, Status.HumanStatus.Score, Status.AiStatus.Score, DateTime.Now); }
public void BeginNegotiation() { _timer = new System.Timers.Timer() { AutoReset = true, Interval = UpdateInterval.TotalMilliseconds }; _timer.Elapsed += _timer_Elapsed; _timer.Enabled = true; NegotiationActive = true; HumanChannel.NegotiationStarted(); AiChannel.NegotiationStarted(); }
void _timer_Elapsed(object sender, ElapsedEventArgs e) { Status.RemainingTime -= TimeSpan.FromSeconds(1); if (Status.RemainingTime.TotalSeconds == 0) { Status.State = NegotiationState.EndTimeout; Status.AiStatus.Score = Domain.CalculateTimeoutScore(AiConfig); Status.HumanStatus.Score = Domain.CalculateTimeoutScore(HumanConfig); EndNegotiation(); NegotiationManager.SaveTimeout(this); return; } ThreadPool.QueueUserWorkItem(x => { AiChannel.TimePassed(Status.RemainingTime); }); }