Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }