aboutsummaryrefslogtreecommitdiff
path: root/assets/manual/dev-advtrains.tex
diff options
context:
space:
mode:
Diffstat (limited to 'assets/manual/dev-advtrains.tex')
-rw-r--r--assets/manual/dev-advtrains.tex79
1 files changed, 0 insertions, 79 deletions
diff --git a/assets/manual/dev-advtrains.tex b/assets/manual/dev-advtrains.tex
deleted file mode 100644
index 6b0c0bb..0000000
--- a/assets/manual/dev-advtrains.tex
+++ /dev/null
@@ -1,79 +0,0 @@
-\part{Developer's Manual}
-
-This part is mostly relevant only to those interested in working on internal mechanisms of \advtrains{} or making mods related to \advtrains{}. Please note that this part is still incomplete.
-
-\section{The \texttt{advtrains} table}\label{s:tadvtrains}
-
-\subsection{Railway time}\label{s:tilrwt}
-\advtrains{} depends on Minetest's ``dtime'' for most operations, and may slow itself down when necessary (e.g. in a situation with a lot of lag) to prevent unexpected behavior. As a result, the internal time used by \advtrains{} is not synchronized to real-life time due to lag and server restarts. Railway time was therefore introduced as a method of accurately measuring internal time, as well as to provide a scheduling system. It can, however, be set up to keep in sync with real-life time, depending on the real-life time adaptation mode (\texttt{advtrains\_lines\_rwt\_realtime}):
-\begin{apidoc}{Railway time adaptation mode}
-\item \apienum{independent} Do not adapt to real-life time and instead keep in sync with \advtrains{}' internal dtime.
-\item \apienum{follow\_real} Independent of real-life time, but counts up in real-life time.
-\item \apienum{adapt\_real} Use \texttt{os.time} for RWT.
-\end{apidoc}
-
-Railway time is counted in cycles, minutes, and seconds, roughly corresponding to their real-life counterparts, with cycles roughly corresponding to hours.
-
-Railway time can be represented in three formats:
-\begin{itemize}
-\item As a table with the fields \texttt{c}, \texttt{m}, and \texttt{s}, holding the cycles, minutes, and seconds, respectively.
-\item As a string: The number of cycles, minutes, and seconds, delimited with a semicolon, such as \texttt{245;50;32}. The cycles may be absent, in which case the string is formatted as the number of minutes and seconds delimited with a semicolon, such as \texttt{37;25}. Fields do not have to be padded with zeroes, but the field should not be empty unless it is at the beginning or the end of the string; this criteria allows RWT values such as \texttt{43;3} (equivalent to \texttt{43;03}), \texttt{22;} (equivalent to \texttt{22;00}), \texttt{;10} (equivalent to \texttt{0;10}) and even \texttt{;} (equivalent to \texttt{0;00}).
-\item As a number: the number of seconds since \texttt{0;0;0}.
-\end{itemize}
-
-For a railway time object \texttt{$c$;$m$;$s$}, the following properties are expected to apply:
-\begin{itemize}
-\item $c \in \mathbb{Z}$,
-\item $m \in \mathbb{Z} \cap \left[0,60\right)$, and
-\item $s \in \mathbb{Z} \cap \left[0,60\right)$
-\end{itemize}
-It is an error if at least one of the above properties do not apply.
-
-The following entries are present in \texttt{advtrains.interlocking.rwt}. \var{Time}, \var{t}, \var{interval}, and \var{offset} refer to a railway time object represented in one of the methods described above. \var{Interval} and \var{offset} represent the interval and offset of a repetition, respectively. \var{Cycles}, \var{minutes}, and \var{seconds} should be the value of the \texttt{c}, \texttt{m} and \texttt{s} fields of a railway time table.
-
-\begin{apidoc}{\texttt{advtrains}!\texttt{interlocking.rwt}}
-\item \apifunc{add}{\vari{t},\varii{t}} Returns \( t_1 + t_2 \).
-\item \apifunc{copy}{\var{time}} Returns a copy of \var{time}.
-\item \apifunc{diff}{\vari{t},\varii{t}} Returns \( t_2 - t_1 \) in seconds.
-\item \apifunc{last\_rpt}{\varzero{t},\var{interval},\var{offset}} Returns $t$ in the range \( (t_0-\text{\var{interval}},t_0] \) such that \( t = n \cdot \text{\var{interval}} + \text{\var{offset}} \) for \( n \in \mathbb{Z} \).
-\item \apifunc{new}{\var{cycles},\var{minutes},\var{seconds}} Returns a railway time table.
-\item \apifunc{next\_rpt}{\varzero{t},\var{interval},\var{offset}} Returns $t$ in the range \( [t_0,t_0+\text{\var{interval}}) \) such that \( t = n \cdot \text{\var{interval}} + \text{\var{offset}} \) for \( n \in \mathbb{Z} \).
-\item \apifunc{now}{} Returns a table corresponding to the current railway time.
-\item \apifunc{sub}{\vari{t},\varii{t}} Returns \( t_1 - t_2 \) in seconds.
-\item \apifunc{time\_from\_last\_rpt}{\varzero{t},\var{interval},\var{offset}} Returns $t$ in the range \( [0,\text{\var{interval}}) \) such that \( t_0 - t = n \cdot \text{\var{interval}} + \text{\var{offset}} \) for \( n \in \mathbb{Z} \).
-\item \apifunc{time\_to\_next\_rpt}{\varzero{t},\var{interval},\var{offset}} Returns $t$ in the range \( [0,\text{\var{interval}}) \) such that \( t_0 + t = n \cdot \text{\var{interval}} + \text{\var{offset}} \) for \(n \in \mathbb{Z} \).
-\item \apifunc{to\_table}{\var{time}} Returns a railway time table corresponding to \var{time}.
-\item \apifunc{to\_secs}{\var{time},\ovar{cycles}} Returns the railway time in number representation corresponding to \var{time}. \var{Cycles} is used as the number of cycles, if present.
-\item \apifunc{to\_string}{\var{time},\ovar{no cycle}} Returns a railway time string corresponding to \var{time}. If \var{no cycle} is true, the number of cycles is omitted from the return value.
-\end{apidoc}
-
-\subsection{\texttt{advtrains.speed}}\label{s:tspeed}
-The \texttt{speed} library allows comparison of speed limits, which can be represented with:
-\begin{itemize}
-\item $v \geq 0$, which stands for a speed restriction of $v$.
-\item $-1$ or \luanil, which lifts the speed restriction.
-\end{itemize}
-The use of other values (in particular, \luanan{} and $\pm\infty$) may result in undefined behavior.
-
-Note that the meaning of \luanil{} here differ from the meaning used in signal aspect tables (see section \ref{s:sigasp}): \luanil{} lifts the speed limit instead of keeping it.
-
-For speed limits, it is said that $a < b$ if $a$ is more strict than $b$, and $a = b$ if $a$ and $b$ refer to the same speed limit.
-
-The following entries are present in \texttt{advtrains.speed}:
-
-\begin{apidoc}{\texttt{advtrains}!\texttt{speed}}
-\item \apifunc{lessp}{\var{a},\var{b}} Returns a boolean indicating whether $a < b$.
-\item \apifunc{greaterp}{\var{a},\var{b}} Returns a boolean indicating whether $a > b$.
-\item \apifunc{equalp}{\var{a},\var{b}} Returns a boolean indicating whether $a = b$.
-\item \apifunc{not\_lessp}{\var{a},\var{b}} Returns a boolean indicating whether $a \ge b$.
-\item \apifunc{not\_greaterp}{\var{a},\var{b}} Returns a boolean indicating whether $a \le b$.
-\item \apifunc{not\_equalp}{\var{a},\var{b}} Returns a boolean indicating whether $a \ne b$.
-\item \apifunc{min}{\var{a},\var{b}} Returns the strictest limit of \var{a} and \var{b}.
-\item \apifunc{max}{\var{a},\var{b}} Returns the less strict limit of \var{a} and \var{b}.
-\item \apifunc{set\_restriction}{\var{train},\var{type},\var{val}} Set speed restriction of type \var{type} of \var{train} to \var{val} and update the \texttt{speed\_restriction} field of \var{train} accordingly. \var{Type} defaults to \texttt{main}.
-\item \apifunc{merge\_aspect}{\var{train},\var{asp}} Merge the signal aspect \var{asp} into the speed restriction table of \var{train} and update the \texttt{speed\_restriction} field of \var{train} accordingly.
-\end{apidoc}
-
-%%% Local Variables:
-%%% TeX-master: "a4manual"
-%%% End: \ No newline at end of file