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

◆ PlaceSign()

static bool Terraria.WorldGen.PlaceSign ( int x,
int y,
ushort type,
int Style = 0 )
inlinestatic

Definition at line 34933 of file WorldGen.cs.

34934 {
34935 int num = x - 2;
34936 int num2 = x + 3;
34937 int num3 = y - 2;
34938 int num4 = y + 3;
34939 if (num < 0)
34940 {
34941 return false;
34942 }
34943 if (num2 > Main.maxTilesX)
34944 {
34945 return false;
34946 }
34947 if (num3 < 0)
34948 {
34949 return false;
34950 }
34951 if (num4 > Main.maxTilesY)
34952 {
34953 return false;
34954 }
34955 for (int i = num; i < num2; i++)
34956 {
34957 for (int j = num3; j < num4; j++)
34958 {
34959 if (Main.tile[i, j] == null)
34960 {
34961 Main.tile[i, j] = new Tile();
34962 }
34963 }
34964 }
34965 int num5 = x;
34966 int num6 = y;
34967 int num7 = 0;
34968 if (type == 55 || type == 425 || type == 510 || type == 511)
34969 {
34970 if (SolidTile2(x, y + 1) && SolidTile2(x + 1, y + 1))
34971 {
34972 num6--;
34973 num7 = 0;
34974 }
34975 else if (Main.tile[x, y - 1].nactive() && Main.tileSolid[Main.tile[x, y - 1].type] && !Main.tileSolidTop[Main.tile[x, y - 1].type] && Main.tile[x + 1, y - 1].nactive() && Main.tileSolid[Main.tile[x + 1, y - 1].type] && !Main.tileSolidTop[Main.tile[x + 1, y - 1].type])
34976 {
34977 num7 = 1;
34978 }
34979 else if (Main.tile[x - 1, y].nactive() && Main.tileSolid[Main.tile[x - 1, y].type] && !Main.tileSolidTop[Main.tile[x - 1, y].type] && !Main.tileNoAttach[Main.tile[x - 1, y].type] && Main.tile[x - 1, y + 1].nactive() && Main.tileSolid[Main.tile[x - 1, y + 1].type] && !Main.tileSolidTop[Main.tile[x - 1, y + 1].type] && !Main.tileNoAttach[Main.tile[x - 1, y + 1].type])
34980 {
34981 num7 = 2;
34982 }
34983 else if (Main.tile[x + 1, y].nactive() && Main.tileSolid[Main.tile[x + 1, y].type] && !Main.tileSolidTop[Main.tile[x + 1, y].type] && !Main.tileNoAttach[Main.tile[x + 1, y].type] && Main.tile[x + 1, y + 1].nactive() && Main.tileSolid[Main.tile[x + 1, y + 1].type] && !Main.tileSolidTop[Main.tile[x + 1, y + 1].type] && !Main.tileNoAttach[Main.tile[x + 1, y + 1].type])
34984 {
34985 num5--;
34986 num7 = 3;
34987 }
34988 else
34989 {
34990 if (Main.tile[num5, num6].wall <= 0 || Main.tile[num5 + 1, num6].wall <= 0 || Main.tile[num5, num6 + 1].wall <= 0 || Main.tile[num5 + 1, num6 + 1].wall <= 0)
34991 {
34992 return false;
34993 }
34994 num7 = 4;
34995 }
34996 }
34997 if (Main.tile[num5, num6].active() || Main.tile[num5 + 1, num6].active() || Main.tile[num5, num6 + 1].active() || Main.tile[num5 + 1, num6 + 1].active())
34998 {
34999 return false;
35000 }
35001 int num8 = 36 * num7;
35002 for (int k = 0; k < 2; k++)
35003 {
35004 for (int l = 0; l < 2; l++)
35005 {
35006 Main.tile[num5 + k, num6 + l].active(active: true);
35007 Main.tile[num5 + k, num6 + l].type = type;
35008 Main.tile[num5 + k, num6 + l].frameX = (short)(num8 + 18 * k);
35009 Main.tile[num5 + k, num6 + l].frameY = (short)(18 * l);
35010 }
35011 }
35012 return true;
35013 }
static bool SolidTile2(Tile testTile)

References Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.DataStructures.Tile, Terraria.Main.tile, Terraria.Main.tileNoAttach, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, and System.type.