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

◆ DrawWires()

void Terraria.Main.DrawWires ( )
inlineprotected

Definition at line 55168 of file Main.cs.

55169 {
55173 bool flag = !WiresUI.Settings.HideWires;
55174 float num = 1f;
55176 {
55177 num = 0.5f;
55178 }
55179 int num2 = 1;
55180 int num3 = 1;
55181 int num4 = 1;
55182 int num5 = 1;
55183 int num6 = 1;
55184 if (player[myPlayer].InfoAccMechShowWires)
55185 {
55186 int[] builderAccStatus = player[myPlayer].builderAccStatus;
55187 num2 = builderAccStatus[4];
55188 num3 = builderAccStatus[5];
55189 num4 = builderAccStatus[6];
55190 num5 = builderAccStatus[7];
55191 num6 = builderAccStatus[9];
55192 }
55193 _ = gfxQuality;
55194 _ = gfxQuality;
55196 if (drawToScreen)
55197 {
55198 zero2 = Vector2.Zero;
55199 }
55200 int num7 = (int)((screenPosition.X - zero2.X) / 16f - 1f);
55201 int num8 = (int)((screenPosition.X + (float)screenWidth + zero2.X) / 16f) + 2;
55202 int num9 = (int)((screenPosition.Y - zero2.Y) / 16f - 1f);
55203 int num10 = (int)((screenPosition.Y + (float)screenHeight + zero2.Y) / 16f) + 5;
55204 if (num7 < 0)
55205 {
55206 num7 = 0;
55207 }
55208 if (num8 > maxTilesX)
55209 {
55210 num8 = maxTilesX;
55211 }
55212 if (num9 < 0)
55213 {
55214 num9 = 0;
55215 }
55216 if (num10 > maxTilesY)
55217 {
55218 num10 = maxTilesY;
55219 }
55221 for (int i = num9 + screenOverdrawOffset.Y; i < num10 - screenOverdrawOffset.Y; i++)
55222 {
55223 for (int j = num7 + screenOverdrawOffset.X; j < num8 - screenOverdrawOffset.X; j++)
55224 {
55225 bool flag2 = false;
55226 bool flag3 = false;
55227 bool flag4 = false;
55228 bool flag5 = false;
55229 bool flag6 = false;
55230 bool flag7 = false;
55231 bool flag8 = false;
55232 bool flag9 = false;
55233 bool flag10 = false;
55234 float num11 = 0f;
55235 Tile tile = Main.tile[j, i];
55236 if (flag && player[myPlayer].CanDoWireStuffHere(j, i))
55237 {
55238 int num12 = 0;
55239 if (tile.active())
55240 {
55241 if (tile.type == 424)
55242 {
55243 switch (tile.frameX / 18)
55244 {
55245 case 0:
55246 num12 += 72;
55247 break;
55248 case 1:
55249 num12 += 144;
55250 break;
55251 case 2:
55252 num12 += 216;
55253 break;
55254 }
55255 }
55256 else if (tile.type == 445)
55257 {
55258 num12 += 72;
55259 }
55260 }
55261 if (tile.wire())
55262 {
55263 num11 += 1f;
55264 int num13 = 0;
55265 if (Main.tile[j, i - 1].wire())
55266 {
55267 num13 += 18;
55268 flag4 = true;
55269 }
55270 if (Main.tile[j + 1, i].wire())
55271 {
55272 num13 += 36;
55273 flag3 = true;
55274 }
55275 if (Main.tile[j, i + 1].wire())
55276 {
55277 num13 += 72;
55278 flag5 = true;
55279 }
55280 if (Main.tile[j - 1, i].wire())
55281 {
55282 num13 += 144;
55283 flag2 = true;
55284 }
55285 value.Y = num12;
55286 value.X = num13;
55287 Microsoft.Xna.Framework.Color color = Lighting.GetColor(j, i);
55288 switch (num2)
55289 {
55290 case 0:
55292 break;
55293 case 2:
55294 color *= 0.5f;
55295 break;
55296 case 3:
55298 break;
55299 }
55301 {
55302 num11 -= 1f;
55303 }
55304 else
55305 {
55306 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, value, color, 0f, zero, 1f, SpriteEffects.None, 0f);
55307 }
55308 }
55309 if (tile.wire2())
55310 {
55311 flag6 = (flag7 = (flag8 = (flag9 = (flag10 = false))));
55312 num11 += 1f;
55313 int num14 = 0;
55314 if (Main.tile[j, i - 1].wire2())
55315 {
55316 num14 += 18;
55317 flag8 = true;
55318 if (flag4)
55319 {
55320 flag10 = true;
55321 }
55322 }
55323 if (Main.tile[j + 1, i].wire2())
55324 {
55325 num14 += 36;
55326 flag7 = true;
55327 if (flag3)
55328 {
55329 flag10 = true;
55330 }
55331 }
55332 if (Main.tile[j, i + 1].wire2())
55333 {
55334 num14 += 72;
55335 flag9 = true;
55336 if (flag5)
55337 {
55338 flag10 = true;
55339 }
55340 }
55341 if (Main.tile[j - 1, i].wire2())
55342 {
55343 num14 += 144;
55344 flag6 = true;
55345 if (flag2)
55346 {
55347 flag10 = true;
55348 }
55349 }
55350 if (num11 > 1f)
55351 {
55352 flag10 = true;
55353 }
55354 value.Y = num12 + 18;
55355 value.X = num14;
55356 Microsoft.Xna.Framework.Color color2 = Lighting.GetColor(j, i);
55357 switch (num3)
55358 {
55359 case 0:
55361 break;
55362 case 2:
55363 color2 *= 0.5f;
55364 break;
55365 case 3:
55367 break;
55368 }
55370 {
55371 num11 -= 1f;
55372 }
55373 else
55374 {
55375 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, value, color2 * (1f / num11), 0f, zero, 1f, SpriteEffects.None, 0f);
55376 if (flag8)
55377 {
55378 if (flag10 && !flag4)
55379 {
55380 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(18, value.Y, 16, 6), color2, 0f, zero, 1f, SpriteEffects.None, 0f);
55381 }
55382 flag4 = true;
55383 }
55384 if (flag9)
55385 {
55386 if (flag10 && !flag5)
55387 {
55388 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2 + new Vector2(0f, 10f), new Microsoft.Xna.Framework.Rectangle(72, value.Y + 10, 16, 6), color2, 0f, zero, 1f, SpriteEffects.None, 0f);
55389 }
55390 flag5 = true;
55391 }
55392 if (flag7)
55393 {
55394 if (flag10 && !flag3)
55395 {
55396 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2 + new Vector2(10f, 0f), new Microsoft.Xna.Framework.Rectangle(46, value.Y, 6, 16), color2, 0f, zero, 1f, SpriteEffects.None, 0f);
55397 }
55398 flag3 = true;
55399 }
55400 if (flag6)
55401 {
55402 if (flag10 && !flag2)
55403 {
55404 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(144, value.Y, 6, 16), color2, 0f, zero, 1f, SpriteEffects.None, 0f);
55405 }
55406 flag2 = true;
55407 }
55408 }
55409 }
55410 if (tile.wire3())
55411 {
55412 flag6 = (flag7 = (flag8 = (flag9 = (flag10 = false))));
55413 num11 += 1f;
55414 int num15 = 0;
55415 if (Main.tile[j, i - 1].wire3())
55416 {
55417 num15 += 18;
55418 flag8 = true;
55419 if (flag4)
55420 {
55421 flag10 = true;
55422 }
55423 }
55424 if (Main.tile[j + 1, i].wire3())
55425 {
55426 num15 += 36;
55427 flag7 = true;
55428 if (flag3)
55429 {
55430 flag10 = true;
55431 }
55432 }
55433 if (Main.tile[j, i + 1].wire3())
55434 {
55435 num15 += 72;
55436 flag9 = true;
55437 if (flag5)
55438 {
55439 flag10 = true;
55440 }
55441 }
55442 if (Main.tile[j - 1, i].wire3())
55443 {
55444 num15 += 144;
55445 flag6 = true;
55446 if (flag2)
55447 {
55448 flag10 = true;
55449 }
55450 }
55451 if (num11 > 1f)
55452 {
55453 flag10 = true;
55454 }
55455 value.Y = num12 + 36;
55456 value.X = num15;
55457 Microsoft.Xna.Framework.Color color3 = Lighting.GetColor(j, i);
55458 switch (num4)
55459 {
55460 case 0:
55462 break;
55463 case 2:
55464 color3 *= 0.5f;
55465 break;
55466 case 3:
55468 break;
55469 }
55471 {
55472 num11 -= 1f;
55473 }
55474 else
55475 {
55476 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, value, color3 * (1f / num11), 0f, zero, 1f, SpriteEffects.None, 0f);
55477 if (flag8)
55478 {
55479 if (flag10 && !flag4)
55480 {
55481 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(18, value.Y, 16, 6), color3, 0f, zero, 1f, SpriteEffects.None, 0f);
55482 }
55483 flag4 = true;
55484 }
55485 if (flag9)
55486 {
55487 if (flag10 && !flag5)
55488 {
55489 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2 + new Vector2(0f, 10f), new Microsoft.Xna.Framework.Rectangle(72, value.Y + 10, 16, 6), color3, 0f, zero, 1f, SpriteEffects.None, 0f);
55490 }
55491 flag5 = true;
55492 }
55493 if (flag7)
55494 {
55495 if (flag10 && !flag3)
55496 {
55497 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2 + new Vector2(10f, 0f), new Microsoft.Xna.Framework.Rectangle(46, value.Y, 6, 16), color3, 0f, zero, 1f, SpriteEffects.None, 0f);
55498 }
55499 flag3 = true;
55500 }
55501 if (flag6)
55502 {
55503 if (flag10 && !flag2)
55504 {
55505 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(144, value.Y, 6, 16), color3, 0f, zero, 1f, SpriteEffects.None, 0f);
55506 }
55507 flag2 = true;
55508 }
55509 }
55510 }
55511 if (tile.wire4())
55512 {
55513 flag6 = (flag7 = (flag8 = (flag9 = (flag10 = false))));
55514 num11 += 1f;
55515 int num16 = 0;
55516 if (Main.tile[j, i - 1].wire4())
55517 {
55518 num16 += 18;
55519 flag8 = true;
55520 if (flag4)
55521 {
55522 flag10 = true;
55523 }
55524 }
55525 if (Main.tile[j + 1, i].wire4())
55526 {
55527 num16 += 36;
55528 flag7 = true;
55529 if (flag3)
55530 {
55531 flag10 = true;
55532 }
55533 }
55534 if (Main.tile[j, i + 1].wire4())
55535 {
55536 num16 += 72;
55537 flag9 = true;
55538 if (flag5)
55539 {
55540 flag10 = true;
55541 }
55542 }
55543 if (Main.tile[j - 1, i].wire4())
55544 {
55545 num16 += 144;
55546 flag6 = true;
55547 if (flag2)
55548 {
55549 flag10 = true;
55550 }
55551 }
55552 if (num11 > 1f)
55553 {
55554 flag10 = true;
55555 }
55556 value.Y = num12 + 54;
55557 value.X = num16;
55558 Microsoft.Xna.Framework.Color color4 = Lighting.GetColor(j, i);
55559 switch (num5)
55560 {
55561 case 0:
55563 break;
55564 case 2:
55565 color4 *= 0.5f;
55566 break;
55567 case 3:
55569 break;
55570 }
55572 {
55573 num11 -= 1f;
55574 }
55575 else
55576 {
55577 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, value, color4 * (1f / num11), 0f, zero, 1f, SpriteEffects.None, 0f);
55578 if (flag8)
55579 {
55580 if (flag10 && !flag4)
55581 {
55582 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(18, value.Y, 16, 6), color4, 0f, zero, 1f, SpriteEffects.None, 0f);
55583 }
55584 flag4 = true;
55585 }
55586 if (flag9)
55587 {
55588 if (flag10 && !flag5)
55589 {
55590 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2 + new Vector2(0f, 10f), new Microsoft.Xna.Framework.Rectangle(72, value.Y + 10, 16, 6), color4, 0f, zero, 1f, SpriteEffects.None, 0f);
55591 }
55592 flag5 = true;
55593 }
55594 if (flag7)
55595 {
55596 if (flag10 && !flag3)
55597 {
55598 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2 + new Vector2(10f, 0f), new Microsoft.Xna.Framework.Rectangle(46, value.Y, 6, 16), color4, 0f, zero, 1f, SpriteEffects.None, 0f);
55599 }
55600 flag3 = true;
55601 }
55602 if (flag6)
55603 {
55604 if (flag10 && !flag2)
55605 {
55606 spriteBatch.Draw(TextureAssets.WireNew.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(144, value.Y, 6, 16), color4, 0f, zero, 1f, SpriteEffects.None, 0f);
55607 }
55608 flag2 = true;
55609 }
55610 }
55611 }
55612 }
55613 if (Main.tile[j, i].actuator() && (Lighting.Brightness(j, i) > 0f || num6 == 0))
55614 {
55615 Microsoft.Xna.Framework.Color color5 = Lighting.GetColor(j, i);
55616 switch (num6)
55617 {
55618 case 0:
55620 break;
55621 case 2:
55622 color5 *= 0.5f;
55623 break;
55624 case 3:
55626 break;
55627 }
55628 spriteBatch.Draw(TextureAssets.Actuator.Value, new Vector2(j * 16 - (int)screenPosition.X, i * 16 - (int)screenPosition.Y) + zero2, new Microsoft.Xna.Framework.Rectangle(0, 0, TextureAssets.Actuator.Width(), TextureAssets.Actuator.Height()), color5 * num, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
55629 }
55630 if (tile.active())
55631 {
55632 ushort type = tile.type;
55633 if (type == 423 && tile.frameY == 36)
55634 {
55635 DrawWiresSpecialTiles.Add(Tuple.Create(j, i, tile.type));
55636 }
55637 }
55638 }
55639 }
55640 for (int k = 0; k < DrawWiresSpecialTiles.Count; k++)
55641 {
55643 ushort type = tuple.Item3;
55644 if (type == 423)
55645 {
55646 Vector2 start = new Vector2(tuple.Item1 * 16 - 32 - 1, tuple.Item2 * 16 - 160 - 1) + zero2;
55647 Vector2 end = new Vector2(tuple.Item1 * 16 + 48 + 1, tuple.Item2 * 16 + 1) + zero2;
55649 }
55650 }
55651 TimeLogger.DetailedDrawTime(34);
55652 }
static Asset< Texture2D > WireNew
static Asset< Texture2D > Actuator
static int maxTilesY
Definition Main.cs:1116
static SpriteBatch spriteBatch
Definition Main.cs:974
static int myPlayer
Definition Main.cs:1801
static float gfxQuality
Definition Main.cs:1056
static bool drawToScreen
Definition Main.cs:600
static int screenHeight
Definition Main.cs:1721
static Vector2 screenPosition
Definition Main.cs:1715
static int maxTilesX
Definition Main.cs:1114
static Tile[,] tile
Definition Main.cs:1675
static Microsoft.Xna.Framework.Point GetScreenOverdrawOffset()
Definition Main.cs:50910
static int screenWidth
Definition Main.cs:1719
List< Tuple< int, int, ushort > > DrawWiresSpecialTiles
Definition Main.cs:2553
static Player[] player
Definition Main.cs:1803
static Color LightSeaGreen
Definition Color.cs:220
static Color Transparent
Definition Color.cs:76

References Terraria.GameContent.TextureAssets.Actuator, System.Collections.Generic.List< T >.Add(), Terraria.Lighting.Brightness(), System.Collections.Generic.List< T >.Clear(), System.Collections.Generic.List< T >.Count, Terraria.TimeLogger.DetailedDrawTime(), Terraria.Utils.DrawRectangle(), Terraria.Main.drawToScreen, Terraria.Main.DrawWiresSpecialTiles, Terraria.Lighting.GetColor(), Terraria.Main.GetScreenOverdrawOffset(), Terraria.Main.gfxQuality, Terraria.GameContent.UI.WiresUI.Settings.HideWires, System.Text.RegularExpressions.i, Microsoft.Xna.Framework.Color.LightSeaGreen, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.myPlayer, Terraria.Main.player, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, Terraria.Main.spriteBatch, System.start, Terraria.Main.tile, Microsoft.Xna.Framework.Color.Transparent, System.type, System.value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, Terraria.GameContent.TextureAssets.WireNew, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.Main.DoDraw(), and Terraria.Main.DrawCapture().