示例#1
0
    public void onButtonClick(string name)
    {
        if (name == "")
        {
            return;
        }

        GameObject mainObj = ui.transform.Find("Main").gameObject;

        switch (name)
        {
        case "level":
            // 昵称不能为空
            GameObject textObj     = mainObj.transform.Find("InputField/Text").gameObject;
            GameObject errorTipObj = mainObj.transform.Find("ErrorTip").gameObject;
            string     nickname    = textObj.GetComponent <Text> ().text;
            if (nickname == "")
            {
                errorTipObj.SetActive(true);
                return;
            }

            GameManager.nickname = nickname;

            // 记录 nickname
            PlayerPrefs.SetString("nickname", nickname);

            errorTipObj.SetActive(false);
            mainObj.SetActive(false);

            // 等级匹配
            GobangClient.connect(8);
            break;

        case "retry":
            //GobangClient.disconnect ();
            GameObject start = GameObject.Find("Start") as GameObject;
            ReGame     RG    = start.GetComponent <ReGame>();
            RG.ChessPostion();
            // 结果通知给对方
            Hashtable values = new Hashtable();
            values.Add("name", "piece");
            values.Add("FromX", -1);
            values.Add("FromY", -1);
            values.Add("ToX", -1);
            values.Add("ToY", -1);
            values.Add("Move", "红方走");
            values.Add("YidongOrChizi", "Yidong");
            values.Add("Regame", 1);
            values.Add("GoBack", 0);
            GobangClient.send(GameSerialize.toBytes(values));
            GameObject resultObj = ui.transform.Find("Result").gameObject;

            resultObj.SetActive(false);
            break;
        }
    }
示例#2
0
    // 接收到消息
    public void recvMessage(Hashtable values, byte fromIndex)
    {
        string name = (string)values["name"];

        switch (name)
        {
        // 握手,交换名片
        case "handshake":
        {
            // 先进入房间的玩家 为红方
            string theChess = "";
            if (fromIndex == 0)
            {
                theChess = "红方";
            }
            else
            {
                theChess = "黑方";
            }

            //设置名称
            GameObject Enemy = GameObject.Find("EnemyName");
            UILabel    label = Enemy.GetComponent <UILabel>();
            label.text = values["v"] + " (" + theChess + ")";
            //设置头像
            GameObject EnemyPicture = GameObject.Find("EnemyPic");
            //string EnemyPic = (string)values["ImgStr"];
            //if(EnemyPic!="wu")
            //{
            //        uil.text = "联机成功";
            //        //设置头像
            //        SpriteRenderer m_srSR = EnemyPicture.GetComponent<SpriteRenderer>();
            //    Texture2D img = new Texture2D(1024,1024);
            //    byte[] data = System.Convert.FromBase64String(EnemyPic);
            //    img.LoadImage(data);
            //    Sprite sp = Sprite.Create(img, new Rect(0, 0, img.width, img.height), new Vector2(0.0f, 0.0f));
            //    m_srSR.sprite = sp;
            //}
        }
        break;

        // 落子
        case "piece":
        {
            int    Regame        = (int)values["Regame"];
            int    FromX         = (int)values["FromX"];
            int    FromY         = (int)values["FromY"];
            int    ToX           = (int)values["ToX"];
            int    ToY           = (int)values["ToY"];
            string Move          = (string)values["Move"];
            string YidongOrChizi = (string)values["YidongOrChizi"];
            int    GoBack        = (int)values["GoBack"];
            //再来一局
            if (Regame == 1)
            {
                GameObject start = GameObject.Find("Start") as GameObject;
                ReGame     RG    = start.GetComponent <ReGame>();
                RG.ChessPostion();
                bRegame = true;
                return;
            }
            //拒绝悔棋
            if (GoBack == 0)
            {
                GoBackText.SetActive(false);
            }
            //接收到申请悔棋
            if (GoBack == 1)
            {
                //接受到悔棋申请暂停计时
                TimeManager TM;
                GameObject  obj = GameObject.Find("Timer") as GameObject;
                TM           = obj.GetComponent <TimeManager>();
                TM.bStartCul = false;
                GoBackButton.SetActive(true);
                return;
            }
            if (GoBack == 2)
            {
                // 悔棋后,切换回合
                if (GameManager.curTurn == "Red")
                {
                    GameManager.curTurn = "Black";
                }
                else
                {
                    GameManager.curTurn = "Red";
                }
                GoBackText.SetActive(false);
                CC.IloveHUIQI();
                return;
            }
            // 渲染接收到的数据,落子
            if (YidongOrChizi == "Yidong")
            {
                GameObject item1      = ItemOne(FromX, FromY); //得到第一个框名字
                GameObject item2      = ItemTwo(ToX, ToY);     //得到第二个框名字
                GameObject firstChess = chessOne(item1);       //得到第一个旗子名字
                int        a          = Board.chess[FromY, FromX];
                int        b          = Board.chess[ToY, ToX];
                chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b);
                IsMove(firstChess.name, item2, FromX, FromY, ToX, ToY);
                blackclick.ChessMove = !blackclick.ChessMove;
                blackclick.str       = Move;
                // 落子后,切换回合
                if (GameManager.curTurn == "Red")
                {
                    GameManager.curTurn = "Black";
                }
                else
                {
                    GameManager.curTurn = "Red";
                }
            }
            if (YidongOrChizi == "Chizi")
            {
                GameObject item1       = ItemOne(FromX, FromY); //得到第一个框名字
                GameObject item2       = ItemTwo(ToX, ToY);     //得到第二个框名字
                GameObject firstChess  = chessOne(item1);       //得到第一个旗子名字
                GameObject secondChess = ChessTwo(item2);       //得到第一个旗子名字
                int        a           = Board.chess[FromY, FromX];
                int        b           = Board.chess[ToY, ToX];
                chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b);
                IsEat(firstChess.name, secondChess.name, FromX, FromY, ToX, ToY);
                blackclick.ChessMove = !blackclick.ChessMove;
                blackclick.str       = Move;
                // 落子后,切换回合
                if (GameManager.curTurn == "Red")
                {
                    GameManager.curTurn = "Black";
                }
                else
                {
                    GameManager.curTurn = "Red";
                }
            }
        }
        break;

        // gameover
        case "lose":
        {
            byte V = (Byte)values["v"];
            // gameover
            blackclick.TrueOrFalse = false;

            //停止计时
            TM.bStartCul   = false;
            TM.Timer.value = 1;

            // UI
            GameObject ui = GameObject.Find("UI");

            GameObject resultObj   = ui.transform.Find("Result").gameObject;
            GameObject gameoverObj = resultObj.transform.Find("GameOver").gameObject;
            if ((int)V == 1)
            {
                gameoverObj.GetComponentInChildren <Text>().text = "惜败";
            }
            if ((int)V == 2)
            {
                gameoverObj.GetComponentInChildren <Text>().text = "对方超时,胜利";
            }
            resultObj.SetActive(true);
        }
        break;

        default:
            Debug.Log("无效的指令");
            break;
        }
    }