To-The-Stars/diagrams/magica.sty

88 lines
2.1 KiB
TeX

\ProvidesPackage{magica}[2023/07/06 Magica]
\usepackage{amssymb}
\usepackage{xparse}
\usepackage{milsymb}
\usetikzlibrary{
calc,
positioning,
shapes.misc, % Rounded rectangles, etc.
shapes.multipart, % Multi-line nodes
arrows.meta,
decorations.markings,
% Mapping
decorations.text,
}
\tikzset{
Char/.style={
draw,rounded corners=3pt,line width=0.5mm,
minimum size=10pt,
fill=#1
},
Char/.default={white}, % civilian colour
MilSymb land/magica/demon/.pic={
\node [fill=MilSymb@fill, \MilSymb@line,
star, star points=5, star point height=6px, draw=black, scale=0.6, rotate=180] {};
},
/MilSymb/.cd,
main/demon/.style={/MilSymb/.cd, SymbC=land/magica/demon},
}
\colorlet{TomoeM}{Dandelion}
\colorlet{SakuraY}{Rhodamine}
\colorlet{AkemiH}{Black}
\colorlet{ShizukiR}{LimeGreen}
\colorlet{Sayaka}{CornflowerBlue}
\NewDocumentCommand\Magica{ o d() g}{
\node[Char=#1] (char) at (#2) {};
\IfNoValueTF{#3}{}{ \node[right=5pt] at (char) {#3}; }
}
\NewDocumentCommand\Civilian{ d() g}{
\node[Char] (char) at (#1) {};
\IfNoValueTF{#2}{}{ \node[right=5pt] at (char) {#2}; }
}
\NewDocumentCommand\Demon{ o d() }{
\node[Char=red!50, \IfNoValueTF{#1}{}{#1}] (char) at (#2) {};
}
\NewDocumentCommand\Annotate{ d() g }{
\coordinate (charAnnotate) at (#1);
\draw[thin,gray] (char) -- (char |- charAnnotate);
\draw[thin,gray] (char |- charAnnotate) -- (charAnnotate)
node[midway,above,scale=0.7] {#2};
}
% Environment objects
\colorlet{pavement}{gray!90!yellow!20}
\tikzset{
material railing/.style={
black!80, line width=2mm,
},
material wall/.style={
black!30, line width=2mm,
},
material laser/.style={
red!80, line width=3px,
},
material bullet/.style={
orange!80, line width=3px, dashed
},
Magica object turbine/.pic={
\node[draw=black,star,star points=3,star point height=10pt,scale=1.5,fill=white]
(magica/turbine) {};
\draw (magica/turbine) circle (23pt);
},
Magica object solarpanel/.pic={
\filldraw[Blue!80,draw=black] (-0.5,-1) rectangle (0.5,1);
\draw[thin,step=0.5] (-0.5,-1) grid (0.5,1);
},
}
% Map drawing
\tikzset{
dot/.style={circle,draw,inner sep=1.5,fill=#1},
dot/.default=black,
largedot/.style={circle,draw,inner sep=4},
}