public override void Reset() { base.Reset(); //ensure we are at offset 0 Clock = new FramedClock(); List<HitObject> objects = new List<HitObject>(); int time = 500; for (int i = 0; i < 100; i++) { objects.Add(new HitCircle() { StartTime = time, Position = new Vector2(RNG.Next(0, 512), RNG.Next(0, 384)), Scale = RNG.NextSingle(0.5f, 1.0f), }); time += RNG.Next(50, 500); } Beatmap beatmap = new Beatmap { HitObjects = objects }; Add(new Drawable[] { new OsuHitRenderer { Objects = beatmap.HitObjects, Scale = new Vector2(0.5f), Anchor = Anchor.TopLeft, Origin = Anchor.TopLeft }, new TaikoHitRenderer { Objects = beatmap.HitObjects, Scale = new Vector2(0.5f), Anchor = Anchor.TopRight, Origin = Anchor.TopRight }, new CatchHitRenderer { Objects = beatmap.HitObjects, Scale = new Vector2(0.5f), Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft }, new ManiaHitRenderer { Objects = beatmap.HitObjects, Scale = new Vector2(0.5f), Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight } }); }
public override void Reset() { base.Reset(); //ensure we are at offset 0 Clock = new FramedClock(); if (beatmap == null) { var objects = new List<HitObject>(); int time = 1500; for (int i = 0; i < 50; i++) { objects.Add(new HitCircle() { StartTime = time, Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : 512, i % 4 < 2 ? 0 : 384), NewCombo = i % 4 == 0 }); time += 500; } var decoder = new ConstructableBeatmapDecoder(); Beatmap b = new Beatmap { HitObjects = objects }; decoder.Process(b); beatmap = new WorkingBeatmap(b); } Add(new Box { RelativeSizeAxes = Framework.Graphics.Axes.Both, Colour = Color4.Gray, }); Add(new Player { PreferredPlayMode = PlayMode.Osu, Beatmap = beatmap }); }
public TestSceneBeatSyncedContainer() { Clock = new FramedClock(); Clock.ProcessFrame(); AddRange(new Drawable[] { musicController, new BeatContainer { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, }, np = new NowPlayingOverlay { Origin = Anchor.TopRight, Anchor = Anchor.TopRight, } }); }
public CursorTrail() { if (!eventSet) { // Is done to prevent leftover trail from re-appearing KyzerGraphics.TrailFade.ValueChanged += _ => resetTime(); KyzerGraphics.Graphics.ValueChanged += _ => resetTime(); eventSet = true; } // as we are currently very dependent on having a running clock, let's make our own clock for the time being. Clock = new FramedClock(); RelativeSizeAxes = Axes.Both; for (int i = 0; i < max_sprites; i++) { parts[i].InvalidationID = 0; parts[i].WasUpdated = true; } }
public TestCaseSongProgress() { clock = new StopwatchClock(true); gameplayClock = new GameplayClock(framedClock = new FramedClock(clock)); Add(progress = new SongProgress { RelativeSizeAxes = Axes.X, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, }); Add(graph = new TestSongProgressGraph { RelativeSizeAxes = Axes.X, Height = 200, Anchor = Anchor.TopLeft, Origin = Anchor.TopLeft, }); AddWaitStep(5); AddAssert("ensure not created", () => graph.CreationCount == 0); AddStep("display values", displayNewValues); AddWaitStep(5); AddUntilStep(() => graph.CreationCount == 1, "wait for creation count"); AddStep("Toggle Bar", () => progress.AllowSeeking = !progress.AllowSeeking); AddWaitStep(5); AddUntilStep(() => graph.CreationCount == 1, "wait for creation count"); AddStep("Toggle Bar", () => progress.AllowSeeking = !progress.AllowSeeking); AddWaitStep(5); AddUntilStep(() => graph.CreationCount == 1, "wait for creation count"); AddRepeatStep("New Values", displayNewValues, 5); AddWaitStep(5); AddAssert("ensure debounced", () => graph.CreationCount == 2); }
public TestSceneStoryboard() { Clock = new FramedClock(); AddRange(new Drawable[] { musicController, new Container { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, }, storyboardContainer = new Container <DrawableStoryboard> { RelativeSizeAxes = Axes.Both, }, }, }, new NowPlayingOverlay { Origin = Anchor.TopRight, Anchor = Anchor.TopRight, State = { Value = Visibility.Visible }, } }); AddStep("Restart", restart); AddToggleStep("Passing", passing => { if (storyboard != null) { storyboard.Passing = passing; } }); }
private void load(OsuColour colours) { var baseClock = Clock; if (AudioClock != null) { Clock = new FramedClock(AudioClock) { ProcessSourceClockFrames = false } } ; Children = new Drawable[] { fadeContainer = new FadeContainer { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { button = new Button { Clock = baseClock, Anchor = Anchor.Centre, Origin = Anchor.Centre, }, remainingTimeBox = new Box { Height = 5, RelativeSizeAxes = Axes.X, Colour = colours.Yellow, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, } } } }; }
public override void Reset() { base.Reset(); //ensure we are at offset 0 localClock = new FramedClock(); var objects = new List <HitObject>(); int time = 1500; for (int i = 0; i < 50; i++) { objects.Add(new Circle() { StartTime = time, Position = new Vector2(RNG.Next(0, 512), RNG.Next(0, 384)), NewCombo = i % 4 == 0 }); time += 500; } var decoder = new ConstructableBeatmapDecoder(); Beatmap b = new Beatmap { HitObjects = objects }; decoder.Process(b); Add(new Player { Beatmap = new WorkingBeatmap(b) }); }
public TestDrawableCatchHitObjectSpecimen(DrawableCatchHitObject d) { AutoSizeAxes = Axes.Both; Anchor = Anchor.Centre; Origin = Anchor.Centre; ManualClock = new ManualClock(); Clock = new FramedClock(ManualClock); var hitObject = d.HitObject; hitObject.ApplyDefaults(new ControlPointInfo(), new BeatmapDifficulty()); hitObject.Scale = 1.5f; hitObject.StartTime = 500; d.Anchor = Anchor.Centre; d.HitObjectApplied += _ => { d.LifetimeStart = double.NegativeInfinity; d.LifetimeEnd = double.PositiveInfinity; }; InternalChild = d; }
public void SetUp() => Schedule(() => { Clear(); manualClock = new ManualClock(); manualFramedClock = new FramedClock(manualClock); });
protected RulesetInputManager(RulesetInfo ruleset, int variant, SimultaneousBindingMode unique) { InternalChild = KeyBindingContainer = CreateKeyBindingContainer(ruleset, variant, unique); gameplayClock = new GameplayClock(framedClock = new FramedClock(manualClock = new ManualClock())); }
public TestCaseHitObjects() { rateAdjustClock = new StopwatchClock(true); framedClock = new FramedClock(rateAdjustClock); playbackSpeed.ValueChanged += delegate { rateAdjustClock.Rate = playbackSpeed.Value; }; }
public DecoupleableInterpolatingFramedClock() { decoupledClock = new FramedClock(decoupledStopwatch = new StopwatchClock()); }
public TestCaseTaikoPlayfield() { Clock = new FramedClock(); }
public void SetUp() { Clear(); manualClock = new ManualClock(); manualFramedClock = new FramedClock(manualClock); }
public TestCaseMusicController() { Clock = new FramedClock(); }
private void load(Storage storage, GameHost host) { interactive = host.Window != null; config = new TestBrowserConfig(storage); exit = host.Exit; rateBindable = new BindableDouble(1) { MinValue = 0, MaxValue = 2, }; var rateAdjustClock = new StopwatchClock(true); var framedClock = new FramedClock(rateAdjustClock); Children = new Drawable[] { leftContainer = new Container { RelativeSizeAxes = Axes.Y, Size = new Vector2(test_list_width, 1), Children = new Drawable[] { new Box { Colour = Color4.DimGray, RelativeSizeAxes = Axes.Both }, new FillFlowContainer { Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.Both, Children = new Drawable[] { searchTextBox = new TextBox { OnCommit = delegate { var firstVisible = leftFlowContainer.FirstOrDefault(b => b.IsPresent); if (firstVisible != null) { LoadTest(firstVisible.TestType); } }, Height = 20, RelativeSizeAxes = Axes.X, PlaceholderText = "type to search" }, new ScrollContainer { Padding = new MarginPadding { Top = 3, Bottom = 20 }, RelativeSizeAxes = Axes.Both, ScrollbarOverlapsContent = false, Child = leftFlowContainer = new SearchContainer <TestCaseButton> { Padding = new MarginPadding(3), Direction = FillDirection.Vertical, Spacing = new Vector2(0, 5), AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, } } } } } }, mainContainer = new Container { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Left = test_list_width }, Children = new Drawable[] { toolbar = new Toolbar { RelativeSizeAxes = Axes.X, Height = 50, Depth = -1, }, testContentContainer = new Container { Clock = framedClock, RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 50 }, Child = compilingNotice = new Container { Alpha = 0, Anchor = Anchor.Centre, Origin = Anchor.Centre, Masking = true, Depth = float.MinValue, CornerRadius = 5, AutoSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, }, new SpriteText { TextSize = 30, Text = @"Compiling new version..." } }, } } } } }; searchTextBox.Current.ValueChanged += newValue => leftFlowContainer.SearchTerm = newValue; backgroundCompiler = new DynamicClassCompiler <TestCase> { CompilationStarted = compileStarted, CompilationFinished = compileFinished, }; try { backgroundCompiler.Start(); } catch { //it's okay for this to fail for now. } foreach (Assembly asm in assemblies) { toolbar.AssemblyDropdown.AddDropdownItem(asm.GetName().Name, asm); } toolbar.AssemblyDropdown.Current.ValueChanged += updateList; toolbar.RunAllSteps.Current.ValueChanged += v => runTests(null); toolbar.RateAdjustSlider.Current.BindTo(rateBindable); rateBindable.ValueChanged += v => rateAdjustClock.Rate = v; rateBindable.TriggerChange(); }
public FrameStabilityContainer() { RelativeSizeAxes = Axes.Both; gameplayClock = new GameplayClock(framedClock = new FramedClock(manualClock = new ManualClock())); }
public TestCaseHitObjects() { var swClock = new StopwatchClock(true) { Rate = 0.2f }; Clock = new FramedClock(swClock); }
private void load(Storage storage, GameHost host, AudioManager audio) { interactive = host.Window != null; config = new TestBrowserConfig(storage); audio.AddAdjustment(AdjustableProperty.Frequency, audioRateAdjust); var rateAdjustClock = new StopwatchClock(true); var framedClock = new FramedClock(rateAdjustClock); Children = new Drawable[] { mainContainer = new Container { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Left = test_list_width }, Children = new Drawable[] { new SafeAreaContainer { SafeAreaOverrideEdges = Edges.Right | Edges.Bottom, RelativeSizeAxes = Axes.Both, Child = testContentContainer = new Container { Clock = framedClock, RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 50 }, Child = compilingNotice = new Container { Alpha = 0, Anchor = Anchor.Centre, Origin = Anchor.Centre, Masking = true, Depth = float.MinValue, CornerRadius = 5, AutoSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, }, new SpriteText { Font = FrameworkFont.Regular.With(size: 30), Text = @"Compiling new version..." } }, } } }, toolbar = new TestBrowserToolbar { RelativeSizeAxes = Axes.X, Height = 50, }, } }, leftContainer = new Container { RelativeSizeAxes = Axes.Y, Size = new Vector2(test_list_width, 1), Masking = true, Children = new Drawable[] { new SafeAreaContainer { SafeAreaOverrideEdges = Edges.Left | Edges.Top | Edges.Bottom, RelativeSizeAxes = Axes.Both, Child = new Box { Colour = FrameworkColour.GreenDark, RelativeSizeAxes = Axes.Both } }, new FillFlowContainer { Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.Both, Children = new Drawable[] { searchTextBox = new TestBrowserTextBox { Height = 25, RelativeSizeAxes = Axes.X, PlaceholderText = "type to search", Depth = -1, }, new BasicScrollContainer { RelativeSizeAxes = Axes.Both, Masking = false, Child = leftFlowContainer = new SearchContainer <TestGroupButton> { AllowNonContiguousMatching = true, Padding = new MarginPadding { Top = 3, Bottom = 20 }, Direction = FillDirection.Vertical, AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, } } } } } }, }; searchTextBox.OnCommit += delegate { var firstTest = leftFlowContainer.Where(b => b.IsPresent).SelectMany(b => b.FilterableChildren).OfType <TestSubButton>() .FirstOrDefault(b => b.MatchingFilter)?.TestType; if (firstTest != null) { LoadTest(firstTest); } }; searchTextBox.Current.ValueChanged += e => leftFlowContainer.SearchTerm = e.NewValue; if (RuntimeInfo.IsDesktop) { HotReloadCallbackReceiver.CompilationFinished += compileFinished; } foreach (Assembly asm in assemblies) { toolbar.AddAssembly(asm.GetName().Name, asm); } Assembly.BindValueChanged(updateList); RunAllSteps.BindValueChanged(v => runTests(null)); PlaybackRate.BindValueChanged(e => { rateAdjustClock.Rate = e.NewValue; audioRateAdjust.Value = e.NewValue; }, true); }
private void load(Storage storage, GameHost host) { interactive = host.Window != null; config = new TestBrowserConfig(storage); rateBindable = new BindableDouble(1) { MinValue = 0, MaxValue = 1, }; var rateAdjustClock = new StopwatchClock(true); var framedClock = new FramedClock(rateAdjustClock); Children = new Drawable[] { new Container { RelativeSizeAxes = Axes.Y, Size = new Vector2(200, 1), Children = new Drawable[] { new Box { Colour = Color4.DimGray, RelativeSizeAxes = Axes.Both }, new ScrollContainer { RelativeSizeAxes = Axes.Both, ScrollbarOverlapsContent = false, Child = leftFlowContainer = new FillFlowContainer <TestCaseButton> { Padding = new MarginPadding(3), Direction = FillDirection.Vertical, Spacing = new Vector2(0, 5), AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, } } } }, new Container { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Left = 200 }, Children = new Drawable[] { toolbar = new Toolbar { RelativeSizeAxes = Axes.X, Height = 50, Depth = -1, RunAllSteps = () => CurrentTest.RunAllSteps(() => toolbar.RunComplete(), toolbar.RunComplete), }, testContentContainer = new Container { Clock = framedClock, RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 50 }, Child = compilingNotice = new Container { Alpha = 0, Anchor = Anchor.Centre, Origin = Anchor.Centre, Masking = true, Depth = float.MinValue, CornerRadius = 5, AutoSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, }, new SpriteText { TextSize = 30, Text = @"Compiling new version..." } }, } } } } }; backgroundCompiler = new DynamicClassCompiler <TestCase> { CompilationStarted = compileStarted, CompilationFinished = compileFinished, }; try { backgroundCompiler.Start(); } catch { //it's okay for this to fail for now. } foreach (Assembly asm in assemblies) { toolbar.AssemblyDropdown.AddDropdownItem(asm.GetName().Name, asm); } toolbar.AssemblyDropdown.Current.ValueChanged += updateList; toolbar.RateAdjustSlider.Current.BindTo(rateBindable); rateBindable.ValueChanged += v => rateAdjustClock.Rate = v; rateBindable.TriggerChange(); }
public TestBreakTracker() { FramedManualClock = new FramedClock(manualClock = new ManualClock()); ProcessCustomClock = false; }
private void load(AudioManager audio) { clunk = audio.Samples.Get(@"Multiplayer/countdown-tick"); const float taper = 25; const float swing_vertical_offset = -23; const float lower_cover_height = 32; var triangleSize = new Vector2(90, 120 + taper); Margin = new MarginPadding(10); AutoSizeAxes = Axes.Both; InternalChildren = new Drawable[] { new Container { Name = @"Taper adjust", Masking = true, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = new Vector2(triangleSize.X, triangleSize.Y - taper), Children = new Drawable[] { new Triangle { Name = @"Main body", EdgeSmoothness = new Vector2(1), Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = triangleSize, Colour = overlayColourProvider.Background3, }, }, }, new Circle { Name = "Centre marker", Colour = overlayColourProvider.Background5, RelativeSizeAxes = Axes.Y, Width = 2, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Y = -(lower_cover_height + 3), Height = 0.65f, }, swing = new Container { Name = @"Swing", RelativeSizeAxes = Axes.Both, Y = swing_vertical_offset, Height = 0.80f, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Children = new[] { stick = new Circle { Name = @"Stick", RelativeSizeAxes = Axes.Y, Colour = overlayColourProvider.Colour2, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Width = 4, }, weight = new Container { Name = @"Weight", Anchor = Anchor.TopCentre, Origin = Anchor.Centre, Size = new Vector2(10), Rotation = 180, RelativePositionAxes = Axes.Y, Y = 0.4f, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Shear = new Vector2(0.2f, 0), Colour = overlayColourProvider.Colour1, EdgeSmoothness = new Vector2(1), }, new Box { RelativeSizeAxes = Axes.Both, Shear = new Vector2(-0.2f, 0), Colour = overlayColourProvider.Colour1, EdgeSmoothness = new Vector2(1), }, new Circle { Anchor = Anchor.Centre, Origin = Anchor.Centre, Colour = ColourInfo.GradientVertical(overlayColourProvider.Colour1, overlayColourProvider.Colour0), RelativeSizeAxes = Axes.Y, Width = 1, Height = 0.9f }, } }, } }, new Container { Name = @"Taper adjust", Masking = true, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = new Vector2(triangleSize.X, triangleSize.Y - taper), Children = new Drawable[] { new Circle { Name = @"Locking wedge", Anchor = Anchor.TopCentre, Origin = Anchor.Centre, Colour = overlayColourProvider.Background1, Size = new Vector2(8), } }, }, new Circle { Name = @"Swing connection point", Y = swing_vertical_offset, Anchor = Anchor.BottomCentre, Origin = Anchor.Centre, Colour = overlayColourProvider.Colour0, Size = new Vector2(8) }, new Container { Name = @"Lower cover", Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, RelativeSizeAxes = Axes.X, Masking = true, Height = lower_cover_height, Children = new Drawable[] { new Triangle { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = triangleSize, Colour = overlayColourProvider.Background2, EdgeSmoothness = new Vector2(1), Alpha = 0.8f }, } }, bpmText = new OsuSpriteText { Name = @"BPM display", Colour = overlayColourProvider.Content1, Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Y = -3, }, }; Clock = new FramedClock(metronomeClock = new StopwatchClock(true)); }
public TestAnimationTimeReference() { ManualClock = new ManualClock(); Clock = new FramedClock(ManualClock); }
public FrameStabilityClock(FramedClock underlyingClock) : base(underlyingClock) { }
public StabilityGameplayClock(FramedClock underlyingClock) : base(underlyingClock) { }
public TestBreakOverlay(bool letterboxing) : base(letterboxing) { framedManualClock = new FramedClock(manualClock = new ManualClock()); ProcessCustomClock = false; }
private void load(Storage storage, GameHost host, FrameworkConfigManager frameworkConfig, FontStore fonts, Game game, AudioManager audio) { interactive = host.Window != null; config = new TestBrowserConfig(storage); exit = host.Exit; audio.AddAdjustment(AdjustableProperty.Frequency, audioRateAdjust); var resources = game.Resources; //Roboto game.AddFont(resources, @"Fonts/Roboto/Roboto-Regular"); game.AddFont(resources, @"Fonts/Roboto/Roboto-Bold"); //RobotoCondensed game.AddFont(resources, @"Fonts/RobotoCondensed/RobotoCondensed-Regular"); game.AddFont(resources, @"Fonts/RobotoCondensed/RobotoCondensed-Bold"); showLogOverlay = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay); var rateAdjustClock = new StopwatchClock(true); var framedClock = new FramedClock(rateAdjustClock); Children = new Drawable[] { mainContainer = new Container { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Left = test_list_width }, Children = new Drawable[] { new SafeAreaContainer { SafeAreaOverrideEdges = Edges.Right | Edges.Bottom, RelativeSizeAxes = Axes.Both, Child = testContentContainer = new Container { Clock = framedClock, RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 50 }, Child = compilingNotice = new Container { Alpha = 0, Anchor = Anchor.Centre, Origin = Anchor.Centre, Masking = true, Depth = float.MinValue, CornerRadius = 5, AutoSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, }, new SpriteText { Font = new FontUsage(size: 30), Text = @"Compiling new version..." } }, } } }, toolbar = new TestBrowserToolbar { RelativeSizeAxes = Axes.X, Height = 50, }, } }, leftContainer = new Container { RelativeSizeAxes = Axes.Y, Size = new Vector2(test_list_width, 1), Masking = true, Children = new Drawable[] { new SafeAreaContainer { SafeAreaOverrideEdges = Edges.Left | Edges.Top | Edges.Bottom, RelativeSizeAxes = Axes.Both, Child = new Box { Colour = FrameworkColour.GreenDark, RelativeSizeAxes = Axes.Both } }, new FillFlowContainer { Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.Both, Children = new Drawable[] { searchTextBox = new TestBrowserTextBox { OnCommit = delegate { var firstTest = leftFlowContainer.Where(b => b.IsPresent).SelectMany(b => b.FilterableChildren).OfType <TestSubButton>() .FirstOrDefault(b => b.MatchingFilter)?.TestType; if (firstTest != null) { LoadTest(firstTest); } }, Height = 25, RelativeSizeAxes = Axes.X, PlaceholderText = "type to search", Depth = -1, }, new BasicScrollContainer { RelativeSizeAxes = Axes.Both, Masking = false, Child = leftFlowContainer = new SearchContainer <TestGroupButton> { Padding = new MarginPadding { Top = 3, Bottom = 20 }, Direction = FillDirection.Vertical, AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, } } } } } }, }; searchTextBox.Current.ValueChanged += e => leftFlowContainer.SearchTerm = e.NewValue; if (RuntimeInfo.SupportsJIT) { backgroundCompiler = new DynamicClassCompiler <TestScene>(); backgroundCompiler.CompilationStarted += compileStarted; backgroundCompiler.CompilationFinished += compileFinished; backgroundCompiler.CompilationFailed += compileFailed; try { backgroundCompiler.Start(); } catch { //it's okay for this to fail for now. } } foreach (Assembly asm in assemblies) { toolbar.AddAssembly(asm.GetName().Name, asm); } Assembly.BindValueChanged(updateList); RunAllSteps.BindValueChanged(v => runTests(null)); PlaybackRate.BindValueChanged(e => { rateAdjustClock.Rate = e.NewValue; audioRateAdjust.Value = e.NewValue; }, true); }
private void load(Storage storage, GameHost host, FrameworkConfigManager frameworkConfig) { interactive = host.Window != null; config = new TestBrowserConfig(storage); exit = host.Exit; showLogOverlay = frameworkConfig.GetBindable <bool>(FrameworkSetting.ShowLogOverlay); var rateAdjustClock = new StopwatchClock(true); var framedClock = new FramedClock(rateAdjustClock); Children = new Drawable[] { leftContainer = new Container { RelativeSizeAxes = Axes.Y, Size = new Vector2(test_list_width, 1), Children = new Drawable[] { new Box { Colour = new Color4(50, 50, 50, 255), RelativeSizeAxes = Axes.Both }, new FillFlowContainer { Direction = FillDirection.Vertical, RelativeSizeAxes = Axes.Both, Children = new Drawable[] { searchTextBox = new TextBox { OnCommit = delegate { var firstVisible = leftFlowContainer.FirstOrDefault(b => b.IsPresent); if (firstVisible != null) { LoadTest(firstVisible.SelectFirst()); } }, Height = 20, RelativeSizeAxes = Axes.X, PlaceholderText = "type to search" }, new ScrollContainer { Padding = new MarginPadding { Top = 3, Bottom = 20 }, RelativeSizeAxes = Axes.Both, ScrollbarOverlapsContent = false, Child = leftFlowContainer = new SearchContainer <TestCaseButtonGroup> { Padding = new MarginPadding(3), Direction = FillDirection.Vertical, AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, } } } } } }, mainContainer = new Container { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Left = test_list_width }, Children = new Drawable[] { toolbar = new TestBrowserToolbar { RelativeSizeAxes = Axes.X, Height = 50, Depth = -1, }, testContentContainer = new Container { Clock = framedClock, RelativeSizeAxes = Axes.Both, Padding = new MarginPadding { Top = 50 }, Child = compilingNotice = new Container { Alpha = 0, Anchor = Anchor.Centre, Origin = Anchor.Centre, Masking = true, Depth = float.MinValue, CornerRadius = 5, AutoSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4.Black, }, new SpriteText { TextSize = 30, Text = @"Compiling new version..." } }, } } } } }; searchTextBox.Current.ValueChanged += newValue => leftFlowContainer.SearchTerm = newValue; if (RuntimeInfo.SupportsJIT) { backgroundCompiler = new DynamicClassCompiler <TestCase> { CompilationStarted = compileStarted, CompilationFinished = compileFinished, CompilationFailed = compileFailed }; try { backgroundCompiler.Start(); } catch { //it's okay for this to fail for now. } } foreach (Assembly asm in assemblies) { toolbar.AddAssembly(asm.GetName().Name, asm); } Assembly.BindValueChanged(updateList); RunAllSteps.BindValueChanged(v => runTests(null)); PlaybackRate.BindValueChanged(v => rateAdjustClock.Rate = v, true); }