/// <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); }
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()); } }
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; } }
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); }
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; }
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)); }
public WatchingRoundResultsStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.WatchingRoundResult) { }
public BiddingStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.Bidding) { }
public LeavedRoundWatchingHandResultStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.LeftRoundWatchingHandResult) { }
public GetRiddingOfTwoExtraCardsStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.GetRiddingOfTwoExtraCards) { }
public LeavedRoundStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.LeftRound) { }
public void PlayerDisconnectedServer(NetworkInstanceId id) { _nextSpawnPoint = _spawnedPositions[id]; RemovePlayer(id); }
public PlayerStateView(NetworkPlayerView networPlayerView, PlayerState stateToView) { PlayerView = networPlayerView; }
public MakingMoveOrPassStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.MakingMoveOrPass) { }
public WaitingForNewRoundStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.WaitingForNewRound) { }
public WaitingForNewGameStateView(NetworkPlayerView networPlayerView) : base(networPlayerView, PlayerState.WaitingForNewGame) { }
/// <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."); }