diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-09-29 17:21:36 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-09-29 17:21:36 +0200 |
commit | 44da8d4f03be549ddb8b56941e6ab7c3eaca5eca (patch) | |
tree | f89fb6e33dd506d2be6d71ab6598753d58a1e205 | |
parent | 9fa3780a3fc34d6894680aa88d1b37888f3574a9 (diff) |
more facade class diagram
-rw-r--r-- | design.tex | 22 | ||||
-rw-r--r-- | img/facade-audio.puml | 38 | ||||
-rw-r--r-- | img/theme.ipuml | 3 |
3 files changed, 51 insertions, 12 deletions
@@ -38,9 +38,29 @@ workflows. \subsection{Audio} +\subsubsection{Library} + \subsubsection{Fa\c{c}ade} -\includepumldiag{img/facade-audio.puml} +\Cref{fig:class-audio-facade} shows a class diagram of the audio fa\c{c}ade. It +contains the following classes: +\begin{description} + \item[SoundSystem] This is a wrapper around the \codeinline{SoLoud::soloud} + `engine' class, and is therefore implemented as a singleton. This ensures the + audio engine is initialized before \codeinline{Sound} is able to use it. + + This class is friends with \codeinline{Sound}, so only \codeinline{Sound} is able + to get the \codeinline{SoundSystem} instance. + \item[Sound] This is a wrapper around the \codeinline{SoLoud::Wav} class, and uses + cr\^epe's \codeinline{api::Resource} class to load an audio sample instead. +\end{description} + +\begin{figure} + \centering + \includepumldiag{img/facade-audio.puml} + \caption{Audio fa\c{c}ade class diagram} + \label{fig:class-audio-facade} +\end{figure} \subsection{Input} diff --git a/img/facade-audio.puml b/img/facade-audio.puml index f760652..b256f47 100644 --- a/img/facade-audio.puml +++ b/img/facade-audio.puml @@ -4,33 +4,49 @@ skinparam Linetype ortho package crepe { - class Sound { - +Sound(crepe::api::Resource) + package api { + class Resource <<irrelevant>> + } + class Sound { + +Sound(resource) + -- +pause() +play() +rewind() +set_volume(float) +set_looping(bool) - - -_handle : SoLoud::handle - -_paused : bool + -- + -sample : SoLoud::Wav + -handle : SoLoud::handle + -- + -load(resource) } - class SoundSystem { - + class SoundSystem <<Singleton>> { + -instance() : SoundSystem& <<static>> + -- + -SoundSystem() + -~SoundSystem() + -- + -engine : SoLoud::Soloud } } package SoLoud { - class Soloud - class Wav + class Soloud <<irrelevant>> + class Wav <<irrelevant>> } ' layout crepe -[hidden]down- SoLoud -crepe.Sound ..> SoLoud.Wav -crepe.SoundSystem ..> SoLoud.Soloud +crepe.Sound --> SoLoud.Wav +crepe.SoundSystem --> SoLoud.Soloud + +crepe.Sound .> crepe.SoundSystem +crepe.SoundSystem .> crepe.Sound + +crepe.Sound .> crepe.api.Resource @enduml diff --git a/img/theme.ipuml b/img/theme.ipuml index 4e3613e..f716ddf 100644 --- a/img/theme.ipuml +++ b/img/theme.ipuml @@ -8,3 +8,6 @@ skinparam Nodesep 25 skinparam Padding 2 skinparam Ranksep 50 skinparam RoundCorner 0 + +hide <<irrelevant>> stereotype +hide <<irrelevant>> members |