/*
	Jersey:
		Emblem	
	
	Talent:
		Level
*/

/*
	use crate::deck;

*/


/*
pub fn make () -> Vec<String> {
	let mut cards : Vec<String> = Vec::new ();
	
	for jersey in [ "C", "S", "H", "D" ] {
		for talent in [ 
			"A", "K", "Q", "J", 
			"T", "9", "8", "7", 
			"6", "5", "4", "3", 
			"2" 
		] {
			cards.push (format!("{}{}", talent, jersey));
		}
	}
	
	// println! ("{:?}", cards);
	
	cards
}
*/


pub fn make_array () -> Vec<[&'static str; 2]> {
	let mut cards : Vec<[&str; 2]> = Vec::new ();
	for jersey in [ "C", "S", "H", "D" ] {
		for talent in [ 
			"A", "K", "Q", "J", 
			"T", "9", "8", "7", 
			"6", "5", "4", "3", 
			"2" 
		] {
			cards.push ([ talent, jersey ]);
		}
	}
	
	// println!("{:?}", cards);
	
	cards
}


/*
	This retrieves the card index from the deck.
*/
/*
	use super::deck;
	let index = deck::retrieve_card_index (& this_deck, rank, suit);
*/
pub fn retrieve_card_index (
	deck: &Vec<[&str; 2]>, 
	rank: &str, 
	suit: &str
) -> usize {
	deck.iter()
	.position(|&card| card[0] == rank && card[1] == suit)
	.unwrap()
}

/*
	let character_card_1 = deck::remove_card_by_value (&mut this_deck, "A", "C").unwrap ();
*/
pub fn remove_card (cards: &mut Vec<[&'static str; 2]>, card_to_remove: &[&str; 2]) -> Option<[&'static str; 2]> {
    if let Some(pos) = cards.iter().position(|card| *card == *card_to_remove) {
        Some(cards.remove(pos)) // Remove and return the card
    } else {
        None // Card not found
    }
}

/*
	let character_card_1 = deck::remove_card_by_value(&mut this_deck, "A", "C").unwrap();
	let character_card_1 = deck::remove_card_by_value (&mut this_deck, "A", "C").expect ("Card not found in the deck");
*/
/*
pub fn remove_card<'a>(
    cards: &'a mut Vec<[&'a str; 2]>,
    talent: &'a str,
    jersey: &'a str,
) -> usize {
    if let Some (index) = cards.iter().position(|card| card[0] == talent && card[1] == jersey) {
		return index;
    }
	
	return usize::MAX;
}
*/