Ejemplo n.º 1
0
 public MusicInfoMaintainerController(ILogger <MusicInfoMaintainerController> logger, MusicDbContext musicDbContext, IndexMaintainer indexMaintainer, MusicConfiguration musicConfiguration)
 {
     Logger             = logger;
     MusicDbContext     = musicDbContext;
     IndexMaintainer    = indexMaintainer;
     MusicConfiguration = musicConfiguration;
 }
Ejemplo n.º 2
0
 public Broadcaster(IOptions <PlayerConfiguration> playerConfigOptions, IOptions <MusicConfiguration> musicConfigOptions, Messenger messenger, ILoggerFactory loggerFactory) : base(loggerFactory)
 {
     this.messenger             = messenger;
     this.playConfig            = playerConfigOptions.Value;
     this.musicConfig           = musicConfigOptions.Value;
     webPlayerBroadcastInterval = musicConfig.WebPlayerBroadcastInterval;
     InitialiseQueue();
 }
Ejemplo n.º 3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddVersionedApiExplorer(
                options =>
            {
                options.GroupNameFormat           = "'v'VVV";
                options.SubstituteApiVersionInUrl = true;
            });

            services.AddApiVersioning(o =>
            {
                o.ReportApiVersions = true;
                o.AssumeDefaultVersionWhenUnspecified = true;
                o.DefaultApiVersion = new ApiVersion(1, 0);
            });

            // Register the Swagger services
            services.AddSwaggerDocument(config =>
            {
                config.Title = "Music Server API";

                config.DocumentProcessors.Add(new SecurityDefinitionAppender(
                                                  "basic",
                                                  new OpenApiSecurityScheme
                {
                    Type = OpenApiSecuritySchemeType.Basic,
                    Name = "Authorization",
                    In   = OpenApiSecurityApiKeyLocation.Header
                }));

                config.OperationProcessors.Add(new OperationSecurityScopeProcessor("basic"));
            });

            services.AddAuthentication("SimpleAuthentication").AddScheme <AuthenticationSchemeOptions, SimpleAuthenticationHandler>("SimpleAuthentication", null);

            services.AddControllersWithViews();

            var musicConfiguration = new MusicConfiguration();

            Configuration.GetSection("MusicConfiguration").Bind(musicConfiguration);

            services.AddSingleton(musicConfiguration);

            services.AddDbContextPool <MusicDbContext>(option =>
            {
                option.UseMySql(Configuration.GetConnectionString("MusicConnection"), new MySqlServerVersion(new Version(musicConfiguration.SqlVersion)));
            });

            services.AddSingleton <IndexMaintainer>();

            var authentication = new AuthenticationInfo();

            Configuration.Bind("AuthenticationInfo", authentication);
            services.AddSingleton(authentication);
        }
Ejemplo n.º 4
0
        public Receiver(IOptions <MusicConfiguration> musicConfigOptions, DeviceManagerFactory dmf, Messenger messenger, ILoggerFactory loggerFactory) : base(loggerFactory)
        {
            this.musicConfig  = musicConfigOptions.Value;
            this.dmf          = dmf;
            this.messenger    = messenger;
            serverInformation = new MusicServerInformation();
            machineName       = Environment.MachineName.ToLower();
            var list = NetInfo.GetMatchingIPV4Addresses(musicConfig.LocalCIDR);

            currentIpAddress = list.First().ToString();
        }
 public IndexMaintainer(MusicConfiguration musicConfiguration, IServiceScopeFactory serviceScopeFactory, ILogger <IndexMaintainer> logger)
 {
     this.musicConfiguration  = musicConfiguration;
     this.serviceScopeFactory = serviceScopeFactory;
     this.logger = logger;
 }
Ejemplo n.º 6
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            Initialize();

            AudioManager myTarget = (AudioManager)target;

            /*
             * if (GUILayout.Button("Grab from Fabric"))
             * {
             *  myTarget.ClearConfiguration();
             *  var components = myTarget.transform.GetComponentsInChildren<Fabric.AudioComponent>(true);
             *  foreach (var audioComponent in components)
             *  {
             *      var listener = audioComponent.GetComponent<Fabric.EventListener>();
             *
             *      if (listener != null)
             *      {
             *          bool found = false;
             *          Sfx sfx = 0;
             *          foreach (var s in Enum.GetValues(typeof(Sfx)))
             *          {
             *              if (AudioConfig.GetSfxEventName((Sfx)s) == listener._eventName)
             *              {
             *                  sfx = (Sfx)s;
             *                  found = true;
             *                  break;
             *              }
             *          }
             *
             *          if (found)
             *          {
             *              SfxConfiguration conf = myTarget.GetSfxConfiguration(sfx);
             *
             *              if (conf == null)
             *                  conf = new SfxConfiguration();
             *
             *              conf.sfx = sfx;
             *              myTarget.UpdateSfxConfiguration(conf);
             *
             *              conf.volume = audioComponent.Volume;
             *              conf.randomPitchOffset = audioComponent.PitchRandomization;
             *
             *              var random = audioComponent as Fabric.RandomAudioClipComponent;
             *
             *              if (random != null)
             *              {
             *                  foreach (var c in random._audioClips)
             *                      conf.clips.Add(c);
             *              }
             *              else
             *                  conf.clips.Add(audioComponent.AudioClip);
             *          }
             *      }
             *  }
             *
             *  var rndcomponents = myTarget.transform.GetComponentsInChildren<Fabric.RandomComponent>(true);
             *  foreach (var randomComponent in rndcomponents)
             *  {
             *      var listener = randomComponent.GetComponent<Fabric.EventListener>();
             *
             *      if (listener != null)
             *      {
             *          bool found = false;
             *          Sfx sfx = 0;
             *          foreach (var s in Enum.GetValues(typeof(Sfx)))
             *          {
             *              if (AudioConfig.GetSfxEventName((Sfx)s) == listener._eventName)
             *              {
             *                  sfx = (Sfx)s;
             *                  found = true;
             *                  break;
             *              }
             *          }
             *
             *          if (found)
             *          {
             *              SfxConfiguration conf = myTarget.GetSfxConfiguration(sfx);
             *
             *              if (conf == null)
             *                  conf = new SfxConfiguration();
             *              conf.sfx = sfx;
             *              conf.volume = randomComponent.Volume;
             *              conf.randomPitchOffset = randomComponent.PitchRandomization;
             *
             *              var childs = randomComponent.GetChildComponents();
             *
             *              if (childs != null)
             *                  foreach (var child in childs)
             *                  {
             *                      var random = child as Fabric.RandomAudioClipComponent;
             *
             *                      if (random != null)
             *                      {
             *                          foreach (var c in random._audioClips)
             *                              conf.clips.Add(c);
             *                      }
             *                      else
             *                      {
             *                          var c = child as Fabric.AudioComponent;
             *                          if (c != null)
             *                              conf.clips.Add(c.AudioClip);
             *                      }
             *                  }
             *          }
             *      }
             *  }
             * }
             *
             */

            EditorGUILayout.LabelField("-- Sound effects --", titlesStyle);
            EditorGUILayout.Separator();
            foreach (var sfx in Enum.GetValues(typeof(Sfx)))
            {
                SfxConfiguration conf = myTarget.GetSfxConfiguration((Sfx)sfx);

                if (conf == null)
                {
                    conf        = new SfxConfiguration();
                    conf.sfx    = (Sfx)sfx;
                    conf.volume = 1;
                    myTarget.UpdateSfxConfiguration(conf);
                }


                List <AudioClip> clips = conf.clips;

                int count = clips != null ? clips.Count : 0;

                int nonNullCount = -1;
                for (int i = 0; i < count; ++i)
                {
                    var clip = clips[i];
                    if (clip != null)
                    {
                        ++nonNullCount;
                    }
                }

                // Shrink
                if (count != nonNullCount)
                {
                    var newClips = new List <AudioClip>();
                    for (int i = 0; i < count; ++i)
                    {
                        var clip = clips[i];
                        if (clip != null)
                        {
                            newClips.Add(clips[i]);
                        }
                    }
                    clips = newClips;
                }

                bool hasClips = clips.Count > 0;
                EditorGUILayout.LabelField("Sfx." + sfx.ToString(), hasClips ? subtitleStyle : subtitleBadStyle);

                for (int i = 0; i < clips.Count; ++i)
                {
                    EditorGUILayout.BeginHorizontal();
                    clips[i] = (AudioClip)EditorGUILayout.ObjectField(clips[i], typeof(AudioClip), false);

                    if (GUILayout.Button("Play", GUILayout.Width(40)))
                    {
                        AudioUtils.PlayClip(clips[i]);
                    }
                    if (GUILayout.Button("Stop", GUILayout.Width(40)))
                    {
                        AudioUtils.StopAllClips();
                    }

                    var prevColor = GUI.color;
                    GUI.color = Color.red;
                    if (GUILayout.Button("Remove", GUILayout.Width(60)))
                    {
                        clips[i] = null;
                    }
                    GUI.color = prevColor;

                    EditorGUILayout.EndHorizontal();
                }

                EditorGUILayout.BeginHorizontal();

                if (clips.Count > 0)
                {
                    EditorGUILayout.LabelField("Add Random Choice:", hasClips ? goodStyle : badStyle);
                }

                var newClip = (AudioClip)EditorGUILayout.ObjectField(null, typeof(AudioClip), false);

                EditorGUILayout.EndHorizontal();

                if (newClip != null)
                {
                    clips.Add(newClip);
                }

                conf.clips = clips;

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Volume:", hasClips ? goodStyle : badStyle);
                conf.volume = EditorGUILayout.Slider(conf.volume, 0, 1);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Random Pitch Offset (+/-):", hasClips ? goodStyle : badStyle);
                conf.randomPitchOffset = EditorGUILayout.Slider(conf.randomPitchOffset, 0, 10);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.Separator();
            }

            EditorGUILayout.LabelField("-- Music --", titlesStyle);
            EditorGUILayout.Separator();

            foreach (var music in Enum.GetValues(typeof(Music)))
            {
                if ((Music)music == Music.DontChange || (Music)music == Music.Silence || (Music)music == Music.Custom)
                {
                    continue;
                }

                MusicConfiguration conf = myTarget.GetMusicConfiguration((Music)music);

                if (conf == null)
                {
                    conf = new MusicConfiguration();

                    conf.music = (Music)music;
                }

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Music." + music.ToString(), conf.clip ? goodStyle : badStyle);
                conf.clip = (AudioClip)EditorGUILayout.ObjectField(conf.clip, typeof(AudioClip), false);
                EditorGUILayout.EndHorizontal();
                myTarget.UpdateMusicConfiguration(conf);
            }
        }
Ejemplo n.º 7
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifeTime, IndexMaintainer maintainer, MusicConfiguration musicConfiguration, ILogger <Startup> logger)
        {
            Logger = logger;

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            // Register the Swagger generator and the Swagger UI middlewares
            app.UseOpenApi();
            app.UseSwaggerUi3();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });

            // on exit
            // lifeTime.ApplicationStopping.Register(OnShutdown);
            AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;

            Maintainer = maintainer;

            if (!Maintainer.IndexExist())
            {
                Task.Run(async() =>
                {
                    await Maintainer.InitIndex(CancellationTokenSource.Token);
                });
            }

            Task.Run(async() =>
            {
                while (!CancellationTokenSource.Token.IsCancellationRequested)
                {
                    Logger.LogInformation("Auto SaveResults start, will run after {AutoSaveIndexSeconds} seconds", musicConfiguration.AutoSaveIndexSeconds);
                    await Task.Delay(musicConfiguration.AutoSaveIndexSeconds * 1000, CancellationTokenSource.Token);
                    Logger.LogInformation("Auto SaveResults start");
                    await Maintainer.SaveResults(CancellationTokenSource.Token);
                    Logger.LogInformation("Auto SaveResults finished");
                }
            }, CancellationTokenSource.Token);
        }
Ejemplo n.º 8
0
 public HomeController(ILogger <HomeController> logger, IOptions <MusicConfiguration> config)
 {
     this.log    = logger;
     this.config = config.Value;
 }
 public MusicController(MusicConfiguration musicConfiguration, ILogger <MusicController> logger)
 {
     this.musicConfiguration = musicConfiguration;
     this.logger             = logger;
 }