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

◆ PlaceThing_Tiles_PlaceIt_SpinSmartPlatform()

void Terraria.Player.PlaceThing_Tiles_PlaceIt_SpinSmartPlatform ( )
inlineprivate

Definition at line 38345 of file Player.cs.

38346 {
38347 if (inventory[selectedItem].createTile < 0 || !TileID.Sets.Platforms[inventory[selectedItem].createTile] || !Main.SmartCursorIsUsed)
38348 {
38349 return;
38350 }
38351 int num = tileTargetX;
38352 int num2 = tileTargetY;
38353 int num3 = -1;
38354 int num4 = 0;
38355 int num5 = 0;
38356 bool flag = true;
38357 for (int i = -1; i < 2; i++)
38358 {
38359 for (int j = -1; j < 2; j++)
38360 {
38361 if ((i != 0 || j != 0) && TileID.Sets.Platforms[Main.tile[num + i, num2 + j].type])
38362 {
38363 flag = false;
38364 }
38365 }
38366 }
38367 if (flag)
38368 {
38369 return;
38370 }
38371 Tile tile = Main.tile[num - 1, num2 - 1];
38372 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() != 2)
38373 {
38374 num4++;
38375 }
38376 tile = Main.tile[num - 1, num2 + 1];
38377 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() != 1)
38378 {
38379 num5++;
38380 }
38381 tile = Main.tile[num + 1, num2 - 1];
38382 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() != 1)
38383 {
38384 num5++;
38385 }
38386 tile = Main.tile[num + 1, num2 + 1];
38387 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() != 2)
38388 {
38389 num4++;
38390 }
38391 tile = Main.tile[num - 1, num2];
38392 if (WorldGen.SolidTile(tile))
38393 {
38394 num4++;
38395 if (TileID.Sets.Platforms[tile.type] && tile.slope() == 0)
38396 {
38397 num4++;
38398 }
38399 }
38400 tile = Main.tile[num + 1, num2];
38401 if (WorldGen.SolidTile(tile))
38402 {
38403 num5++;
38404 if (TileID.Sets.Platforms[tile.type] && tile.slope() == 0)
38405 {
38406 num5++;
38407 }
38408 }
38409 if (num4 > num5)
38410 {
38411 num3 = 1;
38412 }
38413 else if (num5 > num4)
38414 {
38415 num3 = 2;
38416 }
38417 tile = Main.tile[num - 1, num2];
38418 if (tile.active() && TileID.Sets.Platforms[tile.type])
38419 {
38420 num3 = 0;
38421 }
38422 tile = Main.tile[num + 1, num2];
38423 if (tile.active() && TileID.Sets.Platforms[tile.type])
38424 {
38425 num3 = 0;
38426 }
38427 int num6 = 0;
38428 int num7 = 0;
38429 if (num3 != -1)
38430 {
38431 WorldGen.SlopeTile(num, num2, num3, noEffects: true);
38432 int num8 = Main.tile[num, num2].slope();
38433 if (Main.netMode == 1)
38434 {
38435 NetMessage.SendData(17, -1, -1, null, 14, tileTargetX, tileTargetY, num8);
38436 }
38437 if (num3 == 1)
38438 {
38439 num6 = -1;
38440 num7 = -1;
38441 }
38442 else
38443 {
38444 num6 = 1;
38445 num7 = -1;
38446 }
38447 tile = Main.tile[num + num6, num2 + num7];
38448 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() == 0 && (!Main.tile[num + num6 + num6, num2 + num7].active() || !TileID.Sets.Platforms[Main.tile[num + num6 + num6, num2 + num7].type] || !Main.tile[num + num6 + num6, num2 + num7].halfBrick()))
38449 {
38450 WorldGen.SlopeTile(num + num6, num2 + num7, num3);
38451 num8 = tile.slope();
38452 if (Main.netMode == 1)
38453 {
38454 NetMessage.SendData(17, -1, -1, null, 14, num + num6, num2 + num7, num8);
38455 }
38456 }
38457 if (num3 == 1)
38458 {
38459 num6 = 1;
38460 num7 = 1;
38461 }
38462 else
38463 {
38464 num6 = -1;
38465 num7 = 1;
38466 }
38467 tile = Main.tile[num + num6, num2 + num7];
38468 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() == 0 && WorldGen.PlatformProperSides(num + num6, num2 + num7, acceptNonOpposing: true) <= 0)
38469 {
38470 WorldGen.SlopeTile(num + num6, num2 + num7, num3);
38471 num8 = tile.slope();
38472 if (Main.netMode == 1)
38473 {
38474 NetMessage.SendData(17, -1, -1, null, 14, num + num6, num2 + num7, num8);
38475 }
38476 }
38477 return;
38478 }
38479 num3 = 0;
38480 int num9 = 0;
38481 num6 = -1;
38482 tile = Main.tile[num + num6, num2];
38483 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() != 0)
38484 {
38485 int num10 = (tile.slope() == 1).ToDirectionInt() * num6;
38486 num3 = ((num10 != -1) ? tile.slope() : 0);
38487 bool flag2 = true;
38488 if (Main.tile[num + num6 * 2, num2 + num10].active() && TileID.Sets.Platforms[Main.tile[num + num6 * 2, num2].type] && num3 == Main.tile[num + num6 * 2, num2 + num10].slope())
38489 {
38490 flag2 = false;
38491 }
38492 if (Main.tile[num, num2 - num10].active() && TileID.Sets.Platforms[Main.tile[num, num2 - num10].type] && tile.slope() == Main.tile[num, num2 - num10].slope())
38493 {
38494 flag2 = false;
38495 }
38496 if (flag2)
38497 {
38498 WorldGen.SlopeTile(num + num6, num2, num3);
38499 num9 = tile.slope();
38500 if (Main.netMode == 1)
38501 {
38502 NetMessage.SendData(17, -1, -1, null, 14, num + num6, num2, num9);
38503 }
38504 }
38505 }
38506 num6 = 1;
38507 num7 = 0;
38508 tile = Main.tile[num + num6, num2 + num7];
38509 if (tile.active() && TileID.Sets.Platforms[tile.type] && tile.slope() != 0)
38510 {
38511 int num11 = (tile.slope() == 1).ToDirectionInt() * num6;
38512 num3 = ((num11 != -1) ? tile.slope() : 0);
38513 bool flag3 = true;
38514 if (Main.tile[num + num6 * 2, num2 + num11].active() && TileID.Sets.Platforms[Main.tile[num + num6 * 2, num2].type] && num3 == Main.tile[num + num6 * 2, num2 + num11].slope())
38515 {
38516 flag3 = false;
38517 }
38518 if (Main.tile[num, num2 - num11].active() && TileID.Sets.Platforms[Main.tile[num, num2 - num11].type] && tile.slope() == Main.tile[num, num2 - num11].slope())
38519 {
38520 flag3 = false;
38521 }
38522 if (flag3)
38523 {
38524 WorldGen.SlopeTile(num + num6, num2, num3);
38525 num9 = tile.slope();
38526 if (Main.netMode == 1)
38527 {
38528 NetMessage.SendData(17, -1, -1, null, 14, num + num6, num2, num9);
38529 }
38530 }
38531 }
38532 if (num4 != num5 || WorldGen.PlatformProperSides(num, num2) != 0)
38533 {
38534 return;
38535 }
38536 tile = Main.tile[num, num2 + 1];
38537 if (tile.active() && !tile.halfBrick() && tile.slope() == 0 && Main.tileSolid[tile.type])
38538 {
38539 num3 = ((direction != 1) ? 1 : 2);
38540 WorldGen.SlopeTile(num, num2, num3);
38541 num9 = Main.tile[num, num2].slope();
38542 if (Main.netMode == 1)
38543 {
38544 NetMessage.SendData(17, -1, -1, null, 14, tileTargetX, tileTargetY, num9);
38545 }
38546 }
38547 }
static bool[] Platforms
Definition TileID.cs:163
int createTile
Definition Item.cs:161
static int tileTargetY
Definition Player.cs:2085
static int tileTargetX
Definition Player.cs:2083
Item[] inventory
Definition Player.cs:1257

References Terraria.Tile.active(), Terraria.Item.createTile, Terraria.Tile.halfBrick(), Terraria.Main.netMode, Terraria.WorldGen.PlatformProperSides(), Terraria.ID.TileID.Sets.Platforms, Terraria.NetMessage.SendData(), Terraria.Tile.slope(), Terraria.WorldGen.SlopeTile(), Terraria.Main.SmartCursorIsUsed, Terraria.WorldGen.SolidTile(), Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Tile.type.