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

◆ _ReadResources()

unsafe void System.Resources.ResourceReader._ReadResources ( )
inlineprivate

Definition at line 857 of file ResourceReader.cs.

858 {
859 int num = _store.ReadInt32();
860 if (num != ResourceManager.MagicNumber)
861 {
862 throw new ArgumentException(SR.Resources_StreamNotValid);
863 }
864 int num2 = _store.ReadInt32();
865 int num3 = _store.ReadInt32();
866 if (num3 < 0 || num2 < 0)
867 {
868 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
869 }
870 if (num2 > 1)
871 {
872 _store.BaseStream.Seek(num3, SeekOrigin.Current);
873 }
874 else
875 {
876 string text = _store.ReadString();
878 {
879 throw new NotSupportedException(SR.Format(SR.NotSupported_WrongResourceReader_Type, text));
880 }
881 SkipString();
882 }
883 int num4 = _store.ReadInt32();
884 if (num4 != 2 && num4 != 1)
885 {
886 throw new ArgumentException(SR.Format(SR.Arg_ResourceFileUnsupportedVersion, 2, num4));
887 }
888 _version = num4;
890 if (_numResources < 0)
891 {
892 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
893 }
894 int num5 = _store.ReadInt32();
895 if (num5 < 0)
896 {
897 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
898 }
899 _typeTable = new Type[num5];
900 _typeNamePositions = new int[num5];
901 for (int i = 0; i < num5; i++)
902 {
903 _typeNamePositions[i] = (int)_store.BaseStream.Position;
904 SkipString();
905 }
906 long position = _store.BaseStream.Position;
907 int num6 = (int)position & 7;
908 if (num6 != 0)
909 {
910 for (int j = 0; j < 8 - num6; j++)
911 {
913 }
914 }
915 if (_ums == null)
916 {
917 _nameHashes = new int[_numResources];
918 for (int k = 0; k < _numResources; k++)
919 {
921 }
922 }
923 else
924 {
925 int num7 = 4 * _numResources;
926 if (num7 < 0)
927 {
928 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
929 }
931 _ums.Seek(num7, SeekOrigin.Current);
933 }
934 if (_ums == null)
935 {
936 _namePositions = new int[_numResources];
937 for (int l = 0; l < _numResources; l++)
938 {
939 int num8 = _store.ReadInt32();
940 if (num8 < 0)
941 {
942 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
943 }
945 }
946 }
947 else
948 {
949 int num9 = 4 * _numResources;
950 if (num9 < 0)
951 {
952 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
953 }
955 _ums.Seek(num9, SeekOrigin.Current);
957 }
959 if (_dataSectionOffset < 0)
960 {
961 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
962 }
965 {
966 throw new BadImageFormatException(SR.BadImageFormat_ResourcesHeaderCorrupted);
967 }
968 }
virtual byte ReadByte()
virtual string ReadString()
virtual int ReadInt32()
virtual Stream BaseStream
override long Seek(long offset, SeekOrigin loc)
static bool ValidateReaderType(string readerType)

References System.Resources.ResourceReader._dataSectionOffset, System.Resources.ResourceReader._nameHashes, System.Resources.ResourceReader._nameHashesPtr, System.Resources.ResourceReader._namePositions, System.Resources.ResourceReader._namePositionsPtr, System.Resources.ResourceReader._nameSectionOffset, System.Resources.ResourceReader._numResources, System.Resources.ResourceReader._store, System.Resources.ResourceReader._typeNamePositions, System.Resources.ResourceReader._typeTable, System.Resources.ResourceReader._ums, System.Resources.ResourceReader._version, System.SR.Arg_ResourceFileUnsupportedVersion, System.SR.BadImageFormat_ResourcesHeaderCorrupted, System.IO.BinaryReader.BaseStream, System.SR.Format(), System.Resources.ResourceManager.MagicNumber, System.SR.NotSupported_WrongResourceReader_Type, System.IO.UnmanagedMemoryStream.PositionPointer, System.IO.BinaryReader.ReadByte(), System.IO.BinaryReader.ReadInt32(), System.IO.BinaryReader.ReadString(), System.SR.Resources_StreamNotValid, System.IO.UnmanagedMemoryStream.Seek(), System.Resources.ResourceReader.SkipString(), System.text, and System.Resources.ResourceReader.ValidateReaderType().

Referenced by System.Resources.ResourceReader.ReadResources().