Esempio n. 1
0
        static void ShowFolderInfo(CustomFolderInfo item)  //ShowFolderInfo - метод, показывающий информацию о папках
        {
            item.PrintFolderInfo();                        //item - текущая позиция курсора. Каждый раз вызываем функцию PrintFolderinfo

            ConsoleKeyInfo pressedKey = Console.ReadKey(); //считывает нажатые клавиши

            if (pressedKey.Key == ConsoleKey.UpArrow)      //если пользователь нажал вверх, то текущий индекс уменьшается
            {
                item.DecreaseIndex();
                ShowFolderInfo(item);    //снова вызываем этот метод для папки с текущий индексом
            }
            else if (pressedKey.Key == ConsoleKey.DownArrow)
            {
                item.IncreaseIndex();        //если пользователь нажал вниз, то индекс возрастае, снова вызываем метод ShowFolderInfo рекурсивно
                ShowFolderInfo(item);
            }
            else if (pressedKey.Key == ConsoleKey.Enter) //если пользователь нажал Enter, то создаем новый item и переходим к его папкам(переходим к след элементам
            {
                CustomFolderInfo newItem = item.GetNextItem();
                ShowFolderInfo(newItem);                  //вызываем метод, показывающий списов папок
            }
            else if (pressedKey.Key == ConsoleKey.Escape) //если пользователь ввел Escape, то возвращаемся к предыдущему списку
            {
                CustomFolderInfo newItem = item.GetPrevItem();
                ShowFolderInfo(newItem);
            }
        }
Esempio n. 2
0
        public override void LoadNestedItems(object[] objectsToLoad = null)
        {
            CustomFolderInfo parent = null;

            AddFolder <CustomLevelFolderInfo>("Easy Day", null, NestedItems, ref parent);
            CustomFolderInfo easyDayFolder = NestedItems.FirstOrDefault(x => x.GetName() == "\\Easy Day" && x.GetPath() == null) as CustomFolderInfo;

            parent = null;

            CustomFolderInfo modIoFolder = null;
            var modIoMaps = LevelManager.Instance.ModLevels.Any(x => x.path.IsSubPathOf(PluginSettings.INSTALLATION_DIRECTORY));

            if (modIoMaps)
            {
                AddFolder <CustomLevelFolderInfo>("mod.io", null, NestedItems, ref parent);
                modIoFolder = NestedItems.FirstOrDefault(x => x.GetName() == "\\mod.io" && x.GetPath() == null) as CustomFolderInfo;
            }

            foreach (var level in LevelManager.Instance.ModLevels)
            {
                AddLevel(level, easyDayFolder, modIoFolder, ref parent);
            }

            parent = null;
            foreach (var level in LevelManager.Instance.CommunityLevels)
            {
                AddLevel(level, easyDayFolder, modIoFolder, ref parent);
            }

            NestedItems = SortList(NestedItems);
        }
Esempio n. 3
0
        public void LoadNestedHairItems(GearInfo[] objectsToLoad = null)
        {
            NestedOfficialItems.Clear();

            var gearToLoad = (GearInfo[])objectsToLoad;

            if (gearToLoad == null)
            {
                return;
            }

            foreach (var gear in gearToLoad)
            {
                CustomFolderInfo parent = null;

                var nameSplit = gear.name.Split(' ');

                if (string.IsNullOrEmpty(nameSplit.FirstOrDefault()))
                {
                    continue;
                }

                var hairStyle = nameSplit.FirstOrDefault();

                if (hairStyle.ToLower() == "long" || hairStyle.ToLower() == "short" || hairStyle.ToLower() == "curly")
                {
                    hairStyle = $"{hairStyle} {nameSplit[1]}";
                }

                AddFolder <CustomGearFolderInfo>(hairStyle, null, NestedOfficialItems, ref parent);
                AddItem(gear, parent.Children, ref parent);
            }

            NestedOfficialItems = SortList(NestedOfficialItems);
        }
Esempio n. 4
0
        public CustomGearFolderInfo(string name, string path, CustomFolderInfo parent) : base(name, "Folder", true, new string[] {})
        {
            Info = new CustomFolderInfo(name, path, parent)
            {
                ParentObject = this
            };

            if (name != "..\\")
            {
                var backFolder = FolderInfo.Children.First();
                backFolder.ParentObject = new CustomGearFolderInfo("..\\", backFolder.GetPath(), parent);
            }
        }
Esempio n. 5
0
        public CustomLevelFolderInfo(string name, string path, CustomFolderInfo parent) : base(path, false)
        {
            this.name = name;
            this.path = path;

            FolderInfo = new CustomFolderInfo(name, path, parent)
            {
                ParentObject = this
            };

            if (name != "..\\")
            {
                var backFolder = FolderInfo.Children.First();
                backFolder.ParentObject = new CustomLevelFolderInfo("..\\", backFolder.GetPath(), parent);
            }
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            CustomFolderInfo test = new CustomFolderInfo(null, 0, new DirectoryInfo(@"C:\").GetDirectories()); //изначально список папок пуст, 0 индекс, отображаем папки с методом GetDirectories, который показывает все папки

            Console.CursorVisible = false;                                                                     //сделать курсор невидимым)
            ShowFolderInfo(test);

            DirectoryInfo dr = new DirectoryInfo("C:\\Python27"); //отображает файлы в папке питон

            FileSystemInfo[] list = dr.GetFileSystemInfos();      //GetFileSystemInfos - отображает не только папки, но и файлы.

            for (int i = 0; i < list.Length; i++)
            {
                Console.WriteLine(list[i]);
            }
            Console.ReadKey();
        }
Esempio n. 7
0
 public CustomLevelInfo(LevelInfo level, CustomFolderInfo parent) : this(level)
 {
     Info.Parent = parent;
 }
Esempio n. 8
0
            DirectoryInfo[] dirs;                                                                    //DirectoryInfo - предоставляет методы экземпляра класса для создания, перемещения и перечисления в каталогах и подкаталогах

            public CustomFolderInfo(CustomFolderInfo prev, int index, DirectoryInfo[] directoryInfo) //конструктор с параметрами предыдущая папка, индекс текущей папки и информация о каталогах
            {
                this.prev  = prev;
                this.index = index;
                this.dirs  = directoryInfo;
            }
Esempio n. 9
0
        private void AddLevel(LevelInfo level, CustomFolderInfo easyDayFolder, CustomFolderInfo modIoFolder, ref CustomFolderInfo parent)
        {
            if (string.IsNullOrEmpty(level.path))
            {
                return;
            }

            var extension = Path.GetExtension(level.path).ToLower();

            if (extension == ".zip" || extension == ".rar" || extension == ".json")
            {
                return;
            }

            if (!level.isAssetBundle)
            {
                AddItem(level, easyDayFolder.Children, ref easyDayFolder);
                return;
            }

            if (level.path.IsSubPathOf(PluginSettings.INSTALLATION_DIRECTORY))
            {
                AddItem(level, modIoFolder.Children, ref modIoFolder);
                return;
            }

            string levelSubPath = level.path.Replace(SaveManager.Instance.CustomLevelsDir + '\\', string.Empty);

            if (string.IsNullOrEmpty(levelSubPath))
            {
                return;
            }

            var folders = levelSubPath.Split('\\').ToList();

            if (!folders.Any())
            {
                return;
            }

            parent = null;
            if (folders.Count == 1)
            {
                // This level is at the root
                AddItem(LevelManager.Instance.LevelInfoForPath(level.path), NestedItems, ref parent);
                return;
            }

            parent = null;
            var folderPath = SaveManager.Instance.CustomLevelsDir;

            for (int i = 0; i < folders.Count; i++)
            {
                var folder = folders.ElementAt(i);
                if (folder == null)
                {
                    continue;
                }

                if (folder == folders.Last())
                {
                    AddItem(LevelManager.Instance.LevelInfoForPath(level.path), parent == null ? NestedItems : parent.Children, ref parent);
                }
                else
                {
                    folderPath = Path.Combine(folderPath, folder);
                    AddFolder <CustomLevelFolderInfo>(folder, folderPath, parent == null ? NestedItems : parent.Children, ref parent);
                }
            }
        }
Esempio n. 10
0
        public void LoadNestedOfficialItems(GearInfo[] gearToLoad = null)
        {
            NestedOfficialItems.Clear();

            if (gearToLoad == null)
            {
                return;
            }

            List <string> unbrandedItems = new List <string>
            {
                #region Decks
                "Tie Dye Light",
                "Skater XL Obstacles Deck",
                #endregion

                #region Grip
                "Black",
                "Camo Grey",
                "Easy Day Logo",
                #endregion

                #region Trucks
                "Black",
                "Silver",
                "White",
                #endregion

                #region Wheels
                "Purple",
                "Red/Blue Swirl",
                "White",
                #endregion
            };

            CustomFolderInfo parent = null;

            var easyDayItemsExist = gearToLoad.Any(x =>
                                                   x.name.StartsWith("Blank") ||
                                                   x.name.StartsWith("Unbranded") ||
                                                   x.name.StartsWith("Denim") ||
                                                   unbrandedItems.Contains(x.name));

            if (easyDayItemsExist)
            {
                AddFolder <CustomGearFolderInfo>("Easy Day", null, NestedOfficialItems, ref parent);
            }

            parent = null;

            var easyDayFolder = NestedOfficialItems.FirstOrDefault(x => x.GetName() == "\\Easy Day" && x.GetPath() == null) as CustomFolderInfo;

            foreach (var gear in gearToLoad)
            {
                parent = null;

                if (gear.name.StartsWith("Blank") || gear.name.StartsWith("Unbranded") || gear.name.StartsWith("Denim") || unbrandedItems.Contains(gear.name))
                {
                    AddItem(gear, easyDayFolder.Children, ref easyDayFolder);
                }
                else
                {
                    var nameSplit = gear.name.Split(' ');

                    if (string.IsNullOrEmpty(nameSplit.FirstOrDefault()))
                    {
                        continue;
                    }

                    var brand = nameSplit.FirstOrDefault();

                    if (brand == "Old" || brand == "New" || brand == "Santa" || brand == "Grimple")
                    {
                        brand = $"{nameSplit[0]} {nameSplit[1]}";
                    }
                    else if (brand == "The")
                    {
                        brand = $"{nameSplit[0]} {nameSplit[1]} {nameSplit[2]}";
                    }
                    else if (brand == "TWS")
                    {
                        brand = "Transworld";
                    }

                    AddFolder <CustomGearFolderInfo>(brand, null, NestedOfficialItems, ref parent);
                    AddItem(gear, parent.Children, ref parent);
                }
            }

            NestedOfficialItems = SortList(NestedOfficialItems);
        }
Esempio n. 11
0
        public override void LoadNestedItems(object[] objectsToLoad = null)
        {
            var gearToLoad = (GearInfo[])objectsToLoad;

            if (gearToLoad == null)
            {
                return;
            }

            if (LastLoaded != null && LastLoaded == gearToLoad)
            {
                return;
            }

            LastLoaded = gearToLoad;
            NestedItems.Clear();

            CustomFolderInfo modIoFolder = null;

            foreach (var gear in gearToLoad)
            {
                GearInfo      newGear       = null;
                TextureChange textureChange = null;

                if (gear is GearInfoSingleMaterial singleMaterialGear)
                {
                    textureChange = singleMaterialGear?.textureChanges?.FirstOrDefault();
                    newGear       = singleMaterialGear;
                }
                else if (gear is CharacterBodyInfo characterBodyInfo)
                {
                    var materialChange = characterBodyInfo.materialChanges.FirstOrDefault();
                    textureChange = materialChange?.textureChanges?.FirstOrDefault();
                    newGear       = characterBodyInfo;
                }

                if (textureChange == null || string.IsNullOrEmpty(textureChange.texturePath))
                {
                    continue;
                }

                var isGearFolder = textureChange.texturePath.IsSubPathOf(SaveManager.Instance.CustomGearDir);
                var isModIo      = textureChange.texturePath.IsSubPathOf(PluginSettings.INSTALLATION_DIRECTORY);

                CustomFolderInfo parent = null;
                if (isModIo)
                {
                    AddFolder <CustomGearFolderInfo>("mod.io", null, NestedItems, ref parent);
                    modIoFolder = NestedItems.FirstOrDefault(x => x.GetName() == "\\mod.io" && x.GetPath() == null) as CustomFolderInfo;

                    var mod = InstalledGearMods.FirstOrDefault(x => textureChange.texturePath.IsSubPathOf(x.Key));

                    AddFolder <CustomGearFolderInfo>(mod.Value, null, modIoFolder.Children, ref parent);
                    AddItem(newGear, parent.Children, ref modIoFolder);

                    continue;
                }

                if (!isGearFolder && !isModIo)
                {
                    continue;
                }

                string textureSubPath = string.Empty;
                string folderPath     = string.Empty;

                if (isGearFolder)
                {
                    textureSubPath = textureChange.texturePath.Replace(SaveManager.Instance.CustomGearDir + '\\', string.Empty);
                    folderPath     = SaveManager.Instance.CustomGearDir;
                }
                else if (isModIo)
                {
                    textureSubPath = textureChange.texturePath.Replace(PluginSettings.INSTALLATION_DIRECTORY + '\\', string.Empty);
                    folderPath     = PluginSettings.INSTALLATION_DIRECTORY;
                }

                if (string.IsNullOrEmpty(textureSubPath) || string.IsNullOrEmpty(folderPath))
                {
                    continue;
                }

                var folders = textureSubPath.Split('\\').ToList();
                if (!folders.Any())
                {
                    continue;
                }

                parent = null;
                if (folders.Count == 1 || IsImage(folders.First()))
                {
                    // This gear item is at the root.
                    AddItem(newGear, NestedItems, ref parent);
                    continue;
                }

                parent = null;

                foreach (var folder in folders)
                {
                    if (IsImage(folder))
                    {
                        AddItem(newGear, parent == null ? NestedItems : parent.Children, ref parent);
                    }
                    else
                    {
                        folderPath = Path.Combine(folderPath, folder);
                        AddFolder <CustomGearFolderInfo>(folder, folderPath, parent == null ? NestedItems : parent.Children, ref parent);
                    }
                }
            }

            NestedItems = SortList(NestedItems);
        }