// protected readonly IFocusBehaviour streamlabs; public Controller(Bindings dataBindings) { this.dataBindings = dataBindings; this.screenBlanker = new ScreenBlanker(this.CollectScreens()); // this.streamlabs = new StreamLabs(); this.osuStatePresenter = new OsuPresenter(HandleOsuGameStateCreated); this.SetupOsuStatePresenter(this.osuStatePresenter); }
private void RegisterBpmNodeValueChangedHandler(OsuPresenter presenter) { if (presenter.TryGetNode(typeof(BpmNode), out Node bpmNode)) { if (bpmNode is null) { Console.WriteLine($"Error: Unable to get BPM Node from Presenter."); return; } bpmNode.OnValueChange += (s, e) => HandleBpmChange(bpmNode, s, e); Console.WriteLine($"BPM value change handler registered."); } }
private void SetupOsuStatePresenter(OsuPresenter osuPresenter) { // disable nodes not required for this app osuPresenter.TryGetNode(typeof(OsuStatePresenter.Nodes.BpmNode), out Node bpmNode); bpmNode.DisablePresentation(); osuPresenter.TryGetNode(typeof(OsuStatePresenter.Nodes.ModsNode), out Node modsNode); modsNode.DisablePresentation(); osuPresenter.TryGetNode(typeof(OsuStatePresenter.Nodes.PPNode), out Node ppNode); ppNode.DisablePresentation(); // start presenting and scanning for node values osuPresenter.Start(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider) { OsuPresenter presenter = new OsuPresenter(); // handle value changed on a specific node //RegisterBpmNodeValueChangedHandler(presenter); // handle new game state created event presenter.StatePresenter.AddEventHandler_NewStateCreated(HandleNewGameState); // start the Presenter presenter.Start(); Console.WriteLine("Started the Osu State Presenter."); // serve static files from exe output directory var currentExeDirectory = Path.Combine(Environment.CurrentDirectory); app.UseFileServer(new FileServerOptions { FileProvider = new PhysicalFileProvider( Path.Combine(currentExeDirectory, "public")), RequestPath = "/Osu", EnableDirectoryBrowsing = false }); // init request handling app.Use(async(context, next) => { if (WebSocketSender is null) { WebSocketSender = new WebSocketSender(context.Request.Host.Host, context.Request.Host.Port); WebSocketSender.Init(); } await next.Invoke(); // redirect root if (context.Request.GetEncodedPathAndQuery() == "/") { context.Response.Redirect("/Osu"); } }); // TODO: Add 404 page to every request except for "/Osu" }
/// <summary> /// The main console method. /// </summary> public static void Main() { var presenter = new OsuPresenter(StateCreatedHandler); // handle value changed on a specific node if (presenter.TryGetNode(typeof(BpmNode), out Node bpmNode)) { bpmNode.OnValueChange += (sender, e) => Console.WriteLine($@"BPM: {bpmNode.GetValue()}"); } // start the Presenter presenter.Start(); // keep the console open while (true) { Console.ReadKey(); Console.WriteLine(@"Key pressed. Stopping Presenter..."); presenter.Stop(); } // ReSharper disable once FunctionNeverReturns }