public void LoadModShapes()
        {
            Parallel.ForEach(Directory.GetFiles(PathLookup.Transform(Path.Combine(this.ModFolderPath, "Objects", "Database", "ShapeSets"))),
                             shapeListFilePath =>
            {
                if (IsValidShapeListPath(shapeListFilePath))
                {
                    try
                    {
                        var partListData = JsonConvert.DeserializeObject <PartListData>(File.ReadAllText(shapeListFilePath));

                        PartLoader.LoadShapes(partListData, this);

                        if (partListData.PartList != null)
                        {
                            foreach (var part in partListData.PartList)
                            {
                                this.partUuids.Add(part.Uuid);
                            }
                        }
                        if (partListData.BlockList != null)
                        {
                            foreach (var block in partListData.BlockList)
                            {
                                this.partUuids.Add(block.Uuid);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Debug.LogException(new Exception($"\nAn error occurred when trying to load mod data", e));
                    }
                }
            });
        }
Esempio n. 2
0
        private PathResolver()
        {
            FindAppdataPath();
            FindPaths();
            ValidateAndCorrectPaths();

            scrapDataPath      = Path.Combine(scrapMechanicPath, "Data");
            scrapSurvivalPath  = Path.Combine(scrapMechanicPath, "Survival");
            scrapChallengePath = Path.Combine(scrapMechanicPath, "ChallengeData");
            CollectWorkshopModPaths();

            string upgradeFilePath = PathLookup.Transform(Resolve(GameController.Instance.upgradeResourcesPath));

            upgradeResolver = new UpgradeResolver(upgradeFilePath);
        }
        public static void LoadLanguageFiles(string languageFolderPath)
        {
            try
            {
                // Debug.Log($"Loading Language files {DateTime.Now:O}"); too much logging
                languageFolderPath = Path.Combine(languageFolderPath, "English");
                languageFolderPath = PathLookup.Transform(languageFolderPath);
                if (!Directory.Exists(languageFolderPath))
                {
                    return;
                }

                foreach (string languageFile in Directory.GetFiles(languageFolderPath))
                {
                    if (Path.GetExtension(languageFile).ToLower() != ".json" || !languageFile.ToLower().Contains("inventory"))
                    {
                        continue;
                    }

                    string       text         = File.ReadAllText(languageFile);
                    LanguageData languageData = JsonConvert.DeserializeObject <LanguageData>(text);

                    if (languageData == null)
                    {
                        continue;
                    }
                    foreach (var languageKV in languageData)
                    {
                        string key         = languageKV.Key;
                        var    translation = languageKV.Value;
                        translations.TryAdd(key, translation);
                        Shape shape = loadedShapes.FirstOrDefault(shapeKV => shapeKV.Key == key).Value;
                        if (shape != null)
                        {
                            shape.translation = translation;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Debug.LogException(new Exception($"\nCould not load translation data in {languageFolderPath}", e));
            }
        }
        public void LoadVanilla(string basePath)
        {
            string shapeSetFilePath = PathLookup.Transform(Path.Combine(basePath, "Objects/Database/shapesets.json"));

            var shapeSets = JsonConvert.DeserializeObject <ShapeSetListData>(File.ReadAllText(shapeSetFilePath));

            Parallel.ForEach(shapeSets.ShapeSetList,
                             partListPath =>
            {
                var partListFilePath = PathResolver.ResolvePath(partListPath);
                try
                {
                    var partListData = JsonConvert.DeserializeObject <PartListData>(File.ReadAllText(partListFilePath));
                    LoadShapes(partListData);
                }
                catch (Exception e)
                {
                    Debug.LogException(new Exception($"\nCould not load vanilla partlist/blocklist", e));
                }
            });
            LoadLanguageFiles(Path.Combine(basePath, "Gui/Language"));
        }
 public static bool IsValidModPath(string modPath) =>
 File.Exists(Path.Combine(modPath, "description.json")) &&
 Directory.Exists(PathLookup.Transform(Path.Combine(modPath, "Objects", "Database", "ShapeSets")));
Esempio n. 6
0
 public static string ResolvePath(string path, string parentPath = null)
 {
     path = Instance.Resolve(path, parentPath);
     return(PathLookup.Transform(path));
 }