Beispiel #1
0
 private ScrollingSelector(ScrollingSelector <T> source,
                           Func <uint, ITicker> getTicker = null, uint?delay     = null,
                           uint?endsDelay           = null, uint?availableDigits = null,
                           ImmutableList <T> values = null, int?offset           = null,
                           Option <ITicker>?ticker  = null)
 {
     this.getTicker       = getTicker ?? source.getTicker;
     this.delay           = delay ?? source.delay;
     this.endsDelay       = endsDelay ?? source.endsDelay;
     this.availableDigits = availableDigits ?? source.availableDigits;
     this.values          = values ?? source.values;
     this.offset          = offset ?? source.offset;
     this.ticker          = ticker ?? source.ticker;
 }
Beispiel #2
0
        public ISelector <T> Tick(uint currentTime)
        {
            var result = this;

            ticker.MatchSome((tck) => {
                if (tck.Ticked(currentTime))
                {
                    var offsetN      = offset >= values.Count - availableDigits ? 0 : offset + 1;
                    var currentDelay = offsetN == 0 || offsetN == values.Count - availableDigits ?
                                       endsDelay : delay;
                    result = new ScrollingSelector <T>(this, offset: offsetN,
                                                       ticker: getTicker(currentDelay).SomeNotNull());
                }
            });
            return(result);
        }