private Race GetRace(HearthDb.Card card) { var racesInText = Races .Where(x => x != Race.ALL && x != Race.INVALID) .Where(x => card.GetLocText(Locale.enUS)?.Contains(HearthDbConverter.RaceConverter(x)) ?? false) .ToList(); if (racesInText.Count == 1) { return(racesInText.Single()); } return(card.Race); }
static Cards() { var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("HearthDb.CardDefs.xml"); if(stream == null) return; using(TextReader tr = new StreamReader(stream)) { var xml = new XmlSerializer(typeof(CardDefs.CardDefs)); var cardDefs = (CardDefs.CardDefs)xml.Deserialize(tr); foreach(var entity in cardDefs.Entites) { var card = new Card(entity); All.Add(entity.CardId, card); if(card.Collectible && card.Type != CardType.HERO) Collectible.Add(entity.CardId, card); } } }
private void ProcessCardEntity(Entity entity) { Card card = Cards.GetCardFromId(entity.CardId); if (card == null) { return; } int controller = entity.GetTag(GameTag.CONTROLLER); if (card.Collectible) { if (controller == Info.OpposingPlayer.Id) { //Hero if (card.Type == CardType.HERO) { Opponent.Deck.HeroDbfId = card.DbfId; Opponent.Deck.CardsInDeck.Add(card); } else if (card.Type != CardType.HERO_POWER) { Opponent.Deck.CardsInDeck.Add(card); } } else if (controller == Info.LocalPlayer.Id) { //Hero if (card.Type == CardType.HERO) { User.Deck.HeroDbfId = card.DbfId; User.Deck.CardsInDeck.Add(card); } else if (card.Type != CardType.HERO_POWER) { User.Deck.CardsInDeck.Add(card); } } } }
public static bool IsDungeonBoss(HearthDb.Card card) => card != null && card.Id.Contains("BOSS") && DungeonRunSets.Contains(card.Set);
public Card(HearthDb.Card card, int count = 1) { Id = card.Id; Count = count; _card = card; }