public void TestTryGet()
        {
            var dict = new Dictionary<int, string>
            {
                { 1, string.Empty },
                { 2, string.Empty },
                { 4, string.Empty },
            };

            var val1 = dict.TryGet(1);
            var val2 = dict.TryGet(2);
            var val3 = dict.TryGet(3);
            var val4 = dict.TryGet(4);

            Assert.IsNotNull(val1);
            Assert.IsNotNull(val2);
            Assert.IsNull(val3);
            Assert.IsNotNull(val4);
        }
Esempio n. 2
0
 protected void ReadDvbData(SQLiteDataReader r, IDictionary<string, int> field, DataRoot dataRoot, Dictionary<long, string> providers)
 {
     this.ShortName = DbSerializer.ReadUtf16(r, 16);
       this.RecordOrder = r.GetInt32(field["major"]);
       int serviceType = r.GetInt32(field["srvType"]);
       this.ServiceType = serviceType;
       this.SignalSource |= LookupData.Instance.IsRadioOrTv(serviceType);
       this.OriginalNetworkId = r.GetInt32(field["onid"]);
       this.TransportStreamId = r.GetInt32(field["tsid"]);
       this.ServiceId = r.GetInt32(field["progNum"]);
       this.VideoPid = r.GetInt32(field["vidPid"]);
       if (!r.IsDBNull(field["provId"]))
     this.Provider = providers.TryGet(r.GetInt64(field["provId"]));
 }
Esempio n. 3
0
        protected void ReadDvbData(SQLiteDataReader r, IDictionary <string, int> field, DbSerializer loader, Dictionary <long, string> providers)
        {
            this.ShortName   = loader.ReadUtf16(r, field["srvName"]);
            this.RecordOrder = r.GetInt32(field["major"]);
            int serviceType = r.GetInt32(field["srvType"]);

            this.ServiceType       = serviceType;
            this.SignalSource     |= LookupData.Instance.IsRadioTvOrData(serviceType);
            this.OriginalNetworkId = r.GetInt32(field["onid"]);
            this.TransportStreamId = r.GetInt32(field["tsid"]);
            this.ServiceId         = r.GetInt32(field["progNum"]);
            this.VideoPid          = r.GetInt32(field["vidPid"]);
            if (!r.IsDBNull(field["provId"]))
            {
                this.Provider = providers.TryGet(r.GetInt64(field["provId"]));
            }
            this.AddDebug(r.GetInt32(field["lcn"]).ToString());
        }
Esempio n. 4
0
        public void Publish(object message)
        {
            List <Type> types       = new List <Type>();
            var         currentType = message.GetType();

            do
            {
                types.Add(currentType);
            } while ((currentType = currentType.BaseType) != null);
            types.AddRange(message.GetType().GetInterfaces());

            var actions = new List <List <Action <object> > >();

            lock (_handlers)
            {
                types.ForEach(_ => _handlers.TryGet(_, actions.Add));
            }
            var invokeList = new List <Action <object> >();

            foreach (var action in actions)
            {
                lock (action)
                {
                    invokeList.AddRange(action);
                }
            }
            var errors = new List <Exception>();

            foreach (var invoke in invokeList)
            {
                try
                {
                    invoke(message);
                }
                catch (Exception e)
                {
                    errors.Add(e);
                }
            }
            foreach (var error in errors)
            {
                Publish(error);
            }
        }
        private List <Transaction> Reorder(List <Transaction> transactions)
        {
            if (transactions.Count == 0)
            {
                return(transactions);
            }

            var result = new List <Transaction>();
            Dictionary <uint256, TransactionNode> dictionary = transactions.ToDictionary(t => t.GetHash(), t => new TransactionNode(t));

            foreach (TransactionNode transaction in dictionary.Select(d => d.Value))
            {
                foreach (TxIn input in transaction.Transaction.Inputs)
                {
                    TransactionNode node = dictionary.TryGet(input.PrevOut.Hash);
                    if (node != null)
                    {
                        transaction.DependsOn.Add(node);
                    }
                }
            }

            while (dictionary.Count != 0)
            {
                foreach (TransactionNode node in dictionary.Select(d => d.Value).ToList())
                {
                    foreach (TransactionNode parent in node.DependsOn.ToList())
                    {
                        if (!dictionary.ContainsKey(parent.Hash))
                        {
                            node.DependsOn.Remove(parent);
                        }
                    }

                    if (node.DependsOn.Count == 0)
                    {
                        result.Add(node.Transaction);
                        dictionary.Remove(node.Hash);
                    }
                }
            }

            return(result);
        }
Esempio n. 6
0
        UIPlane CreateUI(UIType _type)
        {
            string path = _PathDictionary.TryGet(_type);

            if (path.Equals(""))
            {
                return(null);
            }

            UIPlane _temp = (GameObject.Instantiate(Resources.Load(path)) as GameObject).GetComponent <UIPlane>();

            _temp.transform.SetParent(_CanvasTransform, false);
            _PlaneDictionary.Add(_type, _temp);

            //清除路径
            _PathDictionary.Remove(_type);

            return(_temp);
        }
Esempio n. 7
0
 public IFormatProvider GetCurrencyProvider(string currency)
 {
     lock (_CurrencyProviders)
     {
         if (_CurrencyProviders.Count == 0)
         {
             foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => !c.IsNeutralCulture))
             {
                 try
                 {
                     _CurrencyProviders.TryAdd(new RegionInfo(culture.LCID).ISOCurrencySymbol, culture);
                 }
                 catch { }
             }
             AddCurrency(_CurrencyProviders, "BTC", 8, "BTC");
         }
         return(_CurrencyProviders.TryGet(currency));
     }
 }
Esempio n. 8
0
        /// <summary>
        /// 获取面板的游戏物体
        /// </summary>
        private GameObject GetPanelGO(UIPanelName panelName, string path)
        {
            GameObject instPanel = panelGODict.TryGet(panelName);


            if (instPanel == null)
            {
                GameObject res = ResMgr.Instance.GetRes <GameObject>(uiPrefabPath + panelName.ToString());
                instPanel      = GameObject.Instantiate(res) as GameObject;
                instPanel.name = panelName.ToString();
                panelGODict.Add(panelName, instPanel);
            }

            if (!currentScenePanelDict.ContainsKey(panelName))
            {
                currentScenePanelDict.Add(panelName, instPanel);
            }
            return(instPanel);
        }
Esempio n. 9
0
        private void AddReferenceType(IFile file, Dictionary <string, List <IFile> > referencesByName)
        {
            if (file == null)
            {
                return;
            }

            var list = referencesByName.TryGet(file.Name);

            if (list == null)
            {
                list = new List <IFile>();
                referencesByName[file.Name] = list;
            }

            if (!list.Any(l => l.FullName == file.FullName))
            {
                list.Add(file);
            }
        }
Esempio n. 10
0
        public static void Process(String input)
        {
            // Parse our input command and pass it on to the appropriate method.
            var data = input.Split(' ');

            Object[] arguments;
            if (data.Length > 1)
            {
                arguments = new Object[data.Length - 1];
                for (var i = 0; i < data.Length - 1; i++)
                {
                    arguments[i] = data[i + 1];
                }
            }
            else
            {
                arguments = new Object[0];
            }
            Commands.TryGet(data[0], (o) => { Logger.Write("Unknown Command."); })(arguments);
        }
Esempio n. 11
0
        public void Resolve()
        {
            Methods    = new Dictionary <CodeObject, Method>();
            Properties = new Dictionary <string, Property>();

            //Method
            foreach (var method in Objects.Where(obj =>
                                                 obj.ContextType == TjsContextType.TopLevel || obj.ContextType == TjsContextType.PropertyGetter ||
                                                 obj.ContextType == TjsContextType.PropertySetter || obj.ContextType == TjsContextType.Function ||
                                                 obj.ContextType == TjsContextType.ExprFunction))
            {
                Methods[method] = method.ResolveMethod();
            }

            //Property
            foreach (var prop in Objects.Where(obj => obj.ContextType == TjsContextType.Property))
            {
                Properties[prop.Name] = prop.ResolveProperty(Methods.TryGet(prop.Getter), Methods.TryGet(prop.Setter));
            }
        }
Esempio n. 12
0
    private BasePanel GetPanel(UIPanelType panelType)
    {
        if (panelDict == null)
        {
            panelDict = new Dictionary <UIPanelType, BasePanel>();
        }

        BasePanel panel = panelDict.TryGet(panelType);

        if (null == panel)
        {
            string     path      = panelPathDict.TryGet(panelType);
            GameObject instPanel = GameObject.Instantiate(Resources.Load(path)) as GameObject;
            instPanel.transform.SetParent(CanvasTransform, false);
            panel = instPanel.GetComponent <BasePanel>();
            panelDict.Add(panelType, panel);
        }

        return(panel);
    }
Esempio n. 13
0
        public static int?TryGetInt(this Dictionary <string, string> dict, string key)
        {
            string s = dict.TryGet(key);

            if (string.IsNullOrEmpty(s))
            {
                return(null);
            }

            int i;

            if (int.TryParse(s, out i))
            {
                return(i);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 14
0
        /*private static void TestCombined()
         * {
         *  var model = new TrainingModel<CsccContextInfo>(Combine());
         *  var trainingModel = new EvaluationModel(model.Contexts);
         *  Console.WriteLine(trainingModel.Evaluate());
         *  Console.ReadKey();
         * }*/

        private static Dictionary <string, List <ContextInfo> > Combine()
        {
            var directoryInfo = Directory.GetParent(Directory.GetCurrentDirectory()).Parent;

            if (directoryInfo == null)
            {
                return(null);
            }

            var applicationDirectory = directoryInfo.FullName;
            var modelDirectory       = Path.Combine(applicationDirectory, "ModelStorage");

            var combinedModel = new Dictionary <string, List <ContextInfo> >();

            var modelFiles = Directory.GetFiles(modelDirectory).Where(file => !file.EndsWith("_cscc") && !file.Equals("base"));

            foreach (var modelFile in modelFiles)
            {
                var model = ContextModel <ContextInfo> .Load(modelFile).Contexts;

                foreach (var type in model.Keys)
                {
                    List <ContextInfo> contexts = combinedModel.TryGet(type);

                    contexts.AddRange(model[type]);
                    combinedModel[type] = contexts;
                }
            }

            foreach (var type in combinedModel.Keys.ToList())
            {
                combinedModel[type] = new HashSet <ContextInfo>(combinedModel[type]).ToList();
            }

            var flatModel = combinedModel.ToList();

            flatModel.Sort((a, b) => b.Value.Count.CompareTo(a.Value.Count));
            var sortedTop = flatModel.Take(100);

            return(sortedTop.ToDictionary(kvp => kvp.Key, kvp => kvp.Value));
        }
Esempio n. 15
0
        Scene ISceneLoader.LoadScene(SceneID map, bool forceReload)
        {
            if (forceReload)
            {
                loadedScenes.Remove(map.ToString());
            }

            QuickGameScene ret = loadedScenes.TryGet(map.ToString());

            if (ret != null)
            {
                SetIntersceneActorPositions(ret);
                LastScene = ret;
                QuickGameScene.Current = ret;
                return(ret);
            }

            if (MasterTemplate == null)
            {
                MasterTemplate = new MapTemplate("map", new Vector2(16, 16));
            }

            if (map == Scenes.Intro)
            {
                return(new IntroScene());
            }

            ret = new QuickGameScene(map, MasterTemplate);

            SetIntersceneActorPositions(ret);

            DebugText.NewTextPosition = new Vector2(50, 50);
            LastScene = ret;

            if (!forceReload)
            {
                loadedScenes.Add(map.ToString(), ret);
            }

            return(ret);
        }
Esempio n. 16
0
    private BasePanel GetPanel(UIPanelType panelType)
    {
        BasePanel panel = panelDict.TryGet(panelType);

        if (panel == null)
        {
            string     path      = panelPathDict.TryGet(panelType);
            GameObject instPanel = GameObject.Instantiate(Resources.Load(path)) as GameObject;
            instPanel.transform.SetParent(CanvasTransform, false);
            panel        = instPanel.GetComponent <BasePanel>();
            panel.Facade = facade;
            panel.UIMng  = this;
            panel.OnEnter();
            panelDict.Add(panelType, instPanel.GetComponent <BasePanel>());
            return(instPanel.GetComponent <BasePanel>());
        }
        else
        {
            return(panel);
        }
    }
Esempio n. 17
0
    private BasePanel GetPanel(UIPanelType panelType)
    {
        if (panelDict == null)
        {
            panelDict = new Dictionary <UIPanelType, BasePanel>();
        }
        BasePanel panel = panelDict.TryGet(panelType);//使用扩展方法

        if (panel == null)
        { //如果找不到,那么就找这个面板的prefab的路径,然后根据prefab去实例化面板
            string     path      = panelPathDict.TryGet(panelType);
            GameObject instPanel = GameObject.Instantiate(Resources.Load(path)) as GameObject;
            instPanel.transform.SetParent(CanvasTransform, false);
            panelDict.Add(panelType, instPanel.transform.GetComponent <BasePanel>());
            return(instPanel.transform.GetComponent <BasePanel>());
        }
        else
        {
            return(panel);
        }
    }
Esempio n. 18
0
        public CardLocalization GetLocalization(Card card)
        {
            if (card.ForeignNames == null)
            {
                return(null);
            }

            var result = new CardLocalization();

            foreach (var name in card.ForeignNames)
            {
                var translation = _cardsByMultiverseIdByNumber.TryGet(name.MultiverseId)
                                  ?.TryGet(card.Number ?? string.Empty);

                if (translation != null)
                {
                    if (Str.Equals(translation.Type, card.TypeEn))
                    {
                        translation.Type = null;
                    }

                    if (Str.Equals(translation.Flavor, card.FlavorEn))
                    {
                        translation.Flavor = null;
                    }

                    if (Str.Equals(translation.Text, card.TextEn))
                    {
                        translation.Text = null;
                    }

                    if (translation.Text != null || translation.Type != null || translation.Flavor != null)
                    {
                        result.Add(card, name, translation);
                    }
                }
            }

            return(result);
        }
Esempio n. 19
0
        /// <summary>
        /// 根据面板类型得到实例化面板
        /// </summary>
        private IBasePanel GetPanel(UIPanelName panelName)
        {
            IBasePanel panel = panelDict.TryGet(panelName);

            if (panel == null)
            {
                //如果找不到 就实例
                UIPanelInfo pInfo = UIPanelHelper.GetPanelInfo(panelName);

                GameObject instPanel = GetPanelGO(panelName, pInfo.path);

                switch (pInfo.Layer)
                {
                case UILayer.Bottom:
                    instPanel.transform.SetParent(BGTransform, false);
                    break;

                case UILayer.Common:
                    instPanel.transform.SetParent(CommonTransform, false);
                    break;

                case UILayer.Top:
                    instPanel.transform.SetParent(TopTransform, false);
                    break;

                default:
                    Debug.LogError(pInfo.Name + "没有设置层级");
                    break;
                }
                instPanel.transform.SetParent(CommonTransform, false);
                instPanel.transform.ResetLocal();

                panel        = UIPanelHelper.GetPanelBusiness(panelName);
                panel.rootUI = instPanel;

                panelDict.Add(panelName, panel);
                panel.Init();
            }
            return(panel);
        }
Esempio n. 20
0
        /// <summary>
        /// Search for inheritance if available, and copy those properties over, then overwrite
        /// </summary>
        public static Dictionary <string, object> UpdateDefInheritance(Dictionary <string, object> defs, Dictionary <string, object> def)
        {
            var result = def;

            if (def.TryGet("inherit", out string inheritProp) &&
                !string.IsNullOrEmpty(inheritProp) &&
                defs.TryGet(inheritProp, out Dictionary <string, object> inheritDef))
            {
                result = UpdateDefInheritance(defs, inheritDef);

                // copy new keys over top
                foreach (var(key, value) in def)
                {
                    if (key != "inherit")
                    {
                        result[key] = value;
                    }
                }
            }

            return(result);
        }
Esempio n. 21
0
        void ButtonGenClick(object sender, EventArgs e)
        {
            var classText = string.Empty;
            var gen       = new List <string>();

            var dic = new Dictionary <string, string>();

            foreach (var x in _listBox.Items.Cast <ClassInfo>())
            {
                if (gen.Contains(x.Name))
                {
                    continue;
                }
                classText += GenerateClassDefine(x);
                classText += (Environment.NewLine + Environment.NewLine);
                var prop = GeneratePropertyDefine(x);
                dic[prop.Item1] = dic.TryGet(prop.Item1) + prop.Item2 + Environment.NewLine + Environment.NewLine;
                gen.Add(x.Name);
            }

            {
                var form = new Form();
                var text = new TextBox {
                    Multiline = true, Text = classText, Dock = DockStyle.Fill
                };
                form.Controls.Add(text);
                form.Show(this);
            }
            {
                var propertyText = string.Join(Environment.NewLine + Environment.NewLine + Environment.NewLine + Environment.NewLine,
                                               dic.Select(x => x.Value));
                var form = new Form();
                var text = new TextBox {
                    Multiline = true, Text = propertyText, Dock = DockStyle.Fill
                };
                form.Controls.Add(text);
                form.Show(this);
            }
        }
Esempio n. 22
0
    public BasePanel GetPanel(PanelType panelType)
    {
        if (PanelTypeByEnum == null)
        {
            PanelTypeByEnum = new Dictionary <PanelType, BasePanel>();
        }
        BasePanel panel = PanelTypeByEnum.TryGet(panelType);

        if (panel == null)
        {
            string     path      = PanelPathDict.TryGet(panelType);
            string     pathstr   = PanelPathDict.TryGet(panelType);
            GameObject instPanel = GameObject.Instantiate(Resources.Load(pathstr)) as GameObject;
            instPanel.transform.SetParent(CanvasTransform, false);
            PanelTypeByEnum.Add(panelType, instPanel.GetComponent <BasePanel>());
            return(instPanel.GetComponent <BasePanel>());
        }
        else
        {
            return(panel);
        }
    }
Esempio n. 23
0
        public void Hide(string panelName)
        {
            if (panelShowDict == null)
            {
                panelShowDict = new Dictionary <string, IBasePanel>();
            }

            if (panelShowDict.Count <= 0)
            {
                return;
            }

            IBasePanel panel = panelShowDict.TryGet(panelName);

            if (panel == null)
            {
                return;
            }

            panel.OnHide();
            panelShowDict.Remove(panelName);
        }
Esempio n. 24
0
    /// <summary>
    /// 创建面板并将其添加至面板字典中
    /// </summary>
    /// <param name="panelType">面板类型</param>
    /// <returns></returns>
    private BasePanel GetPanel(UIPanelType panelType)
    {
        if (panelDict == null)
        {
            panelDict = new Dictionary <UIPanelType, BasePanel>();
        }
        //BasePanel panel;
        //panelDict.TryGetValue(panelType, out panel);
        BasePanel panel = panelDict.TryGet(panelType);

        if (panel == null)
        {
            //string path;
            //panelPathDict.TryGetValue(panelType, out path);
            string     path      = panelPathDict.TryGet(panelType);
            GameObject instPanel = GameObject.Instantiate(Resources.Load(path)) as GameObject;
            instPanel.transform.SetParent(CanvasTransfrom, false);
            instPanel.GetComponent <BasePanel>().UIMng = this;
            panelDict.Add(panelType, instPanel.GetComponent <BasePanel>());
            panelDict.TryGetValue(panelType, out panel);
        }
        return(panel);
    }
        public IFormatProvider GetCurrencyProvider(string currency)
        {
            lock (_CurrencyProviders)
            {
                if (_CurrencyProviders.Count == 0)
                {
                    foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => !c.IsNeutralCulture))
                    {
                        try
                        {
                            _CurrencyProviders.TryAdd(new RegionInfo(culture.LCID).ISOCurrencySymbol, culture);
                        }
                        catch { }
                    }

                    foreach (var curr in _Currencies.Where(pair => pair.Value.Crypto))
                    {
                        AddCurrency(_CurrencyProviders, curr.Key, curr.Value.Divisibility, curr.Value.Symbol ?? curr.Value.Code);
                    }
                }
                return(_CurrencyProviders.TryGet(currency.ToUpperInvariant()));
            }
        }
Esempio n. 26
0
        public static bool IsVisible(EmailTemplateEntity et, EmailTemplateVisibleOn visibleOn)
        {
            if (et.Model == null)
            {
                return(visibleOn == EmailTemplateVisibleOn.Single);
            }

            if (EmailModelLogic.HasDefaultTemplateConstructor(et.Model))
            {
                return(false);
            }

            var entityType = EmailModelLogic.GetEntityType(et.Model.ToType());

            if (entityType.IsEntity())
            {
                return(visibleOn == EmailTemplateVisibleOn.Single);
            }

            var should = VisibleOnDictionary.TryGet(entityType, EmailTemplateVisibleOn.Single);

            return((should & visibleOn) != 0);
        }
Esempio n. 27
0
        public static Dictionary <string, List <CsccContextInfo> > CombineCscc()
        {
            var modelDirectory = GetModelDirectory();

            var combinedModel = new Dictionary <string, List <CsccContextInfo> >();

            var modelFiles = Directory.GetFiles(modelDirectory, "*_cscc").Where(file => !file.Equals("base_cscc") && !file.Equals("training_cscc"));

            foreach (var modelFile in modelFiles)
            {
                var model = ContextModel <CsccContextInfo> .Load(modelFile).Contexts;

                foreach (var type in model.Keys)
                {
                    var contexts = combinedModel.TryGet(type);

                    contexts.AddRange(new HashSet <CsccContextInfo>(model[type]));
                    combinedModel[type] = contexts;
                }
            }

            return(combinedModel);
        }
Esempio n. 28
0
    /// <summary>
    /// 通过界面类型来获取一个界面对象
    /// </summary>
    /// <param name="type"></param>
    /// <returns></returns>
    public BasePanel GetPanel(UIPanelType type)
    {
        if (panelDict == null)
        {
            panelDict = new Dictionary <UIPanelType, BasePanel>();
        }

        BasePanel panel = panelDict.TryGet(type);

        //若还未生成此界面
        if (panel == null)
        {
            //根据该界面类型从字典里获取实例化的路径
            string     path = panelPathDict.TryGet(type);
            GameObject go   = GameObject.Instantiate(Resources.Load(path) as GameObject);
            //添加到画布下,不维持世界坐标
            go.transform.SetParent(CanvasTransform, false);
            panel = go.GetComponent <BasePanel>();
            //添加到字典中
            panelDict.Add(type, panel);
        }
        return(panel);
    }
Esempio n. 29
0
        public static bool IsVisible(WordTemplateEntity wt, WordTemplateVisibleOn visibleOn)
        {
            if (wt.SystemWordTemplate == null)
            {
                return(visibleOn == WordTemplateVisibleOn.Single);
            }

            if (SystemWordTemplateLogic.HasDefaultTemplateConstructor(wt.SystemWordTemplate))
            {
                return(false);
            }

            var entityType = SystemWordTemplateLogic.GetEntityType(wt.SystemWordTemplate.ToType());

            if (entityType.IsEntity())
            {
                return(visibleOn == WordTemplateVisibleOn.Single);
            }

            var should = VisibleOnDictionary.TryGet(entityType, WordTemplateVisibleOn.Single);

            return((should & visibleOn) != 0);
        }
Esempio n. 30
0
        public IFormatProvider GetCurrencyProvider(string currency)
        {
            lock (_CurrencyProviders)
            {
                if (_CurrencyProviders.Count == 0)
                {
                    foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => !c.IsNeutralCulture))
                    {
                        try
                        {
                            _CurrencyProviders.TryAdd(new RegionInfo(culture.LCID).ISOCurrencySymbol, culture);
                        }
                        catch { }
                    }

                    foreach (var network in new BTCPayNetworkProvider(NetworkType.Mainnet).GetAll())
                    {
                        AddCurrency(_CurrencyProviders, network.CryptoCode, 8, network.CryptoCode);
                    }
                }
                return(_CurrencyProviders.TryGet(currency));
            }
        }
Esempio n. 31
0
    /// <summary>
    /// 根据面板类型得到实例化的面板
    ///     字典 panelDict 里有就直接获取,没有就创建
    /// </summary>
    /// <param name="panelType"></param>
    /// <returns></returns>
    private BasePanel GetPanel(UIPanelType panelType)
    {
        // 初始化字典
        if (panelDict == null)
        {
            panelDict = new Dictionary <UIPanelType, BasePanel>();
        }

        BasePanel panel = panelDict.TryGet(panelType);

        // 如果找不到,就找这个面板 Prefab 的路径,然后利用 Resources 加载 Prefab 去实例化面板
        if (panel == null)
        {
            string     path     = panelPathDict.TryGet(panelType);                            // 得到面板对应的路径
            GameObject insPanel = GameObject.Instantiate(Resources.Load(path)) as GameObject; // 根据路径,实例化面板
            insPanel.transform.SetParent(CanvasTransform, false);                             // 放在 Canvas 下面

            // 判断键是否存在
            if (panelDict.ContainsKey(panelType))
            {
                // 若存在则直接修改 value 值
                panelDict[panelType] = insPanel.GetComponent <BasePanel>();
            }
            else
            {
                // 不存在,放在面板字典里
                panelDict.Add(panelType, insPanel.GetComponent <BasePanel>());
            }

            return(insPanel.GetComponent <BasePanel>()); // 返回刚刚实例化的面板
        }
        else // 从字典里找到了,直接返回
        {
            return(panel);
        }
    }
Esempio n. 32
0
    /// <summary>
    /// 根据面板类型得到实例化面板
    /// </summary>
    /// <returns></returns>
    private BasePanel GetPanel(UIPanelType panelType)
    {
        if (_panelDic == null)
        {
            _panelDic = new Dictionary <UIPanelType, BasePanel>();
        }
        BasePanel panel = _panelDic.TryGet(panelType);

        if (panel == null)
        {
            PanelInfo  info      = _panelPathDic.TryGet(panelType);
            GameObject instPanel = GameObject.Instantiate(Resources.Load(info.path), CanvasTransform, false) as GameObject;
            instPanel.name = instPanel.name.Replace("(Clone)", "");
            if (instPanel.GetComponent <CanvasGroup>() == null)
            {
                instPanel.AddComponent <CanvasGroup>();
            }
            // instPanel.transform.SetParent(CanvasTransform, false);
            //BasePanel p = (BasePanel)Assembly.Load(info.className).CreateInstance(info.className);
            Assembly assem = Assembly.GetAssembly(typeof(BasePanel));

            foreach (Type tChild in assem.GetTypes())
            {
                if (tChild.Name.Equals(info.className))
                {
                    object[] param = new object[1];
                    param[0] = instPanel;
                    tChild.GetMethod("Init").Invoke(this, param);
                }
            }
            _panelDic.Add(panelType, instPanel.GetComponent <BasePanel>());
            panel = instPanel.GetComponent <BasePanel>();
            panel.OnInit();
        }
        return(panel);
    }
Esempio n. 33
0
      private void btnExtract_Click(object sender, EventArgs e) {
         this.DispatchToBackground(() => {
            var A = new List<AnalyzedActivity>();
            using (var dbConn = DatabaseManager.DbConn()) {

               A.AddRange(dbConn.ExecuteBpl(new TelemetryVehicleActivityGetAll()).Select(a => new AnalyzedActivity { Activity = a }));
               _report("Activities: {0}", A.Count);

               for (var i = 0; i < A.Count; i++) {
                  var a = A[i];
                  a.StartMeters = dbConn.ExecuteBpl(new TelemetryVehicleActivityMetersGetByActivityIdType { ActivityId = a.Activity.ActivityId, RecordType = VehicleMetersRecordType.StartMeters });
                  a.FinishMeters = dbConn.ExecuteBpl(new TelemetryVehicleActivityMetersGetByActivityIdType { ActivityId = a.Activity.ActivityId, RecordType = VehicleMetersRecordType.FinishMeters });
               }
               A.RemoveAll(a => a.Activity.ActivityType != VehicleMode.Driving || (a.FinishMeters.Odometer - a.StartMeters.Odometer) < (Distance)10);
               _report("Usable driving activities: {0}", A.Count);

               var AA = A.ToDictionary(a => a.Activity.ActivityId.ToString(false));

               var T = dbConn.ExecuteBpl(new TelemetryGetAll());
               _report("Records: {0}", T.Count);

               var TT = new Dictionary<string, VehicleTelemetry>();
               for (var i = 0; i < T.Count; i++) {
                  var dbt = T[i];
                  if (!dbt.Telemetry.IsManaged) continue;

                  var a = AA.TryGet(dbt.Telemetry.ActivityId.ToString(false));
                  if (a == null) continue;

                  var t = TT.TryGet(dbt.TelemetryId.ToString(false));
                  if (t == null) {
                     t = dbt.Telemetry;
                     a.Telemetry.Add(t);
                     TT.Add(dbt.TelemetryId.ToString(false), t);
                  }
                  t.FutureDrivingSteps.Add(dbt.Step);
               }
            }
            A.RemoveAll(a => a.Telemetry.Count == 0);
            _report("Usable planned driving Activities: {0}", A.Count);

            // fix: all key in DB are 0 due to client bug in 2.9.7 (fixed in 2.9.8)
            foreach (var a in A) {
               // Log.Info("Activity: {0}, {1} records", a.Activity.ActivityId, a.Telemetry.Count);
               var lastDta = Distance.Undefined;
               var lastIndex = -1;
               var firstStepKey = -1;
               foreach (var t in a.Telemetry) {
                  // Log.Info("     #{0} | {1} | Planned:{2} | {3} - O:{4}, S:{5}, i:{6}", t.RecordNo, t.TimeStamp, t.IsManaged, t.RecordType, t.Odometer, t.Battery.Soc, t.DrivingSegmentIndex);
                  var stepCount = t.FutureDrivingSteps.Count;
                  if (stepCount == 0) {
                     lastDta = Distance.Undefined;
                     lastIndex = -1;
                     firstStepKey = -1;
                     continue;
                  }

                  if (t.RecordType == TelemetryRecordType.DrivingPlanChanged || firstStepKey == -1 || lastIndex == -1) {
                     lastDta = t.FutureDrivingSteps[0].Dta;
                     lastIndex = t.DrivingSegmentIndex;
                     firstStepKey = (int)Distance.ToMeters(t.FutureDrivingSteps[0].Dta);
                  }

                  // fix rule is: 
                  // - if index is 0, plan may change, so unless dDistance is 0 or very small - assume plan change
                  // - if index dropped (from X to 0) - assume plan change
                  // - some times index is dropped, but a bit later, so look at large dDistance change, as a fallback
                  //   (this is heuristics, but this is the best possible one, even though it's not precise - it's helpful sometimes)
                  // - distance in meters used as a key, to fight cases with round-trip route where two steps have very similar distance (in meters - it will be different)
                  //
                  var dta = t.FutureDrivingSteps[0].Dta;
                  var index = t.DrivingSegmentIndex;
                  var ddta = (dta - lastDta).Abs();
                  var dindex = (index - lastIndex);
                  if ((index == 0 && ddta < (Distance)0.5) || dindex < 0 || ddta > (Distance)2) {
                     firstStepKey = (int)Distance.ToMeters(t.FutureDrivingSteps[0].Dta);
                  }
                  lastDta = dta;
                  lastIndex = index;

                  t.FutureDrivingSteps[0].Key = firstStepKey;
                  for (var i = 1; i < t.FutureDrivingSteps.Count; i++) {
                     t.FutureDrivingSteps[i].Key = (int)Distance.ToMeters(t.FutureDrivingSteps[i].Dta);
                  }
                  /*
                  var str = "";
                  foreach (var s in t.FutureDrivingSteps) {
                     str += "{0,7:#.000} | {1,6}, ".Substitute((double)s.Dta, s.Key);
                  }
                  Log.Info("         {0}", str);
                  */
               }
            }
            _report("Key fix applied");

            _report("Saving extracted activities");
            _activitiesList = new AnalyzedActivityList();
            _activitiesList.Activities.AddRange(A);
            var formatter = BplXmlFormatter.Minimal;
            formatter.Format(_activitiesList);
            var xml = formatter.Output;
            File.WriteAllText("extracted.bpl", xml);
            _report("Extracting done");
         });
      }
Esempio n. 34
0
        private void ReadAnalogChannels(ZipFile zip, string fileName, ChannelList list, out byte[] data, Dictionary<int,decimal> freq)
        {
            data = null;
              int entrySize = c.avbtChannelLength;
              if (entrySize == 0)
            return;

              data = ReadFileContent(zip, fileName);
              if (data == null)
            return;

              this.DataRoot.AddChannelList(list);
              var rawChannel = analogMappings.GetMapping(entrySize);
              list.MaxChannelNameLength = rawChannel.Settings.GetInt("lenName")/2;
              rawChannel.SetDataPtr(data, 0);
              int count = data.Length / entrySize;

              for (int slotIndex = 0; slotIndex < count; slotIndex++)
              {
            MapAnalogChannel(rawChannel, slotIndex, list, freq.TryGet(slotIndex));
            rawChannel.BaseOffset += entrySize;
              }
        }