linsyking/messenger-core/13.0.0

NOTE: the latest version is 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.

Unavailable. Nobody can download this version any more, with elm or with the Lamdera compiler: Software Heritage has not archived the repo; no fork with tag 13.0.0 found (17 same-name repos checked); no cached copy. Use another version.

Details

Messenger.Scene.Scene

Scene Base

Gerneral Model and Basic types for Scenes

type AbstractScene env event ren scenemsg userdata
= Roll (UnrolledAbstractScene env event ren scenemsg userdata)

Rolled Abstract Scene Model.

Cannot be directedly modified. Used for storage.

type alias MConcreteScene data userdata scenemsg =
ConcreteScene
data
(Env () userdata)
Renderable
scenemsg
userdata

Specialized Concrete scene for Messenger

type alias MAbstractScene userdata scenemsg =
(Env () userdata)
Renderable
scenemsg
userdata

Specialized Abstract scene for Messenger

AbstractScene env event ren scenemsg userdata
-> UnrolledAbstractScene env event ren scenemsg userdata

Unroll a rolled abstract scene.

ConcreteScene data env event ren scenemsg userdata
-> Maybe scenemsg
-> env
-> AbstractScene env event ren scenemsg userdata

Abstract a concrete scene to an abstract scene.

Initialize it with env and msg.

type SceneOutputMsg scenemsg userdata
= SOMChangeScene (Maybe scenemsg) String
| SOMAlert String
| SOMPrompt String String
| SOMPlayAudio Int String AudioOption
| SOMStopAudio Int
| SOMSetVolume Float
| SOMSaveGlobalData
| SOMLoadGC (GlobalComponentStorage userdata scenemsg)
| SOMUnloadGC GCTarget
| SOMCallGC (List ( GCTarget, GCMsg ))

Scene Output Msg is the message that directedly handled by the top-level core.

scenemsg is a custom type which represents the message type users wants to send to a scene when switching scenes.

  • SOMChangeScene is used to change to a target scene by giving a initMsg name
  • SOMPlayAudio channel name option is used to play an audio resource by giving channel name option
  • SOMStopAudio is used to stop a playing audio by giving its name
  • SOMSetVolume is used to set the volume with a value from 0 to 1
  • SOMAlert makes an alert
  • SOMPromp name title makes a prompt with name title
  • SOMSaveGlobalData saves the global by encode funtion given in UserConfig
type alias SceneStorage userdata scenemsg =
Maybe scenemsg
-> Env () userdata
-> MAbstractScene userdata scenemsg

The type used to store the scene data.

type alias AllScenes userdata scenemsg =
Dict String (SceneStorage userdata scenemsg)

All scenes type

type alias MMsg othertar msg scenemsg userdata =
Msg othertar msg (SceneOutputMsg scenemsg userdata)

Messenger Msg

type alias MMsgBase othermsg scenemsg userdata =
MsgBase othermsg (SceneOutputMsg scenemsg userdata)

Messsenger MsgBase

type alias MConcreteGeneralModel data common userdata tar msg bdata scenemsg =
ConcreteGeneralModel
data
(Env common userdata)
tar
msg
Renderable
bdata
(SceneOutputMsg scenemsg userdata)

Specialized Concrete Model for Messenger

type alias MAbstractGeneralModel common userdata tar msg bdata scenemsg =
(Env common userdata)
tar
msg
Renderable
bdata
(SceneOutputMsg scenemsg userdata)

Specialized Abstract Model for Messenger

Scene Result Remapper

( ( List (SceneOutputMsg scenemsg userdata), env )
-> ( List (SceneOutputMsg scenemsg userdata), env )
)
-> AbstractScene env event ren scenemsg userdata
-> AbstractScene env event ren scenemsg userdata

Change the update function to remap the result and return the changed abstract scene.

Global Component

type alias GCCommonData userdata scenemsg =
MAbstractScene userdata scenemsg

Global component common data.

type alias GCBaseData =
{ dead : Bool
, postProcessor : Renderable -> Renderable
}

Global component base data.

type alias GCMsg =
Value

Global component message type.

type alias GCTarget =
String

Global component target type.

type alias AbstractGlobalComponent userdata scenemsg =
MAbstractGeneralModel
(GCCommonData userdata scenemsg)
userdata
GCTarget
GCMsg
GCBaseData
scenemsg

Abstract GlobalComponent Model.

Cannot be directedly modified. Used for storage.

type alias ConcreteGlobalComponent data userdata scenemsg =
{ init : GlobalComponentInit userdata scenemsg data
, update : GlobalComponentUpdate userdata scenemsg data
, updaterec : GlobalComponentUpdateRec userdata scenemsg data
, view : GlobalComponentView userdata scenemsg data
, id : GCTarget
}

Concrete GlobalComponent Model

type alias GlobalComponentInit userdata scenemsg data =
Env (GCCommonData userdata scenemsg) userdata
-> GCMsg
-> ( data, GCBaseData )

init type sugar

type alias GlobalComponentUpdate userdata scenemsg data =
Env (GCCommonData userdata scenemsg) userdata
-> data
-> GCBaseData
-> ( ( data, GCBaseData )
, List (MMsg GCTarget GCMsg scenemsg userdata)
, ( Env (GCCommonData userdata scenemsg) userdata, Bool )
)

update type sugar

type alias GlobalComponentUpdateRec userdata scenemsg data =
Env (GCCommonData userdata scenemsg) userdata
-> GCMsg
-> data
-> GCBaseData
-> ( ( data, GCBaseData )
, List (MMsg GCTarget GCMsg scenemsg userdata)
, Env (GCCommonData userdata scenemsg) userdata
)

updaterec type sugar

type alias GlobalComponentView userdata scenemsg data =
Env (GCCommonData userdata scenemsg) userdata
-> data
-> GCBaseData
-> Renderable

view type sugar

type alias GlobalComponentStorage userdata scenemsg =
Env (GCCommonData userdata scenemsg) userdata
-> AbstractGlobalComponent userdata scenemsg

GlobalComponent Storage