private IEnumerable<string> MakeEffectChoice(string choiceText, int minChoices, int maxChoices, string[] choices, string[] choiceDescriptions) { RequestChoiceInfo requestChoiceInfo = new RequestChoiceInfo(); requestChoiceInfo.ChoiceType = "EFFECT"; requestChoiceInfo.ChoiceText = choiceText; requestChoiceInfo.MinChoices = minChoices; requestChoiceInfo.MaxChoices = maxChoices; requestChoiceInfo.Choices.AddRange(choices); requestChoiceInfo.ChoiceDescriptions.AddRange(choiceDescriptions); NetworkMessage message = new NetworkMessage(); message.MessageCategory = GameMessages.GamePrefix; message.MessageType = GameMessages.RequestChoice; message.MessageContent = NetworkSerializer.Serialize(requestChoiceInfo); this.Strategy.connection.SendMessage(message); this.Strategy.resetEvent.Reset(); this.Strategy.resetEvent.WaitOne(); Debug.Assert(this.Strategy.gameMessage.MessageType == GameMessages.MakeChoice); ChoiceInfo choiceInfo = NetworkSerializer.Deserialize<ChoiceInfo>(this.Strategy.gameMessage.MessageContent); return choiceInfo.Choices; }
private IEnumerable<string> MakeCardPileChoice(string choiceText, IEnumerable<string> choices, int minChoices, int maxChoices, ChoiceSource choiceSource, bool card, bool order) { RequestChoiceInfo requestChoiceInfo = new RequestChoiceInfo(); requestChoiceInfo.ChoiceType = order ? "ORDER" : card ? "CARD" : "PILE"; requestChoiceInfo.ChoiceText = choiceText; requestChoiceInfo.ChoiceSource = choiceSource.ToString(); requestChoiceInfo.MinChoices = minChoices; requestChoiceInfo.MaxChoices = maxChoices; requestChoiceInfo.Choices.AddRange(choices); NetworkMessage message = new NetworkMessage(); message.MessageCategory = GameMessages.GamePrefix; message.MessageType = GameMessages.RequestChoice; message.MessageContent = NetworkSerializer.Serialize(requestChoiceInfo); this.Strategy.connection.SendMessage(message); this.Strategy.resetEvent.Reset(); this.Strategy.resetEvent.WaitOne(); Debug.Assert(this.Strategy.gameMessage.MessageType == GameMessages.MakeChoice); ChoiceInfo choiceInfo = NetworkSerializer.Deserialize<ChoiceInfo>(this.Strategy.gameMessage.MessageContent); return choiceInfo.Choices; }