-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdocs.json
1 lines (1 loc) · 44.8 KB
/
docs.json
1
[{"name":"Grid","comment":" A `Grid` is a dictionary that has a size constraint.\r\nHere is an example where such a grid is used:\r\n[Snake Example](https://orasund.github.io/pixelengine/#Snake).\r\n\r\n\r\n# Grids\r\n\r\n@docs Grid\r\n\r\n\r\n# Build\r\n\r\n@docs fill, empty, insert, update, remove\r\n\r\n\r\n# Query\r\n\r\n@docs isEmpty, member, get, size, dimensions\r\n\r\n\r\n# List\r\n\r\n@docs positions, emptyPositions, values, toList, fromList\r\n\r\n\r\n# Dict\r\n\r\n@docs toDict, fromDict\r\n\r\n\r\n# Transform\r\n\r\n@docs map, foldl, foldr, filter, partition, find\r\n\r\n\r\n# Combine\r\n\r\n@docs union, intersect, diff\r\n\r\n","unions":[{"name":"Grid","comment":" A grid with a fixes amount of columns and rows.\r\n\r\nIt will wrap the borders (apply ModBy), making every position valid.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> get ( -1, 0 )\r\n --> grid |> get ( (dimensions |> .columns) - 1, 0 )\r\n\r\nIf instead you want to have hard border around your grid, use `Grid.Bordered` instead.\r\n\r\n","args":["a"],"cases":[]}],"aliases":[],"values":[{"name":"diff","comment":" Keep a value when its position does not appear in the second grid.\r\n","type":"Grid.Grid a -> Grid.Grid a -> Grid.Grid a"},{"name":"dimensions","comment":" Return the dimensions of the grid.\r\n\r\n dim : { columns:Int , rows:Int }\r\n dim =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dim\r\n\r\n grid |> dimensions\r\n --> dim\r\n\r\n","type":"Grid.Grid a -> { columns : Basics.Int, rows : Basics.Int }"},{"name":"empty","comment":" Create an empty grid\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n empty dimensions\r\n --> fill (always Nothing ) dimensions\r\n\r\n","type":"{ rows : Basics.Int, columns : Basics.Int } -> Grid.Grid a"},{"name":"emptyPositions","comment":" Get all empty positions in a grid, sorted from lowest to highest.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid Int\r\n grid =\r\n fill\r\n (always <| Just <| 42)\r\n dimensions\r\n\r\n grid |> remove (2,2) |> emptyPositions\r\n --> [(2,2)]\r\n\r\n","type":"Grid.Grid a -> List.List Grid.Position.Position"},{"name":"fill","comment":" Create a grid\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n fill (always <| Just ()) dimensions |> emptyPositions\r\n --> []\r\n\r\n","type":"(Grid.Position.Position -> Maybe.Maybe a) -> { rows : Basics.Int, columns : Basics.Int } -> Grid.Grid a"},{"name":"filter","comment":" Keep only the values that pass the given test.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid Int\r\n grid =\r\n empty dimensions\r\n |> insert (2,4) 2\r\n |> insert (2,3) 42\r\n\r\n grid |> filter (\\_ -> (==) 42) |> values\r\n --> [42]\r\n\r\n","type":"(Grid.Position.Position -> a -> Basics.Bool) -> Grid.Grid a -> Grid.Grid a"},{"name":"find","comment":" Find the first value that passes a given test.\r\n","type":"(Grid.Position.Position -> a -> Basics.Bool) -> Grid.Grid a -> Maybe.Maybe ( Grid.Position.Position, a )"},{"name":"foldl","comment":" Fold over **all** positions in a grid, row by row, from top down.\r\n","type":"(Grid.Position.Position -> Maybe.Maybe v -> b -> b) -> b -> Grid.Grid v -> b"},{"name":"foldr","comment":" Fold over **all** positions in a grid, row by row, from bottum up.\r\n","type":"(Grid.Position.Position -> Maybe.Maybe v -> b -> b) -> b -> Grid.Grid v -> b"},{"name":"fromDict","comment":" Convert an dictionary to a grid\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid Int\r\n grid =\r\n empty dimensions\r\n\r\n grid |> toDict |> fromDict dimensions |> get (2,2)\r\n --> Nothing\r\n\r\n","type":"{ rows : Basics.Int, columns : Basics.Int } -> Dict.Dict Grid.Position.Position a -> Grid.Grid a"},{"name":"fromList","comment":" Convert an association list into a grid.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid Int\r\n grid =\r\n empty dimensions\r\n\r\n [((2,2),42),((2,1),20)] |> fromList dimensions\r\n --> grid |> insert (2,2) 42 |> insert (2,1) 20\r\n\r\n","type":"{ rows : Basics.Int, columns : Basics.Int } -> List.List ( Grid.Position.Position, a ) -> Grid.Grid a"},{"name":"get","comment":" Get the value associated with a position. If the position is empty, return Nothing.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> get (2,2)\r\n --> Just 42\r\n\r\n","type":"Grid.Position.Position -> Grid.Grid a -> Maybe.Maybe a"},{"name":"insert","comment":" Insert a value at a position in a grid. Replaces value when there is a collision.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> get (2,2)\r\n --> Just 42\r\n\r\n","type":"Grid.Position.Position -> a -> Grid.Grid a -> Grid.Grid a"},{"name":"intersect","comment":" Keep a value when its position appears in the second grid.\r\nPreference is given to values in the first grid.\r\n","type":"Grid.Grid a -> Grid.Grid a -> Grid.Grid a"},{"name":"isEmpty","comment":" Determine if a grid is empty.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> isEmpty --> True\r\n grid |> insert (2,2) 42 |> isEmpty --> False\r\n\r\n","type":"Grid.Grid a -> Basics.Bool"},{"name":"map","comment":" Apply a function to **all** positions in a grid.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n empty dimensions |> map (\\_ _ -> Just 42)\r\n --> fill (always <| Just 42) dimensions\r\n\r\n","type":"(Grid.Position.Position -> Maybe.Maybe a -> Maybe.Maybe b) -> Grid.Grid a -> Grid.Grid b"},{"name":"member","comment":" Determine if a position is empty.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> member (2,2)\r\n --> True\r\n\r\n","type":"Grid.Position.Position -> Grid.Grid a -> Basics.Bool"},{"name":"partition","comment":" Partition a grid according to some test.\r\n\r\nThe first grid contains all values which passed the test,\r\nand the second contains the values that did not.\r\n\r\n","type":"(Grid.Position.Position -> a -> Basics.Bool) -> Grid.Grid a -> ( Grid.Grid a, Grid.Grid a )"},{"name":"positions","comment":" Get all non empty positions in a grid, sorted from lowest to highest.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> positions\r\n --> [(2,2)]\r\n\r\n","type":"Grid.Grid a -> List.List Grid.Position.Position"},{"name":"remove","comment":" Remove a vlaue from a grid. If the position is empty, no changes are made.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> get (2,2) --> Just 42\r\n grid |> insert (2,2) 42 |> remove (2,2) |> get (2,2)\r\n --> Nothing\r\n\r\n","type":"Grid.Position.Position -> Grid.Grid a -> Grid.Grid a"},{"name":"size","comment":" Determine the number of values in the grid.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> size\r\n --> 1\r\n\r\n","type":"Grid.Grid a -> Basics.Int"},{"name":"toDict","comment":" Convert a grid into an associated dictionary\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid Int\r\n grid =\r\n empty dimensions\r\n |> insert (2,2) 42\r\n\r\n grid |> toDict |> fromDict dimensions |> get (2,2)\r\n --> Just 42\r\n\r\n","type":"Grid.Grid a -> Dict.Dict Grid.Position.Position a"},{"name":"toList","comment":" Convert a grid into an association list of position-value pairs,\r\nsorted by the position.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid Int\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> toList\r\n --> [( (2,2), 42 )]\r\n\r\n","type":"Grid.Grid a -> List.List ( Grid.Position.Position, a )"},{"name":"union","comment":" Combine two grids.\r\nIf there is a collision, preference is given to the first grid.\r\n","type":"Grid.Grid a -> Grid.Grid a -> Grid.Grid a"},{"name":"update","comment":" Update the value of a grid for a specific position with a given function.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> update (2,2) (always <| Just 42)\r\n --> grid |> insert (2,2) 42\r\n\r\n","type":"Grid.Position.Position -> (Maybe.Maybe a -> Maybe.Maybe a) -> Grid.Grid a -> Grid.Grid a"},{"name":"values","comment":" Get all of the values in a grid, in the order of their positions.\r\n\r\n dimensions : { columns:Int , rows:Int }\r\n dimensions =\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n grid : Grid a\r\n grid =\r\n empty dimensions\r\n\r\n grid |> insert (2,2) 42 |> values\r\n --> [42]\r\n\r\n","type":"Grid.Grid a -> List.List a"}],"binops":[]},{"name":"Grid.Bordered","comment":" A grid with a hard border around the edges. you cant read or write from squares\r\noutside the border.\r\n\r\n\r\n# Error\r\n\r\n@docs Error, ignoringErrors\r\n\r\n\r\n# Grids\r\n\r\n@docs Grid\r\n\r\n\r\n# Build\r\n\r\n@docs fill, empty, insert, update, remove\r\n\r\n\r\n# Query\r\n\r\n@docs isEmpty, member, get, isValid, size, dimensions\r\n\r\n\r\n# List\r\n\r\n@docs positions, emptyPositions, values, toList, fromList\r\n\r\n\r\n# Dict\r\n\r\n@docs toDict, fromDict\r\n\r\n#Transform\r\n\r\n@docs map, foldl, foldr, filter, partition, find\r\n\r\n#Combine\r\n\r\n@docs union, intersect, diff\r\n\r\n","unions":[{"name":"Error","comment":" Possible Errors.\r\n\r\n - `OutOfBounds` - the position is not valid\r\n - `NotSucessful` - the function as a problem fullfilling the task. (Maybe the position is occupied?)\r\n\r\n","args":[],"cases":[]},{"name":"Grid","comment":" A grid of values.\r\n\r\nIt has a fixed amount of columns and rows.\r\n\r\nIf case of a invalid position, it returns an error.\r\n\r\n grid |> Grid.insert ( -1, 0 ) virus == Err OutOfBounds\r\n\r\n","args":["a"],"cases":[]}],"aliases":[],"values":[{"name":"diff","comment":" Keep a value when its position does not appear in the second grid.\r\n","type":"Grid.Bordered.Grid a -> Grid.Bordered.Grid a -> Grid.Bordered.Grid a"},{"name":"dimensions","comment":" return the dimensions of the grid\r\n","type":"Grid.Bordered.Grid a -> { columns : Basics.Int, rows : Basics.Int }"},{"name":"empty","comment":" Create an empty grid\r\n","type":"{ rows : Basics.Int, columns : Basics.Int } -> Grid.Bordered.Grid a"},{"name":"emptyPositions","comment":" Get all empty positions in a grid, sorted from lowest to highest.\r\n","type":"Grid.Bordered.Grid a -> List.List Grid.Position.Position"},{"name":"fill","comment":" Create a grid\r\n","type":"(Grid.Position.Position -> Maybe.Maybe a) -> { rows : Basics.Int, columns : Basics.Int } -> Grid.Bordered.Grid a"},{"name":"filter","comment":" Keep only the values that pass the given test.\r\n","type":"(Grid.Position.Position -> a -> Basics.Bool) -> Grid.Bordered.Grid a -> Grid.Bordered.Grid a"},{"name":"find","comment":" Find the first value that passes a given test.\r\n","type":"(Grid.Position.Position -> a -> Basics.Bool) -> Grid.Bordered.Grid a -> Maybe.Maybe ( Grid.Position.Position, a )"},{"name":"foldl","comment":" Fold over **all** positions in a grid, row by row, from top down.\r\n","type":"(Grid.Position.Position -> Maybe.Maybe v -> b -> b) -> b -> Grid.Bordered.Grid v -> b"},{"name":"foldr","comment":" Fold over **all** positions in a grid, row by row, from bottum up.\r\n","type":"(Grid.Position.Position -> Maybe.Maybe v -> b -> b) -> b -> Grid.Bordered.Grid v -> b"},{"name":"fromDict","comment":" Convert an dictionary to a grid\r\n","type":"{ rows : Basics.Int, columns : Basics.Int } -> Dict.Dict Grid.Position.Position a -> Grid.Bordered.Grid a"},{"name":"fromList","comment":" Convert an association list into a grid.\r\n","type":"{ rows : Basics.Int, columns : Basics.Int } -> List.List ( Grid.Position.Position, a ) -> Grid.Bordered.Grid a"},{"name":"get","comment":" Get the value associated with a position. If the position is empty, return Nothing.\r\n","type":"Grid.Position.Position -> Grid.Bordered.Grid a -> Result.Result () (Maybe.Maybe a)"},{"name":"ignoringErrors","comment":" Trys modifying a grid and if its fails it returns the original grid.\r\n\r\nPlease be aware, that by using this function you might introduce errors.\r\n\r\n","type":"(Grid.Bordered.Grid a -> Result.Result result (Grid.Bordered.Grid a)) -> Grid.Bordered.Grid a -> Grid.Bordered.Grid a"},{"name":"insert","comment":" Insert a value at a position in a grid. Returns a `NotSuccessful` error if\r\nthe position is occupied.\r\n","type":"Grid.Position.Position -> a -> Grid.Bordered.Grid a -> Result.Result Grid.Bordered.Error (Grid.Bordered.Grid a)"},{"name":"intersect","comment":" Keep a value when its position appears in the second grid.\r\nPreference is given to values in the first grid.\r\n","type":"Grid.Bordered.Grid a -> Grid.Bordered.Grid a -> Grid.Bordered.Grid a"},{"name":"isEmpty","comment":" Determine if a grid is empty.\r\n","type":"Grid.Bordered.Grid a -> Basics.Bool"},{"name":"isValid","comment":" checks if a position is valid.\r\n\r\n grid : Grid a\r\n grid =\r\n empty\r\n { columns=42\r\n , rows=3\r\n }\r\n\r\n\r\n grid |> isValid (-1,0) --> False\r\n grid |> isValid (41,0) --> True\r\n grid |> isValid (42,0) --> False\r\n\r\n","type":"Grid.Position.Position -> Grid.Bordered.Grid a -> Basics.Bool"},{"name":"map","comment":" Apply a function to **all** positions in a grid.\r\n","type":"(Grid.Position.Position -> Maybe.Maybe a -> Maybe.Maybe b) -> Grid.Bordered.Grid a -> Grid.Bordered.Grid b"},{"name":"member","comment":" Determine if a position is empty.\r\n","type":"Grid.Position.Position -> Grid.Bordered.Grid a -> Result.Result () Basics.Bool"},{"name":"partition","comment":" Partition a grid according to some test.\r\n\r\nThe first grid contains all values which passed the test,\r\nand the second contains the values that did not.\r\n\r\n","type":"(Grid.Position.Position -> a -> Basics.Bool) -> Grid.Bordered.Grid a -> ( Grid.Bordered.Grid a, Grid.Bordered.Grid a )"},{"name":"positions","comment":" Get all non empty positions in a grid, sorted from lowest to highest.\r\n","type":"Grid.Bordered.Grid a -> List.List Grid.Position.Position"},{"name":"remove","comment":" Remove a vlaue from a grid. If the position is empty, it returs a\r\n`NotSuccessful` error.\r\n","type":"Grid.Position.Position -> Grid.Bordered.Grid a -> Result.Result Grid.Bordered.Error (Grid.Bordered.Grid a)"},{"name":"size","comment":" Determine the number of values in the grid.\r\n","type":"Grid.Bordered.Grid a -> Basics.Int"},{"name":"toDict","comment":" Convert a grid into an associated dictionary\r\n","type":"Grid.Bordered.Grid a -> Dict.Dict Grid.Position.Position a"},{"name":"toList","comment":" Convert a grid into an association list of position-value pairs, sorted by the position.\r\n","type":"Grid.Bordered.Grid a -> List.List ( Grid.Position.Position, a )"},{"name":"union","comment":" Combine two grids.\r\nIf there is a collision, preference is given to the first grid.\r\n","type":"Grid.Bordered.Grid a -> Grid.Bordered.Grid a -> Grid.Bordered.Grid a"},{"name":"update","comment":" Update the value of a grid for a specific position with a given function.\r\n","type":"Grid.Position.Position -> (Maybe.Maybe a -> Result.Result () (Maybe.Maybe a)) -> Grid.Bordered.Grid a -> Result.Result Grid.Bordered.Error (Grid.Bordered.Grid a)"},{"name":"values","comment":" Get all of the values in a grid, in the order of their keys.\r\n","type":"Grid.Bordered.Grid a -> List.List a"}],"binops":[]},{"name":"Grid.Direction","comment":"\r\n\r\n@docs Direction, flip, rotLeft, rotRight\r\n\r\n","unions":[{"name":"Direction","comment":" A abstract concept of a direction on a grid.\r\n","args":[],"cases":[["Up",[]],["Down",[]],["Left",[]],["Right",[]]]}],"aliases":[],"values":[{"name":"flip","comment":" Rotates a `Direction` for 180 Degrees.\r\n","type":"Grid.Direction.Direction -> Grid.Direction.Direction"},{"name":"rotLeft","comment":" Rotates a `Direction` clockwise\r\n","type":"Grid.Direction.Direction -> Grid.Direction.Direction"},{"name":"rotRight","comment":" Rotates a `Direction` counter-clockwise\r\n","type":"Grid.Direction.Direction -> Grid.Direction.Direction"}],"binops":[]},{"name":"Grid.Position","comment":" This module contains two ways of representing a point on a grid:\r\n`Position` and `Coord`. Positions are meant to be stored, and coordinates are\r\nmeant to to calculations with.\r\n\r\n\r\n# Position\r\n\r\n@docs Position, move, add, coordsTo\r\n\r\n\r\n# Vector\r\n\r\n@docs Coord, fromDirection, toDirection, distance, scaleBy, length\r\n\r\n","unions":[],"aliases":[{"name":"Coord","comment":" `Coord` is a non-comparable representation for 2D Coordinates.\r\n\r\nUse this type for your calculations.\r\n\r\n","args":[],"type":"{ x : Basics.Int, y : Basics.Int }"},{"name":"Position","comment":" A `Position` is a comparable representation for 2D Coordinates.\r\n\r\nYou should store your coordinates in this type.\r\n\r\n","args":[],"type":"( Basics.Int, Basics.Int )"}],"values":[{"name":"add","comment":" Apply Coordinates to a position to get the relative position.\r\n\r\n```\r\nmove amount direction == add ( fromDirection direction |> scaleby amount)\r\n```\r\n\r\n","type":"Grid.Position.Coord -> Grid.Position.Position -> Grid.Position.Position"},{"name":"coordsTo","comment":" Returns the difference between two positions.\r\n\r\n```\r\ndifference p1 p2 == p1 <------- p2\r\n```\r\n\r\n","type":"Grid.Position.Position -> Grid.Position.Position -> Grid.Position.Coord"},{"name":"distance","comment":" Gets the distance between to points.\r\n(The length of the difference)\r\n\r\n```\r\ndistance == vectorTo >> length\r\n```\r\n\r\n","type":"Grid.Position.Position -> Grid.Position.Position -> Basics.Float"},{"name":"fromDirection","comment":" converts a `Direction` into a `Vector` with length `1`.\r\n","type":"Grid.Direction.Direction -> Grid.Position.Coord"},{"name":"length","comment":" Returns the length of the coordinate (distance to (0,0)\r\n","type":"Grid.Position.Coord -> Basics.Float"},{"name":"move","comment":" moves a Point some amount of steps in a direction. This is the most used\r\nway how to change a position.\r\n","type":"Basics.Int -> Grid.Direction.Direction -> Grid.Position.Position -> Grid.Position.Position"},{"name":"scaleBy","comment":" Scales Coordnates. Coordnates obtained by `fromDirection` have size 1.\r\n\r\n```\r\nfromDirection angle |> scaleBy l |> length == l\r\n```\r\n\r\n","type":"Basics.Int -> Grid.Position.Coord -> Grid.Position.Coord"},{"name":"toDirection","comment":" converts **any** `Vector` into its nearest `Direction` value.\r\n\r\nfromValue (0,0) == Right\r\nfromValue (1,1) == Down\r\nfromValue (-1,1) == Down\r\nfromValue (1,-1) == Up\r\nfromValue (-1,-1) == Up\r\n\r\n","type":"Grid.Position.Coord -> Grid.Direction.Direction"}],"binops":[]},{"name":"Location","comment":" This module contains two different type for repesenting a 2D Point:\r\n`Location` and `Vector`. The idea is to use `Locations` to store a Point and `Vector`\r\nto do caluclations. This way the compiler knows exactly what you are doing and can\r\ngive you appropriate error messages.\r\n\r\n\r\n# Angle\r\n\r\n@docs Angle, toAngle\r\n\r\n\r\n# Location\r\n\r\n@docs Location, move, add, vectorTo\r\n\r\n\r\n# Vector\r\n\r\n@docs Vector, fromAngle, distance, rotate, scaleBy, length\r\n\r\n","unions":[{"name":"Angle","comment":" A Angle should store Elm angles (radians).\r\n\r\nUse the functions `degrees`,`radias`,`turns` or `pi` to obtain a Angle.\r\n\r\n```\r\nAngle <| degree 90\r\n```\r\n\r\n","args":[],"cases":[["Angle",["Basics.Float"]]]}],"aliases":[{"name":"Location","comment":" A `Location` a point, possibly stored in a dictionary. Thats why its a tuple.\r\nBut doing calulations with tuples can get very chaotic, thats why the module provides\r\n`Vectors`.\r\n","args":[],"type":"( Basics.Float, Basics.Float )"},{"name":"Vector","comment":" A Vector is used for calculations.\r\n","args":[],"type":"{ x : Basics.Float, y : Basics.Float }"}],"values":[{"name":"add","comment":" simple adds a vector to a location, from geometry we know that a vector is\r\nactually just an angle and a length.\r\n\r\n```\r\nmove length angle == add ( fromAngle angle |> scaleby length)\r\n```\r\n\r\n","type":"Location.Vector -> Location.Location -> Location.Location"},{"name":"distance","comment":" The `Distance` between two locations is the length of the resulting vector\r\n\r\n```\r\ndistance == vectorTo >> length\r\n```\r\n\r\n","type":"Location.Location -> Location.Location -> Basics.Float"},{"name":"fromAngle","comment":" construct a unit vector from an angle\r\n\r\n```\r\nfromAngle >> length == 1\r\n```\r\n\r\n","type":"Location.Angle -> Location.Vector"},{"name":"length","comment":" Returns the length of the coordinate (distance to (0,0)\r\n","type":"Location.Vector -> Basics.Float"},{"name":"move","comment":" given a `Location`, a distance in some direction. This is the most used\r\nway how to change a location.\r\n","type":"Basics.Float -> Location.Angle -> Location.Location -> Location.Location"},{"name":"rotate","comment":" rotate a Vector\r\n","type":"Location.Angle -> Location.Vector -> Location.Vector"},{"name":"scaleBy","comment":" Scales a Vector. Vectors obtained by `fromAngle` have size 1.\r\n\r\n```\r\nfromAngle angle |> scaleBy l |> length == l\r\n```\r\n\r\n","type":"Basics.Float -> Location.Vector -> Location.Vector"},{"name":"toAngle","comment":" An Angle can be constructed from a Vector.\r\n\r\n```\r\n{x=0,y=0} |> Location.toAngle == 0\r\n```\r\n\r\n","type":"Location.Vector -> Location.Angle"},{"name":"vectorTo","comment":" The difference between to locations is a vector.\r\n\r\n```\r\nloc1 <----- loc2\r\n```\r\n\r\nthe resulting vector points from the second value to the first.\r\n\r\n","type":"Location.Location -> Location.Location -> Location.Vector"}],"binops":[]},{"name":"PixelEngine","comment":" This module takes care of the Graphics.\r\n\r\nYou will want to add [PixelEngine.Graphics.Image](PixelEngine-Graphics-Image)\r\nor [PixelEngine.Graphics.Tile](PixelEngine-Graphics-Tile) to\r\nactually draw something.\r\n\r\n\r\n# Area\r\n\r\nThe main idea of this graphic engine is to arrage the content into horizontal stripes,\r\nso called areas.\r\n\r\n@docs Area, tiledArea, imageArea, heightOf\r\n\r\n\r\n# PixelEngine\r\n\r\n@docs PixelEngine\r\n\r\nIf one wants to use just use this module on its own, you can use `toHtml` instead\r\nof the `game` function from the main module.\r\n\r\n@docs toHtml, game, gameWithNoControls, gameWithCustomControls\r\n\r\n\r\n# Controls\r\n\r\nThe graphic engine provides a touch-controller for mobile devices.\r\n\r\n@docs Input, defaultInputs\r\n\r\n\r\n# Background\r\n\r\n@docs Background, imageBackground, colorBackground\r\n\r\n\r\n# Advanced\r\n\r\n@docs basicControls, customControls, withMobileSupport\r\n\r\n","unions":[{"name":"Input","comment":" all possible Inputs.\r\n","args":[],"cases":[["InputLeft",[]],["InputRight",[]],["InputUp",[]],["InputDown",[]],["InputA",[]],["InputB",[]],["InputX",[]],["InputY",[]]]}],"aliases":[{"name":"Area","comment":" A horizontal area of the content.\r\nA `Area` defines how the content should be displayed.\r\n\r\n**Note:**\r\nAn area can only contain elements of the same type.\r\nSo either you have tiles or images.\r\n\r\n\r\n\r\n","args":["msg"],"type":"PixelEngine.Graphics.Data.Area.Area msg"},{"name":"Background","comment":" Every area has a background.\r\n","args":[],"type":"PixelEngine.Graphics.Data.Background"},{"name":"PixelEngine","comment":" An alias for a PixelEngine program.\r\n\r\nYour `main` function will have this type.\r\n\r\n","args":["flag","model","msg"],"type":"Platform.Program flag (PixelEngine.Model model msg) (PixelEngine.Msg msg)"}],"values":[{"name":"basicControls","comment":" Subscribes to a keypress and sends the corresponding msg. This Function uses the default key layout.\r\n","type":"(PixelEngine.Input -> Maybe.Maybe msg) -> Platform.Sub.Sub (Maybe.Maybe msg)"},{"name":"colorBackground","comment":" A single color background.\r\nIt uses [avh4/elm-color](https://package.elm-lang.org/packages/avh4/elm-color/latest).\r\n\r\n```\r\ncolorBackground (Color.rgb255 20 12 28)\r\n```\r\n\r\n","type":"Color.Color -> PixelEngine.Background"},{"name":"customControls","comment":" Subscribes to a keypress using custom key layouts.\r\n\r\nIt uses [key values](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) for the String.\r\nYou can use this [website](http://keycode.info) to find out the key value.\r\n\r\n","type":"(String.String -> Maybe.Maybe PixelEngine.Input) -> (PixelEngine.Input -> Maybe.Maybe msg) -> Platform.Sub.Sub (Maybe.Maybe msg)"},{"name":"defaultInputs","comment":" The default layout:\r\n\r\n - A/ArrowLeft - `InputLeft`\r\n - W/ArrowUp - `InputUp`\r\n - D/ArrowRight - `InputRight`\r\n - S/ArrowDown - `InputDown`\r\n - Space/Enter - `InputA`\r\n - X/Backspace/Esc - `InputB`\r\n - Q - `InputX`\r\n - E - `InputY`\r\n\r\n","type":"String.String -> Maybe.Maybe PixelEngine.Input"},{"name":"game","comment":" A prewired PixelEngine frame.\r\n\r\nUse it just like `document` from [elm/browser](https://package.elm-lang.org/packages/elm/browser/latest/Browser).\r\n\r\n","type":"{ init : flags -> ( model, Platform.Cmd.Cmd msg ), update : msg -> model -> ( model, Platform.Cmd.Cmd msg ), subscriptions : model -> Platform.Sub.Sub msg, view : model -> { title : String.String, options : Maybe.Maybe (PixelEngine.Options.Options msg), body : List.List (PixelEngine.Area msg) }, controls : PixelEngine.Input -> Maybe.Maybe msg, width : Basics.Float } -> Platform.Program flags (PixelEngine.Model model msg) (PixelEngine.Msg msg)"},{"name":"gameWithCustomControls","comment":" A game using custom controls.\r\n\r\nThe default controls should be enough to start,\r\nbut maybe you want to write a spelling game,\r\nor its nessesary that very specifc keys are used?\r\n\r\n","type":"{ init : flags -> ( model, Platform.Cmd.Cmd msg ), update : msg -> model -> ( model, Platform.Cmd.Cmd msg ), subscriptions : model -> Platform.Sub.Sub msg, width : Basics.Float, view : model -> { title : String.String, options : Maybe.Maybe (PixelEngine.Options.Options msg), body : List.List (PixelEngine.Area msg) }, controls : ( String.String -> Maybe.Maybe PixelEngine.Input, PixelEngine.Input -> Maybe.Maybe msg ) } -> Platform.Program flags (PixelEngine.Model model msg) (PixelEngine.Msg msg)"},{"name":"gameWithNoControls","comment":" A game with no controls.\r\n\r\nUse it just like `document` from [elm/browser](https://package.elm-lang.org/packages/elm/browser/latest/Browser).\r\n\r\n","type":"{ init : flags -> ( model, Platform.Cmd.Cmd msg ), update : msg -> model -> ( model, Platform.Cmd.Cmd msg ), subscriptions : model -> Platform.Sub.Sub msg, width : Basics.Float, view : model -> { title : String.String, options : Maybe.Maybe (PixelEngine.Options.Options msg), body : List.List (PixelEngine.Area msg) } } -> Platform.Program flags (PixelEngine.Model model msg) (PixelEngine.Msg msg)"},{"name":"heightOf","comment":" Returns the height of a list of Areas\r\n\r\nThis can be used to return the height of a `tiledArea`.\r\nFor a `imageArea` this function is trivial.\r\n\r\n","type":"List.List (PixelEngine.Area msg) -> Basics.Float"},{"name":"imageArea","comment":" An area containing images that can be arranged freely.\r\n\r\nThis is a complete contrast to the way how `tiledArea` is working.\r\nUsefull applications are GUIs, menus or loading screens.\r\n\r\nCheckout [PixelEngine.Graphics.Image](PixelEngine-Graphics-Image) for more information.\r\n\r\nThis area has the following options:\r\n\r\n - `height` - The height or the `Area` in pixels.\r\n - `background` - The background of the `Area`.\r\n\r\n","type":"{ height : Basics.Float, background : PixelEngine.Background } -> List.List ( ( Basics.Float, Basics.Float ), PixelEngine.Image.Image msg ) -> PixelEngine.Area msg"},{"name":"imageBackground","comment":" An image that gets repeated.\r\n\r\n```\r\nImage \"groundTile.png\"\r\n```\r\n\r\n","type":"{ source : String.String, width : Basics.Float, height : Basics.Float } -> PixelEngine.Background"},{"name":"tiledArea","comment":" An area for using tilesets.\r\n\r\nIt supports one tileset at a time,\r\nthat means all sprites must be of the same size and stored as a grid in one single file.\r\nThis area is useful for displaying the playing field of a game.\r\n\r\nCheckout [PixelEngine.Graphics.Tile](PixelEngine-Graphics-Image) for more information.\r\n\r\nThis area has the following options:\r\n\r\n - `rows` - The amount of rows of the grid. This value defines the height of the `Area`.\r\n - `tileset` - The tileset that will be used for all elements in the `Area`.\r\n - `background` - The background of the `Area`.\r\n\r\n","type":"{ rows : Basics.Int, tileset : PixelEngine.Tile.Tileset, background : PixelEngine.Background } -> List.List ( ( Basics.Int, Basics.Int ), PixelEngine.Tile.Tile msg ) -> PixelEngine.Area msg"},{"name":"toHtml","comment":" Displays content of the game.\r\n","type":"{ width : Basics.Float, options : Maybe.Maybe (PixelEngine.Options.Options msg) } -> List.List (PixelEngine.Area msg) -> Html.Html msg"},{"name":"withMobileSupport","comment":" Adds mobile support to the options.\r\nIt needs the window size.\r\n\r\n<PixelEngine> provides a fully wired program that takes care of everything.\r\n\r\n","type":"{ windowSize : { width : Basics.Float, height : Basics.Float }, controls : PixelEngine.Input -> Maybe.Maybe msg } -> PixelEngine.Options.Options msg -> PixelEngine.Options.Options msg"}],"binops":[]},{"name":"PixelEngine.Image","comment":" This module contains functions for creating images.\r\nThese Images can then be used for the `imageArea` function from the <PixelEngine>\r\n\r\n\r\n## Image\r\n\r\n@docs Image, fromSrc, movable, jumping, fromTile, fromText, fromTextWithSpacing, multipleImages, clickable, monochrome, withAttributes\r\n\r\n","unions":[],"aliases":[{"name":"Image","comment":" A `Image` is actually a very general type: As we will see later,\r\neven tiles are essentially images.\r\nThe following functions are intended to be modular.\r\n","args":["msg"],"type":"PixelEngine.Graphics.Data.Area.ContentElement msg"}],"values":[{"name":"clickable","comment":" Makes an `Image` clickable\r\n\r\nUse this to create the `onClick` event from [Html.Events](https://package.elm-lang.org/packages/elm/html/latest/Html-Events#onClick).\r\n\r\n","type":"msg -> PixelEngine.Image.Image msg -> PixelEngine.Image.Image msg"},{"name":"fromSrc","comment":" The basic image constructor.\r\nThe string contains the url to the image\r\n\r\n fromSrc \"aStone.png\"\r\n\r\n","type":"String.String -> PixelEngine.Image.Image msg"},{"name":"fromText","comment":" Created an Image from a text-string and the Tileset of the font.\r\n\r\nIt only supports Ascii characters.\r\n\r\nThis package comes with a [collection of Fonts](https://github.com/Orasund/pixelengine/wiki/Collection-of-Fonts)\r\nthat are free to use.\r\n\r\n","type":"String.String -> PixelEngine.Tile.Tileset -> PixelEngine.Image.Image msg"},{"name":"fromTextWithSpacing","comment":" Created an Image from a text-string and the Tileset of the font.\r\n\r\nIt only supports Ascii characters.\r\n\r\nThe first argument is the spaceing between letters. Use negative values to place\r\nthe letters nearer to echother.\r\n\r\nThis package comes with a [collection of Fonts](https://github.com/Orasund/pixelengine/wiki/Collection-of-Fonts)\r\nthat are free to use.\r\n\r\n","type":"Basics.Float -> String.String -> PixelEngine.Tile.Tileset -> PixelEngine.Image.Image msg"},{"name":"fromTile","comment":" `Tiles` are essentially also images,\r\ntherefore this constructor transforms a `Tile` and a `Tileset` into an `Image`.\r\n\r\n fromTile (tile ( 0, 0 ))\r\n (tileset\r\n { source = \"tiles.png\"\r\n , width = 80\r\n , height = 80\r\n }\r\n )\r\n == image \"tiles.png\"\r\n\r\n**Note:**\r\n`fromTile` displays only the `width` and `height` of the image, that where given.\r\nThis means setting `width` and `height` to `0` would not display the image at all.\r\n\r\n fromTile (tile ( 0, 0 ) |> movable \"uniqueId\")\r\n == fromTile (tile ( 0, 0 ))\r\n |> movable \"uniqueId\"\r\n\r\n**Note:**\r\nIf you want to animate an `Image` use this function instead.\r\n\r\n","type":"PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tileset -> PixelEngine.Image.Image msg"},{"name":"jumping","comment":" Pauses a the transition of a `movable` image.\r\n\r\n**Only use in combination with `movable`:**\r\n\r\n image \"teleportingEnemy.png\" |> movable \"name\" |> jumping\r\n\r\nUse this function if a tile has the `movable`-property, but you would like to\r\nremove it without causing any unwanted side effects.\r\n\r\n","type":"PixelEngine.Image.Image msg -> PixelEngine.Image.Image msg"},{"name":"monochrome","comment":" Adds a background color.\r\n\r\n\\*\\* This makes the the Image non-transparent \\*\\*\r\n\r\nThis can be used to simulate monochrome sprites or to implement team colors.\r\n\r\n","type":"Color.Color -> PixelEngine.Image.Image msg -> PixelEngine.Image.Image msg"},{"name":"movable","comment":" Creates a image transition between positions.\r\nThis is useful for images that will change their position during the game.\r\n\r\n image \"enemy.png\" |> movable \"name\"\r\n\r\n**Note:**\r\nThe string should be unique, if not the transition might fail every now and then.\r\n\r\n**Note:**\r\nThe string will be a id Attribute in a html node, so be careful not to use names that might be already taken.\r\n\r\n","type":"String.String -> PixelEngine.Image.Image msg -> PixelEngine.Image.Image msg"},{"name":"multipleImages","comment":" It is possible to compose an `Image` from a set of other images.\r\nThe two `Floats` are realtive coordinates.\r\n\r\n ((100,100),image \"img.png\")\r\n =\r\n ((20,50), multipleimages [((80,50),image \"img.png\")])\r\n\r\nSub-images loose the ability to be movable:\r\n\r\n multipleimages [((x,y),image \"img.png\" |> movable \"id\")]\r\n =\r\n multipleimages [((x,y),image \"img.png\")]\r\n\r\nInstead use the following:\r\n\r\n image \"img.png\" |> movable \"id\"\r\n =\r\n multipleimages [((0,0),image \"img.png\")] |> movable \"id\"\r\n\r\n","type":"List.List ( ( Basics.Float, Basics.Float ), PixelEngine.Image.Image msg ) -> PixelEngine.Image.Image msg"},{"name":"withAttributes","comment":" Adds custom attributes.\r\n\r\nUse the [Html.Attributes](https://package.elm-lang.org/packages/elm/html/latest/Html-Attributes).\r\n\r\n","type":"List.List (Html.Attribute msg) -> PixelEngine.Image.Image msg -> PixelEngine.Image.Image msg"}],"binops":[]},{"name":"PixelEngine.Options","comment":" Options tweak different aspects of your program.\r\n\r\n#Transitions\r\nAdding a transitions between screens.\r\n\r\nThe information for the transition will be written in the `Option` class from\r\n[PixelEngine.Graphics](PixelEngine-Graphics).\r\n\r\nTo get started, copy the following example:\r\n\r\n options\r\n |> Transition.withTransitionFrom\r\n ListOfArea\r\n (Transition.customTransition\r\n \"death_transition\"\r\n [ ( 0, \"opacity:1;filter:grayscale(0%) blur(0px);\" )\r\n , ( 1, \"opacity:1;filter:grayscale(70%) blur(0px);\" )\r\n , ( 3, \"opacity:0;filter:grayscale(70%) blur(5px);\" )\r\n ])\r\n\r\n\r\n## Main Function\r\n\r\n@docs withTransitionFrom\r\n\r\n\r\n## Area\r\n\r\n@docs Transition, transition\r\n\r\n\r\n## Options\r\n\r\n@docs Options, default, withAnimationFPS, withMovementSpeed, withScale\r\n\r\n","unions":[],"aliases":[{"name":"Options","comment":" Options for the render function\r\n","args":["msg"],"type":"PixelEngine.Graphics.Data.Options.Options msg"},{"name":"Transition","comment":" A transition between screens\r\n","args":[],"type":"PixelEngine.Graphics.Data.Transition.Transition"}],"values":[{"name":"default","comment":" Defines the width of the game.\r\n","type":"PixelEngine.Options.Options msg"},{"name":"transition","comment":" The default constructor for a `Transition`.\r\n\r\nFor the future I have planed to make transitions modular, similar to a `Msg` or a `Sub`.\r\n\r\n Transition.transition\r\n \"death_transition\"\r\n [ ( 0, \"opacity:1;filter:grayscale(0%) blur(0px);\" )\r\n , ( 1, \"opacity:1;filter:grayscale(70%) blur(0px);\" )\r\n , ( 3, \"opacity:0;filter:grayscale(70%) blur(5px);\" )\r\n ]\r\n\r\nThe first value is the duration of the effect, the second is the CSS-command at that point in time.\r\nSo the example will compile to something like this:\r\n\r\n dealth_transition:\r\n 0% {opacity:1;filter:grayscale(0%) blur(0px);}\r\n 25% {opacity:1;filter:grayscale(70%) blur(0px);}\r\n 100% {opacity:0;filter:grayscale(70%) blur(5px);}\r\n\r\n**Note:**\r\nA screen will be automatically hidden after a transition,\r\nso the example would also work without the opacity-parameter.\r\n\r\n","type":"String.String -> { start : String.String, keyFrames : List.List (Maybe.Maybe String.String), end : String.String } -> PixelEngine.Options.Transition"},{"name":"withAnimationFPS","comment":" Sets the Frames per Seconds for Animations.\r\n\r\nValue must be positv or else the function will be ignored.\r\n\r\n**Default value:** `1`\r\n\r\n","type":"Basics.Float -> PixelEngine.Options.Options msg -> PixelEngine.Options.Options msg"},{"name":"withMovementSpeed","comment":" The speed of movement in seconds.\r\n\r\n**Default value:** `0.2`\r\n\r\n","type":"Basics.Float -> PixelEngine.Options.Options msg -> PixelEngine.Options.Options msg"},{"name":"withScale","comment":" Scales up everything.\r\n\r\nUse only power of `2` as scale to ensure crisp pixels.\r\n\r\n**Default value:** `1`\r\n\r\n","type":"Basics.Int -> PixelEngine.Options.Options msg -> PixelEngine.Options.Options msg"},{"name":"withTransitionFrom","comment":" adds the `Transition` to the `Options`.\r\n\r\nThe first argument is the List or Areas taken **before** the transition is applied.\r\n(e.g. the last state)\r\n\r\n","type":"List.List (PixelEngine.Graphics.Data.Area.Area msg) -> PixelEngine.Options.Transition -> PixelEngine.Options.Options msg -> PixelEngine.Options.Options msg"}],"binops":[]},{"name":"PixelEngine.Tile","comment":" This module contains functions for creating tiles.\r\nTiles are used for the `tiledArea` function from the main module.\r\n\r\n\r\n## Tile\r\n\r\n@docs Tile, fromPosition, fromText, movable, jumping, animated, clickable, monochrome, withAttributes\r\n\r\n\r\n## Tileset\r\n\r\n@docs Tileset, tileset\r\n\r\n","unions":[],"aliases":[{"name":"Tile","comment":" A `Tile` defines a sprite in a `Tileset`.\r\nThe following functions are intended to be modular.\r\n\r\nA example for a `tile` could be:\r\n\r\n tile ( 1, 2 ) |> animated 1 |> movable \"uniqueName\"\r\n\r\n","args":["msg"],"type":"PixelEngine.Graphics.Data.Tile.Tile msg"},{"name":"Tileset","comment":" A Tileset contains the actuall image that a `Tile` can reference.\r\n","args":[],"type":"PixelEngine.Graphics.Data.Tile.Tileset"}],"values":[{"name":"animated","comment":" Adds animations to a `Tile`.\r\nThe sprites of the animation must be arranged horizontally in the `Tileset`.\r\n\r\nThe first argument give the amount of steps of the animation (one less then the number of sprites.)\r\n\r\nThe following code specifies a `Tile` with 3+1 frames\r\n\r\n tile ( 0, 0 ) |> animated 3\r\n\r\n**Note:**\r\nSetting the steps to `0` describes a tile with no animation.\r\n\r\n tile ( 0, 0 ) |> animated 0 == tile ( 0, 0 )\r\n\r\n\r\n\r\n**Note:**\r\nNegaive steps are not supported, in this case no animation will be played.\r\n\r\n","type":"Basics.Int -> PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tile msg"},{"name":"clickable","comment":" Makes an `Tile` clickable\r\n\r\nUse this to create the `onClick` event from [Html.Events](https://package.elm-lang.org/packages/elm/html/latest/Html-Events#onClick).\r\n\r\n","type":"msg -> PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tile msg"},{"name":"fromPosition","comment":" The basic `Tile` constructor.\r\n\r\nThe first argument is the position of the sprite in the `tileset`.\r\n\r\nAs an example\r\n\r\n tile ( 3, 2 )\r\n\r\nis the 3 row in the second column of the `Tileset`.\r\n\r\n\r\n\r\n","type":"( Basics.Int, Basics.Int ) -> PixelEngine.Tile.Tile msg"},{"name":"fromText","comment":" Created a List of Tiles from a String and a Offset.\r\n\r\nIt only supports ASCII characters.\r\n\r\nThe Offset `(Int,Int` should point to the sprite repesenting the space-character.\r\n\r\nThis package comes with a [collection of Fonts](https://github.com/Orasund/pixelengine/wiki/Collection-of-Fonts)\r\nthat are free to use.\r\n\r\n","type":"( Basics.Int, Basics.Int ) -> String.String -> List.List (PixelEngine.Tile.Tile msg)"},{"name":"jumping","comment":" Pauses the transition of a `movable` tile.\r\n\r\n**Only use in combination with `movable`:**\r\n\r\n tile ( 0, 0 ) |> movable \"name\" |> jumping\r\n\r\nUse this function if a `Tile` has the `movable`-property and you would like to\r\nremove it temporarily without causing any unwanted side effects.\r\n\r\n","type":"PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tile msg"},{"name":"monochrome","comment":" Adds a background color.\r\n\r\n\\*\\* This makes the the Tile non-transparent \\*\\*\r\n\r\nThis can be used to simulate monochrome sprites or to implement team colors.\r\n\r\n","type":"Color.Color -> PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tile msg"},{"name":"movable","comment":" Makes a `Tile` transition between positions.\r\nThis is useful for sprites that will change their position during the game.\r\n\r\n tile ( 0, 0 ) |> movable \"name\"\r\n\r\n**Note:**\r\nOnce a `Tile` has this property, it can **NOT** be removed during the game.\r\n\r\n**Note:**\r\nThe string should be unique,. If not then the transition might fail every now and then.\r\n\r\n**Note:**\r\nThe string will be a id Attribute in a html node, so be careful not to use names that might be already taken.\r\n\r\n","type":"String.String -> PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tile msg"},{"name":"tileset","comment":" The `Tileset` constructor has the following parameters:\r\n\r\n - `source` - The adress to the file\r\n - `spriteWidth` - The size of a single sprite in the `Tileset` (in pixels)\r\n - `spriteHeight` - The height of a single sprite (also in pixels)\r\n\r\nFor the following defines the `Tileset` used in the examples of this module.\r\n\r\n { width: 16\r\n , height 16\r\n , source: \"https://orasund.github.io/pixelengine/tileset.png\"\r\n }\r\n\r\n","type":"{ source : String.String, spriteWidth : Basics.Int, spriteHeight : Basics.Int } -> PixelEngine.Tile.Tileset"},{"name":"withAttributes","comment":" Adds custom attributes.\r\n\r\nuse the [Html.Attributes](https://package.elm-lang.org/packages/elm/html/latest/Html-Attributes).\r\n\r\n","type":"List.List (Html.Attribute msg) -> PixelEngine.Tile.Tile msg -> PixelEngine.Tile.Tile msg"}],"binops":[]}]