using CustomNPCFramework.Framework.Graphics; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using StardewValley; using StardustCore.UIUtilities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CustomNPCFramework.Framework.ModularNPCS { /// /// Used as a wrapper for the AnimatedSprite class. /// public class AnimatedSpriteExtended { /// /// The actual sprite of the object. /// public AnimatedSprite sprite; /// /// The path to the texture to load the sprite from. /// public string path; public AnimatedSpriteExtended(Texture2DExtended texture,AssetSheet assetSheet) { //Set the sprite texture this.sprite = new AnimatedSprite(); Texture2D load = texture.Copy().texture; var thing = Class1.ModHelper.Reflection.GetField(this.sprite, "Texture", true); thing.SetValue(load); this.path = assetSheet.path.Clone().ToString(); this.sprite.currentFrame = assetSheet.index; this.sprite.SpriteWidth = (int)assetSheet.assetInfo.assetSize.X; this.sprite.SpriteHeight = (int)assetSheet.assetInfo.assetSize.Y; } /// /// Constructor. /// /// /// /// /// public AnimatedSpriteExtended(string path ,int currentFrame, int spriteWidth, int spriteHeight) { this.path = Class1.getRelativeDirectory(path); //Set the sprite texture this.sprite = new AnimatedSprite(); Texture2D load = Class1.ModHelper.Content.Load(this.path); var thing=Class1.ModHelper.Reflection.GetField(this.sprite, "Texture", true); thing.SetValue(load); //Set the fields. this.sprite.currentFrame = currentFrame; this.sprite.SpriteWidth = spriteWidth; this.sprite.SpriteHeight = spriteHeight; //this.sprite = new AnimatedSprite(texture, currentFrame, spriteWidth, spriteHeight); } /// /// Reloads the asset from disk. /// public void reload() { //Set the sprite texture Texture2D load = Class1.ModHelper.Content.Load(this.path); var thing = Class1.ModHelper.Reflection.GetField(this.sprite, "Texture", true); thing.SetValue(load); } } }