Ejemplo n.º 1
0
 public bool UpdateDeckPile(GameTime gameTime, DiscardPile discardPile)
 {
     if (!SSEngine.IsACardMoving)
     {
         SSEngine.IsACardMoving = true;
         deckPile[2].IsCovered  = false;
         deckPile[2].IsMoving   = true;
         deckPile[2].CourseToCard(discardPile.GetDiscardSprite());
         elapsedTime = gameTime.TotalGameTime.TotalMilliseconds;
         drawEffect.Play();
     }
     else if (deckPile[2].Time >= gameTime.TotalGameTime.TotalMilliseconds - elapsedTime && deckPile[2].IsMoving)
     {
         deckPile[2].Move(gameTime, deckPile[0].Position, discardPile.GetDiscardSprite().Position);
     }
     else if (deckPile[2].Time < gameTime.TotalGameTime.TotalMilliseconds - elapsedTime && deckPile[2].IsMoving)
     {
         discardPile.DiscardList.Add(RetrieveCard(3));
         Deck.RemoveAt(3);
         deckPile[2].Position    = deckPile[0].Position;
         deckPile[2].Destination = deckPile[2].CollisionRectangle;
         SSEngine.IsACardMoving  = false;
         deckPile[2].IsMoving    = false;
         elapsedTime             = 0.0;
         setEffect.Play();
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
0
 public bool UpdateHand(GameTime gameTime, int i, DiscardPile discardPile)
 {
     if (!SSEngine.IsACardMoving)
     {
         SSEngine.IsACardMoving = true;
         hand[i].IsMoving       = true;
         hand[i].CourseToCard(discardPile.GetDiscardSprite());
         cardInHandPos = hand[i].Position;
         elaspedTime   = gameTime.TotalGameTime.TotalMilliseconds;
         hand[i].IsFromFaceDownToFaceUp = false;
     }
     else if (hand[i].Time >= gameTime.TotalGameTime.TotalMilliseconds - elaspedTime && hand[i].IsMoving)
     {
         hand[i].Move(gameTime, cardInHandPos, discardPile.GetDiscardSprite().Position);
     }
     else if (hand[i].Time < gameTime.TotalGameTime.TotalMilliseconds - elaspedTime && hand[i].IsMoving)
     {
         discardPile.DiscardList.Add(hand[i].Clone(discardPile.GetDiscardSprite().Position));
         SSEngine.IsACardMoving = false;
         hand[i].IsMoving       = false;
         elaspedTime            = 0.0;
         RemoveCardFromHand(i);
         setEffect.Play();
         return(true);
     }
     return(false);
 }
Ejemplo n.º 3
0
        public bool UpdateHand(GameTime gameTime, MouseState mouse, DiscardPile discardPile, Suit?changedSuit, ref string cardAbility)
        {
            for (int i = end - 1; i >= start; i--)
            {
                if (hand[i].CollisionRectangle.Contains(mouse.X, mouse.Y))
                {
                    cardsAbility(hand[i], ref cardAbility);
                }

                if (!SSEngine.IsACardMoving)
                {
                    if (mouse.LeftButton == ButtonState.Pressed &&
                        hand[i].CollisionRectangle.Contains(mouse.X, mouse.Y) &&
                        handChecking(hand[i], discardPile, changedSuit, ref cardAbility))
                    {
                        SSEngine.IsACardMoving = true;
                        hand[i].IsMoving       = true;
                        hand[i].CourseToCard(discardPile.GetDiscardSprite());
                        elaspedTime = gameTime.TotalGameTime.TotalMilliseconds;
                        cardAbility = String.Empty;
                        if (SSEngine.VersionStage == MenuStage.LAN)
                        {
                            SSEngine.LANClient.Send((byte)NetGame.Set, (byte)i);
                        }
                        else if (SSEngine.VersionStage == MenuStage.Online)
                        {
                            NetOutgoingMessage msg = SSEngine.Peer.CreateMessage();
                            msg.Write((byte)NetGame.Set);
                            msg.Write((byte)i);
                            SSEngine.Peer.SendMessage(msg, SSEngine.Peer.Connections[0], NetDeliveryMethod.ReliableOrdered);
                        }
                    }

                    if (leftButton.UpdateButton(mouse, gameTime) && start != 0)
                    {
                        if (start > 0)
                        {
                            start--;
                            end--;
                            for (int k = start, j = 0; k < end; k++, j++)
                            {
                                hand[k].Position = positions[j];
                            }
                        }
                    }
                    else if (rightButton.UpdateButton(mouse, gameTime) && hand.Count > end)
                    {
                        if (hand.Count - end > 0)
                        {
                            start++;
                            end++;
                            for (int k = start, j = 0; k < end; k++, j++)
                            {
                                hand[k].Position = positions[j];
                            }
                        }
                    }
                }
                else if (hand[i].Time >= gameTime.TotalGameTime.TotalMilliseconds - elaspedTime && hand[i].IsMoving)
                {
                    hand[i].Move(gameTime);
                }
                else if (hand[i].Time < gameTime.TotalGameTime.TotalMilliseconds - elaspedTime && hand[i].IsMoving)
                {
                    discardPile.DiscardList.Add(hand[i].Clone(discardPile.GetDiscardSprite().Position));
                    SSEngine.IsACardMoving = false;
                    hand[i].IsMoving       = false;
                    elaspedTime            = 0.0;
                    RemoveCardFromHand(i);
                    setEffect.Play();
                    return(true);
                }
            }
            return(false);
        }