Ejemplo n.º 1
0
        /// <summary>
        /// Drop Card on drop zone
        /// </summary>
        /// <param name="card"></param>
        /// <param name="moveCard">card's value</param>
        /// <param name="player"></param>
        public void Drop(CardBehaviour moveCard, NetworkPlayerView player)
        {
            if (droppedCards.ContainsKey(moveCard))
            {
                return;
            }

            droppedCards.Add(moveCard, player);
            SetParent(moveCard.transform, player);
        }
Ejemplo n.º 2
0
        private void DropCard()
        {
            DropZoneController   dropzone  = GameObject.FindGameObjectWithTag("DropZone").GetComponent <DropZoneController>();
            NetworkPlayerView    player    = originalParent.transform.parent.GetComponent <NetworkPlayerView>();
            LocalPlayerCardsView cardsView = FindObjectOfType <LocalPlayerCardsView>();
            List <Card>          cardsList = cardsView.deckDictionary.Keys.ToList();

            if (!dropzone.TryToDropCard(transform.GetComponent <CardBehaviour>(), player))
            {
                StartCoroutine(AnimationToOriginalPosition());
            }
        }
Ejemplo n.º 3
0
        private void PlacePlayer(NetworkPlayer player, NetworkPlayerView spawnPosition)
        {
            spawnPosition.SetPlayerModel(player);

            if (!_spawnedPositions.ContainsKey(player.netId))
            {
                _spawnedPositions.Add(player.netId, spawnPosition);
            }
            else
            {
                _spawnedPositions[player.netId] = spawnPosition;
            }
        }
Ejemplo n.º 4
0
        public bool TryToDropCard(CardBehaviour card, NetworkPlayerView player)
        {
            Card[] cardsOnTable = droppedCards.Keys.Select(behaviour => behaviour.Card).ToArray();

            bool isCardValid = RoundRules.IsDroppedCardValid(card.Card, player.NetworkPlayer.PlayerCards, player.NetworkPlayer.RoundTrump, cardsOnTable);

            Debug.Log($"TryToDropCard: isCardValid{isCardValid} _isCardInDropZone{_isCardInDropZone} card:{card.Card} PlayerCards:{player.NetworkPlayer.PlayerCards.ToStringAll()} Trump:{player.NetworkPlayer.RoundTrump} cardsOnTable:{cardsOnTable.ToStringAll()}");


            if (isCardValid && _isCardInDropZone)
            {
                Drop(card, player);
                LocalPlayerView.NetworkPlayer.EndMakeMove(card.Card);
                return(true);
            }



            return(false);
        }
Ejemplo n.º 5
0
        public void SetServerPlayerPosition(NetworkPlayer player)
        {
            if (_spawnedPositions.ContainsKey(player.netId))
            {
                //for a mode, when client are server.
                //to forbid adding player 2 times: as client and as server
                return;
            }

            if (_nextSpawnPoint == null || !CenterPos.IsPlaceBusy)
            {
                _nextSpawnPoint = CenterPos;
            }

            PlacePlayer(player, _nextSpawnPoint);

            player.ChangePlaceId(_nextSpawnPoint.PlaceID);

            _nextSpawnPoint = _nextSpawnPoint == LeftPos ? RightPos : LeftPos;
        }
Ejemplo n.º 6
0
        private void SetParent(Transform card, NetworkPlayerView player)
        {
            PlaySound("Pickup_01");

            RectTransform pRect       = (RectTransform)player.transform;
            RectTransform cRect       = (RectTransform)card.transform;
            Vector3       newPosition = new Vector3(0, 0, 0);
            Vector3       newRotation = new Vector3(0, 0, 0);

            card.GetComponent <CardDragController>().enabled   = false;
            card.GetComponent <CardChangeController>().enabled = false;

            cRect.localScale = new Vector3(0.7f, 0.7f, 0.7f);
            card.SetParent(transform, true);

            cRect.anchorMax = new Vector2(0.5f, 0.5f);
            cRect.anchorMin = new Vector2(0.5f, 0.5f);
            cRect.pivot     = new Vector2(0.5f, 0.5f);

            if (player.tag == "Robot1")
            {
                newPosition -= new Vector3(cRect.rect.width / 2, 0, 0);
                newRotation  = new Vector3(0, 0, 25);
            }
            else if (player.tag == "Robot2")
            {
                newPosition += new Vector3(cRect.rect.width / 2, 0, 0);
                newRotation  = new Vector3(0, 0, -25);
            }
            else if (player.tag == "Player")
            {
                newPosition  -= new Vector3(0, cRect.rect.width / 2, 0);
                card.rotation = Quaternion.Euler(0, 0, 0);
            }

            StartCoroutine(DropAnim(cRect, newPosition, newRotation));
        }
Ejemplo n.º 7
0
 public WatchingRoundResultsStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.WatchingRoundResult)
 {
 }
Ejemplo n.º 8
0
 public BiddingStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.Bidding)
 {
 }
Ejemplo n.º 9
0
 public LeavedRoundWatchingHandResultStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.LeftRoundWatchingHandResult)
 {
 }
Ejemplo n.º 10
0
 public GetRiddingOfTwoExtraCardsStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.GetRiddingOfTwoExtraCards)
 {
 }
Ejemplo n.º 11
0
 public LeavedRoundStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.LeftRound)
 {
 }
Ejemplo n.º 12
0
 public void PlayerDisconnectedServer(NetworkInstanceId id)
 {
     _nextSpawnPoint = _spawnedPositions[id];
     RemovePlayer(id);
 }
Ejemplo n.º 13
0
 public PlayerStateView(NetworkPlayerView networPlayerView, PlayerState stateToView)
 {
     PlayerView = networPlayerView;
 }
Ejemplo n.º 14
0
 public MakingMoveOrPassStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.MakingMoveOrPass)
 {
 }
Ejemplo n.º 15
0
 public WaitingForNewRoundStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.WaitingForNewRound)
 {
 }
Ejemplo n.º 16
0
 public WaitingForNewGameStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.WaitingForNewGame)
 {
 }
Ejemplo n.º 17
0
        /// <summary>
        /// Reset drop zone cards, do last hand and hand to winner animation
        /// </summary>
        /// <param name="handWinner"></param>
        /// <returns></returns>
        private IEnumerator ResetDropZone(NetworkPlayerView handWinner)
        {
            Debug.Log("ResetDropZone");
            Transform            lastHand = LastHandPanel.transform;
            List <CardBehaviour> cards    = droppedCards.Keys.ToList();
            Dictionary <CardBehaviour, Transform> lastCards = new Dictionary <CardBehaviour, Transform>();

            CardBehaviour playerCard = cards.Find(x => (droppedCards[x].tag == "Player"));
            CardBehaviour r1Card     = cards.Find(x => (droppedCards[x].tag == "Robot1"));
            CardBehaviour r2Card     = cards.Find(x => (droppedCards[x].tag == "Robot2"));

            droppedCards.Clear();

            int   j    = 0;
            float time = 0;

            bool lastMoveEnd = true;

            if (playerCard != null)
            {
                LocalNetworkPlayer networkPlayer = GameObject.FindGameObjectWithTag("Player").GetComponent <LocalNetworkPlayer>();
                if (networkPlayer != null && networkPlayer.badCard != null)
                {
                    foreach (Transform card in transform)
                    {
                        if (card.GetComponent <CardBehaviour>().Card.CompareTo(networkPlayer.badCard.GetComponent <CardBehaviour>().Card) == 0)
                        {
                            lastCards.Add(card.GetComponent <CardBehaviour>(), lastHand.GetChild(j++));
                            break;
                        }
                    }
                }
                else
                {
                    lastCards.Add(playerCard, lastHand.GetChild(j++));
                }

                lastMoveEnd = false;
            }

            if (r1Card != null)
            {
                lastMoveEnd = false;
                lastCards.Add(r1Card, lastHand.GetChild(j++));
            }

            if (r2Card != null)
            {
                lastMoveEnd = false;
                lastCards.Add(r2Card, lastHand.GetChild(j));
            }

            StartCoroutine(AnimationToHandWinner(new List <CardBehaviour>(lastCards.Keys), handWinner.transform.GetChild(0).GetChild(1)));

            yield return(new WaitForSeconds(1.3f));

            while (time < 0.2f)
            {
                time += Time.deltaTime;

                foreach (var card in lastCards.Keys)
                {
                    Transform zone = lastCards[card];

                    float currentScale = Mathf.Lerp(1, 0, time / 0.2f);
                    zone.localScale = new Vector3(currentScale, zone.localScale.y, zone.localScale.z);
                }

                yield return(null);
            }

            time = 0;
            bool flag = false;

            while (time < 0.2f)
            {
                time += Time.deltaTime;

                foreach (var card in lastCards.Keys)
                {
                    Transform zone = lastCards[card];

                    if (flag == false)
                    {
                        zone.GetComponent <Image>().sprite         = card.CardImg.sprite;
                        zone.GetComponent <Image>().color          = Color.white;
                        zone.GetComponent <Image>().preserveAspect = true;
                    }

                    float currentScale = Mathf.Lerp(0, 1, time / 0.2f);
                    zone.localScale = new Vector3(currentScale, zone.localScale.y, zone.localScale.z);
                }

                flag = true;
                yield return(null);
            }

            while (lastMoveEnd != true)
            {
                yield return(null);
            }

            ResetHandDropes();
            Debug.Log("ResetDropZone END.");
        }