public override void Execute() { PlayCardArg e = evt.data as PlayCardArg; //判断玩家出牌合不合法 if (e.cCharacterType == CharacterType.Player) { if (e.cardType == roundModel.CardType && e.weight > roundModel.CurrentWeight) { dispatcher.Dispatch(ViewEvent.SUCCESSED_PLAY); } else if (e.cardType == CardType.Boom && roundModel.CardType != CardType.Boom) { dispatcher.Dispatch(ViewEvent.SUCCESSED_PLAY); } else if (e.cardType == CardType.JokerBoom) { dispatcher.Dispatch(ViewEvent.SUCCESSED_PLAY); } else if (roundModel.BiggesterCharacter == CharacterType.Player) { dispatcher.Dispatch(ViewEvent.SUCCESSED_PLAY); } else { Debug.Log("不合法的出牌"); return; } } //炸弹翻倍 if (e.cardType == CardType.Boom || e.cardType == CardType.JokerBoom) { integrationModel.Multiples *= 2; } //保存回合信息 roundModel.BiggesterCharacter = e.cCharacterType; roundModel.CardType = e.cardType; roundModel.CurrentWeight = e.weight; roundModel.CurrentLength = e.length; //转换出牌角色 roundModel.Trun(); }
/// <summary> /// 请求玩家出牌事件的回调 /// </summary> /// <param name="payload"></param> private void onPlayPayCard(IEvent payload) { List <Card> cardList = characterView.player.FindSelectCard(); CardType cardType; Rulers.CanPop(cardList, out cardType); //还需要根据上次出牌的类型 if (cardType != CardType.None) { //可以出牌 PlayCardArg e = new PlayCardArg(cardList.Count, Toos.GetWeight(cardList, cardType), CharacterType.Player, cardType); dispatcher.Dispatch(CommandEvent.PlayCard, e); } else { Debug.Log("请选择正确的牌"); } }
IEnumerator DelayOneSecound(ComputerSmartArgs obj) { yield return(new WaitForSeconds(1f)); bool can = false; switch (obj.characterType) { case CharacterType.ComputerRight: can = characterView.ComputerRight.ComputerSemarPlayCard(obj.cardType, obj.weight, obj.lenght, obj.biggerst == CharacterType.ComputerRight); if (can) { List <Card> cardList = characterView.ComputerRight.SelectCards; CardType cardType = characterView.ComputerRight.currType; //--------------------------添加牌到桌面---------------- characterView.Desk.Clear(); //添加牌之前把桌面清空下。这里可以做一个剩余牌数(记牌器),把出的牌临时放到一个数组里面,把总牌数减去手牌减去临时数组,就是剩余牌数,这是一个扩展 foreach (Card card in cardList) { characterView.AddCard(CharacterType.Desk, card, false); } //-----------------可以出牌------------------- PlayCardArg ee = new PlayCardArg(cardList.Count, Toos.GetWeight(cardList, cardType), CharacterType.ComputerRight, cardType); if (!characterView.ComputerRight.HasCard) { Identity r = characterView.ComputerRight.Identity; Identity l = characterView.ComputerLeft.Identity; Identity p = characterView.player.Identity; GameOverArgs eee = new GameOverArgs() { ComputerRightWin = true, ComputerLeftWin = l == r ? true : false, PlayWin = p == r ? true: false, }; dispatcher.Dispatch(CommandEvent.GameOver, eee); } else { dispatcher.Dispatch(CommandEvent.PlayCard, ee); } } else { dispatcher.Dispatch(CommandEvent.PassCard); } break; case CharacterType.ComputerLeft: can = characterView.ComputerLeft.ComputerSemarPlayCard(obj.cardType, obj.weight, obj.lenght, obj.biggerst == CharacterType.ComputerLeft); if (can) { List <Card> cardList = characterView.ComputerLeft.SelectCards; CardType cardType = characterView.ComputerLeft.currType; //--------------------------添加牌到桌面---------------- characterView.Desk.Clear(); //添加牌之前把桌面清空下。这里可以做一个剩余牌数(记牌器),把出的牌临时放到一个数组里面,把总牌数减去手牌减去临时数组,就是剩余牌数,这是一个扩展 foreach (Card card in cardList) { characterView.AddCard(CharacterType.Desk, card, false); } //-----------------可以出牌------------------- PlayCardArg ee = new PlayCardArg(cardList.Count, Toos.GetWeight(cardList, cardType), CharacterType.ComputerLeft, cardType); if (!characterView.ComputerLeft.HasCard) { Identity r = characterView.ComputerRight.Identity; Identity l = characterView.ComputerLeft.Identity; Identity p = characterView.player.Identity; GameOverArgs eee = new GameOverArgs() { ComputerLeftWin = true, ComputerRightWin = r == l ? true : false, PlayWin = p == l ? true : false, }; dispatcher.Dispatch(CommandEvent.GameOver, eee); } else { dispatcher.Dispatch(CommandEvent.PlayCard, ee); } } else { dispatcher.Dispatch(CommandEvent.PassCard); } break; default: break; } }