// DealPlayer void DealPlayer() { CardStruct pick = Deck.Pop(); if (Deck.IsEmpty()) { OnDeckConsumed(); } if (pick != null) { string name = "PlayingCards_" + pick.Symbol + pick.Suit; GameObject newObj = GameObject.Find(name); if (newObj == null) { Debug.Log(string.Format("DealPlayer() - Object Not Found: {0}", name)); } Card newCard = newObj.AddComponent(typeof(Card)) as Card; newCard.Definition = pick; newObj.transform.parent = Deck.transform; PlayerHand = newCard; PlayerHand.gameObject.GetComponent <MeshRenderer>().enabled = true; newCard.SetFlyTarget(Transform_Deck.position, Transform_PlayerHand.position, CardFlipDuration); } else { OnDeckConsumed(); } }
void SetCardSprite(CardStruct card) { string spName = ""; ENUM_CARD_TYPE cardType = (ENUM_CARD_TYPE)card.CardType; ENUM_CARD_COLOR cardColor = (ENUM_CARD_COLOR)card.CardColor; switch (cardType) { case ENUM_CARD_TYPE.NONE: break; case ENUM_CARD_TYPE.NUMBER: case ENUM_CARD_TYPE.STOP: case ENUM_CARD_TYPE.FLIP: case ENUM_CARD_TYPE.DRAW2: spName = Utils.GetCardTypeNameWithType(cardType) + "_" + Utils.GetColorNameWithType(cardColor); break; case ENUM_CARD_TYPE.WILD: case ENUM_CARD_TYPE.WILD_DRAW4: spName = Utils.GetCardTypeNameWithType(cardType); break; default: break; } _bg.spriteName = spName; }
public async Task <CardModel> CreateCard() { var newCardId = Guid.NewGuid(); CardModel cardModel = null; var mDict = await StateManager.GetOrAddAsync <IReliableDictionary <Guid, CardStruct> >(_cardDictName); using (var tx = StateManager.CreateTransaction()) { while (await mDict.ContainsKeyAsync(tx, newCardId)) { newCardId = Guid.NewGuid(); } var cardStruct = new CardStruct { Id = newCardId, Value = 0.0m }; await mDict.AddAsync(tx, newCardId, cardStruct); cardModel = StructToModel(cardStruct); // If an exception is thrown before calling CommitAsync, the transaction aborts, all changes are // discarded, and nothing is saved to the secondary replicas. await tx.CommitAsync(); } return(cardModel); }
void ServerPlayCards() { if (PlayCards.Count > 0) { for (int i = 0; i < PlayCards.Count; i++) { CardStruct card = PlayCards[i]; for (int j = 0; j < HaveCards.Count; j++) { CardStruct playCard = HaveCards[j]; if (playCard.UID == card.UID) { HaveCards.RemoveAt(j); NetworkGameMgr.Instance.PlayCard(playCard); //更新牌桌上的显示 NetworkGameMgr.Instance.MyCardsMgr.Rpc_UpdateCardToTable(playCard); } } } //更新卡牌显示 Rpc_SetCardsNumb(HaveCards.Count); NetworkGameMgr.Instance.MyCardsMgr.Rpc_UpdateCardNumbers(); //更新下一个可行动的玩家 NetworkGameMgr.Instance.UpdateCurPlayerIndex(); } }
private static CardModel StructToModel(CardStruct @struct) { return(new CardModel { Id = @struct.Id, Value = @struct.Value }); }
public void AddCard(SyncListCardItem cardList) { for (int i = 0; i < cardList.Count; i++) { CardStruct card = cardList[i]; AddCard(card); } }
public void CreateFirstCard() { //创建首牌 CardStruct firstCard = GetCard(true); LastCard = firstCard; LastCard.HasEffect = false; //牌桌上显示第一张牌 Rpc_UpdateCardToTable(LastCard); }
public void PlayCard(CardStruct playCard) { CloseCardList.Add(playCard); if (LastCard.HasEffect) { switch ((ENUM_CARD_TYPE)LastCard.CardType) { case ENUM_CARD_TYPE.NONE: break; case ENUM_CARD_TYPE.NUMBER: break; case ENUM_CARD_TYPE.STOP: NetworkGameMgr.Instance.UpdateCurPlayerIndex(); break; case ENUM_CARD_TYPE.FLIP: NetworkGameMgr.Instance.IsClockWise = !NetworkGameMgr.Instance.IsClockWise; break; case ENUM_CARD_TYPE.DRAW2: { //禁止下家出牌 NetworkGameMgr.Instance.UpdateCurPlayerIndex(); //下家摸2张牌 NetworkGameMgr.Instance.NextPlayerGetCards(2); } break; case ENUM_CARD_TYPE.WILD: { //变色 } break; case ENUM_CARD_TYPE.WILD_DRAW4: { //禁止下家出牌 NetworkGameMgr.Instance.UpdateCurPlayerIndex(); //下家摸4张牌 NetworkGameMgr.Instance.NextPlayerGetCards(4); } break; default: break; } } //更新上一张牌 LastCard = playCard; }
public override bool Execute() { for (int i = _cardsMgr.CloseCardList.Count - 1; i >= 0; i--) { CardStruct card = _cardsMgr.CloseCardList[i]; _cardsMgr.CloseCardList.Remove(card); _cardsMgr.OpenCardList.Add(card); } return(base.Execute()); }
public void RemoveCard(CardStruct card) { UICard uicard = _cardsList.Find(a => a.UID == card.UID); if (uicard != null) { _cardsList.Remove(uicard); Destroy(uicard.gameObject); _grid.enabled = true; } }
public void ShowCardInfo(CardStruct card) { // this.isPlayer = isPlayer; HideObj.SetActive(false); this.card = card; this.logo.sprite = card.logo; logo.preserveAspect = true; this.name.text = card.name; this.description.text = card.description; this.cost.text = card.cost.ToString(); this.number.text = card.number.ToString(); }
private Guid AddNewCard(Guid?id = null, decimal?value = null) { var card = new CardStruct { Id = id ?? Guid.NewGuid(), Value = value ?? 0.0m }; _cardDict.Add(card.Id, card); return(card.Id); }
public CardStruct Pop() { int last = liveCards.Count - 1; if (last >= 0) { CardStruct result = liveCards[last]; liveCards.RemoveAt(last); return(result); } return(null); }
public void Shuffle() { for (int i = 0; i < liveCards.Count; ++i) { int other = Random.Range(0, liveCards.Count); if (other != i) { CardStruct swap = liveCards[i]; liveCards[i] = liveCards[other]; liveCards[other] = swap; } } }
public void RemoveCard_toPlayCards(CardStruct card) { for (int i = 0; i < PlayCards.Count; i++) { CardStruct item = PlayCards[i]; if (item.UID == card.UID) { PlayCards.RemoveAt(i); MyUIMain.SetLabelChooseCards(PlayCards.Count); return; } } }
public void server_AddCard(List <CardStruct> cards) { Debug.Log("cards count:" + cards.Count); //摸牌 for (int i = 0; i < cards.Count; i++) { CardStruct card = cards[i]; HaveCards.Add(card); AddCards.Add(card); } Rpc_AddCard(); }
public List <CardStruct> GetCards(uint numb) { List <CardStruct> getCardList = new List <CardStruct>(); for (int i = 0; i < numb; i++) { CardStruct card = OpenCardList[OpenCardList.Count - 1]; OpenCardList.Remove(card); CloseCardList.Add(card); getCardList.Add(card); } Rpc_UpdateCardNumbers(); return(getCardList); }
public void AddCard(CardStruct card) { GameObject go = GameObject.Instantiate(ResUICard) as GameObject; go.SetActive(true); _grid.AddChild(go.transform); go.transform.localScale = Vector3.one; UICard uicard = go.GetComponent <UICard>(); uicard.Init(card); _cardsList.Add(uicard); _grid.Reposition(); }
public void AddCard_toPlayCards(CardStruct card) { for (int i = 0; i < PlayCards.Count; i++) { CardStruct item = PlayCards[i]; if (item.UID == card.UID) { return; } } PlayCards.Add(card); MyUIMain.SetLabelChooseCards(PlayCards.Count); }
private void addCardToField(ISFSObject card) { GameObject cardGo = Instantiate(CardPref, PlayerField, false); fieldTMPInst.Add(cardGo); CardStruct tmpCard = new CardStruct(card.GetText("Name"), card.GetText("Description"), "Sprites/Cards/" + card.GetText("ImageId"), card.GetInt("Cost"), 10, card.GetText("Type"), card.GetInt("Money"), card.GetInt("Action"), card.GetInt("Buy")); cardGo.GetComponent <CardInfo>().ShowCardInfo(tmpCard); }
public void InitCard(CardStruct card) { UID = card.UID; _cardNumb = card.CardNumber; SetCardSprite(card); if ((ENUM_CARD_TYPE)card.CardType == ENUM_CARD_TYPE.NUMBER) { _label.text = card.CardNumber.ToString(); } else { _label.text = ""; } _sp_choose.gameObject.SetActive(isChoose); }
/// <summary> /// 能否出牌 /// </summary> /// <param name="playCards">当前牌组</param> /// <param name="lastCard">上一张牌</param> /// <param name="isLastOne">是否是最后一张牌</param> /// <returns></returns> public static bool IsPlayWithCards(SyncListCardItem playCards, CardStruct lastCard, bool isLastOne) { if (playCards == null || playCards.Count == 0) { return(false); } for (int i = 0; i < playCards.Count; i++) { CardStruct curCard = playCards[i]; if (!IsPlayWithCard(curCard, lastCard, isLastOne)) { return(false); } } return(true); }
public void StartGame(ISFSArray cards, List <GameObject> prefabCards) { Debug.Log("Getting cards number: " + cards.Count); for (int i = 0; i < cards.Count && i < 10; i++) { CardStruct card = new CardStruct(cards.GetSFSObject(i).GetText("Name"), cards.GetSFSObject(i).GetText("Description"), "Sprites/Cards/" + cards.GetSFSObject(i).GetText("ImageId"), cards.GetSFSObject(i).GetInt("Cost"), 10, cards.GetSFSObject(i).GetText("Type"), cards.GetSFSObject(i).GetInt("Money"), cards.GetSFSObject(i).GetInt("Action"), cards.GetSFSObject(i).GetInt("Buy")); this.prefabCards.Add(prefabCards[i]); prefabCards[i].GetComponent <CardInfo>().ShowCardInfo(card); } }
public void Init(CardStruct card) { InitCard(card); UIEventListener.Get(_bg.gameObject).onClick = (go) => { if (isChoose) { Utils.ClientLocalPlayer().RemoveCard_toPlayCards(card); isChoose = !isChoose; } else { Utils.ClientLocalPlayer().AddCard_toPlayCards(card); isChoose = !isChoose; } _sp_choose.gameObject.SetActive(isChoose); }; }
public CardStruct GetCard(bool isWild = false) { int randIndex = UnityEngine.Random.Range(0, OpenCardList.Count - 1); CardStruct card = OpenCardList[randIndex]; if (isWild) { if ((ENUM_CARD_TYPE)card.CardType == ENUM_CARD_TYPE.WILD_DRAW4 || (ENUM_CARD_TYPE)card.CardType == ENUM_CARD_TYPE.WILD) { return(GetCard(isWild)); } } OpenCardList.Remove(card); CloseCardList.Add(card); Rpc_UpdateCardNumbers(); return(card); }
public void HideInfoCard(CardStruct card) { this.card = card; HideObj.SetActive(true); isPlayer = false; }
public void Rpc_UpdateCardToTable(CardStruct playCard) { NetworkGameMgr.Instance.MyUIMain._UICardsTable.PlayCard(playCard); }
public void Server_AddCard(CardStruct cards) { //摸牌 HaveCards.Add(cards); }
/// <summary> /// 是否能出牌 /// </summary> /// <param name="curCard">当前牌</param> /// <param name="lastCard">上一张牌</param> /// <param name="isLastOne">是否是最后一张牌</param> /// <returns></returns> public static bool IsPlayWithCard(CardStruct curCard, CardStruct lastCard, bool isLastOne) { if (lastCard.HasEffect == true) { switch ((ENUM_CARD_TYPE)lastCard.CardType) { case ENUM_CARD_TYPE.NONE: break; case ENUM_CARD_TYPE.NUMBER: { if (curCard.CardColor == lastCard.CardColor || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD_DRAW4 ) { return(true); } } break; case ENUM_CARD_TYPE.STOP: { if ((ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.STOP) { return(true); } } break; case ENUM_CARD_TYPE.FLIP: return(false); break; case ENUM_CARD_TYPE.DRAW2: { if ((ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.DRAW2) { return(true); } } break; case ENUM_CARD_TYPE.WILD: { if (curCard.CardColor == lastCard.CardColor || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD_DRAW4 ) { if (((ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD_DRAW4) && isLastOne) { return(false); } return(true); } } break; case ENUM_CARD_TYPE.WILD_DRAW4: { if ((ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD_DRAW4 && !isLastOne) { return(true); } } break; default: break; } } else { if (curCard.CardColor == lastCard.CardColor || curCard.CardNumber == lastCard.CardNumber || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD || (ENUM_CARD_TYPE)curCard.CardType == ENUM_CARD_TYPE.WILD_DRAW4 ) { return(true); } } return(false); }
void Update() { switch (process) { case Process.waitLogin: foreach (Player pl in allPlayer) { pl.SysMsg = "等待玩家連線...目前人數:" + allPlayer.Count; } break; case Process.shuffle: foreach (Player pl in allPlayer) { pl.SysMsg = "遊戲開始 開始發牌"; } // 重製卡牌 for (int i = 0; i < NUMBER_OF_CARDS; i++) { Cards[i] = i; } // 進行洗牌 for (int i = 0; i < NUMBER_OF_CARDS; i++) { int swap_index = UnityEngine.Random.Range(0, 51); int t = Cards[i]; Cards[i] = Cards[swap_index]; Cards[swap_index] = t; } // 建立牌庫 for (int i = 0; i < NUMBER_OF_CARDS; i++) { CardStruct card = new CardStruct(); card.UID = Cards[i]; CardList.Add(card); } //建立牌庫並發牌 for (int i = 0; i < 13; i++) { allPlayer[0].Server_AddCard(CardList.GetItem(i)); allPlayer[1].Server_AddCard(CardList.GetItem(13 + i)); allPlayer[2].Server_AddCard(CardList.GetItem(26 + i)); allPlayer[3].Server_AddCard(CardList.GetItem(39 + i)); } allPlayer[0].IsGameStart = true; allPlayer[1].IsGameStart = true; allPlayer[2].IsGameStart = true; allPlayer[3].IsGameStart = true; process = Process.decidePlayer; break; case Process.decidePlayer: foreach (Player pl in allPlayer) { pl.SysMsg = "等待時間 準備開始 尋找梅花3玩家"; } Load(); for (int i = 0; i < NUMBER_OF_CARDS / 4; i++) { if (allPlayer[0].HaveCards.GetItem(i).UID == 8) { process = Process.p1Action; } else if (allPlayer[1].HaveCards.GetItem(i).UID == 8) { process = Process.p2Action; } else if (allPlayer[2].HaveCards.GetItem(i).UID == 8) { process = Process.p3Action; } else if (allPlayer[3].HaveCards.GetItem(i).UID == 8) { process = Process.p4Action; } } break; case Process.p1Action: allPlayer[0].SysMsg = "輪到你了!"; allPlayer[0].SetProcess(Player.Process.action); allPlayer[1].SysMsg = "等待對方..."; allPlayer[1].SetProcess(Player.Process.wait); allPlayer[2].SysMsg = "等待對方..."; allPlayer[2].SetProcess(Player.Process.wait); allPlayer[3].SysMsg = "等待對方..."; allPlayer[3].SetProcess(Player.Process.wait); break; case Process.p2Action: allPlayer[1].SysMsg = "輪到你了!"; allPlayer[1].SetProcess(Player.Process.action); allPlayer[0].SysMsg = "等待對方..."; allPlayer[0].SetProcess(Player.Process.wait); allPlayer[2].SysMsg = "等待對方..."; allPlayer[2].SetProcess(Player.Process.wait); allPlayer[3].SysMsg = "等待對方..."; allPlayer[3].SetProcess(Player.Process.wait); break; case Process.p3Action: allPlayer[2].SysMsg = "輪到你了!"; allPlayer[2].SetProcess(Player.Process.action); allPlayer[0].SysMsg = "等待對方..."; allPlayer[0].SetProcess(Player.Process.wait); allPlayer[1].SysMsg = "等待對方..."; allPlayer[1].SetProcess(Player.Process.wait); allPlayer[2].SysMsg = "等待對方..."; allPlayer[2].SetProcess(Player.Process.wait); break; case Process.p4Action: allPlayer[3].SysMsg = "輪到你了!"; allPlayer[3].SetProcess(Player.Process.action); allPlayer[1].SysMsg = "等待對方..."; allPlayer[1].SetProcess(Player.Process.wait); allPlayer[2].SysMsg = "等待對方..."; allPlayer[2].SetProcess(Player.Process.wait); allPlayer[0].SysMsg = "等待對方..."; allPlayer[0].SetProcess(Player.Process.wait); break; case Process.checkWin: switch (round) { case Round.player1: allPlayer[0].SysMsg = "Winner"; allPlayer[1].SysMsg = "Loser"; break; case Round.player2: allPlayer[1].SysMsg = "Winner"; allPlayer[0].SysMsg = "Loser"; break; } allPlayer[0].SetProcess(Player.Process.end); allPlayer[1].SetProcess(Player.Process.end); process = Process.end; break; } }