Example #1
0
            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;
            }
Example #2
0
            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;
            }