public unsafe static bool SwitchTiles(Vector2 Position, int Width, int Height, Vector2 oldPosition) { int num = ((int)Position.X >> 4) - 1; int num2 = ((int)Position.X + Width >> 4) + 1; int num3 = ((int)Position.Y >> 4) - 1; int num4 = ((int)Position.Y + Height >> 4) + 1; if (num < 0) { num = 0; } if (num2 > Main.maxTilesX) { num2 = Main.maxTilesX; } if (num3 < 0) { num3 = 0; } if (num4 > Main.maxTilesY) { num4 = Main.maxTilesY; } fixed(Tile *ptr = Main.tile) { for (int i = num; i < num2; i++) { Tile *ptr2 = ptr + (i * 1440 + num3); int num5 = num3; while (num5 < num4) { if (ptr2->type == 135 && ptr2->active != 0) { double num6 = i * 16; double num7 = num5 * 16 + 12; if ((double)(Position.X + (float)Width) > num6 && (double)Position.X < num6 + 16.0 && (double)(Position.Y + (float)Height) > num7 && (double)Position.Y < num7 + 4.01 && (!((double)(oldPosition.X + (float)Width) > num6) || !((double)oldPosition.X < num6 + 16.0) || !((double)(oldPosition.Y + (float)Height) > num7) || !((double)oldPosition.Y < num7 + 16.01))) { WorldGen.hitSwitch(i, num5); NetMessage.CreateMessage2(59, i, num5); NetMessage.SendMessage(); return(true); } } num5++; ptr2++; } } } return(false); }
public static bool SwitchTiles(Vector2 Position, int Width, int Height, Vector2 oldPosition) { int num = (int)(Position.X / 16f) - 1; int num2 = (int)((Position.X + (float)Width) / 16f) + 2; int num3 = (int)(Position.Y / 16f) - 1; int num4 = (int)((Position.Y + (float)Height) / 16f) + 2; if (num < 0) { num = 0; } if (num2 > Main.maxTilesX) { num2 = Main.maxTilesX; } if (num3 < 0) { num3 = 0; } if (num4 > Main.maxTilesY) { num4 = Main.maxTilesY; } bool result; for (int i = num; i < num2; i++) { for (int j = num3; j < num4; j++) { if (Main.tile[i, j] != null && Main.tile[i, j].active && Main.tile[i, j].type == 135) { Vector2 vector; vector.X = (float)(i * 16); vector.Y = (float)(j * 16 + 12); if (Position.X + (float)Width > vector.X && Position.X < vector.X + 16f && Position.Y + (float)Height > vector.Y && (double)Position.Y < (double)vector.Y + 4.01 && (oldPosition.X + (float)Width <= vector.X || oldPosition.X >= vector.X + 16f || oldPosition.Y + (float)Height <= vector.Y || (double)oldPosition.Y >= (double)vector.Y + 16.01)) { WorldGen.hitSwitch(i, j); NetMessage.SendData(59, -1, -1, "", i, (float)j, 0f, 0f, 0); result = true; return(result); } } } } result = false; return(result); }
public static bool SwitchTiles(Vector2 Position, int Width, int Height, Vector2 oldPosition) { int num = ((int)(Position.X / 16f)) - 1; int maxTilesX = ((int)((Position.X + Width) / 16f)) + 2; int num3 = ((int)(Position.Y / 16f)) - 1; int maxTilesY = ((int)((Position.Y + Height) / 16f)) + 2; if (num < 0) { num = 0; } if (maxTilesX > Main.maxTilesX) { maxTilesX = Main.maxTilesX; } if (num3 < 0) { num3 = 0; } if (maxTilesY > Main.maxTilesY) { maxTilesY = Main.maxTilesY; } for (int i = num; i < maxTilesX; i++) { for (int j = num3; j < maxTilesY; j++) { if (((Main.tile[i, j] != null) && Main.tile[i, j].active) && (Main.tile[i, j].type == 0x87)) { Vector2 vector; vector.X = i * 0x10; vector.Y = (j * 0x10) + 12; if (((((Position.X + Width) > vector.X) && (Position.X < (vector.X + 16f))) && (((Position.Y + Height) > vector.Y) && (Position.Y < (vector.Y + 4.01)))) && ((((oldPosition.X + Width) <= vector.X) || (oldPosition.X >= (vector.X + 16f))) || (((oldPosition.Y + Height) <= vector.Y) || (oldPosition.Y >= (vector.Y + 16.01))))) { WorldGen.hitSwitch(i, j); NetMessage.SendData(0x3b, -1, -1, "", i, (float)j, 0f, 0f, 0); return(true); } } } } return(false); }