Ejemplo n.º 1
0
        private static async Task Broadcast(string type, IJsonObject value, bool useDuringCatchup, bool onlySaveLatestForCatchup)
        {
            // Broadcast to client
            await _socketHandler.Broadcast(new WebSocketMessage(type, value.ToJson()), WebSocketType.Client, useDuringCatchup, onlySaveLatestForCatchup);

            // Broadcast to frontend
            await _socketHandler.Broadcast(new WebSocketMessage(type, value.ToJson()), WebSocketType.FrontEnd, useDuringCatchup, onlySaveLatestForCatchup);

            // Broadcast to plugin
            if (new [] { "Event", "Cargo", "Modules", "Outfitting", "Shipyard", "Status", "NavRoute", "Backpack", "Market" }.Contains(type))
            {
                var variables = _variableService.GetVariables(value);
                var name      = type;
                if (type != "Event")
                {
                    variables = variables.Select(x => new Variable($"{type}.{x.Name.Replace(".Value", "")}", x.Value, x.Type)).ToList();
                }
                else
                {
                    name      = variables.First(x => x.Name == "Event").Value.ToString();
                    variables = variables.Select(x => new Variable($"{name}.{x.Name.Replace(".Value", "")}", x.Value, x.Type)).ToList();
                }

                await _socketHandler.Broadcast(new WebSocketMessage(type, new Models.Event(name, variables)), WebSocketType.Plugin, useDuringCatchup, onlySaveLatestForCatchup);

                //await _socketHandler.Broadcast(new WebSocketMessage($"{type}-plugin", variables), WebSocketType.FrontEnd, useDuringCatchup, onlySaveLatestForCatchup);
            }
            else
            {
                await _socketHandler.Broadcast(new WebSocketMessage(type, value), WebSocketType.Plugin, useDuringCatchup, onlySaveLatestForCatchup);
            }
        }
Ejemplo n.º 2
0
        public static async Task Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            _api              = host.Services.GetRequiredService <IEliteDangerousApi>();
            _socketHandler    = host.Services.GetRequiredService <WebSocketHandler>();
            _variableService  = host.Services.GetRequiredService <VariablesService>();
            _eliteVaInstaller = host.Services.GetRequiredService <EliteVaInstaller>();
            _log              = host.Services.GetRequiredService <ILogger <Program> >();

            await _api.InitializeAsync();

            // Sub to events
            _api.Events.AllEvent += async(sender, e) => await Broadcast("Event", e, true, false);

            // Sub to statuses
            _api.Cargo.OnChange += async(sender, e) => await Broadcast("Cargo", _api.Cargo, true, true);

            _api.Market.OnChange += async(sender, e) => await Broadcast("Market", _api.Market, true, true);

            _api.Modules.OnChange += async(sender, e) => await Broadcast("Modules", _api.Modules, true, true);

            _api.Outfitting.OnChange += async(sender, e) => await Broadcast("Outfitting", _api.Outfitting, true, true);

            _api.Shipyard.OnChange += async(sender, e) => await Broadcast("Shipyard", _api.Shipyard, true, true);

            _api.Ship.OnChange += async(sender, e) => await Broadcast("Status", _api.Ship, true, true);

            _api.NavRoute.OnChange += async(sender, e) => await Broadcast("NavRoute", _api.NavRoute, true, true);

            _api.Backpack.OnChange += async(sender, e) => await Broadcast("Backpack", _api.Backpack, true, true);

            // Sub to options
            _api.Bindings.OnChange += async(sender, e) => await _socketHandler.Broadcast(new WebSocketMessage("Bindings", RemoveLineEndings(_api.Bindings.ToXml())), true, true);

            // Send userprofile
            await _socketHandler.Broadcast(new WebSocketMessage("UserProfile", UserProfile.Get()), true, true);

            // Send latest eliteva version
            await _socketHandler.Broadcast(new WebSocketMessage("EliteVA.Latest", await _eliteVaInstaller.GetLatestVersion()), true, true);

            await _api.StartAsync();

            await host.RunAsync();
        }