Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetResourceData()

void System.Resources.ResourceReader.GetResourceData ( string resourceName,
out string resourceType,
out byte[] resourceData )
inline

Definition at line 245 of file ResourceReader.cs.

246 {
247 if (resourceName == null)
248 {
249 throw new ArgumentNullException("resourceName");
250 }
251 if (_resCache == null)
252 {
253 throw new InvalidOperationException(SR.ResourceReaderIsClosed);
254 }
255 int[] array = new int[_numResources];
257 if (num == -1)
258 {
259 throw new ArgumentException(SR.Format(SR.Arg_ResourceNameNotExist, resourceName));
260 }
261 lock (this)
262 {
263 for (int i = 0; i < _numResources; i++)
264 {
265 _store.BaseStream.Position = _nameSectionOffset + GetNamePosition(i);
267 if (num2 < 0)
268 {
269 throw new FormatException(SR.Format(SR.BadImageFormat_ResourcesNameInvalidOffset, num2));
270 }
271 _store.BaseStream.Position += num2;
272 int num3 = _store.ReadInt32();
274 {
275 throw new FormatException(SR.Format(SR.BadImageFormat_ResourcesDataInvalidOffset, num3));
276 }
277 array[i] = num3;
278 }
279 Array.Sort(array);
280 int num4 = Array.BinarySearch(array, num);
281 long num5 = ((num4 < _numResources - 1) ? (array[num4 + 1] + _dataSectionOffset) : _store.BaseStream.Length);
282 int num6 = (int)(num5 - (num + _dataSectionOffset));
283 _store.BaseStream.Position = _dataSectionOffset + num;
285 if (resourceTypeCode < ResourceTypeCode.Null || (int)resourceTypeCode >= 64 + _typeTable.Length)
286 {
287 throw new BadImageFormatException(SR.BadImageFormat_InvalidType);
288 }
290 num6 -= (int)(_store.BaseStream.Position - (_dataSectionOffset + num));
291 byte[] array2 = _store.ReadBytes(num6);
292 if (array2.Length != num6)
293 {
294 throw new FormatException(SR.BadImageFormat_ResourceNameCorrupted);
295 }
297 }
298 }
virtual int ReadInt32()
virtual Stream BaseStream
virtual byte[] ReadBytes(int count)
unsafe int GetNamePosition(int index)
string TypeNameFromTypeCode(ResourceTypeCode typeCode)
Dictionary< string, ResourceLocator > _resCache

References System.Resources.ResourceReader._dataSectionOffset, System.Resources.ResourceReader._nameSectionOffset, System.Resources.ResourceReader._numResources, System.Resources.ResourceReader._resCache, System.Resources.ResourceReader._store, System.Resources.ResourceReader._typeTable, System.SR.Arg_ResourceNameNotExist, System.array, System.SR.BadImageFormat_InvalidType, System.SR.BadImageFormat_ResourceNameCorrupted, System.SR.BadImageFormat_ResourcesDataInvalidOffset, System.SR.BadImageFormat_ResourcesNameInvalidOffset, System.IO.BinaryReader.BaseStream, System.Array.BinarySearch(), System.Resources.ResourceReader.FindPosForResource(), System.SR.Format(), System.Resources.ResourceReader.GetNamePosition(), System.IO.BinaryReader.Read7BitEncodedInt(), System.IO.BinaryReader.ReadBytes(), System.IO.BinaryReader.ReadInt32(), System.SR.ResourceReaderIsClosed, System.Array.Sort(), and System.Resources.ResourceReader.TypeNameFromTypeCode().