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); }