From 16a6f8201e422e290b537c836a7472f978704b31 Mon Sep 17 00:00:00 2001 From: Niko Date: Fri, 21 Nov 2025 21:06:14 +0000 Subject: [PATCH] Add Energy Core sprite --- Content/Items/Materials/EnergyCore.cs | 37 +++++++++++++++++++++++-- Content/Items/Materials/EnergyCore.png | Bin 504 -> 33130 bytes Content/Items/Materials/RGBAlloy.cs | 1 - SPRITES_TODO.md | 3 +- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/Content/Items/Materials/EnergyCore.cs b/Content/Items/Materials/EnergyCore.cs index 398c358..5b9f169 100644 --- a/Content/Items/Materials/EnergyCore.cs +++ b/Content/Items/Materials/EnergyCore.cs @@ -1,21 +1,54 @@ 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; using ForgottenWawiTech.Content.Rarities; namespace ForgottenWawiTech.Content.Items.Materials { public class EnergyCore : ModItem { + private const int TICKS_PER_FRAME = 12; + private const int FRAME_COUNT = 2; + + public override void SetStaticDefaults() + { + Main.RegisterItemAnimation(Type, new DrawAnimationVertical(TICKS_PER_FRAME, FRAME_COUNT)); + } public override void SetDefaults() { - Item.width = 20; - Item.height = 20; + Item.width = 64; + Item.height = 64; Item.maxStack = 9999; Item.rare = ModContent.RarityType(); Item.value = Item.buyPrice(gold: 50); } + 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 + } } } \ No newline at end of file diff --git a/Content/Items/Materials/EnergyCore.png b/Content/Items/Materials/EnergyCore.png index 9e0cf81e52f4133dbe85453dd9a37993af17b5be..3cb51744301921248a215d36ec270f35b445a686 100644 GIT binary patch literal 33130 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 diff --git a/Content/Items/Materials/RGBAlloy.cs b/Content/Items/Materials/RGBAlloy.cs index 2d1211d..13bd349 100644 --- a/Content/Items/Materials/RGBAlloy.cs +++ b/Content/Items/Materials/RGBAlloy.cs @@ -20,7 +20,6 @@ namespace ForgottenWawiTech.Content.Items.Materials public override void SetStaticDefaults() { Main.RegisterItemAnimation(Type, new DrawAnimationVertical(TICKS_PER_FRAME, FRAME_COUNT)); - } public override void SetDefaults() diff --git a/SPRITES_TODO.md b/SPRITES_TODO.md index 993263f..427fbb4 100644 --- a/SPRITES_TODO.md +++ b/SPRITES_TODO.md @@ -132,8 +132,9 @@ Stick to 32x32 to 64x64 in my opinion - however can go up/down if needed - Niko - A cylinder shaped device (sort of like Ekko's time machine) to contain singularities - [ ] Controlled Singularity - See above, just with a singularity in -- [ ] Energy Core +- [x] Energy Core - A compact, circular power source. Imagine a small, futuristic fusion reactor. + - Completed by Neptune - [ ] Fallen Angel Feather (dev boss material) - A feather from Noctis's wings, imbued with celestial energy. - [x] Half Eaten Fish (dev boss material)