\hypertarget{classBWAPI_1_1AIModule}{\section{\-B\-W\-A\-P\-I\-:\-:\-A\-I\-Module \-Class \-Reference}
\label{classBWAPI_1_1AIModule}\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
}


{\ttfamily \#include $<$\-A\-I\-Module.\-h$>$}



\-Inheritance diagram for \-B\-W\-A\-P\-I\-:\-:\-A\-I\-Module\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=178pt]{classBWAPI_1_1AIModule__inherit__graph}
\end{center}
\end{figure}
\subsection*{\-Public \-Member \-Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classBWAPI_1_1AIModule_a514f4dbd1419bb16e2c45bfa58914d8f}{\-A\-I\-Module} ()
\item 
virtual \hyperlink{classBWAPI_1_1AIModule_aeaaa08e378d92cbf8145d43ec9e6a930}{$\sim$\-A\-I\-Module} ()
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_aa1068e4f30fd50cb52a678bbf7a7c6f9}{on\-Start} ()
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_ab7954d4a94a358482fa3a857d756797e}{on\-End} (bool is\-Winner)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a5fd6ec7878a556942a7666c5e68141ab}{on\-Frame} ()
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a3f9c26e773de37f7224d2e41e32871e7}{on\-Send\-Text} (std\-::string text)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a98d9ca65671891544bebb2ffa9b5934a}{on\-Receive\-Text} (\hyperlink{classBWAPI_1_1Player}{\-Player} $\ast$player, std\-::string text)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a809420fc5dc563c756a47c2a3c0bb569}{on\-Player\-Left} (\hyperlink{classBWAPI_1_1Player}{\-Player} $\ast$player)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_ad89efab65f2a897f217555a9042f8a2d}{on\-Nuke\-Detect} (\hyperlink{classBWAPI_1_1Position}{\-Position} target)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a9b82f7e3612a95c5162e87acdde634f9}{on\-Unit\-Discover} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a80fdbb7e84821d93c2c3179c257416ef}{on\-Unit\-Evade} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a647010d7acf9843a50deb5d4f088a289}{on\-Unit\-Show} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a36111fd368fabaf3f234b1872a28ba97}{on\-Unit\-Hide} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a3c36eca014266f78408dee077bf8f84c}{on\-Unit\-Create} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_aa8dbf2e0e6a842cf6532df90d5ab2099}{on\-Unit\-Destroy} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_ae3067bae430702877566a7d6370ab880}{on\-Unit\-Morph} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a86574f2952677cb3a8f80dff0b3404b2}{on\-Unit\-Renegade} (\hyperlink{classBWAPI_1_1Unit}{\-Unit} $\ast$unit)
\item 
virtual void \hyperlink{classBWAPI_1_1AIModule_a88ba9fbfd611ec84a5ac84c7d3a7f1d3}{on\-Save\-Game} (std\-::string game\-Name)
\end{DoxyCompactItemize}


\subsection{\-Detailed \-Description}
\hyperlink{classBWAPI_1_1AIModule}{\-A\-I\-Module} is a virtual class that is intended to be implemented or inherited by a custom \-A\-I class.

\begin{DoxyNote}{\-Note}
\-Using \hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} in a different thread than the default one will produce unexpected results and possibly crash the program. \-Multi-\/threaded \-A\-Is are possible so long as all \hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} interaction is limited to the default thread (during one of the call-\/backs). 
\end{DoxyNote}


\subsection{\-Constructor \& \-Destructor \-Documentation}
\hypertarget{classBWAPI_1_1AIModule_a514f4dbd1419bb16e2c45bfa58914d8f}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!\-A\-I\-Module@{\-A\-I\-Module}}
\index{\-A\-I\-Module@{\-A\-I\-Module}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{\-A\-I\-Module}]{\setlength{\rightskip}{0pt plus 5cm}{\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::\-A\-I\-Module} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{classBWAPI_1_1AIModule_a514f4dbd1419bb16e2c45bfa58914d8f}
\hypertarget{classBWAPI_1_1AIModule_aeaaa08e378d92cbf8145d43ec9e6a930}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!$\sim$\-A\-I\-Module@{$\sim$\-A\-I\-Module}}
\index{$\sim$\-A\-I\-Module@{$\sim$\-A\-I\-Module}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{$\sim$\-A\-I\-Module}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::$\sim$\-A\-I\-Module} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_aeaaa08e378d92cbf8145d43ec9e6a930}


\subsection{\-Member \-Function \-Documentation}
\hypertarget{classBWAPI_1_1AIModule_ab7954d4a94a358482fa3a857d756797e}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-End@{on\-End}}
\index{on\-End@{on\-End}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-End}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-End} (
\begin{DoxyParamCaption}
\item[{bool}]{is\-Winner}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_ab7954d4a94a358482fa3a857d756797e}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this at the end of the match. is\-Winner will be true if the \hyperlink{classBWAPI_1_1AIModule}{\-A\-I\-Module} won the game. \-If the game is a replay, is\-Winner will always be false. 

\-Reimplemented in \hyperlink{classClientModule_aac1c75071065f8a343eb8c3beec67c1f}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a5fd6ec7878a556942a7666c5e68141ab}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Frame@{on\-Frame}}
\index{on\-Frame@{on\-Frame}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Frame}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Frame} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a5fd6ec7878a556942a7666c5e68141ab}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this on every logical frame in the game. 

\-Reimplemented in \hyperlink{classClientModule_a116096d0929acca65b0fd3aa1fc79bf8}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_ad89efab65f2a897f217555a9042f8a2d}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Nuke\-Detect@{on\-Nuke\-Detect}}
\index{on\-Nuke\-Detect@{on\-Nuke\-Detect}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Nuke\-Detect}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Nuke\-Detect} (
\begin{DoxyParamCaption}
\item[{{\bf \-Position}}]{target}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_ad89efab65f2a897f217555a9042f8a2d}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a nuclear launch has been detected. \-If the target position is visible, or if \-Complete \-Map \-Information is enabled, the target position will also be provided. \-If \-Complete \-Map \-Information is disabled and the target position is not visible, target will be set to \hyperlink{namespaceBWAPI_1_1Positions_ae2581b77eb8c4d58663ce871f555973b}{\-Positions\-::\-Unknown}. 

\-Reimplemented in \hyperlink{classClientModule_a69b7a9ed4995b132b1a222a53b30f7f9}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a809420fc5dc563c756a47c2a3c0bb569}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Player\-Left@{on\-Player\-Left}}
\index{on\-Player\-Left@{on\-Player\-Left}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Player\-Left}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Player\-Left} (
\begin{DoxyParamCaption}
\item[{{\bf \-Player} $\ast$}]{player}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a809420fc5dc563c756a47c2a3c0bb569}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a player leaves the game. 

\-Reimplemented in \hyperlink{classClientModule_a70735639355c312bd4423eba6be7e265}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a98d9ca65671891544bebb2ffa9b5934a}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Receive\-Text@{on\-Receive\-Text}}
\index{on\-Receive\-Text@{on\-Receive\-Text}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Receive\-Text}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Receive\-Text} (
\begin{DoxyParamCaption}
\item[{{\bf \-Player} $\ast$}]{player, }
\item[{std\-::string}]{text}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a98d9ca65671891544bebb2ffa9b5934a}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when another player sends a message. 

\-Reimplemented in \hyperlink{classClientModule_a95d8f3d65f5f9718a1f4eafccc98775f}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a88ba9fbfd611ec84a5ac84c7d3a7f1d3}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Save\-Game@{on\-Save\-Game}}
\index{on\-Save\-Game@{on\-Save\-Game}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Save\-Game}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Save\-Game} (
\begin{DoxyParamCaption}
\item[{std\-::string}]{game\-Name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a88ba9fbfd611ec84a5ac84c7d3a7f1d3}


\-Reimplemented in \hyperlink{classClientModule_a2d97d055a1a8b075dabcb895d71604d6}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a3f9c26e773de37f7224d2e41e32871e7}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Send\-Text@{on\-Send\-Text}}
\index{on\-Send\-Text@{on\-Send\-Text}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Send\-Text}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Send\-Text} (
\begin{DoxyParamCaption}
\item[{std\-::string}]{text}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a3f9c26e773de37f7224d2e41e32871e7}
\-If \hyperlink{namespaceBWAPI_1_1Flag_a394478b7ea50a1fea08f7a73bbad04aea74a41a92f61bc4e7d1da3468de118d34}{\-Flag\-::\-User\-Input} is enabled, \hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} will call this each time a user enters a message into the chat. 

\-Reimplemented in \hyperlink{classClientModule_af463962547481ef07b64b6aabd8004ee}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_aa1068e4f30fd50cb52a678bbf7a7c6f9}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Start@{on\-Start}}
\index{on\-Start@{on\-Start}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Start}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Start} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_aa1068e4f30fd50cb52a678bbf7a7c6f9}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this at the start of a match. \-Typically an \-A\-I will execute set up code in this method (initialize data structures, load build orders, etc). 

\-Reimplemented in \hyperlink{classClientModule_a013509674684150ad0485e93d4da65ad}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a3c36eca014266f78408dee077bf8f84c}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Create@{on\-Unit\-Create}}
\index{on\-Unit\-Create@{on\-Unit\-Create}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Create}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Create} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a3c36eca014266f78408dee077bf8f84c}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a unit is created. \-Note that this is \-N\-O\-T called when a unit changes type (such as larva into egg or egg into drone). \-Building a refinery/assimilator/extractor will not produce an on\-Unit\-Create call since the vespene geyser changes to the unit type of the refinery/assimilator/extractor. \-If \-Complete \-Map \-Information is enabled, this will also be called for new units that are hidden by the fog of war. \-If the unit is visible upon creation, on\-Unit\-Show will be called shortly after on\-Unit\-Create is called. 

\-Reimplemented in \hyperlink{classClientModule_a05773184952061c46b2fc587867ed381}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_aa8dbf2e0e6a842cf6532df90d5ab2099}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Destroy@{on\-Unit\-Destroy}}
\index{on\-Unit\-Destroy@{on\-Unit\-Destroy}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Destroy}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Destroy} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_aa8dbf2e0e6a842cf6532df90d5ab2099}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a unit dies or otherwise removed from the game (i.\-e. a mined out mineral patch). \-When a zerg drone becomes an extractor, the \-Vespene geyser changes to the \-Zerg \-Extractor type and the drone is removed. \-If \-Complete \-Map \-Information is enabled, this will also be called for units that are hidden by the fog of war. \-If a unit that was visible gets destroyed, on\-Unit\-Hide will be called right before on\-Unit\-Destroy is called. 

\-Reimplemented in \hyperlink{classClientModule_a054a9473578f005ee389c5c33fe9dd0d}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a9b82f7e3612a95c5162e87acdde634f9}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Discover@{on\-Unit\-Discover}}
\index{on\-Unit\-Discover@{on\-Unit\-Discover}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Discover}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Discover} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a9b82f7e3612a95c5162e87acdde634f9}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a unit becomes accessible. \hypertarget{classBWAPI_1_1AIModule_a80fdbb7e84821d93c2c3179c257416ef}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Evade@{on\-Unit\-Evade}}
\index{on\-Unit\-Evade@{on\-Unit\-Evade}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Evade}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Evade} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a80fdbb7e84821d93c2c3179c257416ef}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a unit becomes inaccessible. \hypertarget{classBWAPI_1_1AIModule_a36111fd368fabaf3f234b1872a28ba97}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Hide@{on\-Unit\-Hide}}
\index{on\-Unit\-Hide@{on\-Unit\-Hide}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Hide}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Hide} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a36111fd368fabaf3f234b1872a28ba97}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this right before a unit becomes invisible, so if you want your non-\/cheating \-A\-I to remember where it last saw a unit, this callback would be a good place to implement it. \-The complete map information flag has no effect on this callback. 

\-Reimplemented in \hyperlink{classClientModule_a22f63d6231fb70b527dfe0e58d643de4}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_ae3067bae430702877566a7d6370ab880}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Morph@{on\-Unit\-Morph}}
\index{on\-Unit\-Morph@{on\-Unit\-Morph}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Morph}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Morph} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_ae3067bae430702877566a7d6370ab880}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when a unit changes type, such as from a \-Zerg \-Drone to a \-Zerg \-Hatchery, or from a \-Terran \-Siege \-Tank \-Tank \-Mode to \-Terran \-Siege \-Tank \-Siege \-Mode. \-This is not called when the type changes to or from \hyperlink{namespaceBWAPI_1_1UnitTypes_a654c6db3b72395634b090cde8ac024ad}{\-Unit\-Types\-::\-Unknown} (which happens when a unit becomes visible or invisible). 

\-Reimplemented in \hyperlink{classClientModule_aea686e2ee7da8d7f84520e5592c2838d}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a86574f2952677cb3a8f80dff0b3404b2}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Renegade@{on\-Unit\-Renegade}}
\index{on\-Unit\-Renegade@{on\-Unit\-Renegade}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Renegade}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Renegade} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a86574f2952677cb3a8f80dff0b3404b2}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this when an accessible unit changes ownership. 

\-Reimplemented in \hyperlink{classClientModule_a4b369a610f179831ec47024c36e21013}{\-Client\-Module}.

\hypertarget{classBWAPI_1_1AIModule_a647010d7acf9843a50deb5d4f088a289}{\index{\-B\-W\-A\-P\-I\-::\-A\-I\-Module@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}!on\-Unit\-Show@{on\-Unit\-Show}}
\index{on\-Unit\-Show@{on\-Unit\-Show}!BWAPI::AIModule@{\-B\-W\-A\-P\-I\-::\-A\-I\-Module}}
\subsubsection[{on\-Unit\-Show}]{\setlength{\rightskip}{0pt plus 5cm}virtual void {\bf \-B\-W\-A\-P\-I\-::\-A\-I\-Module\-::on\-Unit\-Show} (
\begin{DoxyParamCaption}
\item[{{\bf \-Unit} $\ast$}]{unit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}\label{classBWAPI_1_1AIModule_a647010d7acf9843a50deb5d4f088a289}
\hyperlink{namespaceBWAPI}{\-B\-W\-A\-P\-I} calls this the instant a previously invisible unit becomes visible. \-The complete map information flag has no effect on this callback. 

\-Reimplemented in \hyperlink{classClientModule_a00d8e8686be584f45b19a3ade5db9650}{\-Client\-Module}.



\-The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
\-Undermind/proxy/cpp/include/\-B\-W\-A\-P\-I/\hyperlink{AIModule_8h}{\-A\-I\-Module.\-h}\end{DoxyCompactItemize}
