load card data
This commit is contained in:
parent
44ff6adb8a
commit
863a6b5865
2 changed files with 38 additions and 16 deletions
|
@ -1,5 +1,15 @@
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::sync::{Arc, RwLock};
|
use std::{
|
||||||
|
collections::HashMap,
|
||||||
|
sync::{Arc, RwLock},
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Card Set
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct CardSet {
|
||||||
|
pub white: Option<Vec<CardWhite>>,
|
||||||
|
pub black: Option<Vec<CardBlack>>,
|
||||||
|
}
|
||||||
|
|
||||||
/// Card Pack Meta
|
/// Card Pack Meta
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
|
@ -16,10 +26,10 @@ pub struct CardPacksMeta {
|
||||||
pub unofficial_meta: Vec<CardPackMeta>,
|
pub unofficial_meta: Vec<CardPackMeta>,
|
||||||
}
|
}
|
||||||
/// Card Packs Meta
|
/// Card Packs Meta
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug)]
|
||||||
pub struct CardPacks {
|
pub struct CardPacks {
|
||||||
pub official: Vec<CardPack>,
|
pub official: HashMap<u8, CardSet>,
|
||||||
pub unofficial: Vec<CardPack>,
|
pub unofficial: HashMap<u8, CardSet>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Games update
|
/// Games update
|
||||||
|
|
|
@ -23,8 +23,8 @@ fn load_cards_from_json(path: &str) -> Result<(CardPacks, CardPacksMeta)> {
|
||||||
let jayson: Vec<CardPack> = serde_json::from_str(&data)
|
let jayson: Vec<CardPack> = serde_json::from_str(&data)
|
||||||
.with_context(|| format!("The contents of \"{path}\" is not valid JSON."))?;
|
.with_context(|| format!("The contents of \"{path}\" is not valid JSON."))?;
|
||||||
|
|
||||||
let mut official: Vec<CardPack> = vec![];
|
let mut official: HashMap<u8, CardSet> = HashMap::new();
|
||||||
let mut unofficial: Vec<CardPack> = vec![];
|
let mut unofficial: HashMap<u8, CardSet> = HashMap::new();
|
||||||
|
|
||||||
let mut official_meta: Vec<CardPackMeta> = vec![];
|
let mut official_meta: Vec<CardPackMeta> = vec![];
|
||||||
let mut unofficial_meta: Vec<CardPackMeta> = vec![];
|
let mut unofficial_meta: Vec<CardPackMeta> = vec![];
|
||||||
|
@ -32,18 +32,28 @@ fn load_cards_from_json(path: &str) -> Result<(CardPacks, CardPacksMeta)> {
|
||||||
for set in jayson {
|
for set in jayson {
|
||||||
let mut num_white = 0;
|
let mut num_white = 0;
|
||||||
let mut num_black = 0;
|
let mut num_black = 0;
|
||||||
|
|
||||||
|
let mut newset = CardSet {
|
||||||
|
white: Option::None,
|
||||||
|
black: Option::None,
|
||||||
|
};
|
||||||
|
|
||||||
|
// No safe default for this so make it an Option
|
||||||
let mut pack: Option<u8> = Option::None;
|
let mut pack: Option<u8> = Option::None;
|
||||||
|
|
||||||
if let Some(white) = set.white {
|
if let Some(ref white) = set.white {
|
||||||
num_white = white.len();
|
num_white = white.len();
|
||||||
if num_white > 0 {
|
if num_white > 0 {
|
||||||
pack = Some(white[0].pack)
|
pack = Some(white[0].pack);
|
||||||
|
newset.white = Some(set.white.unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Some(black) = set.black {
|
|
||||||
|
if let Some(ref black) = set.black {
|
||||||
num_black = black.len();
|
num_black = black.len();
|
||||||
if num_black > 0 {
|
if num_black > 0 {
|
||||||
pack = Some(black[0].pack)
|
pack = Some(black[0].pack);
|
||||||
|
newset.black = Some(set.black.unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,11 +66,19 @@ fn load_cards_from_json(path: &str) -> Result<(CardPacks, CardPacksMeta)> {
|
||||||
|
|
||||||
if set.official {
|
if set.official {
|
||||||
official_meta.push(meta);
|
official_meta.push(meta);
|
||||||
|
official.insert(pack.unwrap(), newset);
|
||||||
} else {
|
} else {
|
||||||
unofficial_meta.push(meta);
|
unofficial_meta.push(meta);
|
||||||
|
unofficial.insert(pack.unwrap(), newset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
official.shrink_to_fit();
|
||||||
|
unofficial.shrink_to_fit();
|
||||||
|
|
||||||
|
official_meta.shrink_to_fit();
|
||||||
|
unofficial_meta.shrink_to_fit();
|
||||||
|
|
||||||
tracing::debug!("{} official", official.len());
|
tracing::debug!("{} official", official.len());
|
||||||
tracing::debug!("{} official meta", official_meta.len());
|
tracing::debug!("{} official meta", official_meta.len());
|
||||||
tracing::debug!("{} unofficial", unofficial.len());
|
tracing::debug!("{} unofficial", unofficial.len());
|
||||||
|
@ -68,17 +86,11 @@ fn load_cards_from_json(path: &str) -> Result<(CardPacks, CardPacksMeta)> {
|
||||||
tracing::debug!("{:#?}", official_meta[0]);
|
tracing::debug!("{:#?}", official_meta[0]);
|
||||||
tracing::debug!("{:#?}", unofficial_meta[0]);
|
tracing::debug!("{:#?}", unofficial_meta[0]);
|
||||||
|
|
||||||
official.shrink_to_fit();
|
|
||||||
unofficial.shrink_to_fit();
|
|
||||||
|
|
||||||
let packs = CardPacks {
|
let packs = CardPacks {
|
||||||
official,
|
official,
|
||||||
unofficial,
|
unofficial,
|
||||||
};
|
};
|
||||||
|
|
||||||
official_meta.shrink_to_fit();
|
|
||||||
unofficial_meta.shrink_to_fit();
|
|
||||||
|
|
||||||
let packs_meta = CardPacksMeta {
|
let packs_meta = CardPacksMeta {
|
||||||
official_meta,
|
official_meta,
|
||||||
unofficial_meta,
|
unofficial_meta,
|
||||||
|
|
Loading…
Add table
Reference in a new issue