Esempio n. 1
0
        public void drawPlayer0(MonopolyDealServiceReference.PlayFieldModel pfm)
        {
            textBoxHand1.Text = "";
            textBoxBank1.Text = "";
            textBoxProp1.Text = "";

            foreach (MonopolyDealServiceReference.Card card in pfm.playerModels[0].hand.cardsInHand)
            {
                textBoxHand1.Text = textBoxHand1.Text + "ID:" + card.cardID + " " + card.cardName + " $" + card.cardValue + Environment.NewLine;

                if (thisPlayerGuid.CompareTo(pfm.playerModels[0].guid) == 0)
                {
                    updateTextBoxLog(card.ToString());
                    popluateHandListBox(card);
                }
            }
            foreach (MonopolyDealServiceReference.Card card in pfm.playerModels[0].bank.cardsInBank)
            {
                textBoxBank1.Text = textBoxBank1.Text + "ID:" + card.cardID + " " + card.cardName + " $" + card.cardValue + Environment.NewLine;
            }
            foreach (MonopolyDealServiceReference.PropertyCardSet cardSet in pfm.playerModels[0].propertySets.playersPropertySets)
            {
                foreach (MonopolyDealServiceReference.Card card in cardSet.properties)
                {
                    textBoxProp1.Text = textBoxProp1.Text + "ID:" + card.cardID + " " + card.cardName + " $" + card.cardValue + Environment.NewLine;
                }
            }
        }
 public PickSetToRentOn(MonopolyDealServiceReference.PlayFieldModel pfm, Guid thisClientGuid, RequestHanderMonopolyDeal rqmd, MonopolyDealServiceReference.Card card, Guid targetedPlayerWildRent)
 {
     request = rqmd;
     this.RentCard = card;
     targetedPlayer = targetedPlayerWildRent;
     InitializeComponent();
     displayOriginalSet(pfm, thisClientGuid);
     displayCardsInHand(pfm);
 }
        public void displayLobbies(MonopolyDealServiceReference.GameLobby[] lobbies)
        {
            SendOrPostCallback callBack = delegate(Object state)
            {
                mainForm.displayLobbiesState(state as MonopolyDealServiceReference.GameLobby[]);
            };

            _uiSyncContext.Post(callBack, lobbies);
        }
 public void processMessage(MonopolyDealServiceReference.Message message)
 {
     //INCOMPLETE
     if (message is MonopolyDealServiceReference.FieldUpdateMessage)
     {
         MonopolyDealServiceReference.FieldUpdateMessage messageFM = (MonopolyDealServiceReference.FieldUpdateMessage)message;
         displayField(messageFM.fieldModel);
         savefield(messageFM.fieldModel);
     }
 }
        public void displayField(MonopolyDealServiceReference.PlayFieldModel pfm)
        {
            displayHandsBanksPropertySets(pfm);
            //Check if you can take an action

            //Display anyActions taken last turn
            //Display the whose turn it is
            //prevent players whose turn is is not from doing anything but watch
            //Present the player whose turn it is with the actions they can take this turn
        }
 private void displayCardsInHand(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     foreach (MonopolyDealServiceReference.PlayerModel p in this.request.CurrentPlayFieldModel.playerModels)
     {
         if (p.guid.CompareTo(request.thisClientGuid) == 0)
         {
             listBoxCardsInHand.DataSource = p.hand.cardsInHand;
             listBoxCardsInHand.DisplayMember = "description";
         }
     }
 }
Esempio n. 7
0
        public void bindPlayer2(MonopolyDealServiceReference.PlayFieldModel pfm)
        {
            listBoxPlayer2Hand.DataSource = requestHandler.CurrentPlayFieldModel.playerModels.ElementAt(2).hand.cardsInHand;
            listBoxPlayer2Hand.DisplayMember = "description";
            //listBoxPlayer2Hand.ValueMember = "cardID";

            listBoxPlayer2Bank.DataSource = requestHandler.CurrentPlayFieldModel.playerModels.ElementAt(2).bank.cardsInBank;
            listBoxPlayer2Bank.DisplayMember = "description";
            //listBoxPlayer2Bank.ValueMember = "cardID";

            listBoxPSetsP2.DataSource = requestHandler.CurrentPlayFieldModel.playerModels.ElementAt(2).propertySets.playersPropertySets;
            listBoxPSetsP2.DisplayMember = "propertySetColor";
        }
        private void displayHandsBanksPropertySets(MonopolyDealServiceReference.PlayFieldModel pfm)
        {
            // The UI thread won't be handling the callback, but it is the only one allowed to update the controls.
            // So, we will dispatch the UI update back to the UI sync context.

            //Create a SendOrPostCallback delegate with an anon method which recieves an Object called state and runs code in the SychronisationContext it is marshalled to using Post
            SendOrPostCallback callback =
                delegate(object state)
                {
                    mainForm.drawField((MonopolyDealServiceReference.PlayFieldModel)state);
                    //state is a string object example
                    //mainForm.updateTextBoxLog(state.ToString());
                };
            //Post takes a delagate and a State object and runs the delegate(State object) in the context Post is called on.
            uiSync.Post(callback, pfm);
        }
Esempio n. 9
0
        //public void displayThisClientHand(MonopolyDealServiceReference. player)
        // {
        //player
        //throw private new NotImplementedException();
        // }
        public void drawField(MonopolyDealServiceReference.PlayFieldModel pfm)
        {
            textBoxHand1.Text = "";
            //Player0
            int numPlayers = pfm.playerModels.Count();

            switch (numPlayers)
            {
                case 0:
                    break;
                case 1:
                    drawPlayer0(pfm);
                    break;
                case 2:
                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    break;
                case 3:
                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    drawPlayer2(pfm);
                    break;
                case 4:

                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    drawPlayer2(pfm);
                    drawPlayer3(pfm);
                    break;
                case 5:
                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    drawPlayer2(pfm);
                    drawPlayer3(pfm);
                    drawPlayer4(pfm);
                    break;
            }
        }
Esempio n. 10
0
 /// <summary>
 /// Gets all of the clients property, house, hotel and banked cards and puts them in a list passed to the method.
 /// Returns the total value of the players played cards
 /// </summary>
 /// <param name="pfm">The current game state</param>
 /// <param name="playersPlayedCards">List to place cards in.</param>
 /// <returns>Total value of all of a players played cards</returns>
 public int getAllPlayersPlayedCards(MonopolyDealServiceReference.PlayFieldModel pfm, List<MonopolyDealServiceReference.Card> playersPlayedCards)
 {
     int totalValue = 0;
     foreach (MonopolyDealServiceReference.PlayerModel player in pfm.playerModels)
     {
         if (requestHandler.thisClientGuid.CompareTo(player.guid) == 0)
         {
             foreach (MonopolyDealServiceReference.Card c in player.bank.cardsInBank)
             {
                 playersPlayedCards.Add(c);
                 totalValue += c.cardValue;
             }
             foreach (MonopolyDealServiceReference.PropertyCardSet ps in player.propertySets.playersPropertySets)
             {
                 foreach (MonopolyDealServiceReference.Card property in ps.properties)
                 {
                     playersPlayedCards.Add(property);
                     totalValue += property.cardValue;
                 }
                 if (ps.hasHouse && ps.house != null)
                 {
                     playersPlayedCards.Add(ps.house);
                     totalValue += ps.house.cardValue;
                     if (ps.hasHotel && ps.hotel != null)
                     {
                         playersPlayedCards.Add(ps.hotel);
                         totalValue += ps.hotel.cardValue;
                     }
                 }
             }
         }
     }
     return totalValue;
 }
Esempio n. 11
0
 public void drawPlayer4(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     bindPlayer4(pfm);
     if (requestHandler.thisClientGuid.CompareTo(pfm.playerModels[4].guid) == 0)
     {
         BindListBox(4);
         updateAllowAbleActions(pfm.playerModels[4]);
         playerIDNum = 4;
     }
 }
Esempio n. 12
0
 public void drawPlayer0(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     bindPlayer0(pfm);
     if (requestHandler.thisClientGuid.CompareTo(pfm.playerModels[0].guid) == 0)
     {
         //This is the player on this client
         BindListBox(0);
         updateAllowAbleActions(pfm.playerModels[0]);
         playerIDNum = 0;
     }
 }
Esempio n. 13
0
        public void drawField(MonopolyDealServiceReference.PlayFieldModel pfm)
        {
            //Player0
            int numPlayers = pfm.playerModels.Count();
            //Draw playpile
            listBoxDiscardPile.DataSource = pfm.playpile.playPile;
            listBoxDiscardPile.DisplayMember = "description";
            switch (numPlayers)
            {
                case 0:
                    break;
                case 1:
                    drawPlayer0(pfm);
                    playersPlayedCards = new List<MonopolyDealServiceReference.Card>();
                    playersSelectedToPayWithCards = new List<MonopolyDealServiceReference.Card>();
                    bindSelectPlayersPropertyCardSetsPropertyCards(pfm);
                    bindPlayerPayDebt(pfm);
                    break;
                case 2:
                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    playersPlayedCards = new List<MonopolyDealServiceReference.Card>();
                    playersSelectedToPayWithCards = new List<MonopolyDealServiceReference.Card>();
                    bindSelectPlayersPropertyCardSetsPropertyCards(pfm);
                    bindPlayerPayDebt(pfm);
                    break;
                case 3:
                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    drawPlayer2(pfm);
                    playersPlayedCards = new List<MonopolyDealServiceReference.Card>();
                    playersSelectedToPayWithCards = new List<MonopolyDealServiceReference.Card>();
                    bindSelectPlayersPropertyCardSetsPropertyCards(pfm);
                    bindPlayerPayDebt(pfm);
                    break;
                case 4:

                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    drawPlayer2(pfm);
                    drawPlayer3(pfm);
                    playersPlayedCards = new List<MonopolyDealServiceReference.Card>();
                    playersSelectedToPayWithCards = new List<MonopolyDealServiceReference.Card>();
                    bindSelectPlayersPropertyCardSetsPropertyCards(pfm);
                    bindPlayerPayDebt(pfm);
                    break;
                case 5:
                    drawPlayer0(pfm);
                    drawPlayer1(pfm);
                    drawPlayer2(pfm);
                    drawPlayer3(pfm);
                    drawPlayer4(pfm);
                    playersPlayedCards = new List<MonopolyDealServiceReference.Card>();
                    playersSelectedToPayWithCards = new List<MonopolyDealServiceReference.Card>();
                    bindSelectPlayersPropertyCardSetsPropertyCards(pfm);
                    bindPlayerPayDebt(pfm);
                    break;
            }
        }
Esempio n. 14
0
 public void displayLobbiesState(MonopolyDealServiceReference.GameLobby[] gameLobbies)
 {
     if (gameLobbies.Length >= 1)
     {
         listBoxGameLobbies.DataSource = gameLobbies;
         listBoxGameLobbies.DisplayMember = "description";
     }
     else
     {
         List<String> empty = new List<string>();
         empty.Add("Create new game");
         listBoxGameLobbies.DataSource = empty;
     }
 }
Esempio n. 15
0
 public void askWhatSetToAddHouseTo(MonopolyDealServiceReference.Player p, MonopolyDealServiceReference.Card c)
 {
     throw new NotImplementedException();
 }
Esempio n. 16
0
 private void bindPlayerPayDebt(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     int playersTotalValue = getAllPlayersPlayedCards(pfm, playersPlayedCards);
     listBoxAllPlayersPlayedCards.DataSource = playersPlayedCards;
     listBoxAllPlayersPlayedCards.DisplayMember = "description";
     listBoxCardsToPayWith.DataSource = playersSelectedToPayWithCards;
     listBoxCardsToPayWith.DisplayMember = "description";
     foreach (MonopolyDealServiceReference.PlayerModel p in requestHandlerMD.CurrentPlayFieldModel.playerModels)
     {
         if (p.guid.CompareTo(requestHandlerMD.thisClientGuid) == 0)
         {
             labelAmountToPay.Text = "Total Amount of Debt: $M" + p.amountOwedToAnotherPlayer.ToString();
             break;
         }
     }
 }
Esempio n. 17
0
 public void notifyOtherPlayerTurnStarted(MonopolyDealServiceReference.Player p)
 {
     throw new NotImplementedException();
 }
Esempio n. 18
0
 public void displayPlayerHand(MonopolyDealServiceReference.Player player)
 {
     throw new NotImplementedException();
 }
 private void bindSelectPlayersPropertyCardSetsPropertyCards(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     if (pfm.playerModels != null)
     {
         listBoxPlayers.DataSource = pfm.playerModels;
         listBoxPlayers.DisplayMember = "name";
         if (listBoxPlayers.SelectedValue != null)
         {
             listBoxSets.DataSource = ((MonopolyDealServiceReference.PlayerModel)listBoxPlayers.SelectedValue).propertySets.playersPropertySets;
             listBoxSets.DisplayMember = "propertySetColor";
             if (listBoxSets.SelectedValue != null)
             {
                 listBoxCardsInSet.DataSource = ((MonopolyDealServiceReference.PropertyCardSet)listBoxSets.SelectedValue).properties.ToArray<MonopolyDealServiceReference.Card>();
                 listBoxCardsInSet.DisplayMember = "description";
                 listBoxCardsInSet.ValueMember = "cardID";
             }
         }
     }
 }
Esempio n. 20
0
 public void recieveMessage(MonopolyDealServiceReference.Message message)
 {
     addToLog("Message Recieved guid" + message.thisMessageGuid);
     clientMessageHandler.processMessage(message);
 }
 public void checkIfClientTurn(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     //MonopolyDealServiceReference.TurnActionModel tam = pfm.
 }
 public MovePropertyToNewSetForm(MonopolyDealServiceReference.PlayFieldModel pfm, Guid thisClientGuid, RequestHanderMonopolyDeal rqmd)
 {
     request = rqmd;
     InitializeComponent();
     displayOriginalSet(pfm, thisClientGuid);
 }
        private void displayOriginalSet(MonopolyDealServiceReference.PlayFieldModel pfm, Guid thisClientGuid)
        {
            //Get correct player
            MonopolyDealServiceReference.PlayerModel playerClient = null;
            foreach (MonopolyDealServiceReference.PlayerModel p in pfm.playerModels)
            {
                if (p.guid.CompareTo(thisClientGuid) == 0)
                {
                    playerClient = p;
                    break;
                }
            }
            if (playerClient != null)
            {
                this.listBoxPickOriginalSetToRemoveCardFrom.DataSource = playerClient.propertySets.playersPropertySets;
                this.listBoxPickOriginalSetToRemoveCardFrom.DisplayMember = "propertySetColor";

                this.listBoxSetToMovePropertyTo.DataSource = playerClient.propertySets.playersPropertySets.ToArray<MonopolyDealServiceReference.PropertyCardSet>();
                this.listBoxSetToMovePropertyTo.DisplayMember = "propertySetColor";
            }
        }
Esempio n. 24
0
 public void popluateHandListBox(MonopolyDealServiceReference.Card card)
 {
     //MDWcfServiceLibrary.Card c = new MDWcfServiceLibrary.Card(card.cardName, card.cardText, card.cardValue, cardTypeConvert(card));
     //listBox1.Items.Add(card.description);
 }
Esempio n. 25
0
 public void updateAllowAbleActions(MonopolyDealServiceReference.PlayerModel pm)
 {
     buttonDraw2.Enabled = false;
     buttonBankCard.Enabled = false;
     buttonDraw5OnTurnStart.Enabled = false;
     buttonPlayPropNewSetFromHand.Enabled = false;
     buttonDiscard1.Enabled = false;
     buttonEndTurn.Enabled = false;
     buttonAdd.Enabled = false;
     buttonRemove.Enabled = false;
     buttonPay.Enabled = false;
     if (!(pm.actionsCurrentlyAllowed == null || pm.actionsCurrentlyAllowed.Length == 0))
     {
         foreach (MonopolyDealServiceReference.TurnActionTypes tAT in pm.actionsCurrentlyAllowed)
         {
             if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.drawTwoCardsAtStartOfTurn) == 0)
             {
                 buttonDraw2.Enabled = true;
                 timerForPollingState.Stop();
             }
             else if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.BankActionCard) == 0)
             {
                 buttonBankCard.Enabled = true;
                 timerForPollingState.Stop();
             }
             else if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.PlayPropertyCard_New_Set) == 0)
             {
                 buttonPlayPropNewSetFromHand.Enabled = true;
                 timerForPollingState.Stop();
             }
             else if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.drawFiveCardsAtStartOfTurn) == 0)
             {
                 buttonDraw5OnTurnStart.Enabled = true;
                 timerForPollingState.Stop();
             }
             else if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.Discard_1_Card) == 0 || tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.Discard_2_Cards) == 0 || tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.Discard_3_Cards) == 0 || tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.Discard_4_Cards) == 0 || tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.Discard_5_Cards) == 0)
             {
                 buttonDiscard1.Enabled = true;
                 timerForPollingState.Stop();
             }
             else if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.EndTurn) == 0)
             {
                 buttonEndTurn.Enabled = true;
                 timerForPollingState.Stop();
             }
             else if (tAT.CompareTo(MonopolyDealServiceReference.TurnActionTypes.PayDebt) == 0)
             {
                 buttonAdd.Enabled = true;
                 buttonRemove.Enabled = true;
                 buttonPay.Enabled = true;
                 timerForPollingState.Stop();
                 MessageBox.Show("You are in debt! Pay Debt or Just Say No!");
             }
         }
     }
 }
 internal void playPropertyToSelectedSet(MonopolyDealServiceReference.PropertyCard pc, MonopolyDealServiceReference.PropertyCardSet pcs)
 {
     getServiceReady();
     try
     {
         if (monopolyDealService.playPropertyCardMD(null, pc, pcs, thisClientGuid.boxGuid(), gameLobbyGuid.boxGuid(), CurrentPlayFieldModel.thisPlayFieldModelInstanceGuid.boxGuid(), null))
         {
             addToLog("Property played to new set");
         }
         else
         {
             addToLog("Error, card not played");
         }
     }
     catch (Exception ex)
     {
         addToLog(ex.ToString());
         monopolyDealService.Close();
     }
 }
 /*
 public void processMessage(MonopolyDealServiceReference.Message message)
 {
     //INCOMPLETE
     if (message is MonopolyDealServiceReference.FieldUpdateMessage)
     {
         MonopolyDealServiceReference.FieldUpdateMessage messageFM = (MonopolyDealServiceReference.FieldUpdateMessage)message;
         displayField(messageFM.fieldModel);
         savefield(messageFM.fieldModel);
     }
 }
 */
 public void savefield(MonopolyDealServiceReference.PlayFieldModel pfm)
 {
     this.playFieldModel = pfm;
 }
 internal bool slyDeal(MonopolyDealServiceReference.ActionCard Card, Guid targetedPlayer, MonopolyDealServiceReference.PropertyCardSet targetedSet, MonopolyDealServiceReference.Card targetedCard)
 {
     getServiceReady();
     try
     {
         MonopolyDealServiceReference.BoolResponseBox response;
         response = monopolyDealService.playActionCardSlyDealMD(Card.cardID, targetedPlayer.boxGuid(), targetedCard.cardID, targetedSet.guid.boxGuid(),
                thisClientGuid.boxGuid(), gameOnServiceGuid.boxGuid(), CurrentPlayFieldModel.thisPlayFieldModelInstanceGuid.boxGuid());
         addToLog(response.message);
         return response.success;
     }
     catch (Exception ex)
     {
         addToLog(ex.ToString());
         monopolyDealService.Close();
     }
     return false;
 }
        public UseActionCardForm(MonopolyDealServiceReference.PlayFieldModel pfm, Guid thisClientGuid, RequestHanderMonopolyDeal rqmd, MonopolyDealServiceReference.ActionCard card)
        {
            InitializeComponent();
            if (card != null)
            {
                if (card.actionType.CompareTo(MonopolyDealServiceReference.ActionCardAction.DealBreaker) == 0)
                {
                    this.Text = "Use DealBreaker Card";
                    buttonUseDealBreaker.Text = "DealBreaker";
                }
                else if (card.actionType.CompareTo(MonopolyDealServiceReference.ActionCardAction.SlyDeal) == 0)
                {
                    this.Text = "Use Sly Deal Card";
                    buttonUseDealBreaker.Text = "Sly Deal";
                    groupBox1.Text = "Pick a Card to Sly Deal";
                }
                else if (card.actionType.CompareTo(MonopolyDealServiceReference.ActionCardAction.House) == 0)
                {
                    this.Text = "Use House Card";
                    buttonUseDealBreaker.Text = "Add House";
                    groupBox1.Text = "Pick a Full Set to add a House to";
                }
                else if (card.actionType.CompareTo(MonopolyDealServiceReference.ActionCardAction.Hotel) == 0)
                {
                    this.Text = "Use Hotel Card";
                    buttonUseDealBreaker.Text = "Add Hotel";
                    groupBox1.Text = "Pick a Full Set to add a Hotel to";
                }
                else if (card.actionType.CompareTo(MonopolyDealServiceReference.ActionCardAction.ForcedDeal) == 0)
                {
                    this.Text = "Use Forced Deal Card";
                    this.Height = 567;
                    buttonUseDealBreaker.Text = "Use Forced Deal";
                    groupBox1.Text = "Pick a Card to take in a Forced Deal";
                }
            }
            request = rqmd;
            this.Card = card;

            if (pfm.playerModels != null)
            {
                listBoxPlayers.DataSource = pfm.playerModels;
                listBoxPlayers.DisplayMember = "name";
                if (listBoxPlayers.SelectedValue != null)
                {
                    listBoxSets.DataSource = ((MonopolyDealServiceReference.PlayerModel)listBoxPlayers.SelectedValue).propertySets.playersPropertySets;
                    listBoxSets.DisplayMember = "propertySetColor";
                    if (listBoxSets.SelectedValue != null)
                    {
                        listBoxCardsInSet.DataSource = ((MonopolyDealServiceReference.PropertyCardSet)listBoxSets.SelectedValue).properties.ToArray<MonopolyDealServiceReference.Card>();
                        listBoxCardsInSet.DisplayMember = "description";
                        listBoxCardsInSet.ValueMember = "cardID";
                    }
                }
            }
            foreach (MonopolyDealServiceReference.PlayerModel player in this.request.CurrentPlayFieldModel.playerModels)
            {
                if (player.guid.CompareTo(request.thisClientGuid) == 0)
                {
                    thisClientPlayer = player;
                    break;
                }
            }

            if (thisClientPlayer != null)
            {
                listBoxSetCardToGiveUpIsIn.DataSource = thisClientPlayer.propertySets.playersPropertySets;
                listBoxSetCardToGiveUpIsIn.DisplayMember = "propertySetColor";
                if (listBoxSetCardToGiveUpIsIn.SelectedValue != null)
                {
                    listBoxCardToGiveUp.DataSource = ((MonopolyDealServiceReference.PropertyCardSet)listBoxSetCardToGiveUpIsIn.SelectedValue).properties.ToArray<MonopolyDealServiceReference.Card>();
                    listBoxCardToGiveUp.DisplayMember = "description";
                    listBoxCardToGiveUp.ValueMember = "cardID";
                }
            }
        }
Esempio n. 30
0
 public void displayLookAtPlayedCardsOptions(MonopolyDealServiceReference.Player currentPlayer, MonopolyDealServiceReference.Player[] players)
 {
     throw new NotImplementedException();
 }