Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        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.");
            }
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        // 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"
        }
Esempio n. 5
0
        /// <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
        }