Пример #1
0
        public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
        {
            Point16        coordinates    = op.Coordinates;
            Texture2D      texture        = TextureAssets.Tile[(int)op.Type].get_Value();
            TileObjectData tileData       = TileObjectData.GetTileData((int)op.Type, (int)op.Style, op.Alternate);
            int            placementStyle = tileData.CalculatePlacementStyle((int)op.Style, op.Alternate, op.Random);
            int            num1           = 0;
            int            drawYoffset    = tileData.DrawYOffset;
            int            drawXoffset    = tileData.DrawXOffset;
            int            num2           = placementStyle + tileData.DrawStyleOffset;
            int            styleWrapLimit = tileData.StyleWrapLimit;
            int            styleLineSkip  = tileData.StyleLineSkip;
            int?           nullable;

            if (tileData.StyleWrapLimitVisualOverride.HasValue)
            {
                nullable       = tileData.StyleWrapLimitVisualOverride;
                styleWrapLimit = nullable.Value;
            }
            nullable = tileData.styleLineSkipVisualOverride;
            if (nullable.HasValue)
            {
                nullable      = tileData.styleLineSkipVisualOverride;
                styleLineSkip = nullable.Value;
            }
            if (styleWrapLimit > 0)
            {
                num1  = num2 / styleWrapLimit * styleLineSkip;
                num2 %= styleWrapLimit;
            }
            int num3;
            int num4;

            if (tileData.StyleHorizontal)
            {
                num3 = tileData.CoordinateFullWidth * num2;
                num4 = tileData.CoordinateFullHeight * num1;
            }
            else
            {
                num3 = tileData.CoordinateFullWidth * num1;
                num4 = tileData.CoordinateFullHeight * num2;
            }
            for (int index1 = 0; index1 < (int)op.Size.X; ++index1)
            {
                int x = num3 + (index1 - (int)op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding);
                int y = num4;
                for (int index2 = 0; index2 < (int)op.Size.Y; ++index2)
                {
                    int i    = (int)coordinates.X + index1;
                    int num5 = (int)coordinates.Y + index2;
                    if (index2 == 0 && tileData.DrawStepDown != 0 && WorldGen.SolidTile(Framing.GetTileSafely(i, num5 - 1)))
                    {
                        drawYoffset += tileData.DrawStepDown;
                    }
                    Color color1;
                    switch (op[index1, index2])
                    {
                    case 1:
                        color1 = Color.White;
                        break;

                    case 2:
                        color1 = Color.Red * 0.7f;
                        break;

                    default:
                        continue;
                    }
                    Color color2 = color1 * 0.5f;
                    if (index1 >= (int)op.ObjectStart.X && index1 < (int)op.ObjectStart.X + tileData.Width && (index2 >= (int)op.ObjectStart.Y && index2 < (int)op.ObjectStart.Y + tileData.Height))
                    {
                        SpriteEffects effects = SpriteEffects.None;
                        if (tileData.DrawFlipHorizontal && i % 2 == 0)
                        {
                            effects |= SpriteEffects.FlipHorizontally;
                        }
                        if (tileData.DrawFlipVertical && num5 % 2 == 0)
                        {
                            effects |= SpriteEffects.FlipVertically;
                        }
                        Rectangle rectangle = new Rectangle(x, y, tileData.CoordinateWidth, tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y]);
                        sb.Draw(texture, new Vector2((float)(i * 16 - (int)((double)position.X + (double)(tileData.CoordinateWidth - 16) / 2.0) + drawXoffset), (float)(num5 * 16 - (int)position.Y + drawYoffset)), new Rectangle?(rectangle), color2, 0.0f, Vector2.Zero, 1f, effects, 0.0f);
                        y += tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y] + tileData.CoordinatePadding;
                    }
                }
            }
        }
Пример #2
0
        public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
        {
            Point16        coordinates    = op.Coordinates;
            Texture2D      texture2D      = Main.tileTexture[(int)op.Type];
            TileObjectData tileData       = TileObjectData.GetTileData((int)op.Type, (int)op.Style, op.Alternate);
            int            placementStyle = tileData.CalculatePlacementStyle((int)op.Style, op.Alternate, op.Random);
            int            num1           = 0;
            int            drawYoffset    = tileData.DrawYOffset;

            if (tileData.StyleWrapLimit > 0)
            {
                num1            = placementStyle / tileData.StyleWrapLimit * tileData.StyleLineSkip;
                placementStyle %= tileData.StyleWrapLimit;
            }
            int num2;
            int num3;

            if (tileData.StyleHorizontal)
            {
                num2 = tileData.CoordinateFullWidth * placementStyle;
                num3 = tileData.CoordinateFullHeight * num1;
            }
            else
            {
                num2 = tileData.CoordinateFullWidth * num1;
                num3 = tileData.CoordinateFullHeight * placementStyle;
            }
            for (int index1 = 0; index1 < (int)op.Size.X; ++index1)
            {
                int num4 = num2 + (index1 - (int)op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding);
                int num5 = num3;
                for (int index2 = 0; index2 < (int)op.Size.Y; ++index2)
                {
                    int i    = (int)coordinates.X + index1;
                    int num6 = (int)coordinates.Y + index2;
                    if (index2 == 0 && tileData.DrawStepDown != 0 && WorldGen.SolidTile(Framing.GetTileSafely(i, num6 - 1)))
                    {
                        drawYoffset += tileData.DrawStepDown;
                    }
                    Color color1;
                    switch (op[index1, index2])
                    {
                    case 1:
                        color1 = Color.get_White();
                        break;

                    case 2:
                        color1 = Color.op_Multiply(Color.get_Red(), 0.7f);
                        break;

                    default:
                        continue;
                    }
                    Color color2 = Color.op_Multiply(color1, 0.5f);
                    if (index1 >= (int)op.ObjectStart.X && index1 < (int)op.ObjectStart.X + tileData.Width && (index2 >= (int)op.ObjectStart.Y && index2 < (int)op.ObjectStart.Y + tileData.Height))
                    {
                        SpriteEffects spriteEffects = (SpriteEffects)0;
                        if (tileData.DrawFlipHorizontal && index1 % 2 == 1)
                        {
                            spriteEffects = (SpriteEffects)(spriteEffects | 1);
                        }
                        if (tileData.DrawFlipVertical && index2 % 2 == 1)
                        {
                            spriteEffects = (SpriteEffects)(spriteEffects | 2);
                        }
                        Rectangle rectangle;
                        // ISSUE: explicit reference operation
                        ((Rectangle)@rectangle).\u002Ector(num4, num5, tileData.CoordinateWidth, tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y]);
                        sb.Draw(texture2D, new Vector2((float)(i * 16 - (int)(position.X + (double)(tileData.CoordinateWidth - 16) / 2.0)), (float)(num6 * 16 - (int)position.Y + drawYoffset)), new Rectangle?(rectangle), color2, 0.0f, Vector2.get_Zero(), 1f, spriteEffects, 0.0f);
                        num5 += tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y] + tileData.CoordinatePadding;
                    }
                }
            }
        }
Пример #3
0
        public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
        {
            Point16        coordinates = op.Coordinates;
            Texture2D      value       = TextureAssets.Tile[op.Type].get_Value();
            TileObjectData tileData    = TileObjectData.GetTileData(op.Type, op.Style, op.Alternate);
            int            num         = 0;
            int            num2        = 0;
            int            num3        = tileData.CalculatePlacementStyle(op.Style, op.Alternate, op.Random);
            int            num4        = 0;
            int            num5        = tileData.DrawYOffset;
            int            drawXOffset = tileData.DrawXOffset;

            num3 += tileData.DrawStyleOffset;
            int num6 = tileData.StyleWrapLimit;
            int num7 = tileData.StyleLineSkip;

            if (tileData.StyleWrapLimitVisualOverride.HasValue)
            {
                num6 = tileData.StyleWrapLimitVisualOverride.Value;
            }
            if (tileData.styleLineSkipVisualOverride.HasValue)
            {
                num7 = tileData.styleLineSkipVisualOverride.Value;
            }
            if (num6 > 0)
            {
                num4  = num3 / num6 * num7;
                num3 %= num6;
            }
            if (tileData.StyleHorizontal)
            {
                num  = tileData.CoordinateFullWidth * num3;
                num2 = tileData.CoordinateFullHeight * num4;
            }
            else
            {
                num  = tileData.CoordinateFullWidth * num4;
                num2 = tileData.CoordinateFullHeight * num3;
            }
            for (int i = 0; i < op.Size.X; i++)
            {
                int x    = num + (i - op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding);
                int num8 = num2;
                for (int j = 0; j < op.Size.Y; j++)
                {
                    int num9  = coordinates.X + i;
                    int num10 = coordinates.Y + j;
                    if (j == 0 && tileData.DrawStepDown != 0 && WorldGen.SolidTile(Framing.GetTileSafely(num9, num10 - 1)))
                    {
                        num5 += tileData.DrawStepDown;
                    }
                    int   num11 = op[i, j];
                    Color color;
                    if (num11 != 1)
                    {
                        if (num11 != 2)
                        {
                            continue;
                        }
                        color = Color.Red * 0.7f;
                    }
                    else
                    {
                        color = Color.White;
                    }
                    color *= 0.5f;
                    if (i >= op.ObjectStart.X && i < op.ObjectStart.X + tileData.Width && j >= op.ObjectStart.Y && j < op.ObjectStart.Y + tileData.Height)
                    {
                        SpriteEffects spriteEffects = SpriteEffects.None;
                        if (tileData.DrawFlipHorizontal && num9 % 2 == 0)
                        {
                            spriteEffects |= SpriteEffects.FlipHorizontally;
                        }
                        if (tileData.DrawFlipVertical && num10 % 2 == 0)
                        {
                            spriteEffects |= SpriteEffects.FlipVertically;
                        }
                        sb.Draw(sourceRectangle: new Rectangle(x, num8, tileData.CoordinateWidth, tileData.CoordinateHeights[j - op.ObjectStart.Y]), texture: value, position: new Vector2(num9 * 16 - (int)(position.X + (float)(tileData.CoordinateWidth - 16) / 2f) + drawXOffset, num10 * 16 - (int)position.Y + num5), color: color, rotation: 0f, origin: Vector2.Zero, scale: 1f, effects: spriteEffects, layerDepth: 0f);
                        num8 += tileData.CoordinateHeights[j - op.ObjectStart.Y] + tileData.CoordinatePadding;
                    }
                }
            }
        }
Пример #4
0
        public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
        {
            Point16        coordinates = op.Coordinates;
            Texture2D      texture     = Main.tileTexture[op.Type];
            TileObjectData tileData    = TileObjectData.GetTileData(op.Type, op.Style, op.Alternate);
            int            num         = 0;
            int            num2        = 0;
            int            num3        = tileData.CalculatePlacementStyle(op.Style, op.Alternate, op.Random);
            int            num4        = 0;
            int            num5        = tileData.DrawYOffset;

            if (tileData.StyleWrapLimit > 0)
            {
                num4  = num3 / tileData.StyleWrapLimit;
                num3 %= tileData.StyleWrapLimit;
            }
            if (tileData.StyleHorizontal)
            {
                num  = tileData.CoordinateFullWidth * num3;
                num2 = tileData.CoordinateFullHeight * num4;
            }
            else
            {
                num  = tileData.CoordinateFullWidth * num4;
                num2 = tileData.CoordinateFullHeight * num3;
            }
            for (int i = 0; i < op.Size.X; i++)
            {
                int x    = num + (i - op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding);
                int num6 = num2;
                for (int j = 0; j < op.Size.Y; j++)
                {
                    int num7 = coordinates.X + i;
                    int num8 = coordinates.Y + j;
                    if (j == 0 && tileData.DrawStepDown != 0)
                    {
                        Tile tileSafely = Framing.GetTileSafely(num7, num8 - 1);
                        if (WorldGen.SolidTile(tileSafely))
                        {
                            num5 += tileData.DrawStepDown;
                        }
                    }
                    Color color;
                    switch (op[i, j])
                    {
                    case 2:
                        color = Color.Red * 0.7f;
                        break;

                    case 1:
                        color = Color.White;
                        break;

                    default:
                        continue;
                    }
                    color *= 0.5f;
                    if (i >= op.ObjectStart.X && i < op.ObjectStart.X + tileData.Width && j >= op.ObjectStart.Y && j < op.ObjectStart.Y + tileData.Height)
                    {
                        SpriteEffects spriteEffects = SpriteEffects.None;
                        if (tileData.DrawFlipHorizontal && i % 2 == 1)
                        {
                            spriteEffects |= SpriteEffects.FlipHorizontally;
                        }
                        if (tileData.DrawFlipVertical && j % 2 == 1)
                        {
                            spriteEffects |= SpriteEffects.FlipVertically;
                        }
                        sb.Draw(sourceRectangle: new Rectangle(x, num6, tileData.CoordinateWidth, tileData.CoordinateHeights[j - op.ObjectStart.Y]), texture: texture, position: new Vector2(num7 * 16 - (int)(position.X + (float)(tileData.CoordinateWidth - 16) / 2f), num8 * 16 - (int)position.Y + num5), color: color, rotation: 0f, origin: Vector2.Zero, scale: 1f, effects: spriteEffects, layerDepth: 0f);
                        num6 += tileData.CoordinateHeights[j - op.ObjectStart.Y] + tileData.CoordinatePadding;
                    }
                }
            }
        }
Пример #5
0
		public static void DrawPreview(TileObjectPreviewData op, Vector2 position)
		{
		}
Пример #6
0
		static TileObject()
		{
			TileObject.Empty = new TileObject();
			TileObject.objectPreview = new TileObjectPreviewData();
		}
Пример #7
0
        // Token: 0x060001A7 RID: 423 RVA: 0x0002FF68 File Offset: 0x0002E168
        public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
        {
            Point16        coordinates = op.Coordinates;
            Texture2D      texture     = Main.tileTexture[(int)op.Type];
            TileObjectData tileData    = TileObjectData.GetTileData((int)op.Type, (int)op.Style, op.Alternate);
            int            num         = tileData.CalculatePlacementStyle((int)op.Style, op.Alternate, op.Random);
            int            num2        = 0;
            int            num3        = tileData.DrawYOffset;

            if (tileData.StyleWrapLimit > 0)
            {
                num2 = num / tileData.StyleWrapLimit * tileData.StyleLineSkip;
                num %= tileData.StyleWrapLimit;
            }
            int num4;
            int num5;

            if (tileData.StyleHorizontal)
            {
                num4 = tileData.CoordinateFullWidth * num;
                num5 = tileData.CoordinateFullHeight * num2;
            }
            else
            {
                num4 = tileData.CoordinateFullWidth * num2;
                num5 = tileData.CoordinateFullHeight * num;
            }
            for (int i = 0; i < (int)op.Size.X; i++)
            {
                int x    = num4 + (i - (int)op.ObjectStart.X) * (tileData.CoordinateWidth + tileData.CoordinatePadding);
                int num6 = num5;
                int j    = 0;
                while (j < (int)op.Size.Y)
                {
                    int num7 = (int)coordinates.X + i;
                    int num8 = (int)coordinates.Y + j;
                    if (j == 0 && tileData.DrawStepDown != 0 && WorldGen.SolidTile(Framing.GetTileSafely(num7, num8 - 1)))
                    {
                        num3 += tileData.DrawStepDown;
                    }
                    int   num9 = op[i, j];
                    Color color;
                    if (num9 == 1)
                    {
                        color = Color.White;
                        goto IL_156;
                    }
                    if (num9 == 2)
                    {
                        color = Color.Red * 0.7f;
                        goto IL_156;
                    }
IL_289:
                    j++;
                    continue;
IL_156:
                    color *= 0.5f;
                    if (i >= (int)op.ObjectStart.X && i < (int)op.ObjectStart.X + tileData.Width && j >= (int)op.ObjectStart.Y && j < (int)op.ObjectStart.Y + tileData.Height)
                    {
                        SpriteEffects spriteEffects = SpriteEffects.None;
                        if (tileData.DrawFlipHorizontal && i % 2 == 1)
                        {
                            spriteEffects |= SpriteEffects.FlipHorizontally;
                        }
                        if (tileData.DrawFlipVertical && j % 2 == 1)
                        {
                            spriteEffects |= SpriteEffects.FlipVertically;
                        }
                        Rectangle value = new Rectangle(x, num6, tileData.CoordinateWidth, tileData.CoordinateHeights[j - (int)op.ObjectStart.Y]);
                        sb.Draw(texture, new Vector2((float)(num7 * 16 - (int)(position.X + (float)(tileData.CoordinateWidth - 16) / 2f)), (float)(num8 * 16 - (int)position.Y + num3)), new Rectangle?(value), color, 0f, Vector2.Zero, 1f, spriteEffects, 0f);
                        num6 += tileData.CoordinateHeights[j - (int)op.ObjectStart.Y] + tileData.CoordinatePadding;
                        goto IL_289;
                    }
                    goto IL_289;
                }
            }
        }
Пример #8
0
        public static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
        {
            var coordinates    = op.Coordinates;
            var texture        = Main.tileTexture[(int)op.Type];
            var tileData       = TileObjectData.GetTileData((int)op.Type, (int)op.Style, op.Alternate);
            var placementStyle = tileData.CalculatePlacementStyle((int)op.Style, op.Alternate, op.Random);
            var num1           = 0;
            var drawYoffset    = tileData.DrawYOffset;

            if (tileData.StyleWrapLimit > 0)
            {
                num1            = placementStyle / tileData.StyleWrapLimit * tileData.StyleLineSkip;
                placementStyle %= tileData.StyleWrapLimit;
            }

            int num2;
            int num3;

            if (tileData.StyleHorizontal)
            {
                num2 = tileData.CoordinateFullWidth * placementStyle;
                num3 = tileData.CoordinateFullHeight * num1;
            }
            else
            {
                num2 = tileData.CoordinateFullWidth * num1;
                num3 = tileData.CoordinateFullHeight * placementStyle;
            }

            for (var index1 = 0; index1 < (int)op.Size.X; ++index1)
            {
                var x = num2 + (index1 - (int)op.ObjectStart.X) *
                        (tileData.CoordinateWidth + tileData.CoordinatePadding);
                var y = num3;
                for (var index2 = 0; index2 < (int)op.Size.Y; ++index2)
                {
                    var i    = (int)coordinates.X + index1;
                    var num4 = (int)coordinates.Y + index2;
                    if (index2 == 0 && tileData.DrawStepDown != 0 &&
                        WorldGen.SolidTile(Framing.GetTileSafely(i, num4 - 1)))
                    {
                        drawYoffset += tileData.DrawStepDown;
                    }
                    Color color1;
                    switch (op[index1, index2])
                    {
                    case 1:
                        color1 = Color.White;
                        break;

                    case 2:
                        color1 = Color.Red * 0.7f;
                        break;

                    default:
                        continue;
                    }

                    var color2 = color1 * 0.5f;
                    if (index1 >= (int)op.ObjectStart.X && index1 < (int)op.ObjectStart.X + tileData.Width &&
                        (index2 >= (int)op.ObjectStart.Y && index2 < (int)op.ObjectStart.Y + tileData.Height))
                    {
                        var effects = SpriteEffects.None;
                        if (tileData.DrawFlipHorizontal && index1 % 2 == 1)
                        {
                            effects |= SpriteEffects.FlipHorizontally;
                        }
                        if (tileData.DrawFlipVertical && index2 % 2 == 1)
                        {
                            effects |= SpriteEffects.FlipVertically;
                        }
                        var rectangle = new Rectangle(x, y, tileData.CoordinateWidth,
                                                      tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y]);
                        sb.Draw(texture,
                                new Vector2(
                                    (float)(i * 16 - (int)((double)position.X +
                                                           (double)(tileData.CoordinateWidth - 16) / 2.0)),
                                    (float)(num4 * 16 - (int)position.Y + drawYoffset)), new Rectangle?(rectangle),
                                color2, 0.0f, Vector2.Zero, 1f, effects, 0.0f);
                        y += tileData.CoordinateHeights[index2 - (int)op.ObjectStart.Y] + tileData.CoordinatePadding;
                    }
                }
            }
        }