コード例 #1
0
        public FilteredGameDataSource(SaveFile sav, GameDataSource source, bool HaX = false)
        {
            Source  = source;
            Species = GetFilteredSpecies(sav, source, HaX).ToList();
            Moves   = GetFilteredMoves(sav, source, HaX).ToList();
            if (sav.Generation > 1)
            {
                var items = Source.GetItemDataSource(sav.Version, sav.Generation, sav.HeldItems, HaX);
                items.RemoveAll(i => i.Value > sav.MaxItemID);
                Items = items;
            }
            else
            {
                Items = Array.Empty <ComboItem>();
            }

            var gamelist = GameUtil.GetVersionsWithinRange(sav, sav.Generation).ToList();

            Games = Source.VersionDataSource.Where(g => gamelist.Contains((GameVersion)g.Value)).ToList();

            Languages = GameDataSource.LanguageDataSource(sav.Generation);
            Balls     = Source.BallDataSource.Where(b => b.Value <= sav.MaxBallID).ToList();
            Abilities = Source.AbilityDataSource.Where(a => a.Value <= sav.MaxAbilityID).ToList();

            G4GroundTiles = Source.GroundTileDataSource;
            Natures       = Source.NatureDataSource;
        }
コード例 #2
0
        public FilteredGameDataSource(SaveFile sav, GameDataSource source, bool HaX = false)
        {
            Source = source;
            if (sav.Generation > 1)
            {
                var items = Source.GetItemDataSource(sav.Version, sav.Generation, sav.MaxItemID, sav.HeldItems, HaX);
                Items = items.Where(i => i.Value <= sav.MaxItemID).ToList();
            }
            else
            {
                Items = Array.Empty <ComboItem>();
            }

            var gamelist = GameUtil.GetVersionsWithinRange(sav, sav.Generation).ToList();

            Games = Source.VersionDataSource.Where(g => gamelist.Contains((GameVersion)g.Value)).ToList();

            Languages = GameDataSource.LanguageDataSource(sav.Generation);
            Balls     = Source.BallDataSource.Where(b => b.Value <= sav.MaxBallID).ToList();
            Species   = Source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID).ToList();
            Abilities = Source.AbilityDataSource.Where(a => a.Value <= sav.MaxAbilityID).ToList();

            var moves = HaX ? Source.HaXMoveDataSource : Source.LegalMoveDataSource; // Filter Z-Moves if appropriate

            Moves            = moves.Where(m => m.Value <= sav.MaxMoveID).ToList();
            G4EncounterTypes = Source.EncounterTypeDataSource;
            Natures          = Source.NatureDataSource;
        }
コード例 #3
0
        private static IEnumerable <ComboItem> GetFilteredMoves(IGameValueLimit sav, GameDataSource source, bool HaX = false)
        {
            if (HaX)
            {
                return(source.HaXMoveDataSource.Where(m => m.Value <= sav.MaxMoveID));
            }

            var legal = source.LegalMoveDataSource;

            switch (sav)
            {
            case SAV7b _:     // LGPE: Not all moves are available
                return(legal.Where(s => Legal.AllowedMovesGG.Contains((short)s.Value)));

            default:
                return(legal.Where(m => m.Value <= sav.MaxMoveID));
            }
        }
コード例 #4
0
        private static IEnumerable <ComboItem> GetFilteredSpecies(IGameValueLimit sav, GameDataSource source, bool HaX = false)
        {
            if (HaX)
            {
                return(source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID));
            }

            // Some games cannot acquire every Species that exists. Some can only acquire a subset.
            return(sav switch
            {
                SAV7b => source.SpeciesDataSource // LGPE: Kanto 151, Meltan/Melmetal
                .Where(s => s.Value is <= (int)Core.Species.Mew or(int) Core.Species.Meltan or(int) Core.Species.Melmetal),
                _ => source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID),
            });
コード例 #5
0
        private static IEnumerable <ComboItem> GetFilteredSpecies(IGameValueLimit sav, GameDataSource source, bool HaX = false)
        {
            if (HaX)
            {
                return(source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID));
            }

            // Games cannot acquire every Species that exists. Some can only acquire a subset.
            switch (sav)
            {
            case SAV7b _:     // LGPE: Kanto 151, Meltan/Melmetal
                return(source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID &&
                                                      (s.Value <= (int)Core.Species.Mew || s.Value >= (int)Core.Species.Meltan)));

            default:
                return(source.SpeciesDataSource.Where(s => s.Value <= sav.MaxSpeciesID));
            }
        }