Skip to main content

manabrew_agent_interface/
ids_codec.rs

1use manabrew_engine::ids::{CardId, PlayerId};
2
3pub fn player_slot(index: usize) -> String {
4    format!("player-{}", index)
5}
6
7pub fn player_id_str(pid: PlayerId) -> String {
8    player_slot(pid.0 as usize)
9}
10
11pub fn card_id_str(cid: CardId) -> String {
12    format!("card-{}", cid.0)
13}
14
15pub fn stack_id_str(id: u32) -> String {
16    format!("stack-{}", id)
17}
18
19pub fn parse_player_slot(slot: &str) -> Option<usize> {
20    slot.strip_prefix("player-")
21        .and_then(|n| n.parse::<usize>().ok())
22}
23
24pub fn parse_player_id(s: &str) -> Option<PlayerId> {
25    parse_player_slot(s).map(|n| PlayerId(n as u32))
26}
27
28pub fn parse_card_id(s: &str) -> Option<CardId> {
29    s.strip_prefix("card-")
30        .and_then(|n| n.parse::<u32>().ok())
31        .map(CardId)
32}
33
34pub fn parse_stack_id(s: &str) -> Option<u32> {
35    s.strip_prefix("stack-").and_then(|n| n.parse::<u32>().ok())
36}