Beispiel #1
0
    public void Show(PokerBattle battle)
    {
        DataBattle = battle;
        this.gameObject.SetActive(true);
        Content.GetComponent <RectTransform>().DOLocalMoveX(140, 0.3f);
        for (int i = 0; i < List.transform.childCount; i++)
        {
            List.transform.GetChild(i).gameObject.SetActive(false);
        }

        List <PokerPlayerUICtr> playerList = GameObject.FindObjectOfType <Page_Poker>().PlayerUIList.Where(c => c.gameObject.activeInHierarchy).ToList();

        for (int i = 0; i < playerList.Count; i++)
        {
            if (playerList[i].UID == Session.UserID)
            {
                continue;
            }
            PokerSide side = battle.Sides.FirstOrDefault(c => c.AccountID == playerList[i].UID.ToString());
            if (side == null || side.IsDisCard)
            {
                continue;
            }
            GameObject item = List.transform.GetChild(i).gameObject;
            item.name = "Player_" + playerList[i].UID;
            item.SetActive(true);
            item.transform.Find("Name").GetComponent <Text>().text = playerList[i].Name.text;
            item.transform.Find("FriendIcon").GetComponent <RawImage>().texture = playerList[i].Face.texture;
            item.transform.Find("Gold").GetComponent <Text>().text = playerList[i].Num.text;
            EventListener.Get(item).onClick = OnPlayerItemClicked;
        }
    }
Beispiel #2
0
 public void ChangeTable(PokerBattle battle)
 {
     if (battle.Msg == "-1")
     {
         App.Instance.HintBox.Show("本次押注结算后才可离开");
     }
     else
     {
         if (battle.Msg == GlobalVariable.LoginUser.ID.ToString())
         {
             App.Instance.DetailPageBox.Hide();
             if (Page_Poker != null)
             {
                 App.Instance.PageGroup.ShowPage("Page_Poker", true, Page_Poker.MatchType, battle.ID);
             }
         }
         else
         {
             PokerSide side = battle.Sides.FirstOrDefault(c => c.AccountID == battle.Msg);
             if (side != null)
             {
                 battle.Sides.Remove(side);
             }
         }
     }
     SynchronousData(battle);
     Sender.SetCommandLazyTime(0);
 }
Beispiel #3
0
 public void InitClient()
 {
     Client = new ClientConnect(true);
     Client.SetOnReceiveEvent((c, m) =>
     {
         LemonMessage msg = (LemonMessage)m;
         if (msg.StateCode == 0)
         {
             lock (ClientLock)
             {
                 PokerBattle battle = (PokerBattle)SerializeObject.DeserializeFromString(msg.Body, typeof(PokerBattle));
                 //Debug.Log("接收到命令" + battle.Step);
                 MsgList.Enqueue(battle);
             }
         }
     });
     Client.OnErrorEvent = (c, e) =>
     {
         //Debug.Log("出错了" + e.Message);
     };
     Client.OnConnectEvent = (c) =>
     {
         //Debug.Log("连接上了");
     };
     Client.OnDisconnectEvent = (c) =>
     {
         //Debug.Log("连接断开了");
     };
     Client.Connect <LemonMessage>(IP, Port);
 }
Beispiel #4
0
        public static void SendToClient(PokerCommand command, PokerBattle battle)
        {
            battle.Step = command;
            LemonMessage msg = new LemonMessage();

            msg.Body = new JsonSerialize().SerializeToString(battle);
            SendMsgToAllClient(command, battle, msg);
        }
Beispiel #5
0
 public void ReStart(PokerBattle battle)
 {
     Page_Poker.BattleUICtr.ReStartTip.gameObject.SetActive(true);
     SynchronousData(battle);
     foreach (var p in Page_Poker.PlayerUIList)
     {
         p.HideCardType();
     }
     Sender.SetCommandLazyTime(1);
 }
Beispiel #6
0
 public PokerBattleground()
 {
     CreateTime  = DateTime.Now;
     Battle      = new PokerBattle();
     Battle.Step = PokerCommand.Join;
     InitCardLibrary();
     Countdown = new PokerBattlegroundCountdown(this);
     Countdown.Start();
     UpdateTask = new Task(Update);
     UpdateTask.Start();
 }
Beispiel #7
0
    /// <summary>
    /// 同步数据,玩家在网络不好,或是断线重连时会直接显示当前数据
    /// </summary>
    /// <param name="battle"></param>
    public void SynchronousData(PokerBattle battle)
    {
        Sender.BattleCode = battle.ID;
        if (Page_Poker == null)
        {
            return;
        }
        if (battle.IsStarted)
        {
            Page_Poker.BattleCanOperation();
        }

        //同步玩家信息
        PokerSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID);

        if (mySide == null)
        {
            return;
        }
        int orderOffset = mySide.Order - 1;

        foreach (var p in Page_Poker.PlayerUIList)
        {
            int newOrder = p.Order + orderOffset;
            if (newOrder > 5)
            {
                newOrder = newOrder % 5;
            }

            PokerSide side = battle.Sides.FirstOrDefault(c => c.Order == newOrder);
            if (side != null)
            {
                p.Show(side.NickName, side.Face, side.Gold, side.Vip, System.Convert.ToInt32(side.AccountID), side, side.AccountID == Session.UserID.ToString(), side.Order == battle.CurrentSideOrder);
            }
            else
            {
                p.gameObject.SetActive(false);
            }
        }

        Page_Poker.BattleUICtr.ChangeUI(battle.TrunNum, battle.BetGoldNum);
        if (battle.CurrentSideOrder == mySide.Order && battle.Step == PokerCommand.Operation)
        {
            Page_Poker.OperationUICtr.Show(battle, false);
            Page_Poker.BattleUICtr.DownNumCtr.Begin();
        }
        else
        {
            Page_Poker.OperationUICtr.Hide();
            Page_Poker.BattleUICtr.DownNumCtr.Hide();
        }
    }
Beispiel #8
0
    public void Settlement(PokerBattle battle)
    {
        TheBattle = battle;
        //播放玩家获得金币动画
        PokerSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID);

        if (mySide == null)
        {
            return;
        }
        int   orderOffset = mySide.Order - 1;
        float maxTime     = 0;

        foreach (var p in Page_Poker.PlayerUIList)
        {
            int newOrder = p.Order + orderOffset;
            if (newOrder > 5)
            {
                newOrder = newOrder % 5;
            }
            PokerSide side = battle.Sides.FirstOrDefault(c => c.Order == newOrder);
            if (side != null && side.WinGold > 0)
            {
                float needTime = p.PlayGoldAllBetToMySelf(side.WinGold);
                if (needTime > maxTime)
                {
                    maxTime = needTime;
                }
            }
            //所有玩家翻牌
            if (side != null && !side.IsDisCard)
            {
                foreach (var card in p.Cards)
                {
                    card.Flip();
                }
                p.ShowCardType(side);
            }
        }
        this.Invoke("OnSettlementComplatedSynchronousData", maxTime);
        Sender.SetCommandLazyTime(maxTime + 2f);
    }
Beispiel #9
0
        public void SendTextMsg(string battleID, string accountID, string textData)
        {
            LogHelper.DebugLog("Poker收到:" + accountID + "  发来的SendTextMsg");
            PokerBattleground bg           = PokerBattlegroundManager.Instance.Find(battleID);
            SocketServer      socketServer = PokerServer.Instance.GetServer();

            PokerBattle soundBattle = new PokerBattle();
            PokerSide   currentSide = bg.Battle.Sides.FirstOrDefault(c => c.AccountID == accountID);

            soundBattle.CurrentSideOrder = currentSide.Order;
            soundBattle.Sides            = bg.Battle.Sides;
            soundBattle.Step             = PokerCommand.SendTextMsg;
            soundBattle.Msg = textData;

            LemonMessage msg = new LemonMessage();

            msg.Body = new JsonSerialize().SerializeToString(soundBattle);

            ToPokerCleintCommand.SendMsgToAllClient(PokerCommand.SendTextMsg, soundBattle, msg);
        }
Beispiel #10
0
        public static void SendMsgToAllClient(PokerCommand command, PokerBattle battle, LemonMessage msg)
        {
            SocketServer socketServer = PokerServer.Instance.GetServer();

            foreach (var c in socketServer.AllConnect())
            {
                if (!battle.Sides.Any(s => s.AccountID == c.ConnectID))
                {
                    continue;
                }
                try
                {
                    c.SendMessage(msg);
                }
                catch (Exception ex)
                {
                    LogHelper.LogError("Poker发送出错:" + ex.Message + " " + ex.StackTrace);
                }
                LogHelper.DebugLog("Poker send " + command);
            }
        }
Beispiel #11
0
    private void Update()
    {
        CommandTime -= Time.deltaTime;
        if (CommandTime > 0)
        {
            return;
        }

        CommandTime = 2;
        //取出信息开始处理
        if (MsgList.Count == 0)
        {
            return;
        }
        PokerBattle battle = null;

        lock (ClientLock)
        {
            battle = MsgList.Dequeue();
        }
        ReceiveCommandObj.PostAsyncMethod(battle.Step.ToString(), battle);
    }
Beispiel #12
0
    public void OneTrunComplated(PokerBattle battle)
    {
        Page_Poker.BattleUICtr.ReStartTip.gameObject.SetActive(false);
        TheBattle = battle;
        if (battle.IsStarted)
        {
            Page_Poker.BattleCanOperation();
        }
        //播放玩家下注的金币动画
        PokerSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID);

        if (mySide == null)
        {
            return;
        }
        int   orderOffset = mySide.Order - 1;
        float maxTime     = 0;

        foreach (var p in Page_Poker.PlayerUIList)
        {
            int newOrder = p.Order + orderOffset;
            if (newOrder > 5)
            {
                newOrder = newOrder % 5;
            }
            PokerSide side = battle.Sides.FirstOrDefault(c => c.Order == newOrder);
            if (side != null)
            {
                float needTime = p.PlayGoldToAllBet(battle.CurrentNoteNum);
                if (needTime > maxTime)
                {
                    maxTime = needTime;
                }
            }
        }
        this.Invoke("OnComplatedSynchronousData", maxTime);
        Sender.SetCommandLazyTime(maxTime + 0.1f);
    }
Beispiel #13
0
 public void Operation(PokerBattle battle)
 {
     SynchronousData(battle);
     Sender.SetCommandLazyTime(0);
 }
Beispiel #14
0
    public void OperationBack(PokerBattle battle)
    {
        SynchronousData(battle);
        //播放玩家下注的金币动画
        PokerSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID);

        if (mySide == null)
        {
            return;
        }
        int orderOffset = mySide.Order - 1;

        foreach (var p in Page_Poker.PlayerUIList)
        {
            int newOrder = p.Order + orderOffset;
            if (newOrder > 5)
            {
                newOrder = newOrder % 5;
            }
            PokerSide side = battle.Sides.FirstOrDefault(c => c.Order == newOrder);
            if (side != null)
            {
                p.ShowBetGold(side, battle.CurrentSideOrder == side.Order);
            }
        }
        string soundSex = PlayerPrefs.GetString("SoundSex");

        if (battle.OperationType == PokerOperationType.Bet)
        {
            if (soundSex == "Man")
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_RAISE_MALE_SOUND");
            }
            else
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_RAISE_FEMALE_SOUND");
            }
            Sender.SetCommandLazyTime(2.3f);
        }
        else if (battle.OperationType == PokerOperationType.Follow)
        {
            if (soundSex == "Man")
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_CALL_MALE_SOUND");
            }
            else
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_CALL_FEMALE_SOUND");
            }
            Sender.SetCommandLazyTime(2.3f);
        }
        else if (battle.OperationType == PokerOperationType.Discard)
        {
            if (soundSex == "Man")
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_FOLD_MALE_SOUND");
            }
            else
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_FOLD_FEMALE_SOUND");
            }
            Sender.SetCommandLazyTime(0.1f);
        }
        else if (battle.OperationType == PokerOperationType.CompareCard)
        {
            if (soundSex == "Man")
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_BP_MALE_SOUND");
            }
            else
            {
                SoundManager.Instance.PlaySound("PokerSound/OX_BP_FEMALE_SOUND");
            }
            PokerSide currentSide = battle.Sides.FirstOrDefault(c => c.Order == battle.CurrentSideOrder);
            if (currentSide != null)
            {
                PokerPlayerUICtr currentPlayer = Page_Poker.PlayerUIList.FirstOrDefault(c => c.UID == int.Parse(currentSide.AccountID));
                PokerPlayerUICtr targetPlayer  = Page_Poker.PlayerUIList.FirstOrDefault(c => c.UID == int.Parse(battle.OperationPar1));
                if (currentPlayer != null &&
                    targetPlayer != null &&
                    (mySide.AccountID == currentPlayer.UID.ToString() || mySide.AccountID == targetPlayer.UID.ToString()))
                {
                    //播放3秒,3秒后再处理新命令
                    Page_Poker.SendCommand.SetCommandLazyTime(3);

                    foreach (var card in currentPlayer.Cards)
                    {
                        card.Flip();
                    }

                    foreach (var card in targetPlayer.Cards)
                    {
                        card.Flip();
                    }
                }
            }

            Sender.SetCommandLazyTime(5f);
        }
    }
Beispiel #15
0
    public void SendTextMsg(PokerBattle battle)
    {
        string[] msgData    = battle.Msg.Split('|');
        string   msgName    = msgData[0];
        string   soundSex   = msgData[1];
        string   msgContent = msgData[2];

        PokerSide mySide      = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID);
        int       orderOffset = mySide.Order - 1;

        foreach (var p in Page_Poker.PlayerUIList)
        {
            int newOrder = p.Order + orderOffset;
            if (newOrder > 5)
            {
                newOrder = newOrder % 5;
            }
            if (newOrder == battle.CurrentSideOrder)
            {
                p.ShowText(msgContent);
            }
        }


        if (soundSex == "Man")
        {
            if (msgName == "ChatMoreUsed01")
            {
                SoundManager.Instance.PlaySound("语音/男1");
            }
            else if (msgName == "ChatMoreUsed03")
            {
                SoundManager.Instance.PlaySound("语音/男2");
            }
            else if (msgName == "ChatMoreUsed05")
            {
                SoundManager.Instance.PlaySound("语音/男3");
            }
            else if (msgName == "ChatMoreUsed07")
            {
                SoundManager.Instance.PlaySound("语音/男4");
            }
            else if (msgName == "ChatMoreUsed09")
            {
                SoundManager.Instance.PlaySound("语音/男5");
            }
        }
        else
        {
            if (msgName == "ChatMoreUsed01")
            {
                SoundManager.Instance.PlaySound("语音/女1");
            }
            else if (msgName == "ChatMoreUsed03")
            {
                SoundManager.Instance.PlaySound("语音/女2");
            }
            else if (msgName == "ChatMoreUsed05")
            {
                SoundManager.Instance.PlaySound("语音/女3");
            }
            else if (msgName == "ChatMoreUsed07")
            {
                SoundManager.Instance.PlaySound("语音/女4");
            }
            else if (msgName == "ChatMoreUsed09")
            {
                SoundManager.Instance.PlaySound("语音/女5");
            }
            else if (msgName == "ChatMoreUsed11")
            {
                SoundManager.Instance.PlaySound("语音/女6");
            }
        }

        Sender.SetCommandLazyTime(0);
    }
Beispiel #16
0
 public void JoinBack(PokerBattle battle)
 {
     SynchronousData(battle);
     Sender.SetCommandLazyTime(0);
 }
Beispiel #17
0
    public void Show(PokerBattle battle, bool look)
    {
        showBattle = battle;
        this.gameObject.SetActive(true);
        PokerSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Session.UserID.ToString());

        if (battle.TrunNum > 1)
        {
            BtnLook.gameObject.SetActive(true);
        }
        else
        {
            BtnLook.gameObject.SetActive(false);
        }
        int noteNum = battle.CurrentNoteNum;

        if (look)
        {
            noteNum = noteNum * 2;
        }
        if (mySide.Gold < noteNum)
        {
            BtnList[0].interactable = false;
            BtnList[2].interactable = false;
        }
        else
        {
            BtnList[0].interactable = true;
            BtnList[2].interactable = true;
        }

        BtnList[3].GetComponentInChildren <Text>().text = (noteNum * 2).ToString();
        if (mySide.Gold < noteNum * 2)
        {
            BtnList[3].interactable = false;
        }
        else
        {
            BtnList[3].interactable = true;
        }
        BtnList[4].GetComponentInChildren <Text>().text = (noteNum * 4).ToString();
        if (mySide.Gold < noteNum * 4)
        {
            BtnList[4].interactable = false;
        }
        else
        {
            BtnList[4].interactable = true;
        }
        BtnList[5].GetComponentInChildren <Text>().text = (noteNum * 6).ToString();
        if (mySide.Gold < noteNum * 6)
        {
            BtnList[5].interactable = false;
        }
        else
        {
            BtnList[5].interactable = true;
        }
        if (!look)
        {
            if (mySide.IsFlipCard)
            {
                BtnLook.isOn = true;
            }
            else
            {
                BtnLook.isOn = false;
            }
        }
    }