You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
237 lines
4.8 KiB
237 lines
4.8 KiB
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() |
|
} |
|
} |
|
} |
|
}
|
|
|