public BlokEmulationParameters(IPathRiderProvider PathRiderProvider, IWheel Wheel) { Observable.FromEvent(a => Wheel.SpeedChanged += (s, e) => a(), a => { }) .Select(_ => Wheel.Speed) .ToProperty(this, x => x.Speed, out _speed); PathRiderProvider.PathRider .CombineLatest(Wheel.Milage, (rider, milage) => rider.PointAt(milage)) .ToProperty(this, x => x.Position, out _position); }
public MsulEmulationParametersViewModel(IWheel Wheel, IPathRiderProvider PathRiderProvider) { _wheel = Wheel; TimeShift = TimeSpan.FromHours(15) - DateTime.Now.TimeOfDay; TrainNumber = 777; OutdoorTemperature = -18.4; EmergencyStop = false; LeftDoorLocked = true; RightDoorLocked = false; LeftDoorOpened = false; RightDoorOpened = false; LightOn = true; Carriages = new[] { new CarriageParametersViewModel(1, CarriageKind.TractionHead), new CarriageParametersViewModel(2, CarriageKind.HighVoltage), new CarriageParametersViewModel(3, CarriageKind.Normal), new CarriageParametersViewModel(4, CarriageKind.HighVoltage), new CarriageParametersViewModel(5, CarriageKind.TractionHead) }; Observable.Interval(TimeSpan.FromSeconds(1)) .Select(i => DateTime.Now + TimeShift) .ToProperty(this, x => x.Time, out _time); Observable.FromEvent(a => _wheel.SpeedChanged += (s, e) => a(), a => { }) .Select(_ => _wheel.Speed) .ToProperty(this, x => x.Speed, out _speed); PathRiderProvider.PathRider .CombineLatest(_wheel.Milage, (rider, milage) => rider.PointAt(milage)) .ToProperty(this, x => x.Position, out _position); }