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; } }
// 接收到消息 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; } }