public Agent(List <Card> cards, CardClass heroClass) { var deck = new HSAI.Deck.Deck(); deck.CardList = cards; deck.HeroClass = heroClass; }
public static Deck DeserializeDeckString(string deckString) { var deck = new Deck(); byte[] bytes; try { bytes = Convert.FromBase64String(deckString); } catch (Exception e) { throw new ArgumentException("Input is not a valid deck string.", e); } var offset = 0; ulong Read() { if (offset > bytes.Length) { throw new ArgumentException("Input is not a valid deck string."); } var value = VarInt.ReadNext(bytes.Skip(offset).ToArray(), out var length); offset += length; return(value); } //Zero byte offset++; //Version - always 1 Read(); deck.Format = (FormatType)Read(); //Num Heroes - always 1 Read(); deck.HeroClass = Cards.FromAssetId((int)Read()).Class; void AddCard(int?dbfId = null, int count = 1) { dbfId = dbfId ?? (int)Read(); for (var i = 0; i < count; i++) { deck.CardList.Add(Cards.FromAssetId(dbfId.Value)); } } var numSingleCards = (int)Read(); for (var i = 0; i < numSingleCards; i++) { AddCard(); } var numDoubleCards = (int)Read(); for (var i = 0; i < numDoubleCards; i++) { AddCard(count: 2); } var numMultiCards = (int)Read(); for (var i = 0; i < numMultiCards; i++) { var dbfId = (int)Read(); var count = (int)Read(); AddCard(dbfId, count); } return(deck); }