linsyking/messenger-core/20.0.0

Renamed to elm-messenger/messenger-core. That is where the repository lives now. It has not been published as a package under the new name.

Versions published as linsyking/messenger-core still install under that name. 34 versions of 52 come from the new location (see their notes). 7 versions could not be recovered and cannot be installed.

Messenger.Scene.LayeredScene

Layered Scene

Layered scene is a pre-defined scene implementation provided by Messenger. A layered scene stores scene common data plus a list of layers. All layers in the list share the same common-data, target, message, user-data, and scene-message types.

type alias LayeredSceneData cdata userdata tar msg scenemsg =
{ renderSettings : List Effect
, commonData : cdata
, layers : List (AbstractLayer cdata userdata tar msg scenemsg)
}

Layered scene data.

  • renderSettings is passed to REGL.Common.group when viewing all layers.
  • commonData is shared by all layers in the scene.
  • layers stores the scene's abstract layers.

Here is an example for it:

{ renderSettings = []
, commonData = cd
, layers =
    [ Main.layer (MainInitData { components = comps, fakeBricks = fakes, isBoss = isBoss }) envcd
    , TechTree.layer NullLayerMsg envcd
    , TextLayer.layer (TextInitData levelName) envcd
    , PauseLayer.layer NullLayerMsg envcd
    , Guide.layer NullLayerMsg envcd
    ]
}
LayeredSceneInit cdata userdata tar msg scenemsg
-> LayeredSceneEffectFunc cdata userdata tar msg scenemsg
-> SceneStorage userdata scenemsg

Generate scene storage for a layered scene.

  • init creates the initial layered scene data.

  • settingsFunc updates renderSettings each time the scene updates. If you do not need dynamic effects, provide \_ _ data -> data.renderSettings.

type alias LayeredSceneInit cdata userdata tar msg scenemsg =
Runtime
-> Env () userdata
-> Maybe scenemsg
-> LayeredSceneData cdata userdata tar msg scenemsg

Init type for normal (not prototype) layered scenes.

It receives the environment and optional scene message, then returns the initial LayeredSceneData.

   { renderSettings = []
    , commonData = cd
    , layers =
        [ Opening.layer NullLayerMsg envcd ]
    }
type alias LayeredSceneEffectFunc cdata userdata tar msg scenemsg =
Runtime
-> Env () userdata
-> LayeredSceneData cdata userdata tar msg scenemsg
-> List Effect

Effect function type for layered scenes.

It runs during scene update and returns render effects used when all layers are grouped.

Scene Prototype

type alias LayeredSceneProtoInit cdata userdata tar msg scenemsg idata =
Runtime
-> Env () userdata
-> Maybe idata
-> LayeredSceneData cdata userdata tar msg scenemsg

Prototype init type for layered scene prototypes.

It receives the environment and prototype initialization data, then returns LayeredSceneData.

type alias LayeredSceneLevelInit userdata scenemsg idata =
Runtime -> Env () userdata -> Maybe scenemsg -> Maybe idata

Level init type for layered scene prototypes.

This converts a normal scene message into prototype initialization data.

LayeredSceneProtoInit cdata userdata tar msg scenemsg idata
-> LayeredSceneLevelInit userdata scenemsg idata
-> Runtime
-> Env () userdata
-> Maybe scenemsg
-> LayeredSceneData cdata userdata tar msg scenemsg

Compose prototype init with level init.