private static void doReceivePacket(int opcode, int id, byte[] data) { if (opcode == (int)MiGongOpcode.SCSendEatBean) { SCSendEatBean sc = SCSendEatBean.Deserialize(data); Debug.Log("opcode:MiGongOpcode.SCEatBean" + sc.Beans.Count); foreach (PBEatBeanInfo bean in sc.Beans) { Debug.Log("" + bean.UserId + "," + bean.BeanPos); // 谁吃的 } } if (dic.ContainsKey(id)) { if (opcode == (int)BaseOpcode.SCException) { SCException exception = SCException.Deserialize(data); resoveSCException(exception); } else { ActionForReceive action = dic[id]; if (action != null) { AsyncObject o = new AsyncObject(); o.Opcode = opcode; o.Data = data; o.action = action; lock (invokeQueue) { invokeQueue.Enqueue(o); } } } dic.Remove(id); } else if (syncObjects.ContainsKey(id)) { if (opcode == (int)BaseOpcode.SCException) { SCException exception = SCException.Deserialize(data); resoveSCException(exception); } else { } SyncObject syncObject = syncObjects[id]; Monitor.Enter(syncObject); syncObject.Data = data; syncObject.Opcode = opcode; syncObjects.Remove(id); Monitor.Pulse(syncObject); Monitor.Exit(syncObject); } else { // 推送消息 if (opcode == (int)BaseOpcode.SCException) { SCException exception = SCException.Deserialize(data); resoveSCException(exception); } else { if (serverSendData.ContainsKey(opcode)) { ActionForReceive action = serverSendData[opcode]; AsyncObject o = new AsyncObject(); o.Opcode = opcode; o.Data = data; o.action = action; lock (invokeQueue) { invokeQueue.Enqueue(o); } } // Debug.Log("opcode = "+opcode+","); } } }
// Use this for initialization void Start() { // 设置button closeButton.onClick.AddListener(delegate { Sound.playSound(SoundType.Click); WarnDialog.showWarnDialog(Message.getText("exit?"), delegate { selfArrive(false, null, false); Destroy(transform.parent.parent.gameObject); GameObject mainGo = GameObject.Find("main"); MainPanel mainPanel = mainGo.GetComponent <MainPanel>(); mainPanel.showUi(this.Mode); }); }); okButton.onClick.AddListener(delegate { Sound.playSound(SoundType.Click); Destroy(transform.parent.parent.gameObject); GameObject mainGo = GameObject.Find("main"); MainPanel mainPanel = mainGo.GetComponent <MainPanel>(); mainPanel.showUi(this.Mode); }); // 0.21 碰撞体的宽,1.9碰撞体的长 wallWidth = 0.13f * myScale; nodeX = 1.9f * myScale - wallWidth * 2; nodeY = 1.9f * myScale - wallWidth * 2; // 显示当前的道具数量 showSkillCountAndAddClick("addSpeed", ItemType.AddSpeed); showSkillCountAndAddClick("addTime", ItemType.AddTime); showSkillCountAndAddClick("mulBean", ItemType.MulBean); showSkillCountAndAddClick("showRoute", ItemType.ShowRoute); // if (Mode == MapMode.Online) { // 屏蔽 starSlider.transform.parent.gameObject.SetActive(false); transform.parent.parent.Find("Canvas/skills").gameObject.SetActive(false); transform.parent.parent.Find("Canvas/score").gameObject.SetActive(false); // time居中 Vector3 old = transform.parent.parent.Find("Canvas/time").localPosition; transform.parent.parent.Find("Canvas/time").localPosition = new Vector3(0, old.y, old.z); // foreach (KeyValuePair <string, Pacman> kv in pacmanMap) { int x = kv.Value.inX; int y = kv.Value.inY; Transform scoreShowtransform = null; if (x < 2 && y < 2) { scoreShowtransform = transform.parent.parent.Find("Canvas/onlineScoreShow/blue"); } else if (y > 2 && x < 2) { scoreShowtransform = transform.parent.parent.Find("Canvas/onlineScoreShow/green"); } else if (y > 2 && x > 2) { scoreShowtransform = transform.parent.parent.Find("Canvas/onlineScoreShow/red"); } else if (x > 2 && y < 2) { scoreShowtransform = transform.parent.parent.Find("Canvas/onlineScoreShow/yellow"); } scoreShowtransform.gameObject.SetActive(true); scoreText.Add(kv.Key, scoreShowtransform.Find("Text").GetComponent <Text>()); } // SocketManager.AddServerSendReceive((int)MiGongOpcode.SCSendEatBean, delegate(int opcode, byte[] data) { SCSendEatBean ret = SCSendEatBean.Deserialize(data); foreach (PBEatBeanInfo bean in ret.Beans) { _checkEatBean(bean.UserId, bean.BeanPos); // 谁吃的 } }); } // 注册玩家到达的信息 SocketManager.AddServerSendReceive((int)MiGongOpcode.SCUserArrived, userArrived); SocketManager.AddServerSendReceive((int)MiGongOpcode.SCGameOver, doGameOver); // 联网模式 SocketManager.AddServerSendReceive((int)MiGongOpcode.SCUserMove, userMoveAction); currentTime = totalTime; createMap(); }