/// <summary> /// 获取所有手牌 /// </summary> /// <returns></returns> protected List <Card> GetAllCards(List <Card> exclude = null) { List <Card> cards = new List <Card>(); HandCards allCards = gameObject.GetComponent <HandCards>(); bool isContinue = false; for (int i = 0; i < allCards.CardsCount; i++) { isContinue = false; if (exclude != null) { for (int j = 0; j < exclude.Count; j++) { if (allCards[i] == exclude[j]) { isContinue = true; break; } } } if (!isContinue) { cards.Add(allCards[i]); } } //从小到大排序 CardRules.SortCards(cards, true); return(cards); }
/// <summary> /// 获取所有手牌 /// </summary> /// <returns></returns> static List <Card> GetAllCards(string uid, List <Card> exclude = null) { List <Card> cards = new List <Card>(); LandkirdsHandCardModel allCards = LandlordsModel.Instance.GetHandCardMode(uid); bool isContinue = false; for (int i = 0; i < allCards.CardsCount; i++) { isContinue = false; if (exclude != null) { for (int j = 0; j < exclude.Count; j++) { if (allCards[i] == exclude[j]) { isContinue = true; break; } } } if (!isContinue) { cards.Add(allCards[i]); } } //从小到大排序 CardRules.SortCards(cards, true); return(cards); }
// 自动出牌 void AutoPop() { List <Card> cards = CardRules.DelayDiscardCard(UserInfoModel.userInfo.userId.ToString()); bool isCanPop = cards.Count > 0; if (isCanPop) { List <Card> select = new List <Card>(); List <CardUI> selectUis = new List <CardUI>(); for (int i = 0; i < GetSpriteUIs().Length; i++) { if (GetSpriteUIs()[i].Select) { select.Add(GetSpriteUIs()[i].Card); selectUis.Add(GetSpriteUIs()[i]); } } //先检测已选择的牌可以出不 if (PlayCard.IsCanPop(select)) { LandlordsNet.C2G_PopReq(1, select, null, null); } else { CardRules.SortCards(cards, true); LandlordsNet.C2G_PopReq(1, cards, null, null); } } else { Interaction.Instance.NoPlayCard(0); } LandlordsModel.Instance.TimeOutAudioPopCount++; }
public bool CheckSelectCardsEx(int[] pai, out int num) { CardSprite[] sprites = this.GetComponentsInChildren <CardSprite>(); //找出所有选中的牌 //List<Card> selectedCardsList = new List<Card>(); //List<CardSprite> selectedSpriteList = new List<CardSprite>(); selectedCardsList.Clear(); selectedSpriteList.Clear(); for (int i = 0; i < sprites.Length; i++) { if (sprites[i].Select) { pai[selectedCardsList.Count] = sprites[i].Poker.GetId; selectedSpriteList.Add(sprites[i]); selectedCardsList.Add(sprites[i].Poker); } } num = selectedCardsList.Count; //排好序 CardRules.SortCards(selectedCardsList, true); //出牌 //return CheckPlayCards(selectedCardsList, selectedSpriteList); return(true); }
public void SetTablePai(int[] pai, int num) { ClearTable(); //保存当前出的牌,以便清除 m_nPaiNum = num; m_nPai = pai; //m_bflash = true; //m_nPai = pai; //m_nPaiNum = num; //DeskCardsCache.Instance.Clear(); //for (int i = 0; i < m_nPaiNum; i++) //{ // DeskCardsCache.Instance.AddCard(m_Cardlist[i]); //} GameObject deskobj = GameObject.Find("Desk"); Transform desktf = deskobj.transform; List <Card> tmpcard = new List <Card>(); List <CardSprite> tmpcardsprite = new List <CardSprite>(); for (int i = 0; i < num; i++) { if (!m_Pokerlist.ContainsKey(pai[i])) { Debug.LogError(string.Format("SetTablePai, pai id:[{0}] is error", pai[i])); continue; } CardSprite cp = m_Pokerlist[pai[i]].GetComponent <CardSprite>(); tmpcardsprite.Add(cp); tmpcard.Add(cp.Poker); cp.Poker.Attribution = CharacterType.Desk; cp.transform.SetParent(desktf); cp.transform.localScale = new Vector3(1, 1, 1); m_Pokerlist[pai[i]].SetActive(true); } //排序所出的牌 CardRules.SortCards(tmpcard, true); for (int i = 0; i < tmpcard.Count; i++) { for (int j = 0; j < tmpcardsprite.Count; j++) { if (tmpcardsprite[j].Poker == tmpcard[i]) { tmpcardsprite[j].GoToPosition(deskobj, i); } } } }
/// <summary> /// 遍历选中的牌 /// </summary> void CheckSelectCards() { //排好序 CardRules.SortCards(selectedCardsList, true); CardsType type = CardsType.None; //出牌 CheckPlayCards(selectedCardsList, out type);//这里不用判断能否出牌,因为selectedCardsList是服务器已经判断过能出的牌 PlayCards(type); }
public void SetDiPai(int[] pai, int num) { //clear di pai m_nPaiNum = 0; GameObject deskobj = GameObject.Find("Player"); Transform desktf = deskobj.transform; CUser me = m_UserlistById[CPlayer.Instance().m_nUid]; // pai.CopyTo(me.m_nPai, 17); for (int i = 0; i < 3; i++) { me.m_nPai.Add(pai[i]); } List <Card> tmpcard = new List <Card>(); List <CardSprite> tmpcardsprite = new List <CardSprite>(); for (int i = 0; i < me.m_nPai.Count; i++) { CardSprite cp = m_Pokerlist[me.m_nPai[i]].GetComponent <CardSprite>(); tmpcardsprite.Add(cp); tmpcard.Add(cp.Poker); cp.SetActvie(true); cp.Poker.Attribution = CharacterType.Player; cp.transform.SetParent(desktf); cp.transform.localScale = new Vector3(1, 1, 1); m_Pokerlist[me.m_nPai[i]].SetActive(true); } CardRules.SortCards(tmpcard, true); for (int i = 0; i < tmpcard.Count; i++) { for (int j = 0; j < tmpcardsprite.Count; j++) { if (tmpcardsprite[j].Poker == tmpcard[i]) { tmpcardsprite[j].GoToPosition(deskobj, i); } } } }
/// <summary> /// 主角是否能出牌 /// </summary> public static bool IsCanPop(List <Card> cards) { //排好序 CardRules.SortCards(cards, true); CardsType type = CardsType.None; bool isCanPlayCard = PlayCard.Instance.CheckPlayCards(cards, out type); if (!isCanPlayCard) { UIUtils.Log("不能大过场上的牌或者和场上的牌型不一致"); } return(isCanPlayCard); }
/// <summary> /// 主角请求出牌 /// </summary> public bool MainRolePopReq(CallBack call) { CardUI[] sprites = GetSpriteUIs(); //找出所有选中的牌 List <Card> selectedCardsLists = new List <Card>(); for (int i = 0; i < sprites.Length; i++) { if (sprites[i].Select) { selectedCardsLists.Add(sprites[i].Card); } } //排好序 CardRules.SortCards(selectedCardsLists, true); bool isCanPop = PlayCard.IsCanPop(selectedCardsLists); if (isCanPop) { LandlordsNet.C2G_PopReq(1, selectedCardsLists, call, null); } else { List <Card> exclude = new List <Card>(); for (int i = 0; i < sprites.Length; i++) { if (!sprites[i].Select) { exclude.Add(sprites[i].Card); } } List <Card> popCard = LandlordsModel.Instance.TipsModel.Tips2(exclude); isCanPop = popCard.Count > 0; if (isCanPop) { LandlordsNet.C2G_PopReq(1, popCard, call, null); } } return(isCanPop); }
public void SetPlayerPai(int[] pai, int num) { GameObject deskobj = GameObject.Find("Player"); Transform desktf = deskobj.transform; List <Card> tmpcard = new List <Card>(); List <CardSprite> tmpcardsprite = new List <CardSprite>(); for (int i = 0; i < num; i++) { m_UserlistById[CPlayer.Instance().m_nUid].m_nPai[i] = pai[i]; if (!m_Pokerlist.ContainsKey(pai[i])) { Debug.LogError(string.Format("SetTablePai, pai id:[{0}] is error", pai[i])); continue; } CardSprite cp = m_Pokerlist[pai[i]].GetComponent <CardSprite>(); tmpcardsprite.Add(cp); tmpcard.Add(cp.Poker); cp.Poker.Attribution = CharacterType.Player; cp.transform.SetParent(desktf); cp.transform.localScale = new Vector3(1, 1, 1); m_Pokerlist[pai[i]].SetActive(true); } CardRules.SortCards(tmpcard, true); for (int i = 0; i < tmpcard.Count; i++) { for (int j = 0; j < tmpcardsprite.Count; j++) { if (tmpcardsprite[j].Poker == tmpcard[i]) { tmpcardsprite[j].GoToPosition(deskobj, i); } } } }
/// <summary> /// 遍历选中的牌和牌精灵 /// </summary> public bool CheckSelectCards() { CardSprite[] sprites = this.GetComponentsInChildren <CardSprite>(); //找出所有选中的牌 List <Card> selectedCardsList = new List <Card>(); List <CardSprite> selectedSpriteList = new List <CardSprite>(); for (int i = 0; i < sprites.Length; i++) { if (sprites[i].Select) { selectedSpriteList.Add(sprites[i]); selectedCardsList.Add(sprites[i].Poker); } } //排好序 CardRules.SortCards(selectedCardsList, true); //出牌 return(CheckPlayCards(selectedCardsList, selectedSpriteList)); }
public bool CheckSelectCards() { CardSprite[] sprites = gameObject.transform.Find("StartPoint").GetComponentsInChildren <CardSprite>(); // 找出所有选中的 List <Card> selectedCardsList = new List <Card>(); List <CardSprite> selectedSpriteList = new List <CardSprite>(); for (int i = 0; i < sprites.Length; i++) { if (sprites[i].Select) { selectedSpriteList.Add(sprites[i]); selectedCardsList.Add(sprites[i].Poker); } } //排序 CardRules.SortCards(selectedCardsList, true); return(CheckPlayCards(selectedCardsList, selectedSpriteList)); }
/// <summary> /// 手牌排序 /// </summary> public void Sort() { CardRules.SortCards(library, false); }
public void Sort() { CardRules.SortCards(library, true); }