Esempio n. 1
0
        public static Asset <TValue> Add <TValue>(Asset <TValue> value, bool replace = true)
        {
            Type type = value.GetType();

            try {
                if (LookupDictionary.ContainsKey(type))
                {
                    LookupDictionary[type].Add(value.ID, value, replace);
                }
                else
                {
                    AssetDictionary <TValue> assetDict = new AssetDictionary <TValue>();
                    assetDict.Add(value.ID, value, replace);
                    LookupDictionary.Add(type, assetDict);
                }
            } catch (ArgumentNullException e) {
                if (Screen.IsFullHeadless)
                {
                    throw new HeadlessNotSupportedException("Cannot add asset of type '" + type + "' while in fully headless display mode.", e);
                }
            }
            return(value);
        }
 public SkillImpactSystem()
 {
     Enum.GetValues(typeof(ImpactType)).Cast <ImpactType>().ForEach(impact => assetLib.Add(impact.ToString(), null));
 }
Esempio n. 3
0
        private async Task GetAllSymbols()
        {
            using (var client = new BinanceClient())
            {
                var result = await client.GetAllPricesAsync();

                if (result.Success)
                {
                    AllPrices = new ObservableCollection <BinanceSymbolViewModel>(result.Data.Select(r => new BinanceSymbolViewModel(r.Symbol, r.Price)).OrderBy(s => s.SymbolCurrency).ThenBy(s => s.SymbolAsset).ToList());

                    foreach (var price in AllPrices)
                    {
                        if (CurrencyDictionary.ContainsKey(price.SymbolCurrency))
                        {
                            if (!CurrencyDictionary[price.SymbolCurrency].Contains(price.SymbolAsset))
                            {
                                CurrencyDictionary[price.SymbolCurrency].Add(price.SymbolAsset);
                            }
                        }
                        else
                        {
                            CurrencyDictionary.Add(price.SymbolCurrency, new ObservableCollection <string> {
                                price.SymbolAsset
                            });
                        }

                        if (AssetDictionary.ContainsKey(price.SymbolAsset))
                        {
                            if (!AssetDictionary[price.SymbolAsset].Contains(price.SymbolCurrency))
                            {
                                AssetDictionary[price.SymbolAsset].Add(price.SymbolCurrency);
                            }
                        }
                        else
                        {
                            AssetDictionary.Add(price.SymbolAsset, new ObservableCollection <string> {
                                price.SymbolCurrency
                            });
                        }
                    }

                    var cdKeys = CurrencyDictionary.Keys.ToList();
                    var adKeys = AssetDictionary.Keys.ToList();
                    for (int k = 0; k < cdKeys.Count; k++)
                    {
                        CurrencyDictionary[cdKeys[k]] = new ObservableCollection <string>(CurrencyDictionary[cdKeys[k]].OrderBy(v => v));
                    }
                    for (int k = 0; k < adKeys.Count; k++)
                    {
                        AssetDictionary[adKeys[k]] = new ObservableCollection <string>(AssetDictionary[adKeys[k]].OrderBy(v => v));
                    }
                }
                else
                {
                    messageBoxService.ShowMessage($"Error getting all symbols data.\n{result.Error.Message}", $"Error Code: {result.Error.Code}", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }

            List <Task> tasks = new List <Task>();

            foreach (var symbol in AllPrices)
            {
                var task = new Task(() => binanceSocketClient.SubscribeToKlineStream(symbol.Symbol.ToLower(), KlineInterval.OneMinute, (data) =>
                {
                    symbol.Price = data.Data.Close;
                }));
                tasks.Add(task);
                task.Start();
            }
            Task.WaitAll(tasks.ToArray());
        }