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

◆ DrawSpecialTilesLegacy()

void Terraria.GameContent.Drawing.TileDrawing.DrawSpecialTilesLegacy ( Vector2 screenPosition,
Vector2 offSet )
inlineprivate

Definition at line 6722 of file TileDrawing.cs.

6723 {
6724 for (int i = 0; i < _specialTilesCount; i++)
6725 {
6726 int num = _specialTileX[i];
6727 int num2 = _specialTileY[i];
6728 Tile tile = Main.tile[num, num2];
6729 ushort type = tile.type;
6730 short frameX = tile.frameX;
6731 short frameY = tile.frameY;
6732 if (type == 237)
6733 {
6734 Main.spriteBatch.Draw(TextureAssets.SunOrb.Value, new Vector2((float)(num * 16 - (int)screenPosition.X) + 8f, num2 * 16 - (int)screenPosition.Y - 36) + offSet, new Rectangle(0, 0, TextureAssets.SunOrb.Width(), TextureAssets.SunOrb.Height()), new Color(Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor, 0), Main.sunCircle, new Vector2(TextureAssets.SunOrb.Width() / 2, TextureAssets.SunOrb.Height() / 2), 1f, SpriteEffects.None, 0f);
6735 }
6736 if (type == 334 && frameX >= 5000)
6737 {
6738 _ = frameY / 18;
6739 int num3 = frameX;
6740 int num4 = 0;
6741 int num5 = num3 % 5000;
6742 num5 -= 100;
6743 while (num3 >= 5000)
6744 {
6745 num4++;
6746 num3 -= 5000;
6747 }
6748 int frameX2 = Main.tile[num + 1, num2].frameX;
6749 frameX2 = ((frameX2 < 25000) ? (frameX2 - 10000) : (frameX2 - 25000));
6750 Item item = new Item();
6751 item.netDefaults(num5);
6752 item.Prefix(frameX2);
6753 Main.instance.LoadItem(item.type);
6754 Texture2D value = TextureAssets.Item[item.type].Value;
6755 Rectangle value2 = ((Main.itemAnimations[item.type] == null) ? value.Frame() : Main.itemAnimations[item.type].GetFrame(value));
6756 int width = value2.Width;
6757 int height = value2.Height;
6758 float num6 = 1f;
6759 if (width > 40 || height > 40)
6760 {
6761 num6 = ((width <= height) ? (40f / (float)height) : (40f / (float)width));
6762 }
6763 num6 *= item.scale;
6764 SpriteEffects effects = SpriteEffects.None;
6765 if (num4 >= 3)
6766 {
6767 effects = SpriteEffects.FlipHorizontally;
6768 }
6769 Color color = Lighting.GetColor(num, num2);
6770 Main.spriteBatch.Draw(value, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 8) + offSet, value2, Lighting.GetColor(num, num2), 0f, new Vector2(width / 2, height / 2), num6, effects, 0f);
6771 if (item.color != default(Color))
6772 {
6773 Main.spriteBatch.Draw(value, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 8) + offSet, value2, item.GetColor(color), 0f, new Vector2(width / 2, height / 2), num6, effects, 0f);
6774 }
6775 }
6776 if (type == 395)
6777 {
6779 Vector2 screenPositionForItemCenter = new Vector2(num * 16 - (int)screenPosition.X + 16, num2 * 16 - (int)screenPosition.Y + 16) + offSet;
6780 Color color2 = Lighting.GetColor(num, num2);
6781 ItemSlot.DrawItemIcon(item2, 31, Main.spriteBatch, screenPositionForItemCenter, item2.scale, 20f, color2);
6782 }
6783 if (type == 520)
6784 {
6786 if (!item3.IsAir)
6787 {
6788 Main.instance.LoadItem(item3.type);
6789 Texture2D value3 = TextureAssets.Item[item3.type].Value;
6790 Rectangle value4 = ((!ItemID.Sets.IsFood[item3.type]) ? value3.Frame() : value3.Frame(1, 3, 0, 2));
6791 int width2 = value4.Width;
6792 int height2 = value4.Height;
6793 float num7 = 1f;
6794 SpriteEffects effects2 = ((tile.frameX == 0) ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
6795 Color color3 = Lighting.GetColor(num, num2);
6797 float scale = 1f;
6799 num7 *= scale;
6800 Vector2 position = new Vector2(num * 16 - (int)screenPosition.X + 8, num2 * 16 - (int)screenPosition.Y + 16) + offSet;
6801 position.Y += 2f;
6802 Vector2 origin = new Vector2(width2 / 2, height2);
6803 Main.spriteBatch.Draw(value3, position, value4, currentColor, 0f, origin, num7, effects2, 0f);
6804 if (item3.color != default(Color))
6805 {
6806 Main.spriteBatch.Draw(value3, position, value4, item3.GetColor(color3), 0f, origin, num7, effects2, 0f);
6807 }
6808 }
6809 }
6810 if (type == 471)
6811 {
6813 Main.GetItemDrawFrame(item4.type, out var itemTexture, out var itemFrame);
6814 int width3 = itemFrame.Width;
6815 int height3 = itemFrame.Height;
6816 float num8 = 1f;
6817 float num9 = 40f;
6818 if ((float)width3 > num9 || (float)height3 > num9)
6819 {
6820 num8 = ((width3 <= height3) ? (num9 / (float)height3) : (num9 / (float)width3));
6821 }
6822 num8 *= item4.scale;
6823 SpriteEffects effects3 = SpriteEffects.FlipHorizontally;
6824 if (tile.frameX < 54)
6825 {
6826 effects3 = SpriteEffects.None;
6827 }
6828 Color color4 = Lighting.GetColor(num, num2);
6830 float scale2 = 1f;
6832 num8 *= scale2;
6833 Main.spriteBatch.Draw(itemTexture, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 24) + offSet, itemFrame, currentColor2, 0f, new Vector2(width3 / 2, height3 / 2), num8, effects3, 0f);
6834 if (item4.color != default(Color))
6835 {
6836 Main.spriteBatch.Draw(itemTexture, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 24) + offSet, itemFrame, item4.GetColor(color4), 0f, new Vector2(width3 / 2, height3 / 2), num8, effects3, 0f);
6837 }
6838 }
6839 if (type == 412)
6840 {
6841 Texture2D value5 = TextureAssets.GlowMask[202].Value;
6842 int num10 = Main.tileFrame[type] / 60;
6843 int frameY2 = (num10 + 1) % 4;
6844 float num11 = (float)(Main.tileFrame[type] % 60) / 60f;
6845 Color color5 = new Color(255, 255, 255, 255);
6846 Main.spriteBatch.Draw(value5, new Vector2(num * 16 - (int)screenPosition.X, num2 * 16 - (int)screenPosition.Y + 10) + offSet, value5.Frame(1, 4, 0, num10), color5 * (1f - num11), 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6847 Main.spriteBatch.Draw(value5, new Vector2(num * 16 - (int)screenPosition.X, num2 * 16 - (int)screenPosition.Y + 10) + offSet, value5.Frame(1, 4, 0, frameY2), color5 * num11, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6848 }
6849 if (type == 620)
6850 {
6851 Texture2D value6 = TextureAssets.Extra[202].Value;
6852 _ = (float)(Main.tileFrame[type] % 60) / 60f;
6853 int num12 = 2;
6854 Main.critterCage = true;
6855 int waterAnimalCageFrame = GetWaterAnimalCageFrame(num, num2, frameX, frameY);
6856 int num13 = 8;
6857 int num14 = Main.butterflyCageFrame[num13, waterAnimalCageFrame];
6858 int num15 = 6;
6859 float num16 = 1f;
6860 Rectangle value7 = new Rectangle(0, 34 * num14, 32, 32);
6861 Vector2 vector = new Vector2(num * 16 - (int)screenPosition.X, num2 * 16 - (int)screenPosition.Y + num12) + offSet;
6862 Main.spriteBatch.Draw(value6, vector, value7, new Color(255, 255, 255, 255), 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6863 for (int j = 0; j < num15; j++)
6864 {
6865 Color color6 = new Color(127, 127, 127, 0).MultiplyRGBA(Main.hslToRgb((Main.GlobalTimeWrappedHourly + (float)j / (float)num15) % 1f, 1f, 0.5f));
6866 color6 *= 1f - num16 * 0.5f;
6867 color6.A = 0;
6868 int num17 = 2;
6869 Vector2 position2 = vector + ((float)j / (float)num15 * ((float)Math.PI * 2f)).ToRotationVector2() * ((float)num17 * num16 + 2f);
6870 Main.spriteBatch.Draw(value6, position2, value7, color6, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6871 }
6872 Main.spriteBatch.Draw(value6, vector, value7, new Color(255, 255, 255, 0) * 0.1f, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6873 }
6874 }
6875 }
const double PI
Definition Math.cs:16
static Dictionary< Point16, TileEntity > ByPosition
Definition TileEntity.cs:20
int GetWaterAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
static bool[] IsFood
Definition ItemID.cs:233
static float DrawItemIcon(Item item, int context, SpriteBatch spriteBatch, Vector2 screenPositionForItemCenter, float scale, float sizeLimit, Color environmentColor)
Definition ItemSlot.cs:2273
static void GetItemLight(ref Color currentColor, Item item, bool outInTheWorld=false)
Definition ItemSlot.cs:2899

References Terraria.GameContent.Drawing.TileDrawing._specialTilesCount, Terraria.GameContent.Drawing.TileDrawing._specialTileX, Terraria.GameContent.Drawing.TileDrawing._specialTileY, Terraria.Main.butterflyCageFrame, Terraria.DataStructures.TileEntity.ByPosition, Microsoft.Xna.Framework.Graphics.Color, Terraria.UI.ItemSlot.DrawItemIcon(), Terraria.GameContent.TextureAssets.Extra, Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.Lighting.GetColor(), Terraria.Main.GetItemDrawFrame(), Terraria.UI.ItemSlot.GetItemLight(), Terraria.GameContent.Drawing.TileDrawing.GetWaterAnimalCageFrame(), Terraria.Main.GlobalTimeWrappedHourly, Terraria.GameContent.TextureAssets.GlowMask, Terraria.Main.hslToRgb(), Terraria.Main.instance, Terraria.ID.ItemID.Sets.IsFood, System.item, Terraria.GameContent.TextureAssets.Item, Terraria.Main.itemAnimations, Terraria.Main.mouseTextColor, System.Math.PI, Terraria.Main.spriteBatch, Terraria.Main.sunCircle, Terraria.GameContent.TextureAssets.SunOrb, Terraria.Main.tile, Terraria.Main.tileFrame, System.type, Terraria.Tile.type, System.value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Vector2.X, Microsoft.Xna.Framework.Vector2.Y, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.GameContent.Drawing.TileDrawing.Draw().