%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}
\ifdefined\pdfpxdimen
   \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen
\fi \sphinxpxdimen=.75bp\relax

\PassOptionsToPackage{warn}{textcomp}
\usepackage[utf8]{inputenc}
\ifdefined\DeclareUnicodeCharacter
% support both utf8 and utf8x syntaxes
\edef\sphinxdqmaybe{\ifdefined\DeclareUnicodeCharacterAsOptional\string"\fi}
  \DeclareUnicodeCharacter{\sphinxdqmaybe00A0}{\nobreakspace}
  \DeclareUnicodeCharacter{\sphinxdqmaybe2500}{\sphinxunichar{2500}}
  \DeclareUnicodeCharacter{\sphinxdqmaybe2502}{\sphinxunichar{2502}}
  \DeclareUnicodeCharacter{\sphinxdqmaybe2514}{\sphinxunichar{2514}}
  \DeclareUnicodeCharacter{\sphinxdqmaybe251C}{\sphinxunichar{251C}}
  \DeclareUnicodeCharacter{\sphinxdqmaybe2572}{\textbackslash}
\fi
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amstext}
\usepackage{babel}
\usepackage{times}
\usepackage[Bjarne]{fncychap}
\usepackage{sphinx}

\fvset{fontsize=\small}
\usepackage{geometry}

% Include hyperref last.
\usepackage{hyperref}
% Fix anchor placement for figures with captions.
\usepackage{hypcap}% it must be loaded after hyperref.
% Set up styles of URL: it should be placed after hyperref.
\urlstyle{same}

\addto\captionsenglish{\renewcommand{\figurename}{Fig.\@ }}
\makeatletter
\def\fnum@figure{\figurename\thefigure{}}
\makeatother
\addto\captionsenglish{\renewcommand{\tablename}{Table }}
\makeatletter
\def\fnum@table{\tablename\thetable{}}
\makeatother
\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}}

\addto\captionsenglish{\renewcommand{\literalblockcontinuedname}{continued from previous page}}
\addto\captionsenglish{\renewcommand{\literalblockcontinuesname}{continues on next page}}
\addto\captionsenglish{\renewcommand{\sphinxnonalphabeticalgroupname}{Non-alphabetical}}
\addto\captionsenglish{\renewcommand{\sphinxsymbolsname}{Symbols}}
\addto\captionsenglish{\renewcommand{\sphinxnumbersname}{Numbers}}

\addto\extrasenglish{\def\pageautorefname{page}}





\title{Universal Level Formats Documentation}
\date{May 14, 2020}
\release{1.0}
\author{Layla Marchant}
\newcommand{\sphinxlogo}{\vbox{}}
\renewcommand{\releasename}{Release}
\makeindex
\begin{document}

\pagestyle{empty}
\sphinxmaketitle
\pagestyle{plain}
\sphinxtableofcontents
\pagestyle{normal}
\phantomsection\label{\detokenize{index::doc}}


\begin{sphinxShadowBox}
\sphinxstyletopictitle{Contents}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id1}}{\hyperref[\detokenize{index:universal-level-formats-documentation}]{\sphinxcrossref{Universal Level Formats documentation}}}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id2}}{\hyperref[\detokenize{index:level-format-classes}]{\sphinxcrossref{Level Format Classes}}}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id3}}{\hyperref[\detokenize{index:ulvl-jsl}]{\sphinxcrossref{ulvl.JSL}}}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id4}}{\hyperref[\detokenize{index:ulvl-jsl-methods}]{\sphinxcrossref{ulvl.JSL Methods}}}

\end{itemize}

\item {} 
\phantomsection\label{\detokenize{index:id5}}{\hyperref[\detokenize{index:ulvl-ascl}]{\sphinxcrossref{ulvl.ASCL}}}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id6}}{\hyperref[\detokenize{index:ulvl-ascl-methods}]{\sphinxcrossref{ulvl.ASCL Methods}}}

\end{itemize}

\item {} 
\phantomsection\label{\detokenize{index:id7}}{\hyperref[\detokenize{index:ulvl-ulx}]{\sphinxcrossref{ulvl.ULX}}}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id8}}{\hyperref[\detokenize{index:ulvl-ulx-methods}]{\sphinxcrossref{ulvl.ULX Methods}}}

\end{itemize}

\item {} 
\phantomsection\label{\detokenize{index:id9}}{\hyperref[\detokenize{index:ulvl-tmx}]{\sphinxcrossref{ulvl.TMX}}}
\begin{itemize}
\item {} 
\phantomsection\label{\detokenize{index:id10}}{\hyperref[\detokenize{index:ulvl-tmx-methods}]{\sphinxcrossref{ulvl.TMX Methods}}}

\end{itemize}

\end{itemize}

\item {} 
\phantomsection\label{\detokenize{index:id11}}{\hyperref[\detokenize{index:helper-classes}]{\sphinxcrossref{Helper Classes}}}

\item {} 
\phantomsection\label{\detokenize{index:id12}}{\hyperref[\detokenize{index:indices-and-tables}]{\sphinxcrossref{Indices and tables}}}

\end{itemize}

\end{itemize}
\end{sphinxShadowBox}
\phantomsection\label{\detokenize{index:module-ulvl}}\index{ulvl (module)@\spxentry{ulvl}\spxextra{module}}
This library reads and writes universal level formats.  These level
formats are generic enough to be used by any 2-D game.  Their purpose is
to unify level editing under a simple, universal format.


\chapter{Level Format Classes}
\label{\detokenize{index:level-format-classes}}
These classes load and save levels for their respective formats.
{\hyperref[\detokenize{index:ulvl.JSL}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{ulvl.JSL}}}}} is generally the recommended format, but alternatives
are offered as well.


\section{ulvl.JSL}
\label{\detokenize{index:ulvl-jsl}}\index{JSL (class in ulvl)@\spxentry{JSL}\spxextra{class in ulvl}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.JSL}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{ulvl.}}\sphinxbfcode{\sphinxupquote{JSL}}}
This class loads, stores, and saves JavaScript Level (JSL) files.
This format is based on JSON and generally has one of the following
extensions: ".jsl", ".json".

A JSL file contains a top-level object with the following keys:
\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{"meta"}}: A value of any type indicating the layer's meta
variable.

\item {} 
\sphinxcode{\sphinxupquote{"objects"}}: An object with the level's object types as keys and
arrays as values.  The array lists the meta variables of all
objects of the respective type (\sphinxcode{\sphinxupquote{null}} for objects with no meta
variable defined).

\item {} 
\sphinxcode{\sphinxupquote{"layers"}}: An array of objects indicating tile layers, with
each of these objects containing the following keys:
\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{"type"}}: A value of any type indicating the type of the
layer.

\item {} 
\sphinxcode{\sphinxupquote{"columns"}}: An integer indicating the number of columns in
the tile layer.

\item {} 
\sphinxcode{\sphinxupquote{"tiles"}}: A zlib-compressed, base64-encoded string encoding
the tile IDs as data.

\item {} 
\sphinxcode{\sphinxupquote{"meta"}}: A value of any type indicating the layer's meta
variable.

\end{itemize}

\end{itemize}
\index{meta (ulvl.JSL attribute)@\spxentry{meta}\spxextra{ulvl.JSL attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.JSL.meta}}\pysigline{\sphinxbfcode{\sphinxupquote{meta}}}
Meta variable for the level as a whole.  Can be any value.

\end{fulllineitems}

\index{objects (ulvl.JSL attribute)@\spxentry{objects}\spxextra{ulvl.JSL attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.JSL.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}}
A list of {\hyperref[\detokenize{index:ulvl.LevelObject}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{LevelObject}}}}} objects representing objects of
the level.

\end{fulllineitems}

\index{layers (ulvl.JSL attribute)@\spxentry{layers}\spxextra{ulvl.JSL attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.JSL.layers}}\pysigline{\sphinxbfcode{\sphinxupquote{layers}}}
A list oj {\hyperref[\detokenize{index:ulvl.TileLayer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TileLayer}}}}} objects representing the tile layers
of the level.

\end{fulllineitems}


\end{fulllineitems}



\subsection{ulvl.JSL Methods}
\label{\detokenize{index:ulvl-jsl-methods}}\index{load() (ulvl.JSL class method)@\spxentry{load()}\spxextra{ulvl.JSL class method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.JSL.load}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{classmethod }}\sphinxcode{\sphinxupquote{JSL.}}\sphinxbfcode{\sphinxupquote{load}}}{\emph{f}}{}
Load the indicated file and return a {\hyperref[\detokenize{index:ulvl.JSL}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{JSL}}}}} object.

\end{fulllineitems}

\index{save() (ulvl.JSL method)@\spxentry{save()}\spxextra{ulvl.JSL method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.JSL.save}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{JSL.}}\sphinxbfcode{\sphinxupquote{save}}}{\emph{f}}{}
Save the object to the indicated file.

\end{fulllineitems}



\section{ulvl.ASCL}
\label{\detokenize{index:ulvl-ascl}}\index{ASCL (class in ulvl)@\spxentry{ASCL}\spxextra{class in ulvl}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ASCL}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{ulvl.}}\sphinxbfcode{\sphinxupquote{ASCL}}}
This class loads, stores, and saves ASCII Level (ASCL) files.  This
format is based on a grid of plain text characters and generally has
one of the following extensions: ".ascl", ".asc", ".txt".

An ASCL file contains two main components: the meta variable
definitions and the level object grid.

Meta variables are defined simply at the top of the file: each line
indicates the value of a different meta variable, always a string.
Any number of meta variables can be defined.

Everything after the first blank line in the ASCL file is considered
to be part of the tile layer.  Here, ASCII characters are used to
represent the tiles found in \sphinxcode{\sphinxupquote{tiles}}.
\index{meta (ulvl.ASCL attribute)@\spxentry{meta}\spxextra{ulvl.ASCL attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ASCL.meta}}\pysigline{\sphinxbfcode{\sphinxupquote{meta}}}
A list of the level's meta variables.

\begin{sphinxadmonition}{note}{Note:}
The meta variables can be any value, but when the ASCL is
saved, all meta variables will be automatically converted to
strings.
\end{sphinxadmonition}

\end{fulllineitems}

\index{layer (ulvl.ASCL attribute)@\spxentry{layer}\spxextra{ulvl.ASCL attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ASCL.layer}}\pysigline{\sphinxbfcode{\sphinxupquote{layer}}}
A {\hyperref[\detokenize{index:ulvl.TileLayer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TileLayer}}}}} object indicating the tiles of the level.

\begin{sphinxadmonition}{note}{Note:}
Due to the nature of the format, the layer type and meta
variable of the layer are ignored and not preserved when
saving.
\end{sphinxadmonition}

\end{fulllineitems}


\end{fulllineitems}



\subsection{ulvl.ASCL Methods}
\label{\detokenize{index:ulvl-ascl-methods}}\index{load() (ulvl.ASCL class method)@\spxentry{load()}\spxextra{ulvl.ASCL class method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ASCL.load}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{classmethod }}\sphinxcode{\sphinxupquote{ASCL.}}\sphinxbfcode{\sphinxupquote{load}}}{\emph{f}}{}
Load the indicated file and return an {\hyperref[\detokenize{index:ulvl.ASCL}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{ASCL}}}}} object.

\end{fulllineitems}

\index{save() (ulvl.ASCL method)@\spxentry{save()}\spxextra{ulvl.ASCL method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ASCL.save}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{ASCL.}}\sphinxbfcode{\sphinxupquote{save}}}{\emph{f}}{}
Save the object to the indicated file.

\end{fulllineitems}



\section{ulvl.ULX}
\label{\detokenize{index:ulvl-ulx}}\index{ULX (class in ulvl)@\spxentry{ULX}\spxextra{class in ulvl}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ULX}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{ulvl.}}\sphinxbfcode{\sphinxupquote{ULX}}}
This class loads, stores, and saves Universal Level XML (ULX) files.
This format is based on XML and generally has one of the following
extensions: ".ulx", ".xml".

A ULX file contains a root tree with the name "level" containing the
following children:
\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{meta}}: Contains one element for each of the level's meta
variables.  Each element's tag indicates the name of the meta
variable, while its text indicates the value.

\item {} 
\sphinxcode{\sphinxupquote{objects}}: Contains \sphinxcode{\sphinxupquote{object}} elements.  Each \sphinxcode{\sphinxupquote{object}}
element has the following attributes:
\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{"type"}}: The object's type.

\item {} 
\sphinxcode{\sphinxupquote{"meta"}}: The object's meta variable.

\end{itemize}

\item {} 
\sphinxcode{\sphinxupquote{layers}}: Contains \sphinxcode{\sphinxupquote{layer}} elements.  Each \sphinxcode{\sphinxupquote{layer}} element
contains text indicating the layer's tiles as zlib-compressed
base64-encoded text, and the following attributes:
\begin{itemize}
\item {} 
\sphinxcode{\sphinxupquote{"type"}}: The layer's type.

\item {} 
\sphinxcode{\sphinxupquote{"columns"}}: The number of columns in the tile layer.

\item {} 
\sphinxcode{\sphinxupquote{"meta"}}: The layer's meta variable.

\end{itemize}

\end{itemize}

\begin{sphinxadmonition}{note}{Note:}
Types and meta variables of all kinds can be any value, but due
to the nature of XML, all types and meta variables are converted
to strings when the ULX is saved. A value of \sphinxcode{\sphinxupquote{None}}
leads to the ULX omitting the meta variable.
\end{sphinxadmonition}
\index{meta (ulvl.ULX attribute)@\spxentry{meta}\spxextra{ulvl.ULX attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ULX.meta}}\pysigline{\sphinxbfcode{\sphinxupquote{meta}}}
A dictionary of all of the level's meta variables.

\end{fulllineitems}

\index{objects (ulvl.ULX attribute)@\spxentry{objects}\spxextra{ulvl.ULX attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ULX.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}}
A list of objects in the level as {\hyperref[\detokenize{index:ulvl.LevelObject}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{LevelObject}}}}}
objects.

\end{fulllineitems}

\index{layers (ulvl.ULX attribute)@\spxentry{layers}\spxextra{ulvl.ULX attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ULX.layers}}\pysigline{\sphinxbfcode{\sphinxupquote{layers}}}
A list oj {\hyperref[\detokenize{index:ulvl.TileLayer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TileLayer}}}}} objects representing the tile layers
of the level.

\end{fulllineitems}


\end{fulllineitems}



\subsection{ulvl.ULX Methods}
\label{\detokenize{index:ulvl-ulx-methods}}\index{load() (ulvl.ULX class method)@\spxentry{load()}\spxextra{ulvl.ULX class method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ULX.load}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{classmethod }}\sphinxcode{\sphinxupquote{ULX.}}\sphinxbfcode{\sphinxupquote{load}}}{\emph{f}}{}
Load the indicated file and return a {\hyperref[\detokenize{index:ulvl.ULX}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{ULX}}}}} object.

\end{fulllineitems}

\index{save() (ulvl.ULX method)@\spxentry{save()}\spxextra{ulvl.ULX method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.ULX.save}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{ULX.}}\sphinxbfcode{\sphinxupquote{save}}}{\emph{fname}}{}
Save the object to the indicated file name.

\end{fulllineitems}



\section{ulvl.TMX}
\label{\detokenize{index:ulvl-tmx}}\index{TMX (class in ulvl)@\spxentry{TMX}\spxextra{class in ulvl}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TMX}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{ulvl.}}\sphinxbfcode{\sphinxupquote{TMX}}}
A class for reading (but not writing) TMX files created by the Tiled
Map Editor in a generic manner.

Only map meta-data, basic tile layers (but not group layers or image
layers), and object groups are captured.  Captured meta-data is
converted to numeric form whenever it is supposed to be.  All other
values are left as strings.

Saving in this format is not supported due to its complexity.

See the TMX format specification for more information on the format
itself:

\sphinxurl{https://doc.mapeditor.org/en/stable/reference/tmx-map-format/}
\index{meta (ulvl.TMX attribute)@\spxentry{meta}\spxextra{ulvl.TMX attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TMX.meta}}\pysigline{\sphinxbfcode{\sphinxupquote{meta}}}
A dictionary of level meta variables obtained from the TMX.  The
following meta variables are captured if available:
\begin{itemize}
\item {} 
"orientation" (from the \textless{}map\textgreater{} tag)

\item {} 
"dictionary" (from the \textless{}map\textgreater{} tag)

\item {} 
"width" (from the \textless{}map\textgreater{} tag)

\item {} 
"height" (from the \textless{}map\textgreater{} tag)

\item {} 
"tilewidth" (from the \textless{}map\textgreater{} tag)

\item {} 
"tileheight" (from the \textless{}map\textgreater{} tag)

\item {} 
"backgroundcolor" (from the \textless{}map\textgreater{} tag)

\item {} 
All custom map properties

\end{itemize}

\end{fulllineitems}

\index{objects (ulvl.TMX attribute)@\spxentry{objects}\spxextra{ulvl.TMX attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TMX.objects}}\pysigline{\sphinxbfcode{\sphinxupquote{objects}}}
A list of objects in the level as {\hyperref[\detokenize{index:ulvl.LevelObject}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{LevelObject}}}}}
objects.  These are taken from the TMX object tags. Layering of
objects is not preserved.  Each {\hyperref[\detokenize{index:ulvl.LevelObject}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{LevelObject}}}}} object's
type becomes, in order of preference: the name of the TMX object,
the type of the TMX object, or the name of the TMX object group.
Each {\hyperref[\detokenize{index:ulvl.LevelObject}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{LevelObject}}}}} object's meta variable is set as a
dictionary of values obtained from the TMX.  The following meta
variables are captured if available:
\begin{itemize}
\item {} 
"color" (from the \textless{}objectgroup\textgreater{} tag)

\item {} 
"opacity" (from the \textless{}objectgroup\textgreater{} tag)

\item {} 
"offsetx" (from the \textless{}objectgroup\textgreater{} tag)

\item {} 
"offsety" (from the \textless{}objectgroup\textgreater{} tag)

\item {} 
"x" (from the \textless{}object\textgreater{} tag)

\item {} 
"y" (from the \textless{}object\textgreater{} tag)

\item {} 
"width" (from the \textless{}object\textgreater{} tag)

\item {} 
"height" (from the \textless{}object\textgreater{} tag)

\item {} 
"rotation" (from the \textless{}object\textgreater{} tag)

\item {} 
"gid" (from the \textless{}object\textgreater{} tag)

\item {} 
"visible" (from the \textless{}object\textgreater{} tag)

\item {} 
All custom object properties

\end{itemize}

\begin{sphinxadmonition}{note}{Note:}
Remember that a tile object's origin is in the bottom-center,
unlike shape-based objects whose origin is in the top-left.
You can find out if an object is a tile object by checking the
respective level object's \sphinxcode{\sphinxupquote{meta{[}"gid"{]}}} after loading.  If
this value is not \sphinxcode{\sphinxupquote{None}}, the object is a tile object.
\end{sphinxadmonition}

\end{fulllineitems}

\index{layers (ulvl.TMX attribute)@\spxentry{layers}\spxextra{ulvl.TMX attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TMX.layers}}\pysigline{\sphinxbfcode{\sphinxupquote{layers}}}
A list oj {\hyperref[\detokenize{index:ulvl.TileLayer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TileLayer}}}}} objects representing the tile layers
of the level.  These are taken from the TMX layer tags.  Tile
flipping and rotation are not supported; attempts to flip or
rotate tiles will simply be interpreted as completely different
tiles.

Tile IDs are also localized so that a tile ID of 1 is the
first tile of the tileset, 2 is the second, and so on.
For means of simplification and consistency, only one tileset can
be used per layer and all tile global IDs will be localized based
on the tile IDs contained within.

Each {\hyperref[\detokenize{index:ulvl.TileLayer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TileLayer}}}}} object's type becomes the name of the TMX
layer.  Each {\hyperref[\detokenize{index:ulvl.TileLayer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TileLayer}}}}} object's meta variable is set as
a dictionary of values obtained from the TMX.  The following meta
variables are captured if available:
\begin{itemize}
\item {} 
"width" (from the \textless{}layer\textgreater{} tag)

\item {} 
"height" (from the \textless{}layer\textgreater{} tag)

\item {} 
"opacity" (from the \textless{}layer\textgreater{} tag)

\item {} 
"visible" (from the \textless{}layer\textgreater{} tag)

\item {} 
"offsetx" (from the \textless{}layer\textgreater{} tag)

\item {} 
"offsety" (from the \textless{}layer\textgreater{} tag)

\item {} 
All custom layer properties

\end{itemize}

\end{fulllineitems}


\end{fulllineitems}



\subsection{ulvl.TMX Methods}
\label{\detokenize{index:ulvl-tmx-methods}}\index{load() (ulvl.TMX class method)@\spxentry{load()}\spxextra{ulvl.TMX class method}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TMX.load}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{classmethod }}\sphinxcode{\sphinxupquote{TMX.}}\sphinxbfcode{\sphinxupquote{load}}}{\emph{f}}{}
Load the indicated file and return a {\hyperref[\detokenize{index:ulvl.TMX}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{TMX}}}}} object.

\end{fulllineitems}



\chapter{Helper Classes}
\label{\detokenize{index:helper-classes}}
These classes are helpers used by the level format classes to store
data.
\index{TileLayer (class in ulvl)@\spxentry{TileLayer}\spxextra{class in ulvl}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TileLayer}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{ulvl.}}\sphinxbfcode{\sphinxupquote{TileLayer}}}{\emph{type\_}, \emph{columns}, \emph{tiles}, \emph{meta=None}}{}
A layer of tiles.  Tiles are simple position-based objects with no
special individual options, generally useful for large numbers of
basic objects.
\index{type (ulvl.TileLayer attribute)@\spxentry{type}\spxextra{ulvl.TileLayer attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TileLayer.type}}\pysigline{\sphinxbfcode{\sphinxupquote{type}}}
The type of tile layer this is. Can be any arbitrary value.

\end{fulllineitems}

\index{columns (ulvl.TileLayer attribute)@\spxentry{columns}\spxextra{ulvl.TileLayer attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TileLayer.columns}}\pysigline{\sphinxbfcode{\sphinxupquote{columns}}}
The number of columns in each tile row.

\end{fulllineitems}

\index{tiles (ulvl.TileLayer attribute)@\spxentry{tiles}\spxextra{ulvl.TileLayer attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TileLayer.tiles}}\pysigline{\sphinxbfcode{\sphinxupquote{tiles}}}
A list of integers indicating the tiles of the layer.  A value of
\sphinxcode{\sphinxupquote{0}} indicates no tile.  Any higher value indicates the tile ID
of the tile.  Tile IDs are arbitrary; you decide what each tile
ID means for the game.

\end{fulllineitems}

\index{meta (ulvl.TileLayer attribute)@\spxentry{meta}\spxextra{ulvl.TileLayer attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.TileLayer.meta}}\pysigline{\sphinxbfcode{\sphinxupquote{meta}}}
Meta variable for the tile layer as a whole.  Can be any value.
Set to \sphinxcode{\sphinxupquote{None}} for no value.

\end{fulllineitems}


\end{fulllineitems}

\index{LevelObject (class in ulvl)@\spxentry{LevelObject}\spxextra{class in ulvl}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.LevelObject}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{ulvl.}}\sphinxbfcode{\sphinxupquote{LevelObject}}}{\emph{type\_}, \emph{meta=None}}{}
A generic level object.  Level objects are similar to tiles, but
positioning is arbitrary and they can have meta information assigned
to them.
\index{type (ulvl.LevelObject attribute)@\spxentry{type}\spxextra{ulvl.LevelObject attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.LevelObject.type}}\pysigline{\sphinxbfcode{\sphinxupquote{type}}}
The type of object this is.  Can be any arbitrary value.

\end{fulllineitems}

\index{meta (ulvl.LevelObject attribute)@\spxentry{meta}\spxextra{ulvl.LevelObject attribute}}

\begin{fulllineitems}
\phantomsection\label{\detokenize{index:ulvl.LevelObject.meta}}\pysigline{\sphinxbfcode{\sphinxupquote{meta}}}
Meta variable of the object.  The meaning of this value is
completely arbitrary; use it for any variations (position, size,
etc) level objects have, in whatever way is most appropriate for
the game.  Set to \sphinxcode{\sphinxupquote{None}} for no value.

\end{fulllineitems}


\end{fulllineitems}



\chapter{Indices and tables}
\label{\detokenize{index:indices-and-tables}}\begin{itemize}
\item {} 
\DUrole{xref,std,std-ref}{genindex}

\item {} 
\DUrole{xref,std,std-ref}{modindex}

\item {} 
\DUrole{xref,std,std-ref}{search}

\end{itemize}


\renewcommand{\indexname}{Python Module Index}
\begin{sphinxtheindex}
\let\bigletter\sphinxstyleindexlettergroup
\bigletter{u}
\item\relax\sphinxstyleindexentry{ulvl}\sphinxstyleindexpageref{index:\detokenize{module-ulvl}}
\end{sphinxtheindex}

\renewcommand{\indexname}{Index}
\printindex
\end{document}