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

◆ Initialize()

static void Terraria.Minecart.Initialize ( )
inlinestatic

Definition at line 91 of file Minecart.cs.

92 {
93 if (!Main.dedServ && (float)TextureAssets.MinecartMount.Width() != 50f)
94 {
95 throw new Exception("Be sure to update Minecart.textureWidth to match the actual texture size of " + 50f + ".");
96 }
97 _rightSideConnection = new int[36];
98 _leftSideConnection = new int[36];
99 _trackType = new int[36];
100 _boostLeft = new bool[36];
101 _texturePosition = new Vector2[40];
102 _tileHeight = new int[36][];
103 for (int i = 0; i < 36; i++)
104 {
105 int[] array = new int[8];
106 for (int j = 0; j < array.Length; j++)
107 {
108 array[j] = 5;
109 }
111 }
112 int num = 0;
113 _leftSideConnection[num] = -1;
114 _rightSideConnection[num] = -1;
115 _tileHeight[num][0] = -4;
116 _tileHeight[num][7] = -4;
117 _texturePosition[num] = new Vector2(0f, 0f);
118 num++;
119 _leftSideConnection[num] = 1;
120 _rightSideConnection[num] = 1;
121 _texturePosition[num] = new Vector2(1f, 0f);
122 num++;
123 _leftSideConnection[num] = -1;
124 _rightSideConnection[num] = 1;
125 for (int k = 0; k < 4; k++)
126 {
127 _tileHeight[num][k] = -1;
128 }
129 _texturePosition[num] = new Vector2(2f, 1f);
130 num++;
131 _leftSideConnection[num] = 1;
132 _rightSideConnection[num] = -1;
133 for (int l = 4; l < 8; l++)
134 {
135 _tileHeight[num][l] = -1;
136 }
137 _texturePosition[num] = new Vector2(3f, 1f);
138 num++;
139 _leftSideConnection[num] = 2;
140 _rightSideConnection[num] = 1;
141 _tileHeight[num][0] = 1;
142 _tileHeight[num][1] = 2;
143 _tileHeight[num][2] = 3;
144 _tileHeight[num][3] = 3;
145 _tileHeight[num][4] = 4;
146 _tileHeight[num][5] = 4;
147 _texturePosition[num] = new Vector2(0f, 2f);
148 num++;
149 _leftSideConnection[num] = 1;
150 _rightSideConnection[num] = 2;
151 _tileHeight[num][2] = 4;
152 _tileHeight[num][3] = 4;
153 _tileHeight[num][4] = 3;
154 _tileHeight[num][5] = 3;
155 _tileHeight[num][6] = 2;
156 _tileHeight[num][7] = 1;
157 _texturePosition[num] = new Vector2(1f, 2f);
158 num++;
159 _leftSideConnection[num] = 1;
160 _rightSideConnection[num] = 0;
161 _tileHeight[num][4] = 6;
162 _tileHeight[num][5] = 6;
163 _tileHeight[num][6] = 7;
164 _tileHeight[num][7] = 8;
165 _texturePosition[num] = new Vector2(0f, 1f);
166 num++;
167 _leftSideConnection[num] = 0;
168 _rightSideConnection[num] = 1;
169 _tileHeight[num][0] = 8;
170 _tileHeight[num][1] = 7;
171 _tileHeight[num][2] = 6;
172 _tileHeight[num][3] = 6;
173 _texturePosition[num] = new Vector2(1f, 1f);
174 num++;
175 _leftSideConnection[num] = 0;
176 _rightSideConnection[num] = 2;
177 for (int m = 0; m < 8; m++)
178 {
179 _tileHeight[num][m] = 8 - m;
180 }
181 _texturePosition[num] = new Vector2(0f, 3f);
182 num++;
183 _leftSideConnection[num] = 2;
184 _rightSideConnection[num] = 0;
185 for (int n = 0; n < 8; n++)
186 {
187 _tileHeight[num][n] = n + 1;
188 }
189 _texturePosition[num] = new Vector2(1f, 3f);
190 num++;
191 _leftSideConnection[num] = 2;
192 _rightSideConnection[num] = -1;
193 _tileHeight[num][0] = 1;
194 _tileHeight[num][1] = 2;
195 for (int num2 = 2; num2 < 8; num2++)
196 {
197 _tileHeight[num][num2] = -1;
198 }
199 _texturePosition[num] = new Vector2(4f, 1f);
200 num++;
201 _leftSideConnection[num] = -1;
202 _rightSideConnection[num] = 2;
203 _tileHeight[num][6] = 2;
204 _tileHeight[num][7] = 1;
205 for (int num3 = 0; num3 < 6; num3++)
206 {
207 _tileHeight[num][num3] = -1;
208 }
209 _texturePosition[num] = new Vector2(5f, 1f);
210 num++;
211 _leftSideConnection[num] = 0;
212 _rightSideConnection[num] = -1;
213 _tileHeight[num][0] = 8;
214 _tileHeight[num][1] = 7;
215 _tileHeight[num][2] = 6;
216 for (int num4 = 3; num4 < 8; num4++)
217 {
218 _tileHeight[num][num4] = -1;
219 }
220 _texturePosition[num] = new Vector2(6f, 1f);
221 num++;
222 _leftSideConnection[num] = -1;
223 _rightSideConnection[num] = 0;
224 _tileHeight[num][5] = 6;
225 _tileHeight[num][6] = 7;
226 _tileHeight[num][7] = 8;
227 for (int num5 = 0; num5 < 5; num5++)
228 {
229 _tileHeight[num][num5] = -1;
230 }
231 _texturePosition[num] = new Vector2(7f, 1f);
232 num++;
233 _leftSideConnection[num] = -1;
234 _rightSideConnection[num] = 1;
235 _tileHeight[num][0] = -4;
236 _texturePosition[num] = new Vector2(2f, 0f);
237 num++;
238 _leftSideConnection[num] = 1;
239 _rightSideConnection[num] = -1;
240 _tileHeight[num][7] = -4;
241 _texturePosition[num] = new Vector2(3f, 0f);
242 num++;
243 _leftSideConnection[num] = 2;
244 _rightSideConnection[num] = -1;
245 for (int num6 = 0; num6 < 6; num6++)
246 {
247 _tileHeight[num][num6] = num6 + 1;
248 }
249 _tileHeight[num][6] = -3;
250 _tileHeight[num][7] = -3;
251 _texturePosition[num] = new Vector2(4f, 0f);
252 num++;
253 _leftSideConnection[num] = -1;
254 _rightSideConnection[num] = 2;
255 _tileHeight[num][0] = -3;
256 _tileHeight[num][1] = -3;
257 for (int num7 = 2; num7 < 8; num7++)
258 {
259 _tileHeight[num][num7] = 8 - num7;
260 }
261 _texturePosition[num] = new Vector2(5f, 0f);
262 num++;
263 _leftSideConnection[num] = 0;
264 _rightSideConnection[num] = -1;
265 for (int num8 = 0; num8 < 6; num8++)
266 {
267 _tileHeight[num][num8] = 8 - num8;
268 }
269 _tileHeight[num][6] = -3;
270 _tileHeight[num][7] = -3;
271 _texturePosition[num] = new Vector2(6f, 0f);
272 num++;
273 _leftSideConnection[num] = -1;
274 _rightSideConnection[num] = 0;
275 _tileHeight[num][0] = -3;
276 _tileHeight[num][1] = -3;
277 for (int num9 = 2; num9 < 8; num9++)
278 {
279 _tileHeight[num][num9] = num9 + 1;
280 }
281 _texturePosition[num] = new Vector2(7f, 0f);
282 num++;
283 _leftSideConnection[num] = -1;
284 _rightSideConnection[num] = -1;
285 _tileHeight[num][0] = -4;
286 _tileHeight[num][7] = -4;
287 _trackType[num] = 1;
288 _texturePosition[num] = new Vector2(0f, 4f);
289 num++;
290 _leftSideConnection[num] = 1;
291 _rightSideConnection[num] = 1;
292 _trackType[num] = 1;
293 _texturePosition[num] = new Vector2(1f, 4f);
294 num++;
295 _leftSideConnection[num] = -1;
296 _rightSideConnection[num] = 1;
297 _tileHeight[num][0] = -4;
298 _trackType[num] = 1;
299 _texturePosition[num] = new Vector2(0f, 5f);
300 num++;
301 _leftSideConnection[num] = 1;
302 _rightSideConnection[num] = -1;
303 _tileHeight[num][7] = -4;
304 _trackType[num] = 1;
305 _texturePosition[num] = new Vector2(1f, 5f);
306 num++;
307 _leftSideConnection[num] = -1;
308 _rightSideConnection[num] = 1;
309 for (int num10 = 0; num10 < 6; num10++)
310 {
311 _tileHeight[num][num10] = -2;
312 }
313 _texturePosition[num] = new Vector2(2f, 2f);
314 num++;
315 _leftSideConnection[num] = 1;
316 _rightSideConnection[num] = -1;
317 for (int num11 = 2; num11 < 8; num11++)
318 {
319 _tileHeight[num][num11] = -2;
320 }
321 _texturePosition[num] = new Vector2(3f, 2f);
322 num++;
323 _leftSideConnection[num] = 2;
324 _rightSideConnection[num] = -1;
325 _tileHeight[num][0] = 1;
326 _tileHeight[num][1] = 2;
327 for (int num12 = 2; num12 < 8; num12++)
328 {
329 _tileHeight[num][num12] = -2;
330 }
331 _texturePosition[num] = new Vector2(4f, 2f);
332 num++;
333 _leftSideConnection[num] = -1;
334 _rightSideConnection[num] = 2;
335 _tileHeight[num][6] = 2;
336 _tileHeight[num][7] = 1;
337 for (int num13 = 0; num13 < 6; num13++)
338 {
339 _tileHeight[num][num13] = -2;
340 }
341 _texturePosition[num] = new Vector2(5f, 2f);
342 num++;
343 _leftSideConnection[num] = 0;
344 _rightSideConnection[num] = -1;
345 _tileHeight[num][0] = 8;
346 _tileHeight[num][1] = 7;
347 _tileHeight[num][2] = 6;
348 for (int num14 = 3; num14 < 8; num14++)
349 {
350 _tileHeight[num][num14] = -2;
351 }
352 _texturePosition[num] = new Vector2(6f, 2f);
353 num++;
354 _leftSideConnection[num] = -1;
355 _rightSideConnection[num] = 0;
356 _tileHeight[num][5] = 6;
357 _tileHeight[num][6] = 7;
358 _tileHeight[num][7] = 8;
359 for (int num15 = 0; num15 < 5; num15++)
360 {
361 _tileHeight[num][num15] = -2;
362 }
363 _texturePosition[num] = new Vector2(7f, 2f);
364 num++;
365 _leftSideConnection[num] = 1;
366 _rightSideConnection[num] = 1;
367 _trackType[num] = 2;
368 _boostLeft[num] = false;
369 _texturePosition[num] = new Vector2(2f, 3f);
370 num++;
371 _leftSideConnection[num] = 1;
372 _rightSideConnection[num] = 1;
373 _trackType[num] = 2;
374 _boostLeft[num] = true;
375 _texturePosition[num] = new Vector2(3f, 3f);
376 num++;
377 _leftSideConnection[num] = 0;
378 _rightSideConnection[num] = 2;
379 for (int num16 = 0; num16 < 8; num16++)
380 {
381 _tileHeight[num][num16] = 8 - num16;
382 }
383 _trackType[num] = 2;
384 _boostLeft[num] = false;
385 _texturePosition[num] = new Vector2(4f, 3f);
386 num++;
387 _leftSideConnection[num] = 2;
388 _rightSideConnection[num] = 0;
389 for (int num17 = 0; num17 < 8; num17++)
390 {
391 _tileHeight[num][num17] = num17 + 1;
392 }
393 _trackType[num] = 2;
394 _boostLeft[num] = true;
395 _texturePosition[num] = new Vector2(5f, 3f);
396 num++;
397 _leftSideConnection[num] = 0;
398 _rightSideConnection[num] = 2;
399 for (int num18 = 0; num18 < 8; num18++)
400 {
401 _tileHeight[num][num18] = 8 - num18;
402 }
403 _trackType[num] = 2;
404 _boostLeft[num] = true;
405 _texturePosition[num] = new Vector2(6f, 3f);
406 num++;
407 _leftSideConnection[num] = 2;
408 _rightSideConnection[num] = 0;
409 for (int num19 = 0; num19 < 8; num19++)
410 {
411 _tileHeight[num][num19] = num19 + 1;
412 }
413 _trackType[num] = 2;
414 _boostLeft[num] = false;
415 _texturePosition[num] = new Vector2(7f, 3f);
416 num++;
417 _texturePosition[36] = new Vector2(0f, 6f);
418 _texturePosition[37] = new Vector2(1f, 6f);
419 _texturePosition[39] = new Vector2(0f, 7f);
420 _texturePosition[38] = new Vector2(1f, 7f);
421 for (int num20 = 0; num20 < _texturePosition.Length; num20++)
422 {
423 _texturePosition[num20] *= 18f;
424 }
425 for (int num21 = 0; num21 < _tileHeight.Length; num21++)
426 {
427 int[] array2 = _tileHeight[num21];
428 for (int num22 = 0; num22 < array2.Length; num22++)
429 {
430 if (array2[num22] >= 0)
431 {
432 array2[num22] = (8 - array2[num22]) * 2;
433 }
434 }
435 }
436 int[] array3 = new int[36];
437 _trackSwitchOptions = new int[64][];
438 for (int num23 = 0; num23 < 64; num23++)
439 {
440 int num24 = 0;
441 for (int num25 = 1; num25 < 256; num25 <<= 1)
442 {
443 if ((num23 & num25) == num25)
444 {
445 num24++;
446 }
447 }
448 int num26 = 0;
449 for (int num27 = 0; num27 < 36; num27++)
450 {
451 array3[num27] = -1;
452 int num28 = 0;
453 switch (_leftSideConnection[num27])
454 {
455 case 0:
456 num28 |= 1;
457 break;
458 case 1:
459 num28 |= 2;
460 break;
461 case 2:
462 num28 |= 4;
463 break;
464 }
465 switch (_rightSideConnection[num27])
466 {
467 case 0:
468 num28 |= 8;
469 break;
470 case 1:
471 num28 |= 0x10;
472 break;
473 case 2:
474 num28 |= 0x20;
475 break;
476 }
477 if (num24 < 2)
478 {
479 if (num23 != num28)
480 {
481 continue;
482 }
483 }
484 else if (num28 == 0 || (num23 & num28) != num28)
485 {
486 continue;
487 }
488 array3[num27] = num27;
489 num26++;
490 }
491 if (num26 == 0)
492 {
493 continue;
494 }
495 int[] array4 = new int[num26];
496 int num29 = 0;
497 for (int num30 = 0; num30 < 36; num30++)
498 {
499 if (array3[num30] != -1)
500 {
501 array4[num29] = array3[num30];
502 num29++;
503 }
504 }
505 _trackSwitchOptions[num23] = array4;
506 }
510 for (int num31 = 0; num31 < _trackType.Length; num31++)
511 {
512 switch (_trackType[num31])
513 {
514 case 1:
515 if (_firstPressureFrame == -1)
516 {
517 _firstPressureFrame = (short)num31;
518 }
519 break;
520 case 2:
521 if (_boostLeft[num31])
522 {
523 if (_firstLeftBoostFrame == -1)
524 {
526 }
527 }
528 else if (_firstRightBoostFrame == -1)
529 {
531 }
532 break;
533 }
534 }
535 }
static Asset< Texture2D > MinecartMount
static int[] _leftSideConnection
Definition Minecart.cs:71
static bool[] _boostLeft
Definition Minecart.cs:77
static int[][] _trackSwitchOptions
Definition Minecart.cs:87
static short _firstPressureFrame
Definition Minecart.cs:81
static short _firstRightBoostFrame
Definition Minecart.cs:85
static Vector2[] _texturePosition
Definition Minecart.cs:79
static short _firstLeftBoostFrame
Definition Minecart.cs:83
static int[] _trackType
Definition Minecart.cs:75
static int[] _rightSideConnection
Definition Minecart.cs:73
static int[][] _tileHeight
Definition Minecart.cs:89

References Terraria.Minecart._boostLeft, Terraria.Minecart._firstLeftBoostFrame, Terraria.Minecart._firstPressureFrame, Terraria.Minecart._firstRightBoostFrame, Terraria.Minecart._leftSideConnection, Terraria.Minecart._rightSideConnection, Terraria.Minecart._texturePosition, Terraria.Minecart._tileHeight, Terraria.Minecart._trackSwitchOptions, Terraria.Minecart._trackType, System.array, Terraria.Main.dedServ, and Terraria.GameContent.TextureAssets.MinecartMount.

Referenced by Terraria.Main.Initialize_AlmostEverything(), and Terraria.Main.PostContentLoadInitialize().