示例#1
0
 public bool Matches(Level lev)
 {
     return(Title.IsMatch(lev.Title) && Lgr.IsMatch(lev.LgrFile) &&
            GroundTexture.IsMatch(lev.GroundTextureName) && SkyTexture.IsMatch(lev.SkyTextureName) &&
            (lev.Top10.SinglePlayer.Count == 0 ||
             lev.Top10.SinglePlayer.Any(e => SinglePlayerNick.IsMatch(e.PlayerA))) &&
            (lev.Top10.MultiPlayer.Count == 0 || lev.Top10.MultiPlayer.Any(e =>
                                                                           MultiPlayerNick.IsMatch(e.PlayerA) || MultiPlayerNick.IsMatch(e.PlayerB))) &&
            SingleTop10Times.Accepts(lev.Top10.SinglePlayer.Count) &&
            MultiTop10Times.Accepts(lev.Top10.MultiPlayer.Count) &&
            (lev.Top10.SinglePlayer.Count == 0 ||
             SinglePlayerBestTime.Accepts(lev.Top10.SinglePlayer[0].TimeInSecs)) &&
            (lev.Top10.MultiPlayer.Count == 0 ||
             MultiPlayerBestTime.Accepts(lev.Top10.MultiPlayer[0].TimeInSecs)) &&
            GrassPolygons.Accepts(lev.GrassPolygonCount) &&
            GroundPolygons.Accepts(lev.GroundPolygonCount) &&
            GroundVertices.Accepts(lev.GroundVertexCount) &&
            GrassVertices.Accepts(lev.GrassVertexCount) &&
            Killers.Accepts(lev.KillerObjectCount) &&
            Flowers.Accepts(lev.ExitObjectCount) &&
            Pictures.Accepts(lev.PictureCount) &&
            Textures.Accepts(lev.TextureCount) &&
            Apples.Accepts(lev.AppleObjectCount) &&
            GravApples.All(kv => kv.Value.Accepts(lev.GetGravityAppleCount(kv.Key))) &&
            Date.Accepts(lev.DateModified) &&
            (AcrossLev == BoolOption.Dontcare || !(AcrossLev == BoolOption.True ^ lev.IsAcrossLevel)) &&
            Size.Accepts(lev.Size));
 }
        /// <summary>
        ///   Determines whether the search parameters match the given replay.
        /// </summary>
        /// <param name = "r">Replay to check.</param>
        /// <returns>True if the search parameters match this replay.</returns>
        internal bool Matches(Replay r)
        {
            bool levOk = Check(LevExists, r.LevelExists) && Check(WrongLev, r.WrongLevelVersion) &&
                         Check(AcrossLev, r.AcrossLevel) && LevFilenameMatcher.IsMatch(r.LevelFilename);
            bool recOk = Check(InternalRec, r.IsInternal) && Check(Finished, r.Finished) &&
                         Check(MultiPlayer, r.IsMulti) &&
                         Date.Accepts(r.DateModified) && Time.Accepts(r.Time) && Size.Accepts(r.Size);
            bool playersOk = P1Bounds.Matches(r.Player1) && (!r.IsMulti || P2Bounds.Matches(r.Player2));

            return(levOk && recOk && playersOk);
        }