using RecrownedAthenaeum.Assets; using RecrownedAthenaeum.Graphics.Render; using RecrownedAthenaeum.Graphics.UI.Modular; using RecrownedAthenaeum.Graphics.UI.SkinSystem; namespace RecrownedAthenaeum.Graphics.UI.BookSystem { /// /// A page a part of a . /// public class Page : UIModuleGroup { private readonly int pageX, pageY; /// /// Whether or not this book needs to be refreshed with new dimensions. /// public bool requiresSizeUpdate; /// /// Constructs a page. /// /// The X position in the book. /// The Y position in the book. public Page(int pageX, int pageY) : base() { this.pageX = pageX; this.pageY = pageY; requiresSizeUpdate = true; name = ToString(); } /// /// Called when this page is flagged as needing a size update. /// /// New width. /// New Height public virtual void ApplySize(int width, int height) { X = pageX * width; Y = pageY * height; Width = width; Height = height; requiresSizeUpdate = false; } /// /// Called only once after a page is added to a . Generally used to instantiate the modules of the page. /// /// The assets to be used during initialization passed by the book this page belongs to. /// The skin the book containing this page is given that can be used by this page. /// The scissor box to use for cropping. protected internal virtual void Initialize(AssetManager assets, ISkin skin, BasicScissor basicScissor) { this.basicScissor = basicScissor; } } }