\ExplSyntaxOn

\cs_generate_variant:Nn \keys_define:nn {ee}
\cs_generate_variant:Nn \keys_define:nn {en}


\keys_define:nn {pgfgo} {players .code:n = {\keys_set:nn {pgfgo/players} {#1}}}

\def\pgfgosetplayer#1#2{\pgfgoset{players = {#1 = {#2}}}}


\bool_new:N \l_pgfgo_mark_inside_mark_bool

\def\pgfgochooseplayers#1#2#3{
	\pgfgocopyplayer{neutral}	{#1}
	\pgfgocopyplayer{black}		{#2}
	\pgfgocopyplayer{white}		{#3}
}










\def\pgfgocopyplayer#1#2{
	\dim_set_eq:cc 	{l_pgfgo_players_ #1 _stone_radius_dim} {l_pgfgo_players_ #2 _stone_radius_dim}
	\fp_set_eq:cc 	{l_pgfgo_players_ #1 _stone_scale_fp} {l_pgfgo_players_ #2 _stone_scale_fp}

	\bool_set_eq:cc {l_pgfgo_players_ #1 _stone_line_bool} {l_pgfgo_players_ #1 _stone_line_bool}
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _stone_line_color_tl} {l_pgfgo_players_ #2 _stone_line_color_tl}
	\dim_set_eq:cc 	{l_pgfgo_players_ #1 _stone_line_width_dim} {l_pgfgo_players_ #2 _stone_line_width_dim}
	\fp_set_eq:cc 	{l_pgfgo_players_ #1 _stone_line_opacity_fp} {l_pgfgo_players_ #2 _stone_line_opacity_fp}
	
	\bool_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_bool} {l_pgfgo_players_ #2 _stone_fill_bool}
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _stone_fill_color_tl} {l_pgfgo_players_ #2 _stone_fill_color_tl}
	\fp_set_eq:cc 	{l_pgfgo_players_ #1 _stone_fill_opacity_fp} {l_pgfgo_players_ #2 _stone_fill_opacity_fp}
	
	\bool_set_eq:cc	{l_pgfgo_players_ #1 _stone_drop_shadow_bool} {l_pgfgo_players_ #2 _stone_drop_shadow_bool}
	\fp_set_eq:cc		{l_pgfgo_players_ #1 _stone_drop_shadow_angle_fp} {l_pgfgo_players_ #2 _stone_drop_shadow_angle_fp}
	\dim_set_eq:cc	{l_pgfgo_players_ #1 _stone_drop_shadow_offset_dim} {l_pgfgo_players_ #2 _stone_drop_shadow_offset_dim}
	\fp_set_eq:cc		{l_pgfgo_players_ #1 _stone_drop_shadow_opacity_fp} {l_pgfgo_players_ #2 _stone_drop_shadow_opacity_fp}
	
	\bool_set_eq:cc	{l_pgfgo_players_ #1 _stone_drop_shine_bool} {l_pgfgo_players_ #2 _stone_drop_shine_bool}
	\fp_set_eq:cc		{l_pgfgo_players_ #1 _stone_drop_shine_angle_fp} {l_pgfgo_players_ #2 _stone_drop_shine_angle_fp}
	\fp_set_eq:cc		{l_pgfgo_players_ #1 _stone_drop_shine_opacity_fp} {l_pgfgo_players_ #2 _stone_drop_shine_opacity_fp}
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _stone_drop_shine_color_tl}	{l_pgfgo_players_ #2 _stone_drop_shine_color_tl}
	
	\dim_set_eq:cc 	{l_pgfgo_players_ #1 _move_label_font_size_dim} {l_pgfgo_players_ #2 _move_label_font_size_dim}
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _move_label_color_tl} {l_pgfgo_players_ #2 _move_label_color_tl}
	\cs_set_eq:cc		{pgfgo_players_ #1 _move_label_format:n}{pgfgo_players_ #2 _move_label_format:n}
	
	
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _mark_line_color_tl} {l_pgfgo_players_ #2 _mark_line_color_tl}
	\dim_set_eq:cc 	{l_pgfgo_players_ #1 _mark_line_width_dim} {l_pgfgo_players_ #2 _mark_line_width_dim}
	
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _mark_fill_color_tl} {l_pgfgo_players_ #2 _mark_fill_color_tl}
	\bool_set_eq:cc {l_pgfgo_players_ #1 _mark_fill_bool} {l_pgfgo_players_ #2 _mark_fill_bool}
	
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _mark_label_color_tl} {l_pgfgo_players_ #2 _mark_label_color_tl}
	\bool_set_eq:cc {l_pgfgo_players_ #1 _mark_sequence_bool} {l_pgfgo_players_ #2 _mark_sequence_bool}
	\int_set_eq:cc 	{l_pgfgo_ #1 _mark_sequence_from_int} {l_pgfgo_ #2 _mark_sequence_from_int}
	\cs_set_eq:cc	 	{pgfgo_players_ #1 _mark_sequence_format:n} {pgfgo_players_ #2 _mark_sequence_format:n}
	\tl_set_eq:cc 	{l_pgfgo_players_ #1 _mark_label_font_tl} {l_pgfgo_players_ #2 _mark_label_font_tl}
}




\cs_new:Nn \pgfgo_get_variables_from_current_player: {
	\bool_if:NTF \l_pgfgo_players_black_bool {
		\pgfgo_get_values_from_player:n{black}
	}{
		\bool_if:NTF \l_pgfgo_players_white_bool {
			\pgfgo_get_values_from_player:n{white}
		}{
			\pgfgo_get_values_from_player:n{neutral}
		}
	}
}




\dim_new:N 	\l_pgfgo_players_stone_radius_dim
\fp_new:N 	\l_pgfgo_players_stone_scale_fp

\bool_new:N \l_pgfgo_players_stone_line_bool
\tl_new:N 	\l_pgfgo_players_stone_line_color_tl
\dim_new:N 	\l_pgfgo_players_stone_line_width_dim
\fp_new:N 	\l_pgfgo_players_stone_line_opacity_fp

\bool_new:N \l_pgfgo_players_stone_fill_bool
\tl_new:N 	\l_pgfgo_players_stone_fill_color_tl
\fp_new:N 	\l_pgfgo_players_stone_fill_opacity_fp

\bool_new:N	\l_pgfgo_players_stone_drop_shadow_bool
\fp_new:N		\l_pgfgo_players_stone_drop_shadow_angle_fp
\dim_new:N	\l_pgfgo_players_stone_drop_shadow_offset_dim
\fp_new:N		\l_pgfgo_players_stone_drop_shadow_opacity_fp

\bool_new:N	\l_pgfgo_players_stone_mark_bool

\bool_new:N	\l_pgfgo_players_stone_drop_shine_bool
\fp_new:N		\l_pgfgo_players_stone_drop_shine_angle_fp
\fp_new:N		\l_pgfgo_players_stone_drop_shine_opacity_fp 
\tl_new:N		\l_pgfgo_players_stone_drop_shine_color_tl

\dim_new:N 	\l_pgfgo_players_move_label_font_size_dim 		
\tl_new:N 	\l_pgfgo_players_move_label_color_tl
\bool_new:N \l_pgfgo_goban_remember_move_label_bool


\tl_new:N 	\l_pgfgo_players_mark_line_color_tl
\dim_new:N 	\l_pgfgo_players_mark_line_width_dim

\tl_new:N 	\l_pgfgo_players_mark_fill_color_tl
\bool_new:N \l_pgfgo_players_mark_fill_bool

\tl_new:N 	\l_pgfgo_players_mark_label_color_tl

\bool_new:N \l_pgfgo_players_mark_sequence_bool
\int_new:N	\l_pgfgo_mark_sequence_from_int
\tl_new:N 	\l_pgfgo_players_mark_label_font_tl







%COPIA LOS VALORES DE UN JUGADOR PARA USARLOS.
\cs_new:Nn \pgfgo_get_values_from_player:n{
	\dim_set_eq:Nc 	\l_pgfgo_players_stone_radius_dim 						{l_pgfgo_players_ #1 _stone_radius_dim}
	\fp_set_eq:Nc 	\l_pgfgo_players_stone_scale_fp 							{l_pgfgo_players_ #1 _stone_scale_fp}
	
	\bool_set_eq:Nc \l_pgfgo_players_stone_line_bool 							{l_pgfgo_players_ #1 _stone_line_bool}
	\tl_set_eq:Nc 	\l_pgfgo_players_stone_line_color_tl 					{l_pgfgo_players_ #1 _stone_line_color_tl}
	\dim_set_eq:Nc 	\l_pgfgo_players_stone_line_width_dim 				{l_pgfgo_players_ #1 _stone_line_width_dim}
	\fp_set_eq:Nc 	\l_pgfgo_players_stone_line_opacity_fp 				{l_pgfgo_players_ #1 _stone_line_opacity_fp}
	
	\bool_set_eq:Nc \l_pgfgo_players_stone_fill_bool 							{l_pgfgo_players_ #1 _stone_fill_bool}
	\tl_set_eq:Nc 	\l_pgfgo_players_stone_fill_color_tl 					{l_pgfgo_players_ #1 _stone_fill_color_tl}
	\fp_set_eq:Nc 	\l_pgfgo_players_stone_fill_opacity_fp 				{l_pgfgo_players_ #1 _stone_fill_opacity_fp}
	
	\bool_set_eq:Nc	\l_pgfgo_players_stone_drop_shadow_bool 			{l_pgfgo_players_ #1 _stone_drop_shadow_bool}
	\fp_set_eq:Nc		\l_pgfgo_players_stone_drop_shadow_angle_fp 	{l_pgfgo_players_ #1 _stone_drop_shadow_angle_fp}
	\dim_set_eq:Nc	\l_pgfgo_players_stone_drop_shadow_offset_dim	{l_pgfgo_players_ #1 _stone_drop_shadow_offset_dim}
	\fp_set_eq:Nc		\l_pgfgo_players_stone_drop_shadow_opacity_fp	{l_pgfgo_players_ #1 _stone_drop_shadow_opacity_fp}
	
	\bool_set_eq:Nc	\l_pgfgo_players_stone_drop_shine_bool 				{l_pgfgo_players_ #1 _stone_drop_shine_bool}
	\fp_set_eq:Nc		\l_pgfgo_players_stone_drop_shine_angle_fp 		{l_pgfgo_players_ #1 _stone_drop_shine_angle_fp}
	\fp_set_eq:Nc		\l_pgfgo_players_stone_drop_shine_opacity_fp 	{l_pgfgo_players_ #1 _stone_drop_shine_opacity_fp}
	\tl_set_eq:Nc		\l_pgfgo_players_stone_drop_shine_color_tl 		{l_pgfgo_players_ #1 _stone_drop_shine_color_tl}
	
	\dim_set_eq:Nc 	\l_pgfgo_players_move_label_font_size_dim 		{l_pgfgo_players_ #1 _move_label_font_size_dim}
	\tl_set_eq:Nc 	\l_pgfgo_players_move_label_color_tl 					{l_pgfgo_players_ #1 _move_label_color_tl}
	\cs_set_eq:Nc  	\pgfgo_players_move_label_format:n						{pgfgo_players_ #1 _move_label_format:n}
	
	
	
	\tl_set_eq:Nc 	\l_pgfgo_players_mark_line_color_tl 					{l_pgfgo_players_ #1 _mark_line_color_tl}
	\dim_set_eq:Nc 	\l_pgfgo_players_mark_line_width_dim 					{l_pgfgo_players_ #1 _mark_line_width_dim}
	
	\tl_set_eq:Nc 	\l_pgfgo_players_mark_fill_color_tl 					{l_pgfgo_players_ #1 _mark_fill_color_tl}
	\bool_set_eq:Nc \l_pgfgo_players_mark_fill_bool 							{l_pgfgo_players_ #1 _mark_fill_bool}
	
	\tl_set_eq:Nc 	\l_pgfgo_players_mark_label_color_tl 					{l_pgfgo_players_ #1 _mark_label_color_tl}
	\bool_set_eq:Nc \l_pgfgo_players_mark_sequence_bool						{l_pgfgo_players_ #1 _mark_sequence_bool}
	\int_set_eq:Nc 	\l_pgfgo_mark_sequence_from_int 							{l_pgfgo_ #1 _mark_sequence_from_int}
	\cs_set_eq:Nc  	\pgfgo_players_mark_sequence_format:n					{pgfgo_players_ #1 _mark_sequence_format:n}
	\tl_set_eq:Nc 	\l_pgfgo_players_mark_label_font_tl						{l_pgfgo_players_ #1 _mark_label_font_tl}
}




	\keys_define:nn {pgfgo / players} {
		all .code:n = {
			\keys_set:nn {pgfgo / players / neutral} 	{#1}
			\keys_set:nn {pgfgo / players / black} 		{#1}
			\keys_set:nn {pgfgo / players / white} 		{#1}
		}
	}
	
	
	
	
	
	
	


	\def\pgfgonewplayers#1{
		\clist_set:Nn \l_tmpa_clist {#1}
		\clist_map_variable:NNn \l_tmpa_clist\variable{
			
			%SIRVE PARA DETERMINAR SI UNA PIEDRA ES O NO DE ESTE JUGADOR
			\bool_new:c {l_pgfgo_players_ \variable _bool}
			
			
			
			
			\keys_define:ne {pgfgo / players} {\variable .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable} {##1}}}
			
			\keys_define:ee { pgfgo / players / \variable } {
				stone                   .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / stone}         {##1}},
				move                    .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / move}          {##1}},
				mark                    .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / mark}          {##1}},
				territory           		.code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / territory} 		 {##1}},
			}
			
			
			
			%----------------------------------------------------------------------------------------------------
			%PIEDRA
			\dim_new:c {l_pgfgo_players_ \variable _stone_radius_dim}
			\fp_new:c {l_pgfgo_players_ \variable _stone_scale_fp}
		
			\keys_define:ee { pgfgo / players / \variable / stone } {
				prisoner						.code:n = {\keys_set:nn { pgfgo / players / \variable / stone / fill } {opacity = 0.5}},
				line 								.code:n = {\keys_set:nn { pgfgo / players / \variable / stone / line } {##1}},
				fill 								.code:n = {\keys_set:nn { pgfgo / players / \variable / stone / fill } {##1}},
				radius							.code:n = {\dim_set:cn{l_pgfgo_players_ \variable _stone_radius_dim}{##1}},
				radius							.initial:n = {5.5pt},
				scale								.code:n = {\fp_set:cn{l_pgfgo_players_ \variable _stone_scale_fp}{##1}},
				scale								.initial:n = {1},
				drop~shadow					.code:n = {\keys_set:nn{ pgfgo / players / \variable / stone / drop~shadow }{##1}},
				drop~shine					.code:n = {\keys_set:nn{ pgfgo / players / \variable / stone / drop~shine }{##1}},
				mark								.groups:n	= { external },
				black								.groups:n = { external },
				b										.groups:n = { external },
				white								.groups:n = { external },
				w										.groups:n = { external },
				neutral							.groups:n = { external },
				n										.groups:n = { external },
				forget							.groups:n = { external },
				remember						.groups:n = { external }
			}
			
			
			\bool_new:c {l_pgfgo_players_ \variable _stone_line_bool}
			\bool_set_true:c {l_pgfgo_players_ \variable _stone_line_bool}
			\tl_new:c 	{l_pgfgo_players_ \variable _stone_line_color_tl}
			\dim_new:c 	{l_pgfgo_players_ \variable _stone_line_width_dim}
			\fp_new:c 	{l_pgfgo_players_ \variable _stone_line_opacity_fp}
			
			\keys_define:ee { pgfgo / players / \variable / stone / line } {
				true 				.code:n 		= {\exp_not:N\bool_set_true:c 	{l_pgfgo_players_ \variable _stone_line_bool}},
				false 			.code:n 		= {\exp_not:N\bool_set_false:c 	{l_pgfgo_players_ \variable _stone_line_bool}},
				color				.code:n 		= {\exp_not:N\tl_set:cn 				{l_pgfgo_players_ \variable _stone_line_color_tl}{##1}},
				color				.initial:n 	= {black},
				width				.code:n 		= {\exp_not:N\dim_set:cn 				{l_pgfgo_players_ \variable _stone_line_width_dim}{##1}},
				width				.initial:n	= {0.7pt},
				opacity			.code:n 		= {\exp_not:N\fp_set:cn 				{l_pgfgo_players_ \variable _stone_line_opacity_fp}{##1}},
				opacity			.initial:n	= {1}
			}
			
			
			
			\bool_new:c {l_pgfgo_players_ \variable _stone_fill_bool}
			\bool_set_true:c {l_pgfgo_players_ \variable _stone_fill_bool}
			\tl_new:c 	{l_pgfgo_players_ \variable _stone_fill_color_tl}
			\fp_new:c 	{l_pgfgo_players_ \variable _stone_fill_opacity_fp}
			
			\keys_define:ee { pgfgo / players / \variable / stone / fill } {
				true 				.code:n 		= {\exp_not:N\bool_set_true:c 	{l_pgfgo_players_ \variable _stone_fill_bool}},
				false 			.code:n 		= {\exp_not:N\bool_set_false:c 	{l_pgfgo_players_ \variable _stone_fill_bool}},
				color				.code:n 		= {\exp_not:N\tl_set:cn 				{l_pgfgo_players_ \variable _stone_fill_color_tl}{##1}},
				color				.initial:n 	= {gray},
				opacity			.code:n 		= {\exp_not:N\fp_set:cn 				{l_pgfgo_players_ \variable _stone_fill_opacity_fp}{##1}},
				opacity			.initial:n	=	{1}
			}
			
			
			
			\bool_new:c				{l_pgfgo_players_ \variable _stone_drop_shadow_bool}
			\bool_set_false:c	{l_pgfgo_players_ \variable _stone_drop_shadow_bool}
			\fp_new:c					{l_pgfgo_players_ \variable _stone_drop_shadow_angle_fp}
			\dim_new:c				{l_pgfgo_players_ \variable _stone_drop_shadow_offset_dim}
			\fp_new:c					{l_pgfgo_players_ \variable _stone_drop_shadow_opacity_fp}
			
			\keys_define:ee { pgfgo / players / \variable / stone / drop~shadow } {
				true 				.code:n 		= {\exp_not:N\bool_set_true:c 	{l_pgfgo_players_ \variable _stone_drop_shadow_bool}},
				false 			.code:n 		= {\exp_not:N\bool_set_false:c 	{l_pgfgo_players_ \variable _stone_drop_shadow_bool}},
				angle				.code:n 		= {\exp_not:N\fp_set:cn 				{l_pgfgo_players_ \variable _stone_drop_shadow_angle_fp}{##1}},
				angle				.initial:n 	= {0},
				offset			.code:n 		= {\exp_not:N\dim_set:cn 				{l_pgfgo_players_ \variable _stone_drop_shadow_offset_dim}{##1}},
				offset			.initial:n	=	{0pt},
				opacity			.code:n 		= {\exp_not:N\fp_set:cn 				{l_pgfgo_players_ \variable _stone_drop_shadow_opacity_fp}{##1}},
				opacity			.initial:n	= {0.5}
			}
			
			
			\bool_new:c				{l_pgfgo_players_ \variable _stone_drop_shine_bool}
			\bool_set_false:c	{l_pgfgo_players_ \variable _stone_drop_shine_bool}
			\fp_new:c					{l_pgfgo_players_ \variable _stone_drop_shine_angle_fp}
			\fp_new:c					{l_pgfgo_players_ \variable _stone_drop_shine_opacity_fp}
			\tl_new:c					{l_pgfgo_players_ \variable _stone_drop_shine_color_tl}
			
			\keys_define:ee { pgfgo / players / \variable / stone / drop~shine } {
				true 				.code:n 		= {\exp_not:N\bool_set_true:c 	{l_pgfgo_players_ \variable _stone_drop_shine_bool}},
				false 			.code:n			= {\exp_not:N\bool_set_false:c 	{l_pgfgo_players_ \variable _stone_drop_shine_bool}},
				angle				.code:n 		= {\exp_not:N\tl_set:cn 				{l_pgfgo_players_ \variable _stone_drop_shine_angle_fp}{##1}},
				angle				.initial:n 	= {0},
				opacity			.code:n 		= {\exp_not:N\fp_set:cn 				{l_pgfgo_players_ \variable _stone_drop_shine_opacity_fp}{##1}},
				opacity			.initial:n	= {1},
				color				.code:n 		= {\exp_not:N\tl_set:cn 				{l_pgfgo_players_ \variable _stone_drop_shine_color_tl}{##1}},
				color				.default:n	= {gray!50!white},
			}
			
			
			%--------------------------------------------------------------------------------------------
			%MOVE
			\keys_define:ee { pgfgo / players / \variable / move } {
				label 			.code:n = {\keys_set:nn { pgfgo / players / \variable / move / label } {##1}},
				label				.groups:n = {label},
				from				.groups:n = {external},
				black				.groups:n = {external},
				b						.groups:n = {external},
				white				.groups:n = {external},
				w						.groups:n = {external},
				remember		.groups:n = {external},
				forget			.groups:n = {external},
			}
			
			\dim_new:c {l_pgfgo_players_ \variable _move_label_font_size_dim}
			\tl_new:c {l_pgfgo_players_ \variable _move_label_color_tl}
						
			\keys_define:ee { pgfgo / players / \variable / move / label } {
				font~size 					.code:n 		= {\exp_not:N\dim_set:cn{l_pgfgo_players_ \variable _move_label_font_size_dim}{##1}},
				font~size						.initial:n	= {8pt},
				color								.code:n 		= {\tl_set:cn{l_pgfgo_players_ \variable _move_label_color_tl}{##1}},
				color								.initial:n	= {black},
				forget							.code:n			= {\bool_set_false:N \l_pgfgo_goban_remember_move_label_bool},
				remember						.code:n 		= {\bool_set_true:N \l_pgfgo_goban_remember_move_label_bool},
				format							.choice:,
				format / arabic			.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_arabic:n},
				format / alph				.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_alph:n},
				format / Alph				.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_Alph:n},
				format / roman			.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_roman:n},
				format / Roman			.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_Roman:n},
				format							.initial:n	= {arabic},
			}
			
		
		
			%--------------------------------------------------------------------------------------------
			%MARK
				
			
			
			\keys_define:ee { pgfgo / players / \variable / mark } {
				line		  .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / line } {##1}},
				fill		  .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / fill } {##1}},
				label		 	.code:n = {\keys_set:nn { pgfgo / players / \variable / mark / label } {##1}},
				sequence	.code:n = {\keys_set:nn { pgfgo / players / \variable / mark / sequence } {##1}},
				sequence 	.default:n = {from = 1},
				custom		.code:n = {\keys_set:nn { pgfgo } {mark = { custom = { ##1 }}}},
				unknown		.code:n = {
						\keys_set:nn {pgfgo / mark}{\l_keys_key_str}
					}
			}
			
			
			
			\tl_new:c {l_pgfgo_players_ \variable _mark_line_color_tl}
			\dim_new:c {l_pgfgo_players_ \variable _mark_line_width_dim}
			
			\keys_define:ee { pgfgo / players / \variable / mark / line } {
				color			.code:n 		= {\tl_set:cn{l_pgfgo_players_ \variable _mark_line_color_tl}{##1}},
				color			.initial:n 	= {black},
				width			.code:n 		= {\dim_set:cn{l_pgfgo_players_ \variable _mark_line_width_dim}{##1}},
				width			.initial:n	=	{1pt}
			}
			
			
			\bool_new:c {l_pgfgo_players_ \variable _mark_fill_bool}
			\bool_set_false:c {l_pgfgo_players_ \variable _mark_fill_bool}
			\tl_new:c {l_pgfgo_players_ \variable _mark_fill_color_tl}
			
			\keys_define:ee { pgfgo / players / \variable / mark / fill } {
				true			.code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_fill_bool}},
				false			.code:n = {\bool_set_false:c {l_pgfgo_players_ \variable _mark_fill_bool}},
				color			.code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_fill_color_tl}{##1}},
				color			.initial:n = {gray!50!black}
			}
			
			
			\tl_new:c {l_pgfgo_players_ \variable _mark_label_color_tl}
			\tl_new:c {l_pgfgo_players_ \variable _mark_label_font_tl}
			
			\keys_define:ee { pgfgo / players / \variable / mark / label } {
				color			.code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_label_color_tl}{##1}},
				color			.initial:n = {black},
				font			.code:n		 = {\tl_set:cn{l_pgfgo_players_ \variable _mark_label_font_tl}{##1}},	
				format							.choice:,
				format / arabic			.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_arabic:n},
				format / alph				.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_alph:n},
				format / Alph				.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_Alph:n},
				format / roman			.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_roman:n},
				format / Roman			.code:n			= {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_Roman:n},
				format							.initial:n	= {arabic},
			}
			
			\bool_new:c {l_pgfgo_players_ \variable _mark_sequence_bool}
			\int_new:c {l_pgfgo_ \variable _mark_sequence_from_int}
			
			\keys_define:ee { pgfgo / players / \variable / mark / sequence } {
				true								.code:n			=	{\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}},
				false								.code:n			=	{\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}},
				use									.code:n			=	{\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}},
				from								.code:n			= {
					\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}
					\int_set:cn {l_pgfgo_ \variable _mark_sequence_from_int} {##1}
					},
			}
		}
	}
	


%LOS JUGADORES REALES. TODO SE ASIGNA ACA
\pgfgonewplayers{neutral, black, white}
\pgfgochooseplayers{neutral}{black}{white}