private static void GenerateSkillCardDeck(SkillCardColor color) { var baseDocument = new XmlDocument(); baseDocument.Load(@"..\..\BaseJsonGeneratorOutput\Core.xml"); var cardsFromBox = new List <SkillCard>(); string deckName = null; switch (color) { case SkillCardColor.Engineering: deckName = "ENGdeck"; break; case SkillCardColor.Leadership: deckName = "LEAdeck"; break; case SkillCardColor.Piloting: deckName = "PILdeck"; break; case SkillCardColor.Politics: deckName = "POLdeck"; break; case SkillCardColor.Tactics: deckName = "TACdeck"; break; } var jo = JObject.Parse(JsonConvert.SerializeXmlNode(baseDocument)); var token = jo["ROOT"][deckName]; cardsFromBox.AddRange( token["card"].Children().Select( element => element.Value <string>("text")) .Select( headerText => new SkillCard { Heading = headerText, CardColor = color, CardPower = headerText[headerText.IndexOfAny(new[] { '0', '1', '2', '3', '4', '5' })] .ToString(CultureInfo.InvariantCulture).ParseAs <int>() } ) ); var jsonSettings = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, Converters = new List <JsonConverter> { new Newtonsoft.Json.Converters.StringEnumConverter() } }; var json = JsonConvert.SerializeObject(cardsFromBox, Newtonsoft.Json.Formatting.Indented, jsonSettings); using (var sr = new StreamWriter(@"..\..\BaseJsonGeneratorOutput\GeneratedJson\Decks\" + color + "Deck.json")) { sr.Write(json); } }
private void InitDeck(SkillCardColor color) { var cardsFromBox = new List <SkillCard>(); //TODO: Import the cards via JSON/XML reader - the goddamn NuGet packages aren't working right now. Fill up the cardsFromBox object. Deck = cardsFromBox; Deck = Shuffle(Deck); DeckColor = color; }
/// <summary> /// Initializes the deck. /// </summary> /// <param name="color">The color.</param> /// <param name="fileLocation">The file location.</param> private void InitDeck(SkillCardColor color, string fileLocation) { var cardsFromBox = new List <SkillCard>(); if (fileLocation != null) { using (var sr = new StreamReader(fileLocation)) { var jsonText = sr.ReadToEnd(); cardsFromBox = JsonConvert.DeserializeObject <List <SkillCard> >(jsonText); } } Deck = cardsFromBox; Deck = Shuffle(Deck); DeckColor = color; Discarded = new List <SkillCard>(); }
public IEnumerable <SkillCard> DrawSkillCards(SkillCardColor color, int count, Player player = null) { List <SkillCard> ret; switch (color) { case SkillCardColor.Engineering: ret = CurrentGameState.EngineeringDeck.DrawMany(count).ToList(); break; case SkillCardColor.Leadership: ret = CurrentGameState.LeadershipDeck.DrawMany(count).ToList(); break; case SkillCardColor.Piloting: ret = CurrentGameState.PilotingDeck.DrawMany(count).ToList(); break; case SkillCardColor.Politics: ret = CurrentGameState.PoliticsDeck.DrawMany(count).ToList(); break; case SkillCardColor.Tactics: ret = CurrentGameState.TacticsDeck.DrawMany(count).ToList(); break; case SkillCardColor.Treachery: ret = CurrentGameState.TreacheryDeck.DrawMany(count).ToList(); break; default: return(new List <SkillCard>()); } if (player != null) { player.TakeCard(ret); } return(ret); }
/// <summary> /// Returns the maximum number of cards the character can draw of this color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public int ColorMax(SkillCardColor color) { return DefaultDrawColors.Select(draw => draw.Count(x => x == color)).Concat(new[] {0}).Max(); }
private static void GenerateSkillCardDeck(SkillCardColor color) { var baseDocument = new XmlDocument(); baseDocument.Load(@"..\..\PegasusJsonGeneratorOutput\Pegasus.xml"); var cardsFromBox = new List<SkillCard>(); string deckName = null; switch (color) { case SkillCardColor.Engineering: deckName = "ENGdeck"; break; case SkillCardColor.Leadership: deckName = "LEAdeck"; break; case SkillCardColor.Piloting: deckName = "PILdeck"; break; case SkillCardColor.Politics: deckName = "POLdeck"; break; case SkillCardColor.Tactics: deckName = "TACdeck"; break; case SkillCardColor.Treachery: deckName = "TREdeck"; break; } var jo = JObject.Parse(JsonConvert.SerializeXmlNode(baseDocument)); var token = jo["ROOT"][deckName]; cardsFromBox.AddRange( token["card"].Children().Select( element => element.Value<string>("text")) .Select( headerText => new SkillCard { Heading = headerText, CardColor = color, CardPower = headerText[headerText.IndexOfAny(new[] { '0', '1', '2', '3', '4', '5', '6' })] .ToString(CultureInfo.InvariantCulture).ParseAs<int>() } ) ); var jsonSettings = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, Converters = new List<JsonConverter> { new Newtonsoft.Json.Converters.StringEnumConverter() } }; var json = JsonConvert.SerializeObject(cardsFromBox, Newtonsoft.Json.Formatting.Indented, jsonSettings); using (var sr = new StreamWriter(@"..\..\PegasusJsonGeneratorOutput\GeneratedJson\Decks\"+color+"Deck.json")) { sr.Write(json); } }
public SkillCard DrawSkillCard(SkillCardColor color, Player player = null) { return(DrawSkillCards(color, 1, player).FirstOrDefault()); }
public IEnumerable<SkillCard> DrawSkillCards(SkillCardColor color, int count, Player player = null) { List<SkillCard> ret; switch (color) { case SkillCardColor.Engineering: ret = CurrentGameState.EngineeringDeck.DrawMany(count).ToList(); break; case SkillCardColor.Leadership: ret = CurrentGameState.LeadershipDeck.DrawMany(count).ToList(); break; case SkillCardColor.Piloting: ret = CurrentGameState.PilotingDeck.DrawMany(count).ToList(); break; case SkillCardColor.Politics: ret = CurrentGameState.PoliticsDeck.DrawMany(count).ToList(); break; case SkillCardColor.Tactics: ret = CurrentGameState.TacticsDeck.DrawMany(count).ToList(); break; case SkillCardColor.Treachery: ret = CurrentGameState.TreacheryDeck.DrawMany(count).ToList(); break; default: return new List<SkillCard>(); } if (player != null) player.TakeCard(ret); return ret; }
public SkillCard DrawSkillCard(SkillCardColor color, Player player = null) { return DrawSkillCards(color, 1, player).FirstOrDefault(); }
/// <summary> /// Initializes a new instance of the <see cref="SkillCardDeck"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="color">The color.</param> /// <param name="fileLocation">The file location.</param> public SkillCardDeck(ILog logger, SkillCardColor color, string fileLocation) : base(logger) { InitDeck(color, fileLocation); }
/// <summary> /// Returns the maximum number of cards the character can draw of this color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public int ColorMax(SkillCardColor color) { return(DefaultDrawColors.Select(draw => draw.Count(x => x == color)).Concat(new[] { 0 }).Max()); }
public SkillCardDeck(ILog logger, SkillCardColor color) : base(logger) { InitDeck(color); }