コード例 #1
0
    // Use this for initialization
    void Start()
    {
        ChatCanvas.enabled = false;
        RealChannelName rn = new RealChannelName();

        rn.userName    = "******";
        rn.channelName = GameChannels[0];
        RealChannelsNames.Add(rn);
        RefreshChannelsList();

        if (NetworkManager == null && GameObject.Find("NetworkManager") != null)
        {
            NetworkManager = GameObject.Find("NetworkManager").GetComponent <MyNetworkManager> ();
        }

        if (MessageNotifyComponent == null && GameObject.Find("MessageNotify-Canvas") != null)
        {
            MessageNotifyComponent = GameObject.Find("MessageNotify-Canvas").GetComponent <MessageNotify> ();
        }

        if (POPUPWindowComponent == null && GameObject.Find("POPUP-Canvas") != null)
        {
            POPUPWindowComponent = GameObject.Find("POPUP-Canvas").GetComponent <MainMenuPOPUP> ();
        }
    }
コード例 #2
0
    public void PrintChatMessage(string sender, string message)
    {
        GameObject ChatTextOb = Instantiate(ChatMessagePrefab);

        string[] msgs       = message.Split(new string[] { "[_nickname]", "[_target]" }, StringSplitOptions.RemoveEmptyEntries);
        string   senderName = "";

        if (msgs.Length > 1)
        {
            senderName = msgs [1] + ": ";
        }
        ChatTextOb.GetComponent <Text> ().text = "<color=#00ffffff>" + senderName + "</color>" + msgs[0];
        if (!ChatCanvas.enabled)
        {
            if (MessageNotifyComponent == null && GameObject.Find("MessageNotify-Canvas") != null)
            {
                MessageNotifyComponent = GameObject.Find("MessageNotify-Canvas").GetComponent <MessageNotify> ();
            }
            if (MessageNotifyComponent != null)
            {
                MessageNotifyComponent.ShowNotifyMessage(senderName + msgs [0]);
                if (MessageNotifyComponent.Btn != null)
                {
                    MessageNotifyComponent.Btn.onClick.RemoveAllListeners();
                    MessageNotifyComponent.Btn.onClick.AddListener(MessageNotifyComponent.HideNotify);
                    if (sender.Length > 0)
                    {
                        MessageNotifyComponent.Btn.onClick.AddListener(ShowChat);
                    }
                }
            }
        }
        Canvas.ForceUpdateCanvases();
        ChatTextOb.transform.SetParent(ChatMessagesTable, false);
        scrollRect.verticalScrollbar.value = 0f;
        ChatMessagesTable.GetComponent <VerticalLayoutGroup> ().padding.top = 18;
        Canvas.ForceUpdateCanvases();
        scrollRect.verticalNormalizedPosition = 0f;;
        Canvas.ForceUpdateCanvases();
    }
コード例 #3
0
        /// <summary>
        /// 消息解析
        /// </summary>
        /// <param name="id">消息ID</param>
        /// <param name="message">消息内容</param>
        /// <param name="client">客户端(服务端使用时写)</param>
        public void AnalyseMsg(string id, string message, ModClient client)
        {
            //判断ID是否存在
            if (!m_strUnProcessMsg.ContainsKey(id))
            {
                m_strUnProcessMsg.Add(id, "");
            }

            //分解消息
            string[] msgs = (m_strUnProcessMsg[id] + message).Split(new string[] { "[_" }, StringSplitOptions.RemoveEmptyEntries);

            //清空未处理消息
            m_strUnProcessMsg[id] = "";

            for (int i = 0; i < msgs.Length; i++)
            {
                msgs[i] = "[_" + msgs[i];
            }

            for (int i = 0; i < msgs.Length; i++)
            {
                //不完整消息
                if (!msgs[i].EndsWith("_]"))
                {
                    //判断是否为最后一组
                    if (i == msgs.Length - 1)
                    {
                        //等下次再处理
                        m_strUnProcessMsg[id] = msgs[i];
                    }
                    else
                    {
                        MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.BadMessage, msgs[i], client));
                    }

                    break;
                }

                //普通消息
                if (msgs[i].StartsWith(ISMessage.MsgNormalStart) && msgs[i].EndsWith(ISMessage.MsgNormalEnd))
                {
                    string revMsg = msgs[i].Substring(
                        ISMessage.MsgNormalStart.Length,
                        msgs[i].Length - ISMessage.MsgNormalStart.Length - ISMessage.MsgNormalEnd.Length);
                    MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.NormalMessage, revMsg, client));

                    break;
                }

                //心跳包
                if (msgs[i] == ISCommand.CmdClientHB || msgs[i] == ISCommand.CmdServerHB)
                {
                    MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.HeartBeat, null, client));

                    break;
                }

                //请求计算机名称
                if (msgs[i] == ISCommand.CmdGetPcName)
                {
                    string PCInfo = ISMessage.MsgPcNameStart + Environment.UserDomainName + "/" + Environment.UserName + ISMessage.MsgPcNameEnd;
                    MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.ComputerName, PCInfo, client));

                    break;
                }
                //收到计算机名称
                if (msgs[i].StartsWith(ISMessage.MsgPcNameStart) && msgs[i].EndsWith(ISMessage.MsgPcNameEnd))
                {
                    string revMsg = msgs[i].Substring(
                        ISMessage.MsgPcNameStart.Length,
                        msgs[i].Length - ISMessage.MsgPcNameStart.Length - ISMessage.MsgPcNameEnd.Length);
                    MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.ComputerName, revMsg, client));

                    break;
                }

                //强制下线命令
                if (msgs[i] == ISCommand.CmdClientRequShutdown)
                {
                    MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.ShutdownCommand, null, client));

                    break;
                }
                //请求下线命令
                if (msgs[i] == ISCommand.CmdClientNeedShutdown)
                {
                    MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.ShutdownCommand, null, client));

                    break;
                }

                MessageNotify?.Invoke(new ModSwapMessage(ESwapMsgType.UnknowMessage, msgs[i], client));
            }
        }