manabrew_agent_interface/
ids_codec.rs1use 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}