\documentclass{article}

\title{Development Progress and Status report SQLization of stats}
\author{Giel van Schijndel, The Warzone Resurrection Project.}

% PDF options
\makeatletter
\usepackage[pdfdisplaydoctitle,
            pdftitle={\@title},
            pdfauthor={\@author}]{hyperref}
\makeatother

\begin{document}

\maketitle
\tableofcontents
\newpage

\section{Implemented}

The following STATS structures/classes have been implemented and are generated
entirely by the database scripts.
\begin{itemize}
  \item BASE (inherited from by COMPONENT).
  \item COMPONENT (inherited from by all other STATS except for a few
    exceptional cases). 
  \item PROPULSION
  \item SENSOR
  \item ECM
  \item REPAIR
  \item WEAPON
  \item BRAIN 
  \item CONSTRUCT 
\end{itemize}

Of these the following structures/classes are being loaded by the generated
SQLite code.
\begin{itemize}
  \item PROPULSION (loadPropulsionStatsFromDB)
  \item SENSOR (loadSensorStatsFromDB)
  \item CONSTRUCT (loadConstructStatsFromDB) 
\end{itemize}

\section{TODO}

\subsection{Structure generation}

For these STATS structures\footnote{C structs and SQL table and view
definitions} still need to be generated:
\begin{enumerate}
  \item These will certainly need to be done:
    \begin{itemize}
      \item BODY\_STATS
    \end{itemize}
  \item These might need another solution, \ldots, or not. Currently they don't
    inherit from BASE \& COMPONENT like other STATS. While this isn't a
    technical problem for the scripts in their current state for the purpose of
    storing and loading, it might prove problematic for linking them to the
    other STATS structures where appropriate. Need to look further into this. 
    \begin{itemize}
      \item PROPULSION\_TYPES. How does this get linked to and used with
	PROPULSION?
      \item TERRAIN\_TABLE. This seems to be the only simple one as it's not
	linked to any data structures, it's linkage to other data is defined
	entirely by the code that uses its value.
      \item SPECIAL\_ABILITY. Haven't yet investigated the purpose of this
	structure.
    \end{itemize}
  \item These are all upgrades to other stats. The way in which it is decided to
    which STATS they should be applied or how they should be applied is
    something I haven't yet discovered (though I didn't investigate very
    thoroughly up until now).
    \begin{itemize}
      \item WEAPON\_UPGRADE
      \item SENSOR\_UPGRADE
      \item ECM\_UPGRADE
      \item REPAIR\_UPGRADE
      \item CONSTRUCTOR\_UPGRADE
      \item BODY\_UPGRADE	
    \end{itemize}
\end{enumerate}

\subsection{Function generation}

For these STATS, for which structures are already being generated, the following
still don't have any generated loading functions. Note that BASE and COMPONENT,
though they don't have a loading function of their own, are not mentioned in
this list because they are never loaded directly, but always as part of the
STATS that inherit from them.
\begin{itemize}
  \item ECM. I'm not certain why I haven't yet implemented loading for this
    STATS class. At first glance it seems simple enough. If next time I work on
    this I discover (again) what its difficulty is I will document it.
  \item REPAIR. This structure misses the ``body'' field, which is provided by
    the COMPONENT class. I'm not yet certain how to work around this due to it
    breaking the inheritance.
  \item WEAPON. I'm not certain about the reason for not implementing this class
    yet, though it might be related to its size.
  \item BRAIN. Similarly to REPAIR this classes misses fields which COMPONENT
    provides, specifically ``body'' and ``designable''.
\end{itemize}

\end{document}
