2018-05-01 09:21:31 +08:00
|
|
|
|
using CustomNPCFramework.Framework.Graphics;
|
|
|
|
|
using Microsoft.Xna.Framework.Content;
|
|
|
|
|
using Microsoft.Xna.Framework.Graphics;
|
2018-02-24 17:04:35 +08:00
|
|
|
|
using StardewValley;
|
2018-05-01 09:21:31 +08:00
|
|
|
|
using StardustCore.UIUtilities;
|
2018-02-24 17:04:35 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace CustomNPCFramework.Framework.ModularNPCS
|
|
|
|
|
{
|
2018-03-20 14:01:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Used as a wrapper for the AnimatedSprite class.
|
|
|
|
|
/// </summary>
|
2018-02-24 17:04:35 +08:00
|
|
|
|
public class AnimatedSpriteExtended
|
|
|
|
|
{
|
2018-03-20 14:01:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// The actual sprite of the object.
|
|
|
|
|
/// </summary>
|
2018-02-24 17:04:35 +08:00
|
|
|
|
public AnimatedSprite sprite;
|
2018-03-20 14:01:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// The path to the texture to load the sprite from.
|
|
|
|
|
/// </summary>
|
2018-02-24 17:04:35 +08:00
|
|
|
|
public string path;
|
|
|
|
|
|
|
|
|
|
|
2018-05-01 09:21:31 +08:00
|
|
|
|
public AnimatedSpriteExtended(Texture2DExtended texture,AssetSheet assetSheet)
|
2018-02-24 17:04:35 +08:00
|
|
|
|
{
|
2018-05-01 09:21:31 +08:00
|
|
|
|
//Set the sprite texture
|
|
|
|
|
this.sprite = new AnimatedSprite();
|
|
|
|
|
Texture2D load = texture.Copy().texture;
|
|
|
|
|
var thing = Class1.ModHelper.Reflection.GetField<Texture2D>(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;
|
|
|
|
|
|
|
|
|
|
|
2018-02-24 17:04:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
2018-03-04 23:53:55 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Constructor.
|
|
|
|
|
/// </summary>
|
2018-05-01 09:21:31 +08:00
|
|
|
|
/// <param name="path"></param>
|
|
|
|
|
/// <param name="currentFrame"></param>
|
|
|
|
|
/// <param name="spriteWidth"></param>
|
|
|
|
|
/// <param name="spriteHeight"></param>
|
|
|
|
|
public AnimatedSpriteExtended(string path ,int currentFrame, int spriteWidth, int spriteHeight)
|
2018-03-04 23:53:55 +08:00
|
|
|
|
{
|
|
|
|
|
this.path = Class1.getRelativeDirectory(path);
|
2018-05-01 09:21:31 +08:00
|
|
|
|
|
|
|
|
|
//Set the sprite texture
|
|
|
|
|
this.sprite = new AnimatedSprite();
|
|
|
|
|
Texture2D load = Class1.ModHelper.Content.Load<Texture2D>(this.path);
|
|
|
|
|
var thing=Class1.ModHelper.Reflection.GetField<Texture2D>(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);
|
2018-03-04 23:53:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
2018-02-24 17:04:35 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Reloads the asset from disk.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void reload()
|
|
|
|
|
{
|
2018-05-01 09:21:31 +08:00
|
|
|
|
//Set the sprite texture
|
|
|
|
|
Texture2D load = Class1.ModHelper.Content.Load<Texture2D>(this.path);
|
|
|
|
|
var thing = Class1.ModHelper.Reflection.GetField<Texture2D>(this.sprite, "Texture", true);
|
|
|
|
|
thing.SetValue(load);
|
2018-02-24 17:04:35 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|