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

◆ Step_AlchemySeeds()

static void Terraria.GameContent.SmartCursorHelper.Step_AlchemySeeds ( SmartCursorUsageInfo providedInfo,
ref int focusedX,
ref int focusedY )
inlinestaticprivate

Definition at line 460 of file SmartCursorHelper.cs.

461 {
462 if (providedInfo.item.createTile != 82 || focusedX != -1 || focusedY != -1)
463 {
464 return;
465 }
466 int placeStyle = providedInfo.item.placeStyle;
467 _targets.Clear();
468 for (int i = providedInfo.reachableStartX; i <= providedInfo.reachableEndX; i++)
469 {
470 for (int j = providedInfo.reachableStartY; j <= providedInfo.reachableEndY; j++)
471 {
472 Tile tile = Main.tile[i, j];
473 Tile tile2 = Main.tile[i, j + 1];
474 bool num = !tile.active() || TileID.Sets.BreakableWhenPlacing[tile.type] || (Main.tileCut[tile.type] && tile.type != 82 && tile.type != 83) || WorldGen.IsHarvestableHerbWithSeed(tile.type, tile.frameX / 18);
475 bool flag = tile2.nactive() && !tile2.halfBrick() && tile2.slope() == 0;
476 if (!num || !flag)
477 {
478 continue;
479 }
480 switch (placeStyle)
481 {
482 case 0:
483 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 2 && tile2.type != 477 && tile2.type != 109 && tile2.type != 492) || tile.liquid > 0)
484 {
485 continue;
486 }
487 break;
488 case 1:
489 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 60) || tile.liquid > 0)
490 {
491 continue;
492 }
493 break;
494 case 2:
495 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 0 && tile2.type != 59) || tile.liquid > 0)
496 {
497 continue;
498 }
499 break;
500 case 3:
501 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 203 && tile2.type != 199 && tile2.type != 23 && tile2.type != 25) || tile.liquid > 0)
502 {
503 continue;
504 }
505 break;
506 case 4:
507 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 53 && tile2.type != 116) || (tile.liquid > 0 && tile.lava()))
508 {
509 continue;
510 }
511 break;
512 case 5:
513 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 57 && tile2.type != 633) || (tile.liquid > 0 && !tile.lava()))
514 {
515 continue;
516 }
517 break;
518 case 6:
519 if ((tile2.type != 78 && tile2.type != 380 && tile2.type != 147 && tile2.type != 161 && tile2.type != 163 && tile2.type != 164 && tile2.type != 200) || (tile.liquid > 0 && tile.lava()))
520 {
521 continue;
522 }
523 break;
524 }
525 _targets.Add(new Tuple<int, int>(i, j));
526 }
527 }
528 if (_targets.Count > 0)
529 {
530 float num2 = -1f;
532 for (int k = 0; k < _targets.Count; k++)
533 {
534 float num3 = Vector2.Distance(new Vector2(_targets[k].Item1, _targets[k].Item2) * 16f + Vector2.One * 8f, providedInfo.mouse);
535 if (num2 == -1f || num3 < num2)
536 {
537 num2 = num3;
538 tuple = _targets[k];
539 }
540 }
541 if (Collision.InTileBounds(tuple.Item1, tuple.Item2, providedInfo.reachableStartX, providedInfo.reachableStartY, providedInfo.reachableEndX, providedInfo.reachableEndY))
542 {
543 focusedX = tuple.Item1;
544 focusedY = tuple.Item2;
545 }
546 }
547 _targets.Clear();
548 }
static List< Tuple< int, int > > _targets
static bool[] BreakableWhenPlacing
Definition TileID.cs:277
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References Terraria.GameContent.SmartCursorHelper._targets, Terraria.Tile.active(), Terraria.ID.TileID.Sets.BreakableWhenPlacing, Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Tile.frameX, Terraria.Collision.InTileBounds(), Terraria.WorldGen.IsHarvestableHerbWithSeed(), Terraria.Tile.lava(), Terraria.Main.tile, Terraria.Main.tileCut, and Terraria.Tile.type.

Referenced by Terraria.GameContent.SmartCursorHelper.SmartCursorLookup().