Пример #1
0
        public override async Task Initialize()
        {
            ResetSelected.Enabled = false;
            IoC.Notif.ShowUnknownProgress();

            IoC.Notif.ShowStatus("Loading outfit list...");
            DefaultOutfits = (await OutfitGen.GenerateOutfits(
                                  IoC.Archiver.LoadGameFileAsync)).ToHashSet();

            //some outfits, like undergarments, are never used in game by the player and only create problems if switched
            var ignored = IoC.Get <OutfitConfig>().IgnoredOutfits.ToHashSet();

            Outfits = DefaultOutfits
                      .Where(x => !ignored.Contains(x.Name))
                      .Select(x => x.Clone()).OrderBy(x => x.DisplayName)
                      .ToList().AsReadOnly();

            PopulateOutfitsList();

            await UpdateModelList();

            UpdateAllOutfitsSelection();

            //start loading characters in background
            Async.Run(() => CharacterGen.GetCharacterModels(true)).Forget();
        }
Пример #2
0
        public override void ApplyChanges(Patch patch)
        {
            var models = OutfitGen.GenerateModelList(IoC.Archiver.LoadGameFile);

            models.AddRange(CharacterGen.GetCharacterModels(true));

            Patcher.CreatePatch(patch, DefaultOutfits.ToList(), Outfits, models);
        }
Пример #3
0
        private IEnumerable <Model> LoadOutfitModelList()
        {
            IoC.Notif.ShowStatus("Loading models list...");
            var models = OutfitGen.GenerateModelList(IoC.Archiver.LoadGameFile);

            //sort models to match outfits
            var outfitSorting = Outfits.Select((x, i) => (x, i)).ToSoftDictionary(x => x.x.ModelId, x => x.i);

            return(models.OrderBy(x => outfitSorting.TryGetValue(x.Id, out var sort) ? sort : int.MaxValue));
        }
Пример #4
0
        public override async Task LoadPatch(string path)
        {
            IoC.Notif.ShowStatus("Loading outfits...");

            var patchOutfits = await OutfitGen.GenerateOutfits(f =>
                                                               IoC.Archiver.LoadFileAsync(path, f));

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

            await Initialize();

            var loadedOutfits  = patchOutfits.ToHashSet();
            var variantMapping = await CharacterGen.GetVariantMapping(path, OutfitGen);

            LoadOutfits(loadedOutfits, variantMapping);

            RefreshOutfitList();
        }