예제 #1
0
        public void TestMethodCsConfigFindAttribute()
        {
            var ecf = new ConfigEcfAccess();

            ecf.ReadConfigEcf(@"C:\steamcmd\empyrion\Content", null, null, null);

            Assert.IsNotNull(ecf.FindAttribute(2248, "Mass"));
            Assert.IsNotNull(ecf.FindAttribute(2248, "StackSize"));
        }
예제 #2
0
        public void TestMethodReadItemsInfo()
        {
            var ecf = new ConfigEcfAccess();

            ecf.ReadConfigEcf(@"C:\steamcmd\empyrion\Content", null, null, null);
            var localization = new Localization(@"C:\steamcmd\empyrion\Content", null);
            var items        = new ItemInfos(ecf, localization).ItemInfo;

            Assert.IsTrue(items.Count() > 0);
        }
예제 #3
0
        private void ScanTemplates(ConfigEcfAccess config, EcfBlock templateRootBlock, Dictionary <int, int> ressList)
        {
            var templateName = templateRootBlock.Attr.FirstOrDefault(A => A.Name == "Name")?.Value.ToString();

            bool.TryParse(templateRootBlock.Attr.FirstOrDefault(A => A.Name == "BaseItem")?.Value.ToString(), out var isBaseItem);

            templateRootBlock.Childs?
            .FirstOrDefault(C => C.Key == "Child Inputs").Value?.Attr?
            .ForEach(C => {
                if (C.Name.ToString() == templateName)
                {
                    return;
                }

                if (!isBaseItem && config.FlatConfigTemplatesByName.TryGetValue(C.Name.ToString(), out var recipe))
                {
                    bool.TryParse(recipe.Attr.FirstOrDefault(A => A.Name == "BaseItem")?.Value.ToString(), out var isSubBaseItem);
                    if (!isSubBaseItem)
                    {
                        ScanTemplates(config, recipe, ressList);
                        return;
                    }
                }

                if (!config.FlatConfigBlockByName.TryGetValue(C.Name.ToString(), out var ressource))
                {
                    return;
                }
                if (!int.TryParse(ressource.Attr.FirstOrDefault(A => A.Name == "Id")?.Value.ToString(), out var ressId))
                {
                    return;
                }

                if (ressList.TryGetValue(ressId, out var count))
                {
                    ressList[ressId] = count + (int)C.Value;
                }
                else
                {
                    ressList.Add(ressId, (int)C.Value);
                }
            });
        }
예제 #4
0
        public void TestMethodConfigTemplates()
        {
            var config = new ConfigEcfAccess();

            //config.ReadConfigEcf(@"C:\steamcmd\empyrion\Content", null, null, null);
            config.ReadConfigEcf(@"C:\steamcmd\empyrion\Content", "Reforged Eden", @"C:\steamcmd\empyrion.server\Saves\Games\Default\blocksmap.dat", null);
            var templates = new Dictionary <int, Dictionary <int, int> >();

            config.FlatConfigBlockById
            .ForEach(B => {
                var idCfg = B.Value.Attr.FirstOrDefault(A => A.Name == "Id");
                if (!int.TryParse(idCfg?.Value?.ToString(), out var id))
                {
                    return;
                }

                var ressList     = new Dictionary <int, int>();
                var templateRoot = B.Value.Attr.FirstOrDefault(A => A.Name == "TemplateRoot")?.Value?.ToString() ??
                                   idCfg.AddOns?.FirstOrDefault(A => A.Key == "Name").Value?.ToString();
                if (string.IsNullOrEmpty(templateRoot))
                {
                    return;
                }
                if (!config.FlatConfigTemplatesByName.TryGetValue(templateRoot, out var templateRootBlock))
                {
                    return;
                }

                ScanTemplates(config, templateRootBlock, ressList);

                if (ressList.Count > 0)
                {
                    templates.Add(id, ressList);
                }
            });

            Console.WriteLine(templates.Count);
        }