internal override IntArrayList GetMatchingResources(out bool sortedById) { sortedById = false; IntArrayList result = null; for (int i = 0; i < _resTypeIds.Length; i++) { ResourceListPredicate basePredicate = new ResourceTypePredicate(_resTypeIds [i]); ResourceListPredicate cachedPredicate = MyPalStorage.Storage.GetCachedPredicate(basePredicate); bool tempSortedById = false; object syncObject = null; IntArrayList tempResult; if (cachedPredicate != null) { tempResult = cachedPredicate.GetSortedMatchingResourcesRef(out syncObject); } else { tempResult = basePredicate.GetMatchingResources(out tempSortedById); syncObject = null; } if (result == null) { if (syncObject == null) { result = tempResult; } else { lock ( syncObject ) { result = (IntArrayList)tempResult.Clone(); } } } else { if (syncObject == null) { result.AddRange(tempResult); } else { lock ( syncObject ) { result.AddRange(tempResult); } } } } if (result == null) { result = new IntArrayList(); } return(result); }
public override bool Equals(object obj) { if (Object.ReferenceEquals(this, obj)) { return(true); } ResourceTypePredicate rhs = obj as ResourceTypePredicate; if (rhs == null) { return(false); } return(_resTypeId == rhs._resTypeId); }