\ExplSyntaxOn \prop_new:N \g_pgfgo_profile_profile_prop \prop_new:N \g_pgfgo_profile_player_prop \prop_new:N \g_pgfgo_profile_goban_prop \cs_new:Nn \pgfgo_profile_use_goban:n { \pgfgo_set:e{goban = {\prop_item:Nn\g_pgfgo_profile_goban_prop {#1}}} } \cs_new:Nn \pgfgo_profile_use_neutral:n {\pgfgo_set:e{players = {neutral = {\prop_item:Nn\g_pgfgo_profile_player_prop {#1}}}}} \cs_new:Nn \pgfgo_profile_use_black:n {\pgfgo_set:e{players = {black = {\prop_item:Nn\g_pgfgo_profile_player_prop {#1}}}}} \cs_new:Nn \pgfgo_profile_use_white:n {\pgfgo_set:e{players = {white = {\prop_item:Nn\g_pgfgo_profile_player_prop {#1}}}}} \cs_new:Nn \pgfgo_profile_use_players:nnn { \pgfgo_profile_use_neutral:n {#1} \pgfgo_profile_use_black:n {#2} \pgfgo_profile_use_white:n {#3} } \keys_define:nn {pgfgo / profiles / goban} { from .tl_set:N = \l_pgfgo_profile_goban_from_tl, append .code:n = {\keys_set:nn {pgfgo / profiles / goban} {from = { \l_pgfgo_profile_define_goban_name_tl }}} } \DeclareDocumentCommand{\pgfgodefinegoban}{O{}mm}{ \tl_clear:N \l_tmpa_tl %CONSTRUCCION DE LA KEY \tl_set:Nn\l_pgfgo_profile_define_goban_name_tl {#2} %OJO PORQUE SE CONSERVA EL NOMBRE \keys_set:nn {pgfgo / profiles / goban} {#1} \tl_if_empty:NF \l_pgfgo_profile_goban_from_tl{ \tl_set:Nf \l_tmpa_tl {\prop_item:Ne\g_pgfgo_profile_goban_prop {\l_pgfgo_profile_goban_from_tl},} } \prop_gput:Nno\g_pgfgo_profile_goban_prop {#2} {\l_tmpa_tl, #3} } \keys_define:nn {pgfgo / profiles / player} { from .tl_set:N = \l_pgfgo_profile_player_from_tl, append .code:n = {\keys_set:nn {pgfgo / profiles / player} {from = { \l_pgfgo_profile_define_player_name_tl }}} } \DeclareDocumentCommand{\pgfgodefineplayer}{O{}mm}{ \tl_clear:N \l_tmpa_tl %CONSTRUCCION DE LA KEY \tl_set:Nn\l_pgfgo_profile_define_player_name_tl {#2} %OJO PORQUE SE CONSERVA EL NOMBRE \keys_set:nn {pgfgo / profiles / player} {#1} \tl_if_empty:NF \l_pgfgo_profile_player_from_tl{ \tl_set:Nf \l_tmpa_tl {\prop_item:Ne\g_pgfgo_profile_player_prop {\l_pgfgo_profile_player_from_tl},} } \prop_gput:Nno\g_pgfgo_profile_player_prop {#2} {\l_tmpa_tl, #3} } \cs_new:Nn\pgfgo_profile_use_profile:n{ \pgfgo_profile_use_goban:n {#1} \pgfgo_profile_use_neutral:n{#1-neutral} \pgfgo_profile_use_black:n {#1-black} \pgfgo_profile_use_white:n {#1-white} } \let\pgfgouseprofile \pgfgo_profile_use_profile:n %CARGA TABLERO, PIEDRAS con sufijo -goban, white, black, neutral \let\pgfgousegoban \pgfgo_profile_use_goban:n %CARGA GOBAN \let\pgfgouseplayers \pgfgo_profile_use_players:nnn %CARGA TODOS LOS JUGADORES {neutral}{black}{white} \let\pgfgouseneutral \pgfgo_profile_use_neutral:n %CARGA UN PERFIL PARA LOS NEUTROS \let\pgfgouseblack \pgfgo_profile_use_black:n %CARGA UN PERFIL PARA LAS NEGRAS \let\pgfgousewhite \pgfgo_profile_use_white:n %CARGA UN PERFIL PARA LAS BLANCAS \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %------------DEFAULT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pgfgodefinegoban{default}{ scale = 1, use i = true, background = { line = { true, color = black, opacity = 1, width = 0.75pt, }, fill = { true, color = white, opacity = 1 }, rounded corners = 0pt, sep = 0.825em, drop shadow = false, }, grid = { line = { color = black, opacity = 1, width = 0.55pt, }, sep = 1.25em, }, label = { text color = black, false, sep = 0.35cm}, scale = 1, partial = {false}, size = 9 } \pgfgodefineplayer{default-neutral}{ stone = { line = { true, color = black, width = 0.7pt, opacity = 1 }, fill = { true, color = gray, opacity = 1 }, radius = 5.5pt, scale = 1, drop shadow = false, drop shine = false, }, move = { label = { color = black, format = arabic } }, mark = { line = { color = black, width = 1pt }, fill = { false, color = black }, label = { color = black }, } } \pgfgodefineplayer[from = default-neutral]{default-white}{ stone = {fill = {color = white}} } \pgfgodefineplayer[from = default-neutral]{default-black}{ stone = {fill = {color = black}}, move = { label = { color = white, format = arabic, } }, mark = { line = {color = white}, fill = {false}, label = {color = white}, } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %---------------WAIN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \definecolor{waingoban}{HTML}{402A2D} \definecolor{waingoban-s}{HTML}{493739} \definecolor{waingrid}{HTML}{FAE0B2} \definecolor{wainblack}{HTML}{4B4B4D} %PIEDRA NEGRA \definecolor{wainshade}{HTML}{E6E7E8} \definecolor{wainwhite}{HTML}{EFEFEF} %PIEDRA BLACA \pgfgodefinegoban[from = default]{wain}{ background = { fill = { color = waingoban, opacity = 1}, line = { color = waingrid, opacity = 1}}, grid = { line = { color = waingrid, width = 1pt} }, label = {text color = waingoban} } \pgfgodefineplayer[from = default-neutral]{wain-neutral}{ stone = { line = { true, color = waingrid, width = 0.2pt, opacity = 1, }, fill = { true, color = wainblack!50!wainwhite, opacity = 1, }, radius = 0.17cm, scale = 1, drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45}, drop shine = {true, angle = 45, color = wainshade} }, move = { label = { color = black, format = arabic, } }, mark = { line = { color = waingoban, width = 1pt, }, fill = {false}, label = { color = waingoban, format = arabic }, } } \pgfgodefineplayer[from = wain-neutral]{wain-white}{ stone = { fill = { color = wainwhite } }, move = { label = { color = waingoban } }, mark = { line = { color = waingoban, }, label = {color = waingoban} } } \pgfgodefineplayer[from = wain-neutral]{wain-black}{ stone = { fill = { color = wainblack } }, move = { label = { color = waingrid } }, mark = { line = { color = waingrid, }, label = {color = waingrid} } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %---------------PGFGO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pgfgodefinegoban{pgfgo}{ background = { fill = { color = pgfgo, opacity = 1}, line = { color = pgfgo!10!black, opacity = 1}, drop shadow = {true}, rounded corners = { inner = 0pt, outer = 2pt }}, grid = { line = { color = pgfgo!10!black, width = 1pt}}, label = { text color = black } } \pgfgodefineplayer{pgfgo-neutral}{ stone = { radius = 0.19cm, line = { true, color = black, width = 0.3pt, opacity = 1, }, fill = { true, color = gray, opacity = 1, }, radius = 0.17cm, scale = 1, drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45}, drop shine = {true, angle = 45, color = wainshade} }, move = { label = { color = black, format = arabic, } }, mark = { line = { color = black, width = 1pt, }, fill = {false}, label = { color = black, format = arabic } } } \pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-white}{ stone = { fill = {color = wainwhite}, drop shine = {color = white} }, move = { label = { color = black } }, mark = { line = {color = black}, fill = {color = white}, label = {color = black} } } \pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-black}{ stone = { fill = { color = wainblack } }, move = { label = { color = pgfgo } }, mark = { line = { color = pgfgo, }, label = {color = black} } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %PGFGOSMOOTH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \definecolor{pgfgosmooth-grid}{HTML}{C7A253} \pgfgodefinegoban[from = pgfgo]{pgfgosmooth}{ background = { line = false, rounded corners = { inner = 2pt, outer = 8pt }, drop shadow = {true}}, grid = { line = {color = pgfgosmooth-grid} } } \pgfgodefineplayer[from = pgfgo-neutral]{pgfgosmooth-neutral}{ stone = { line = false, radius = 0.19cm, drop shine = {opacity = 0.5}} } \pgfgodefineplayer[from = pgfgo-black]{pgfgosmooth-black}{ stone = {line = false, drop shine = {opacity = 0.5}} } \pgfgodefineplayer[from = pgfgo-white]{pgfgosmooth-white}{ stone = {line = false} }