1
Fork 0
mirror of https://github.com/Steffo99/patched-porobot.git synced 2024-12-23 01:54:22 +00:00

Fix weird behaviour with CardSet::TheDarkinSaga (merge #3)

This commit is contained in:
Steffo 2022-10-18 23:39:48 +02:00 committed by GitHub
commit 5c1d45dddd
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 8 deletions

View file

@ -198,9 +198,7 @@ impl Deck {
let card_count = reader.read_u32_varint().map_err(DeckDecodingError::Read)?; let card_count = reader.read_u32_varint().map_err(DeckDecodingError::Read)?;
let set = reader.read_u32_varint().map_err(DeckDecodingError::Read)?; let set = reader.read_u32_varint().map_err(DeckDecodingError::Read)?;
let set = CardSet::from(set) let set = format!("{:02}", &set);
.to_code()
.ok_or(DeckDecodingError::UnknownSet)?;
let region = reader.read_u32_varint().map_err(DeckDecodingError::Read)?; let region = reader.read_u32_varint().map_err(DeckDecodingError::Read)?;
let region = CardRegion::from(region) let region = CardRegion::from(region)
@ -229,8 +227,7 @@ impl Deck {
.write_u32_varint(len) .write_u32_varint(len)
.map_err(DeckEncodingError::Write)?; .map_err(DeckEncodingError::Write)?;
let set: u32 = CardSet::from_code(set) let set: u32 = set.parse()
.try_into()
.map_err(|_| DeckEncodingError::UnknownSet)?; .map_err(|_| DeckEncodingError::UnknownSet)?;
writer writer
.write_u32_varint(set) .write_u32_varint(set)

View file

@ -55,8 +55,10 @@ impl CardSet {
hm.get(self) hm.get(self)
} }
/// Get the [`CardSet`] from its short code, **assuming it is not an [`CardSet::Events`] card**. /// Get the [`CardSet`] from its short code.
/// ///
/// [`CardSet::Worldwalker`] and [`CardSet::TheDarkinSaga`] share the same code `06`, so a variant cannot be determined.
///
/// [`CardSet::Events`] cards have the short code of the set they were released in, so it is impossible to determine if a card belongs to that set from its short code. /// [`CardSet::Events`] cards have the short code of the set they were released in, so it is impossible to determine if a card belongs to that set from its short code.
pub fn from_code(value: &str) -> Self { pub fn from_code(value: &str) -> Self {
match value { match value {
@ -65,7 +67,6 @@ impl CardSet {
"03" => Self::CallOfTheMountain, "03" => Self::CallOfTheMountain,
"04" => Self::EmpiresOfTheAscended, "04" => Self::EmpiresOfTheAscended,
"05" => Self::BeyondTheBandlewood, "05" => Self::BeyondTheBandlewood,
"06" => Self::Worldwalker,
_ => Self::Unsupported, _ => Self::Unsupported,
} }
@ -84,6 +85,7 @@ impl CardSet {
Self::EmpiresOfTheAscended => Some("04".to_string()), Self::EmpiresOfTheAscended => Some("04".to_string()),
Self::BeyondTheBandlewood => Some("05".to_string()), Self::BeyondTheBandlewood => Some("05".to_string()),
Self::Worldwalker => Some("06".to_string()), Self::Worldwalker => Some("06".to_string()),
Self::TheDarkinSaga => Some("06".to_string()),
_ => None, _ => None,
} }
@ -92,6 +94,8 @@ impl CardSet {
/// Get the [`CardSet`] from its internal id. /// Get the [`CardSet`] from its internal id.
/// ///
/// [`CardSet::Worldwalker`] and [`CardSet::TheDarkinSaga`] share the same id, so a variant cannot be determined.
///
/// [`CardSet::Events`] cards have the id of the set they were released in, so it is impossible to determine if a card belongs to that set from its id. /// [`CardSet::Events`] cards have the id of the set they were released in, so it is impossible to determine if a card belongs to that set from its id.
impl From<u32> for CardSet { impl From<u32> for CardSet {
fn from(value: u32) -> Self { fn from(value: u32) -> Self {
@ -101,7 +105,6 @@ impl From<u32> for CardSet {
3 => CardSet::CallOfTheMountain, 3 => CardSet::CallOfTheMountain,
4 => CardSet::EmpiresOfTheAscended, 4 => CardSet::EmpiresOfTheAscended,
5 => CardSet::BeyondTheBandlewood, 5 => CardSet::BeyondTheBandlewood,
6 => CardSet::Worldwalker,
_ => CardSet::Unsupported, _ => CardSet::Unsupported,
} }
} }
@ -121,6 +124,7 @@ impl TryFrom<CardSet> for u32 {
CardSet::EmpiresOfTheAscended => Ok(4), CardSet::EmpiresOfTheAscended => Ok(4),
CardSet::BeyondTheBandlewood => Ok(5), CardSet::BeyondTheBandlewood => Ok(5),
CardSet::Worldwalker => Ok(6), CardSet::Worldwalker => Ok(6),
CardSet::TheDarkinSaga => Ok(6),
_ => Err(()), _ => Err(()),
} }
} }