recrownedathenaeum/RecrownedAthenaeum/UI/BookSystem/Page.cs

58 lines
2.1 KiB
C#
Raw Normal View History

using RecrownedAthenaeum.ContentSystem;
using RecrownedAthenaeum.Render;
using RecrownedAthenaeum.UI.Modular;
using RecrownedAthenaeum.UI.SkinSystem;
2019-01-27 23:39:18 +00:00
namespace RecrownedAthenaeum.UI.BookSystem
{
2019-01-14 07:26:46 +00:00
/// <summary>
/// A page a part of a <see cref="Book"/>.
/// </summary>
public class Page : UIModuleGroup
{
private readonly int pageX, pageY;
2019-01-14 07:26:46 +00:00
/// <summary>
/// Whether or not this book needs to be refreshed with new dimensions.
/// </summary>
public bool requiresSizeUpdate;
2019-01-14 07:26:46 +00:00
/// <summary>
/// Constructs a page.
/// </summary>
/// <param name="pageX">The X position in the book.</param>
/// <param name="pageY">The Y position in the book.</param>
public Page(int pageX, int pageY) : base()
{
this.pageX = pageX;
this.pageY = pageY;
2019-01-14 07:26:46 +00:00
requiresSizeUpdate = true;
2019-03-10 06:49:25 +00:00
name = ToString();
}
2019-01-14 07:26:46 +00:00
/// <summary>
/// Called when this page is flagged as needing a size update.
/// </summary>
/// <param name="width">New width.</param>
/// <param name="height">New Height</param>
public virtual void ApplySize(int width, int height)
{
situation.X = pageX * width;
situation.Y = pageY * height;
situation.Width = width;
situation.Height = height;
2019-01-14 07:26:46 +00:00
requiresSizeUpdate = false;
}
2019-01-27 20:57:47 +00:00
/// <summary>
/// Called only once after a page is added to a <see cref="Book"/>. Generally used to instantiate the modules of the page.
/// </summary>
/// <param name="assets">The assets to be used during initialization passed by the book this page belongs to.</param>
/// <param name="skin">The skin the book containing this page is given that can be used by this page.</param>
/// <param name="scissorBox">The scissor box to use for cropping.</param>
protected internal virtual void Initialize(ContentManagerController assets, ISkin skin, ScissorBox scissorBox)
2019-01-27 20:57:47 +00:00
{
this.scissorBox = scissorBox;
2019-01-27 20:57:47 +00:00
}
}
}