// Animated by British_Raccoon using Terraria.ID; using Terraria; using Terraria.ModLoader; using Terraria.DataStructures; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System; using Terraria.GameContent; namespace ForgottenWawiTech.Content.Items.Materials { public class RGBAlloy : ModItem { private const int FRAME_COUNT = 5; private const int TICKS_PER_FRAME = 10; public override void SetStaticDefaults() { Main.RegisterItemAnimation(Type, new DrawAnimationVertical(TICKS_PER_FRAME, FRAME_COUNT)); } public override void SetDefaults() { Item.width = 32; Item.height = 32; Item.maxStack = 9999; Item.rare = ItemRarityID.White; Item.value = Item.buyPrice(gold: 50); } public override void AddRecipes() { CreateRecipe() .AddIngredient(ModContent.ItemType(), 1) .AddIngredient(ModContent.ItemType(), 5) .AddTile(TileID.Anvils) .Register(); } // Some tML setups won't animate dropped items with just RegisterItemAnimation. // Manually draw the animated frame in-world to ensure it animates when dropped. public override bool PreDrawInWorld(SpriteBatch spriteBatch, Color lightColor, Color alphaColor, ref float rotation, ref float scale, int whoAmI) { Texture2D texture = Terraria.GameContent.TextureAssets.Item[Type].Value; // Protect against incorrect frame count int frameHeight = texture.Height / Math.Max(1, FRAME_COUNT); int frame = (int)((Main.GameUpdateCount / (ulong)Math.Max(1, TICKS_PER_FRAME)) % (ulong)Math.Max(1, FRAME_COUNT)); Rectangle source = new Rectangle(0, frame * frameHeight, texture.Width, frameHeight); Vector2 drawPos = Item.Center - Main.screenPosition; Vector2 origin = new Vector2(source.Width / 2f, source.Height / 2f); // Use alphaColor for dropped items (includes item alpha), multiplied by light Color drawColor = lightColor; spriteBatch.Draw(texture, drawPos, source, drawColor, rotation, origin, scale, SpriteEffects.None, 0f); return false; // we've handled the draw } } }