Skip to content

Class: BaseEffect (Base Class)

Source: fx/BaseEffect.jsFile Description: An abstract base class for visual effects. Specific effects (e.g., ShakeEffect, FlashEffect, TintEffect) should extend this class.

The BaseEffect class provides a common structure and lifecycle for all visual effects managed by the EffectsManager. It handles core functionalities such as duration timing, active state management, and provides a standard interface for updating and applying the effect.

Derived classes are expected to override the apply() method to implement the specific visual transformation.


Constructor

new BaseEffect(options?)

Creates a new BaseEffect instance.

Parameters:

  • options?: object - An optional configuration object for the effect.
    • options.engine?: IroncladEngine | null - A reference to the game engine instance. (Default: null)
    • options.duration?: number - The total duration of the effect in milliseconds. (Default: 1000ms) Set to Infinity for effects that don't auto-finish.
    • options.startsActive?: boolean - Whether the effect should be active immediately upon creation. (Default: true)
    • options.id?: string - An optional identifier for the effect, useful for logging. (Default: The constructor name of the derived class, e.g., "ShakeEffect")

Properties

engine

Type: IroncladEngine | null A reference to the main IroncladEngine instance. Can be set via constructor option or setEngine() method.

duration

Type: number The total duration this effect should last, in milliseconds. Can be Infinity for effects that need to be stopped manually or have other completion conditions.

timer

Type: number The internal timer tracking the elapsed time for this effect since it was started or last reset, in milliseconds.

isActive

Type: boolean Indicates whether the effect is currently active and should be updated and applied.

isFinished

Type: boolean Indicates whether the effect has completed its duration or has been manually stopped. Finished effects are typically removed by the EffectsManager.

id

Type: string An identifier for the effect instance, primarily used for logging and debugging.


Lifecycle and Control Methods

update(deltaTime)

Updates the effect's internal timer based on deltaTime. If the duration is not Infinity and the timer exceeds or equals the duration, the effect sets isFinished to true and isActive to false.

Parameters:

NameTypeDescription
deltaTimenumberThe time elapsed since the last frame, in seconds.

apply(mainContext, sceneCanvas, effectPipelineData?)

This method is intended to be overridden by derived effect classes. It's where the actual visual modification of the sceneCanvas (or mainContext) occurs. The base implementation issues a warning if not overridden.

The effectPipelineData can be used to pass information or modified canvas content from one effect to another if multiple effects are chained in a pipeline by the EffectsManager.

Parameters:

NameTypeAttributesDefaultDescription
mainContextCanvasRenderingContext2DThe 2D rendering context of the visible main canvas. Effects might draw directly here or use it for final composition.
sceneCanvasHTMLCanvasElementThe offscreen canvas containing the rendered scene content, which the effect will typically read from or modify.
effectPipelineDataobjectoptional{}An object that can carry data through a chain of effects, or the result of a previous effect in a pipeline.

Returns: object - The effectPipelineData, potentially modified by this effect, to be passed to the next effect in a chain.


start()

Activates the effect and resets its timer. Sets isActive to true and isFinished to false. This can be used to restart an effect.


stop()

Deactivates the effect and marks it as finished. Sets isActive to false and isFinished to true.


reset()

Resets the effect's state to its initial, inactive, and unfinished condition. timer is set to 0, isActive to false, and isFinished to false.


hasFinished()

Checks if the effect has completed its lifecycle.

Returns: boolean - true if this.isFinished is true, false otherwise.


setEngine(engine)

Assigns a reference to the IroncladEngine instance to this effect.

Parameters:

NameTypeDescription
engineIroncladEngineThe main game engine instance.

Released under the MIT License (Placeholder).