An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
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.

139 lines
4.9 KiB

// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using MoonSharp.Interpreter;
using Fungus.Utils;
namespace Fungus
{
/// <summary>
/// Types of display operations supported by portraits.
/// </summary>
public enum DisplayType
{
/// <summary> Do nothing. </summary>
None,
/// <summary> Show the portrait. </summary>
Show,
/// <summary> Hide the portrait. </summary>
Hide,
/// <summary> Replace the existing portrait. </summary>
Replace,
/// <summary> Move portrait to the front. </summary>
MoveToFront
}
/// <summary>
/// Directions that character portraits can face.
/// </summary>
public enum FacingDirection
{
/// <summary> Unknown direction </summary>
None,
/// <summary> Facing left. </summary>
Left,
/// <summary> Facing right. </summary>
Right
}
/// <summary>
/// Offset direction for position.
/// </summary>
public enum PositionOffset
{
/// <summary> Unknown offset direction. </summary>
None,
/// <summary> Offset applies to the left. </summary>
OffsetLeft,
/// <summary> Offset applies to the right. </summary>
OffsetRight
}
/// <summary>
/// Controls the Portrait sprites on stage
/// </summary>
public interface IPortraitController
{
/// <summary>
/// Using all portrait options available, run any portrait command.
/// </summary>
/// <param name="options">Portrait Options</param>
/// <param name="onComplete">The function that will run once the portrait command finishes</param>
void RunPortraitCommand(PortraitOptions options, System.Action onComplete);
/// <summary>
/// Moves Character in front of other characters on stage
/// </summary>
void MoveToFront(Character character);
/// <summary>
/// Moves Character in front of other characters on stage
/// </summary>
void MoveToFront(PortraitOptions options);
/// <summary>
/// Shows character at a named position in the stage
/// </summary>
/// <param name="character"></param>
/// <param name="position">Named position on stage</param>
void Show(Character character, string position);
/// <summary>
/// Shows character moving from a position to a position
/// </summary>
/// <param name="character"></param>
/// <param name="portrait"></param>
/// <param name="fromPosition">Where the character will appear</param>
/// <param name="toPosition">Where the character will move to</param>
void Show(Character character, string portrait, string fromPosition, string toPosition);
/// <summary>
/// From lua, you can pass an options table with named arguments
/// example:
/// stage.show{character=jill, portrait="happy", fromPosition="right", toPosition="left"}
/// Any option available in the PortraitOptions is available from Lua
/// </summary>
/// <param name="optionsTable">Moonsharp Table</param>
void Show(Table optionsTable);
/// <summary>
/// Show portrait with the supplied portrait options
/// </summary>
/// <param name="options"></param>
void Show(PortraitOptions options);
/// <summary>
/// Simple show command that shows the character with an available named portrait
/// </summary>
/// <param name="character">Character to show</param>
/// <param name="portrait">Named portrait to show for the character, i.e. "angry", "happy", etc</param>
void ShowPortrait(Character character, string portrait);
/// <summary>
/// Simple character hide command
/// </summary>
/// <param name="character">Character to hide</param>
void Hide(Character character);
/// <summary>
/// Move the character to a position then hide it
/// </summary>
/// <param name="character">Character to hide</param>
/// <param name="toPosition">Where the character will disapear to</param>
void Hide(Character character, string toPosition);
/// <summary>
/// From lua, you can pass an options table with named arguments
/// example:
/// stage.hide{character=jill, toPosition="left"}
/// Any option available in the PortraitOptions is available from Lua
/// </summary>
/// <param name="optionsTable">Moonsharp Table</param>
void Hide(Table optionsTable);
/// <summary>
/// Hide portrait with provided options
/// </summary>
void Hide(PortraitOptions options);
}
}