Show / Hide Table of Contents

Class AnimatedScreenObject

A ScreenObject that displays an animated set of ICellSurface surfaces.

Inheritance
object
ScreenObject
AnimatedScreenObject
Implements
IScreenSurface
IScreenObject
IPositionable
IComponentHost
Inherited Members
ScreenObject.ComponentsUpdate
ScreenObject.ComponentsRender
ScreenObject.ComponentsMouse
ScreenObject.ComponentsKeyboard
ScreenObject.ComponentsEmpty
ScreenObject.ProcessKeyboard(Keyboard)
ScreenObject.OnFocusLost()
ScreenObject.OnFocused()
ScreenObject.OnParentChanged(IScreenObject, IScreenObject)
ScreenObject.OnPositionChanging(Point, Point)
ScreenObject.OnPositionChanged(Point, Point)
ScreenObject.OnVisibleChanged()
ScreenObject.OnEnabledChanged()
ScreenObject.GetSadComponents<TComponent>()
ScreenObject.GetSadComponent<TComponent>()
ScreenObject.HasSadComponent<TComponent>(out TComponent)
ScreenObject.OnSadComponentAdded(IComponent)
ScreenObject.OnSadComponentRemoved(IComponent)
ScreenObject.SortComponents()
ScreenObject.Components_FilterAddItem(IComponent, List<IComponent>, List<IComponent>, List<IComponent>, List<IComponent>, List<IComponent>)
ScreenObject.Components_FilterRemoveItem(IComponent, List<IComponent>, List<IComponent>, List<IComponent>, List<IComponent>, List<IComponent>)
ScreenObject.Components_Sort(List<IComponent>, List<IComponent>, List<IComponent>, List<IComponent>, List<IComponent>)
ScreenObject.OnSerializingMethod(StreamingContext)
ScreenObject.SortOrder
ScreenObject.Children
ScreenObject.Parent
ScreenObject.Position
ScreenObject.AbsolutePosition
ScreenObject.IgnoreParentPosition
ScreenObject.IsVisible
ScreenObject.IsEnabled
ScreenObject.IsFocused
ScreenObject.FocusedMode
ScreenObject.IsExclusiveMouse
ScreenObject.UseKeyboard
ScreenObject.UseMouse
ScreenObject.SadComponents
ScreenObject.ParentChanged
ScreenObject.PositionChanged
ScreenObject.PositionChanging
ScreenObject.IsVisibleChanged
ScreenObject.IsEnabledChanged
ScreenObject.FocusLost
ScreenObject.Focused
object.GetType()
object.MemberwiseClone()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
Namespace: SadConsole
Assembly: SadConsole.dll
Syntax
[DataContract]
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class AnimatedScreenObject : ScreenObject, IScreenSurface, IScreenObject, IPositionable, IComponentHost

Constructors

AnimatedScreenObject(string, IFont, Point, IEnumerable<ICellSurface>)

Declaration
[JsonConstructor]
public AnimatedScreenObject(string name, IFont font, Point fontSize, IEnumerable<ICellSurface> frames)
Parameters
Type Name Description
string name
IFont font
Point fontSize
IEnumerable<ICellSurface> frames

AnimatedScreenObject(string, IEnumerable<ICellSurface>)

Creates a new animation with the specified name and frames.

Declaration
public AnimatedScreenObject(string name, IEnumerable<ICellSurface> frames)
Parameters
Type Name Description
string name

The name of the animation.

IEnumerable<ICellSurface> frames

The frames that make up the animation.

AnimatedScreenObject(string, int, int)

Creates a new animation with the specified name, width, and height.

Declaration
public AnimatedScreenObject(string name, int width, int height)
Parameters
Type Name Description
string name

The name of the animation.

int width

The width of each frame this animation will have.

int height

The height of each frame this animation will have.

AnimatedScreenObject(string, int, int, IFont, Point)

Creates a new animation with the specified name, width, and height.

Declaration
public AnimatedScreenObject(string name, int width, int height, IFont font, Point fontSize)
Parameters
Type Name Description
string name

The name of the animation.

int width

The width of each frame this animation will have.

int height

The height of each frame this animation will have.

IFont font

The font used with this animation.

Point fontSize

The size of the font.

Fields

AddedTime

Time counter for the animation

Declaration
protected TimeSpan AddedTime
Field Value
Type Description
TimeSpan

CurrentFrameIndexValue

The current frame index being animated.

Declaration
protected int CurrentFrameIndexValue
Field Value
Type Description
int

IsMouseOver

Indicates that the mouse is currently over this console.

Declaration
protected bool IsMouseOver
Field Value
Type Description
bool

NewFrameHeight

The height to assign a frame when CreateFrame() is called.

Declaration
[DataMember]
protected int NewFrameHeight
Field Value
Type Description
int

NewFrameWidth

The width to assign a frame when CreateFrame() is called.

Declaration
[DataMember]
protected int NewFrameWidth
Field Value
Type Description
int

TimePerFrame

How much time per animated frame should be used.

Declaration
protected TimeSpan TimePerFrame
Field Value
Type Description
TimeSpan

Properties

AbsoluteArea

The pixel area on the screen this surface occupies.

Declaration
public Rectangle AbsoluteArea { get; }
Property Value
Type Description
Rectangle

AnimationDuration

The length of the animation.

Declaration
[DataMember]
public TimeSpan AnimationDuration { get; set; }
Property Value
Type Description
TimeSpan

Center

Center of the animation used in positioning.

Declaration
[DataMember]
public Point Center { get; set; }
Property Value
Type Description
Point

CurrentFrame

Gets the current animation frame surface. A shortcut for

Frames[CurrentFrameIndex]
Declaration
public ICellSurface CurrentFrame { get; }
Property Value
Type Description
ICellSurface

CurrentFrameIndex

Gets or sets the current frame index to animate.

Declaration
public int CurrentFrameIndex { get; set; }
Property Value
Type Description
int

DefaultRendererName

The name of the default renderer for this object.

Declaration
public virtual string DefaultRendererName { get; }
Property Value
Type Description
string

FocusOnMouseClick

When true, this object will set IsFocused to true when the mouse is clicked.

Declaration
[DataMember]
public bool FocusOnMouseClick { get; set; }
Property Value
Type Description
bool

Font

Font used with rendering.

Declaration
public IFont Font { get; set; }
Property Value
Type Description
IFont

FontSize

The size of the Font cells applied to the object when rendering.

Declaration
public Point FontSize { get; set; }
Property Value
Type Description
Point

ForceRendererRefresh

When true, forces the Renderer to refresh the backing texture with the latest state of the object.

Declaration
public bool ForceRendererRefresh { get; set; }
Property Value
Type Description
bool

Frames

The frames of the animated surface.

Declaration
[DataMember]
public List<ICellSurface> Frames { get; }
Property Value
Type Description
List<ICellSurface>

Height

The total height of the console.

Declaration
public int Height { get; }
Property Value
Type Description
int

HeightPixels

The height of the surface in pixels.

Declaration
public int HeightPixels { get; }
Property Value
Type Description
int

IsDirty

When true, indicates that the animation needs to be redrawn; otherwise false.

Declaration
public bool IsDirty { get; set; }
Property Value
Type Description
bool

IsEmpty

Indicates the animation is empty.

Declaration
public bool IsEmpty { get; }
Property Value
Type Description
bool

IsPlaying

When true, Indicates the animation is currently animating. The Update(TimeSpan) method will advance the frames.

Declaration
[DataMember]
public bool IsPlaying { get; protected set; }
Property Value
Type Description
bool

MoveToFrontOnMouseClick

When true, this object will move to the front of its parent object when the mouse is clicked.

Declaration
[DataMember]
public bool MoveToFrontOnMouseClick { get; set; }
Property Value
Type Description
bool

Name

Gets the name of this animation.

Declaration
[DataMember]
public string Name { get; set; }
Property Value
Type Description
string

Renderer

The renderer used to draw this surface.

Declaration
[DataMember]
[JsonConverter(typeof(RendererJsonConverter))]
public IRenderer? Renderer { get; set; }
Property Value
Type Description
IRenderer

Repeat

Indicates whether or not this animation will repeat once it has finished animating.

Declaration
[DataMember]
public bool Repeat { get; set; }
Property Value
Type Description
bool

State

Gets the current animation state.

Declaration
public AnimatedScreenObject.AnimationState State { get; set; }
Property Value
Type Description
AnimatedScreenObject.AnimationState

Tint

A tint used in rendering.

Declaration
public Color Tint { get; set; }
Property Value
Type Description
Color

UsePixelPositioning

Treats the Position of the object as if it is pixels and not cells.

Declaration
public bool UsePixelPositioning { get; set; }
Property Value
Type Description
bool

ViewHeight

Gets or sets the visible height of the surface in cells.

Declaration
public int ViewHeight { get; set; }
Property Value
Type Description
int

ViewPosition

The position of the view within the console.

Declaration
public Point ViewPosition { get; set; }
Property Value
Type Description
Point

ViewWidth

Gets or sets the visible width of the surface in cells.

Declaration
public int ViewWidth { get; set; }
Property Value
Type Description
int

Width

The total width of the console.

Declaration
public int Width { get; }
Property Value
Type Description
int

WidthPixels

The width of the surface in pixels.

Declaration
public int WidthPixels { get; }
Property Value
Type Description
int

Methods

CreateFrame()

Creates a new frame with the same dimensions as this entity and adds it to the Frames collection of the entity.

Declaration
public ICellSurface CreateFrame()
Returns
Type Description
ICellSurface

The created frame.

CreateStatic(int, int, int, double, Color?, Color?)

Creates an animated surface that looks like static noise.

Declaration
public static AnimatedScreenObject CreateStatic(int width, int height, int frames, double blankChance, Color? background = null, Color? foreground = null)
Parameters
Type Name Description
int width

The width of the surface.

int height

The height of the surface.

int frames

How many frames the animation should have.

double blankChance

Chance a character will be blank. Characters are between index 48-158. Chance is evaluated versus NextDouble().

Color? background

The background color of the animation. Defaults to transparent.

Color? foreground

The foreground color of the animation. Defaults to white.

Returns
Type Description
AnimatedScreenObject

An animation.

Dispose()

Declaration
public void Dispose()

Dispose(bool)

Declaration
protected virtual void Dispose(bool disposing)
Parameters
Type Name Description
bool disposing

~AnimatedScreenObject()

Disposes Renderer.

Declaration
protected ~AnimatedScreenObject()

FromImage(string, string, Point, TimeSpan, Point?, Point?, IFont?, Action<ColoredGlyphBase>?, TextureConvertMode, TextureConvertForegroundStyle, TextureConvertBackgroundStyle, Color?)

Converts an image file containing frames to an instance of AnimatedScreenObject.

Declaration
public static AnimatedScreenObject FromImage(string name, string filePath, Point frameLayout, TimeSpan frameDuration, Point? pixelPadding = null, Point? frameStartAndFinish = null, IFont? font = null, Action<ColoredGlyphBase>? action = null, TextureConvertMode convertMode = TextureConvertMode.Foreground, TextureConvertForegroundStyle convertForegroundStyle = TextureConvertForegroundStyle.Block, TextureConvertBackgroundStyle convertBackgroundStyle = TextureConvertBackgroundStyle.Pixel, Color? frameDefaultBackground = null)
Parameters
Type Name Description
string name

Name for the animation.

string filePath

File path to the image file.

Point frameLayout

Layout of frames in the image file: X number of columns, Y number of rows.

TimeSpan frameDuration

Duration for a frame in the animation.

Point? pixelPadding

Pixel padding separating frames: X between the columns, Y between the rows.

Point? frameStartAndFinish

Limits the number of frames copied to the animation. X first frame index, Y last frame index.

IFont font

IFont to be used when creating the AnimatedScreenObject.

Action<ColoredGlyphBase> action

Callback that will be applied to each ColoredGlyphBase when creating a frame.

TextureConvertMode convertMode

The mode used when converting the texture to a surface.

TextureConvertForegroundStyle convertForegroundStyle

The style to use when convertMode is Foreground.

TextureConvertBackgroundStyle convertBackgroundStyle

The style to use when convertMode is Background.

Color? frameDefaultBackground

The default background to use in the animation frames. Defaults to transparent.

Returns
Type Description
AnimatedScreenObject

An instance of AnimatedScreenObject with converted frames.

Remarks

This method assumes the image file contains only frames and optional padding between the frames, no border space.

        Frame count is calculated by multiplying rows and columns from the frame layout. It can by limited by specifying frame start and finish indexes.

        Frame size and the subsequent AnimatedScreenSurface size is calculated from the size of the image file, number of frames, padding and the font size ratio.

Load(string)

Loads a AnimatedScreenObject from a file.

Declaration
public static AnimatedScreenObject Load(string file)
Parameters
Type Name Description
string file

The source file.

Returns
Type Description
AnimatedScreenObject

The animated surface.

LostMouse(MouseScreenObjectState)

Called when the mouse is being used by something else.

Declaration
public override void LostMouse(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

The current state of the mouse based on this object.

Overrides
ScreenObject.LostMouse(MouseScreenObjectState)

MoveEnd()

Changes the CurrentFrame to the last frame.

Declaration
public void MoveEnd()

MoveNext(bool)

Changes the CurrentFrame to the next frame.

Declaration
public void MoveNext(bool circular = false)
Parameters
Type Name Description
bool circular

If true and the current frame is the last, sets the current frame to the first frame.

MovePrevious(bool)

Changes the CurrentFrame to the previous frame.

Declaration
public void MovePrevious(bool circular = false)
Parameters
Type Name Description
bool circular

If true and the current frame is the first, sets the current frame to the last frame.

MoveStart()

Changes the CurrentFrame to the first frame.

Declaration
public void MoveStart()

OnMouseEnter(MouseScreenObjectState)

Raises the MouseEnter event.

Declaration
protected virtual void OnMouseEnter(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

Current mouse state in relation to this console.

OnMouseExit(MouseScreenObjectState)

Raises the MouseExit event.

Declaration
protected virtual void OnMouseExit(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

Current mouse state in relation to this console.

OnMouseLeftClicked(MouseScreenObjectState)

Raises the MouseButtonClicked event. Possibly moves the console to the top of it's parent's children collection.

Declaration
protected virtual void OnMouseLeftClicked(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

Current mouse state in relation to this console.

OnMouseMove(MouseScreenObjectState)

Raises the MouseMove event.

Declaration
protected virtual void OnMouseMove(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

Current mouse state in relation to this console.

OnRightMouseClicked(MouseScreenObjectState)

Raises the MouseButtonClicked event.

Declaration
protected virtual void OnRightMouseClicked(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

Current mouse state in relation to this console.

ProcessMouse(MouseScreenObjectState)

Processes the mouse.

Declaration
public override bool ProcessMouse(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

The mouse state related to this object.

Returns
Type Description
bool

True when this object should halt further mouse processing..

Overrides
ScreenObject.ProcessMouse(MouseScreenObjectState)

Render(TimeSpan)

Draws the animation's current frame and all SadComponents and Children.

Declaration
public override void Render(TimeSpan delta)
Parameters
Type Name Description
TimeSpan delta

The time that has elapsed since the last call.

Overrides
ScreenObject.Render(TimeSpan)

Restart()

Restarts the animation from the first frame.

Declaration
public void Restart()

Save(string)

Saves the AnimatedScreenObject to a file.

Declaration
public void Save(string file)
Parameters
Type Name Description
string file

The destination file.

Start()

Starts animating the frames.

Declaration
public void Start()

Stop()

Stops animating.

Declaration
public void Stop()

ToString()

Returns the value "ScreenSurface".

Declaration
public override string ToString()
Returns
Type Description
string

The string "ScreenSurface".

Overrides
ScreenObject.ToString()

Update(TimeSpan)

Updates the AnimatedScreenObject effects and all SadComponents and Children.

Declaration
public override void Update(TimeSpan delta)
Parameters
Type Name Description
TimeSpan delta

The time that has elapsed since this method was last called.

Overrides
ScreenObject.Update(TimeSpan)

UpdateAbsolutePosition()

Sets a value for AbsolutePosition based on the Position of this instance and the Parent instance.

Declaration
public override void UpdateAbsolutePosition()
Overrides
ScreenObject.UpdateAbsolutePosition()

Events

AnimationStateChanged

Raised when the AnimatedScreenObject.AnimationState changes.

Declaration
public event EventHandler<AnimatedScreenObject.AnimationStateChangedEventArgs>? AnimationStateChanged
Event Type
Type Description
EventHandler<AnimatedScreenObject.AnimationStateChangedEventArgs>

MouseButtonClicked

Raised when a mouse button is clicked on this object.

Declaration
public event EventHandler<MouseScreenObjectState>? MouseButtonClicked
Event Type
Type Description
EventHandler<MouseScreenObjectState>

MouseEnter

Raised when the mouse enters this object.

Declaration
public event EventHandler<MouseScreenObjectState>? MouseEnter
Event Type
Type Description
EventHandler<MouseScreenObjectState>

MouseExit

Raised when the mouse exits this object.

Declaration
public event EventHandler<MouseScreenObjectState>? MouseExit
Event Type
Type Description
EventHandler<MouseScreenObjectState>

MouseMove

Raised when the mouse moves around the this object.

Declaration
public event EventHandler<MouseScreenObjectState>? MouseMove
Event Type
Type Description
EventHandler<MouseScreenObjectState>

Implements

IScreenSurface
IScreenObject
IPositionable
IComponentHost

Extension Methods

Keyboard.RemoveKeyboardHook(IScreenObject, Func<IScreenObject, Keyboard, bool>)
Keyboard.RemoveKeyboardHooks(IScreenObject)
Keyboard.WithKeyboard(IScreenObject, Func<IScreenObject, Keyboard, bool>)
Mouse.RemoveMouseHook(IScreenObject, Func<IScreenObject, MouseScreenObjectState, bool>)
Mouse.RemoveMouseHooks(IScreenObject)
Mouse.WithMouse(IScreenObject, Func<IScreenObject, MouseScreenObjectState, bool>)
Update.RemoveUpdateHook(IScreenObject, Action<IScreenObject, TimeSpan>)
Update.RemoveUpdateHooks(IScreenObject)
Update.WithUpdate(IScreenObject, Action<IScreenObject, TimeSpan>)
ExtensionsSystem.GetDebuggerDisplayValue(object)
In this article

Back to top

Back to top Generated by DocFX