Пример #1
0
 public override void UpdateFromClock(Clock clock)
 {
     LastTimeClockStarted = DateTime.Now;
     if (clock.StonesLeft == 0)
     {
         _snapshot = new Canadian.CanadianTimeInformation(true, TimeSpan.FromSeconds(clock.Time), _snapshot.PeriodTimeLeft, 0);
     }
     else
     {
         _snapshot = new Canadian.CanadianTimeInformation(false, TimeSpan.Zero, TimeSpan.FromSeconds(clock.Time), clock.StonesLeft);
     }
 }
Пример #2
0
 public CanadianTimeControl UpdateFrom(CanadianTimeInformation timeRemaining)
 {
     this.LastTimeClockStarted = DateTime.Now;
     if (this.Running)
     {
         timeRemaining = new CanadianTimeInformation(
             timeRemaining.StillInMainTime,
             timeRemaining.MainTimeLeft,
             timeRemaining.PeriodTimeLeft,
             timeRemaining.PeriodStonesLeft + 1);
     }
     this._snapshot = timeRemaining;
     return(this);
 }
Пример #3
0
 private CanadianTimeInformation ImproveByPlacingAStone(CanadianTimeInformation snapshot)
 {
     if (snapshot.StillInMainTime)
     {
         return(snapshot);
     }
     if (snapshot.PeriodStonesLeft > 1)
     {
         return(new CanadianTimeInformation(
                    snapshot.StillInMainTime,
                    snapshot.MainTimeLeft,
                    snapshot.PeriodTimeLeft,
                    snapshot.PeriodStonesLeft - 1));
     }
     return(new CanadianTimeInformation(snapshot.StillInMainTime, snapshot.MainTimeLeft, this._periodTime, this._stonesPerPeriod));
 }
Пример #4
0
        private CanadianTimeInformation ReduceBy(CanadianTimeInformation minued, TimeSpan subtrahend)
        {
            var  maintime        = minued.MainTimeLeft;
            bool stillInMainTime = minued.StillInMainTime;

            if (stillInMainTime)
            {
                if (maintime > subtrahend)
                {
                    return(new CanadianTimeInformation(true, maintime - subtrahend, minued.PeriodTimeLeft, minued.PeriodStonesLeft));
                }
                minued     = new CanadianTimeInformation(false, TimeSpan.Zero, this._periodTime, this._stonesPerPeriod);
                subtrahend = subtrahend - maintime;
            }

            return(new CanadianTimeInformation(false, TimeSpan.Zero, minued.PeriodTimeLeft - subtrahend, minued.PeriodStonesLeft));
        }
Пример #5
0
 protected override void UpdateSnapshot(TimeSpan timeSpent)
 {
     this._snapshot = ReduceBy(this._snapshot, timeSpent);
     this._snapshot = ImproveByPlacingAStone(this._snapshot);
 }
Пример #6
0
 public CanadianTimeControl(TimeSpan mainTime, int stonesPerPeriod, TimeSpan periodTime)
 {
     _snapshot        = new CanadianTimeInformation(true, mainTime, TimeSpan.Zero, 0);
     _stonesPerPeriod = stonesPerPeriod;
     _periodTime      = periodTime;
 }