Exemple #1
0
 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+",");
         }
     }
 }
Exemple #2
0
    // 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();
    }