using UnityEngine; using System; using System.Collections; namespace Fungus { /** * Command classes have their own namespace to prevent them popping up in code completion. */ namespace Command { /** * Sets the display rect for the active Page using a PageBounds object. */ public class SetPageBounds : CommandQueue.Command { PageBounds pageBounds; Page.Layout pageLayout; public SetPageBounds(PageBounds _pageBounds, Page.Layout _pageLayout) { pageBounds = _pageBounds; pageLayout = _pageLayout; } public override void Execute(CommandQueue commandQueue, Action onComplete) { if (pageBounds != null) { pageBounds.UpdatePageRect(); Game.GetInstance().activePage.layout = pageLayout; } if (onComplete != null) { onComplete(); } } } /** * Sets the display rect for the active Page using normalized screen space coords. */ public class SetPageRect : CommandQueue.Command { Page.ScreenRect screenRect; Page.Layout layout; public SetPageRect(Page.ScreenRect _screenRect, Page.Layout _layout) { screenRect = _screenRect; layout = _layout; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Page page = Game.GetInstance().activePage; page.pageRect = Page.CalcPageRect(screenRect); page.layout = layout; if (onComplete != null) { onComplete(); } } } /** * Sets the currently active Page Style for rendering Pages. */ public class SetPageStyle : CommandQueue.Command { PageStyle pageStyle; public SetPageStyle(PageStyle _pageStyle) { pageStyle = _pageStyle; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Game.GetInstance().activePageStyle = pageStyle; if (onComplete != null) { onComplete(); } } } /** * Sets the header text displayed at the top of the active page. */ public class SetHeader : CommandQueue.Command { string titleText; public SetHeader(string _titleText) { titleText = _titleText; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Page page = Game.GetInstance().activePage; if (page == null) { Debug.LogError("Active page must not be null"); } else { page.SetHeader(titleText); } if (onComplete != null) { onComplete(); } } } /** * Sets the footer text displayed at the top of the active page. */ public class SetFooter : CommandQueue.Command { string titleText; public SetFooter(string _titleText) { titleText = _titleText; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Page page = Game.GetInstance().activePage; if (page == null) { Debug.LogError("Active page must not be null"); } else { page.SetFooter(titleText); } if (onComplete != null) { onComplete(); } } } /** * Writes story text to the currently active page. * A 'continue' icon is displayed when the text has fully appeared. */ public class Say : CommandQueue.Command { string storyText; public Say(string _storyText) { storyText = _storyText; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Page page = Game.GetInstance().activePage; if (page == null) { Debug.LogError("Active page must not be null"); } else { page.Say(storyText, onComplete); } } } /** * Adds an option button to the current list of options. * Use the Choose command to display added options. */ public class AddOption : CommandQueue.Command { string optionText; Action optionAction; public AddOption(string _optionText, Action _optionAction) { optionText = _optionText; optionAction = _optionAction; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Page page = Game.GetInstance().activePage; if (page == null) { Debug.LogError("Active page must not be null"); } else { page.AddOption(optionText, optionAction); } if (onComplete != null) { onComplete(); } } } /** * Displays all previously added options. */ public class Choose : CommandQueue.Command { string chooseText; public Choose(string _chooseText) { chooseText = _chooseText; } public override void Execute(CommandQueue commandQueue, Action onComplete) { Page page = Game.GetInstance().activePage; if (page == null) { Debug.LogError("Active page must not be null"); } else { page.Choose(chooseText); } // Choose always clears commandQueue, so no need to call onComplete() } } } }