linsyking/messenger-core/12.0.1

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.

Rerouted (renamed, verified). The GitHub user or repository was renamed. The tag is still there, at the new name. The Lamdera package server serves a copy recovered from https://github.com/elm-messenger/messenger-core.

What we checked: The repo moved to github.com/elm-messenger/messenger-core. Rebuilt with git archive from commit 9606952b7383 of https://github.com/elm-messenger/messenger-core (zip prefix linsyking-messenger-core-a0ad9d0/, America/Los_Angeles times): the zip is byte-identical to the one package.elm-lang.org recorded, SHA-1 787d5e2ccee9dc18e3271295cc456732e8c4e0ab.

The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.

Details · package.elm-lang.org's zip: https://github.com/linsyking/messenger-core/zipball/12.0.1/

Messenger.Base

Base Module

Some Basic Data Types for the game

= WTick Posix
| WKeyDown Int
| WKeyUp Int
| NewWindowSize ( Float, Float )
| WindowVisibility Visibility
| SoundLoaded String (Result LoadError Source)
| TextureLoaded String (Maybe Texture)
| WMouseDown Int ( Float, Float )
| WMouseUp Int ( Float, Float )
| MouseMove ( Float, Float )
| WMouseWheel Int
| WPrompt String String
| NullEvent

World Event

This is the World Event for the game.

The events that messenger will receive from outside

Basically users don't need to deal with the world events, they work with user events instead.

= Tick Int
| KeyDown Int
| KeyUp Int
| MouseDown Int ( Float, Float )
| MouseUp Int ( Float, Float )
| MouseWheel Int
| Prompt String String

User Event

This is the User Event for the game.

Users can get outside information through these events.

Tick is triggered every timeInterval.

KeyDown, KeyUp records the keyboard events. check all the keycodes here.

MouseDown, MouseUp records the button code and position when mouse up and down. Mouse code 0 represents the left mouse button, 1 represents middle mouse button and 2 represents right mouse button.

We have provide some key and mouse codes in messenger-extra.

MouseWheel records the wheel event for mouse, positive value means sroll down while negative value means scroll up. It can be also used for touchpad.

Prompt name result gives the result user entered in the prompt window.

type alias GlobalData userdata =
{ internalData : InternalData
, sceneStartTime : Int
, globalStartTime : Int
, globalStartFrame : Int
, sceneStartFrame : Int
, currentTimeStamp : Posix
, windowVisibility : Visibility
, mousePos : ( Float, Float )
, pressedMouseButtons : Set Int
, pressedKeys : Set Int
, extraHTML : Maybe (Html WorldEvent)
, canvasAttributes : List (Attribute WorldEvent)
, volume : Float
, userData : userdata
, currentScene : String
}

GlobalData

GlobalData is the data that doesn't change during the game.

It won't be reset if you change the scene.

It is mainly used for display and reading/writing some localstorage data.

  • globalStartFrame records the past frames number since the game started
  • globalStartTime records the past time since the game started, in milliseconds
  • sceneStartFrame records the past frames number since this scene started
  • sceneStartTime records the past time since this scene started, in milliseconds
  • userdata records the data that users set to save
  • extraHTML is used to render extra HTML tags. Be careful to use this
  • windowVisibility records whether users stay in this tab/window
  • pressedKeys records the keycodes that are be pressed now
  • pressedMouseButtons records the mouse buttons that are pressed now
  • volume records the volume of the game
  • currentScene records the current scene name
  • mousePos records the mouse position, in virtual coordinate
type alias InternalData =
{ browserViewPort : ( Float, Float )
, realWidth : Float
, realHeight : Float
, startLeft : Float
, startTop : Float
, sprites : Dict String Texture
, virtualWidth : Float
, virtualHeight : Float
, audioRepo : AudioRepo
}

Internal GlobalData

Basically users do not need to get or modify them.

  • browserViewPort records the browser size.
  • sprites records all the sprites(images).
loadedResourceNum : GlobalData userdata -> Int

Get the number of loaded resources.

type alias Env common userdata =
{ globalData : GlobalData userdata
, commonData : common
}

Environment

Environment is provided to users almost all the time.

It stores GlobalData and CommonData (Similar to GlobalData but just for one scene), so you can get and modify them through the Env.

type alias Flags =
{ windowWidth : Float
, windowHeight : Float
, timeStamp : Int
, info : String
}

The main flags.

Get info from js script.

Learn more about flags here

removeCommonData : Env cdata userdata -> Env () userdata

Remove common data from environment.

Useful when dealing with portable components by yourself.

Most of the time it will not be used since it has been built into prepared update functions.

addCommonData : cdata -> Env () userdata -> Env cdata userdata

Add the common data to a Environment without common data.

type alias UserViewGlobalData userdata =
{ sceneStartTime : Int
, globalStartTime : Int
, sceneStartFrame : Int
, globalStartFrame : Int
, volume : Float
, extraHTML : Maybe (Html WorldEvent)
, canvasAttributes : List (Attribute WorldEvent)
, userData : userdata
}

This type is for user to use when initializing the messenger.

emptyInternalData : InternalData

Empty InternalData

userGlobalDataToGlobalData : UserViewGlobalData userdata -> GlobalData userdata

Translate UserViewGlobalData to GlobalData

globalDataToUserGlobalData : GlobalData userdata -> UserViewGlobalData userdata

Translate GlobalData to UserViewGlobalData