Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
            });
        }