// 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); } }