Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
BinaryArray.cs
Go to the documentation of this file.
2
3internal sealed class BinaryArray : IStreamable
4{
5 internal int _objectId;
6
7 internal int _rank;
8
9 internal int[] _lengthA;
10
11 internal int[] _lowerBoundA;
12
14
15 internal object _typeInformation;
16
17 internal int _assemId;
18
20
22
23 internal BinaryArray()
24 {
25 }
26
31
33 {
36 _rank = rank;
44 {
45 switch (binaryTypeEnum)
46 {
47 case BinaryTypeEnum.Primitive:
48 _binaryHeaderEnum = BinaryHeaderEnum.ArraySinglePrimitive;
49 break;
50 case BinaryTypeEnum.String:
51 _binaryHeaderEnum = BinaryHeaderEnum.ArraySingleString;
52 break;
53 case BinaryTypeEnum.Object:
54 _binaryHeaderEnum = BinaryHeaderEnum.ArraySingleObject;
55 break;
56 }
57 }
58 }
59
61 {
62 switch (_binaryHeaderEnum)
63 {
64 case BinaryHeaderEnum.ArraySinglePrimitive:
65 output.WriteByte((byte)_binaryHeaderEnum);
66 output.WriteInt32(_objectId);
67 output.WriteInt32(_lengthA[0]);
69 return;
70 case BinaryHeaderEnum.ArraySingleString:
71 output.WriteByte((byte)_binaryHeaderEnum);
72 output.WriteInt32(_objectId);
73 output.WriteInt32(_lengthA[0]);
74 return;
75 case BinaryHeaderEnum.ArraySingleObject:
76 output.WriteByte((byte)_binaryHeaderEnum);
77 output.WriteInt32(_objectId);
78 output.WriteInt32(_lengthA[0]);
79 return;
80 }
81 output.WriteByte((byte)_binaryHeaderEnum);
82 output.WriteInt32(_objectId);
83 output.WriteByte((byte)_binaryArrayTypeEnum);
84 output.WriteInt32(_rank);
85 for (int i = 0; i < _rank; i++)
86 {
87 output.WriteInt32(_lengthA[i]);
88 }
90 {
91 for (int j = 0; j < _rank; j++)
92 {
93 output.WriteInt32(_lowerBoundA[j]);
94 }
95 }
96 output.WriteByte((byte)_binaryTypeEnum);
98 }
99
101 {
102 switch (_binaryHeaderEnum)
103 {
104 case BinaryHeaderEnum.ArraySinglePrimitive:
105 _objectId = input.ReadInt32();
106 _lengthA = new int[1];
107 _lengthA[0] = input.ReadInt32();
109 _rank = 1;
110 _lowerBoundA = new int[_rank];
113 return;
114 case BinaryHeaderEnum.ArraySingleString:
115 _objectId = input.ReadInt32();
116 _lengthA = new int[1];
117 _lengthA[0] = input.ReadInt32();
119 _rank = 1;
120 _lowerBoundA = new int[_rank];
122 _typeInformation = null;
123 return;
124 case BinaryHeaderEnum.ArraySingleObject:
125 _objectId = input.ReadInt32();
126 _lengthA = new int[1];
127 _lengthA[0] = input.ReadInt32();
129 _rank = 1;
130 _lowerBoundA = new int[_rank];
132 _typeInformation = null;
133 return;
134 }
135 _objectId = input.ReadInt32();
137 _rank = input.ReadInt32();
138 _lengthA = new int[_rank];
139 _lowerBoundA = new int[_rank];
140 for (int i = 0; i < _rank; i++)
141 {
142 _lengthA[i] = input.ReadInt32();
143 }
145 {
146 for (int j = 0; j < _rank; j++)
147 {
148 _lowerBoundA[j] = input.ReadInt32();
149 }
150 }
153 }
154}
void Set(int objectId, int rank, int[] lengthA, int[] lowerBoundA, BinaryTypeEnum binaryTypeEnum, object typeInformation, BinaryArrayTypeEnum binaryArrayTypeEnum, int assemId)
static object ReadTypeInfo(BinaryTypeEnum binaryTypeEnum, BinaryParser input, out int assemId)
static void WriteTypeInfo(BinaryTypeEnum binaryTypeEnum, object typeInformation, int assemId, BinaryFormatterWriter output)