コード例 #1
0
        public MainWindow()
        {
            string methodMD5 = "43DFFFDA19287556";

            try {
                log = new LogFile(".\\工具日志.log");
                log.Generate(methodMD5 + " 进入");
                InitializeComponent();
                gameData = new GameData();
                GamePanel.DataContext = gameData;
#if DEBUG
                gameData.Line = 0;
#else
                gameData.Line = 0;
#endif
                sendData = new List <byte>();
                MD5           md5  = MD5.Create();
                byte[]        hash = md5.ComputeHash(Encoding.UTF8.GetBytes(CCSystemInfo.GetMacAddress() + CCSystemInfo.GetCpuID()));
                StringBuilder sb   = new StringBuilder();
                foreach (byte b in hash)
                {
                    _ = sb.Append(b.ToString("X2"));
                }
                machineIdentity                = CCSerializeTool.StringToByte(sb.ToString());
                client                         = new CCSocketClient();
                client.OnConnectedEvent       += Client_OnConnectedEvent;
                client.OnConnectionBreakEvent += Client_OnConnectionBreakEvent;
                client.OnReceivePackageEvent  += Client_OnReceivePackageEvent;
                client.OnSocketExceptionEvent += Client_OnSocketExceptionEvent;
                connectTimer                   = new Timer();
                connectTimer.Elapsed          += ConnectTimer_Elapsed;
                connectTimer.AutoReset         = false;
                sendBaseInfoTimer              = new Timer();
                sendBaseInfoTimer.Elapsed     += SendBaseInfoTimer_Elapsed;;
                sendBaseInfoTimer.AutoReset    = false;
                sendBaseInfoTimer.Interval     = 3000;
                pingTimer                      = new Timer();
                pingTimer.Elapsed             += PingTimer_Elapsed;
                pingTimer.Interval             = 150;
                pingTimer.AutoReset            = true;
                Connect();
            } catch (Exception exception) {
                log.Generate(methodMD5 + " 异常,异常信息:" + exception.Message);
                log.Flush();
                throw;
            } finally {
                log.Generate(methodMD5 + " 退出");
            }
        }
コード例 #2
0
        private void TextBox_SourceUpdated_3(object sender, DataTransferEventArgs e)
        {
            string methodMD5 = "7CF22B3EA1783029";

            try {
                log.Generate(methodMD5 + " 进入");
                client.SendPackage(5, CCSerializeTool.StringToByte(gameData.No4Qin));
            } catch (Exception exception) {
                log.Generate(methodMD5 + " 异常,异常信息:" + exception.Message);
                log.Flush();
                throw;
            } finally {
                log.Generate(methodMD5 + " 退出");
            }
        }
コード例 #3
0
        private void SendBaseInfoTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            string methodMD5 = "B5BE9A7B29C08AD2";

            try {
                log.Generate(methodMD5 + " 进入");
                if (gameData.SendInfoSuccess)
                {
                    lock (sendData) {
                        sendData.Clear();
                        if (startPing == false)
                        {
                            lastPing  = Environment.TickCount;
                            startPing = true;
                            CCSerializeTool.IntToByteList(lastPing, sendData);
                        }
                        else
                        {
                            CCSerializeTool.IntToByteList(Environment.TickCount, sendData);
                        }
                        client.SendPackage(1, sendData.ToArray());
                    }
                }
                else
                {
                    lock (sendData) {
                        sendData.Clear();
                        CCSerializeTool.IntToByteList(gameData.Line, sendData);
                        sendData.AddRange(machineIdentity);
                        CCSerializeTool.StringToByteList(CCProcessInfo.GetProcessPath(GetWuXiaProcess()), sendData);
                        client.SendPackage(0, sendData.ToArray());
                    }
                }
                sendBaseInfoTimer.Start();
            } catch (Exception exception) {
                log.Generate(methodMD5 + " 异常,异常信息:" + exception.Message);
                log.Flush();
                throw;
            } finally {
                log.Generate(methodMD5 + " 退出");
            }
        }
コード例 #4
0
        private void OneKey11_MouseDown(object sender, MouseButtonEventArgs e)
        {
            string methodMD5 = "78A7758259355E5D";

            try {
                log.Generate(methodMD5 + " 进入");
                if (e.ChangedButton == MouseButton.Left)
                {
                    client.SendPackage(6, CCSerializeTool.IntToByte(11));
                }
                else if (e.ChangedButton == MouseButton.Right)
                {
                    client.SendPackage(7, CCSerializeTool.IntToByte(11));
                }
            } catch (Exception exception) {
                log.Generate(methodMD5 + " 异常,异常信息:" + exception.Message);
                log.Flush();
                throw;
            } finally {
                log.Generate(methodMD5 + " 退出");
            }
        }
コード例 #5
0
        private void Hook_KeyDownEvent(CCKeyCode keyCode)
        {
            switch (keyCode)
            {
            case CCKeyCode.VK_LCONTROL:
                ctrlState = true;
                break;

            case CCKeyCode.Numeric1:
                gameData[0].LogLock.EnterWriteLock();
                try {
                    LinkedListNode <LogDetail> node = PopLog(0);
                    node.Value.Content = "数字键 1被按下," + (ctrlState ? "按下了ctrl。" : "没按ctrl。");
                    node.Value.Time    = Environment.TickCount;
                    gameData[0].Log.AddLast(node);
                } finally {
                    gameData[0].LogLock.ExitWriteLock();
                }
                if (ctrlState)
                {
                    if (gameData[0].HitQinKeyLength < gameData[0].HitQinKey.Length)
                    {
                        gameData[0].HitQinKey[gameData[0].HitQinKeyLength++] = 1;
                    }
                    gameData[0].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo userInfo in gameData[0].ClientInfo)
                        {
                            server.SendPackage(userInfo.Id, 2, gameData[0].HitQinKey);
                        }
                    } finally {
                        gameData[0].ClientInfoLock.ExitReadLock();
                    }
                }
                break;

            case CCKeyCode.Numeric2:
                gameData[0].LogLock.EnterWriteLock();
                try {
                    LinkedListNode <LogDetail> node = PopLog(0);
                    node.Value.Content = "数字键 2被按下," + (ctrlState ? "按下了ctrl。" : "没按ctrl。");
                    node.Value.Time    = Environment.TickCount;
                    gameData[0].Log.AddLast(node);
                } finally {
                    gameData[0].LogLock.ExitWriteLock();
                }
                if (ctrlState)
                {
                    if (gameData[0].HitQinKeyLength < gameData[0].HitQinKey.Length)
                    {
                        gameData[0].HitQinKey[gameData[0].HitQinKeyLength++] = 2;
                    }
                    gameData[0].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo userInfo in gameData[0].ClientInfo)
                        {
                            server.SendPackage(userInfo.Id, 2, gameData[0].HitQinKey);
                        }
                    } finally {
                        gameData[0].ClientInfoLock.ExitReadLock();
                    }
                }
                break;

            case CCKeyCode.Numeric3:
                gameData[0].LogLock.EnterWriteLock();
                try {
                    LinkedListNode <LogDetail> node = PopLog(0);
                    node.Value.Content = "数字键 3被按下," + (ctrlState ? "按下了ctrl。" : "没按ctrl。");
                    node.Value.Time    = Environment.TickCount;
                    gameData[0].Log.AddLast(node);
                } finally {
                    gameData[0].LogLock.ExitWriteLock();
                }
                if (ctrlState)
                {
                    if (gameData[0].HitQinKeyLength < gameData[0].HitQinKey.Length)
                    {
                        gameData[0].HitQinKey[gameData[0].HitQinKeyLength++] = 3;
                    }
                    gameData[0].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo userInfo in gameData[0].ClientInfo)
                        {
                            server.SendPackage(userInfo.Id, 2, gameData[0].HitQinKey);
                        }
                    } finally {
                        gameData[0].ClientInfoLock.ExitReadLock();
                    }
                }
                break;

            case CCKeyCode.Numeric4:
                gameData[0].LogLock.EnterWriteLock();
                try {
                    LinkedListNode <LogDetail> node = PopLog(0);
                    node.Value.Content = "数字键 4被按下," + (ctrlState ? "按下了ctrl。" : "没按ctrl。");
                    node.Value.Time    = Environment.TickCount;
                    gameData[0].Log.AddLast(node);
                } finally {
                    gameData[0].LogLock.ExitWriteLock();
                }
                if (ctrlState)
                {
                    if (gameData[0].HitQinKeyLength < gameData[0].HitQinKey.Length)
                    {
                        gameData[0].HitQinKey[gameData[0].HitQinKeyLength++] = 4;
                    }
                    gameData[0].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo userInfo in gameData[0].ClientInfo)
                        {
                            server.SendPackage(userInfo.Id, 2, gameData[0].HitQinKey);
                        }
                    } finally {
                        gameData[0].ClientInfoLock.ExitReadLock();
                    }
                }
                break;

            case CCKeyCode.Numeric5:
                gameData[0].LogLock.EnterWriteLock();
                try {
                    LinkedListNode <LogDetail> node = PopLog(0);
                    node.Value.Content = "数字键 5被按下," + (ctrlState ? "按下了ctrl。" : "没按ctrl。");
                    node.Value.Time    = Environment.TickCount;
                    gameData[0].Log.AddLast(node);
                } finally {
                    gameData[0].LogLock.ExitWriteLock();
                }
                if (ctrlState)
                {
                    if (gameData[0].HitQinKeyLength < gameData[0].HitQinKey.Length)
                    {
                        gameData[0].HitQinKey[gameData[0].HitQinKeyLength++] = 5;
                    }
                    gameData[0].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo userInfo in gameData[0].ClientInfo)
                        {
                            server.SendPackage(userInfo.Id, 2, gameData[0].HitQinKey);
                        }
                    } finally {
                        gameData[0].ClientInfoLock.ExitReadLock();
                    }
                }
                break;

            case CCKeyCode.Numeric7:
                if (ctrlState)
                {
                    gameData[0].LogLock.EnterWriteLock();
                    try {
                        LinkedListNode <LogDetail> node = PopLog(0);
                        node.Value.Content = "补弦清屏---------------------";
                        node.Value.Time    = Environment.TickCount;
                        gameData[0].Log.AddLast(node);
                    } finally {
                        gameData[0].LogLock.ExitWriteLock();
                    }
                    gameData[0].No1Qin = gameData[0].No2Qin = gameData[0].No3Qin = gameData[0].No4Qin = "";
                    for (int i = 0; i < gameData[0].HitQinKey.Length; i++)
                    {
                        gameData[0].HitQinKey[i] = 0;
                    }
                    gameData[0].HitQinKeyLength = 0;
                    for (int i = 0; i < 12; i++)
                    {
                        gameData[0].QinKey[i] = 0;
                    }
                    gameData[0].ClientInfoLock.EnterReadLock();
                    try {
                        byte[] intByte = new byte[4];
                        foreach (UserInfo userInfo in gameData[0].ClientInfo)
                        {
                            CCSerializeTool.IntToByte(userInfo.Id, intByte, 0);
                            server.SendPackage(userInfo.Id, 3, intByte);
                        }
                    } finally {
                        gameData[0].ClientInfoLock.ExitReadLock();
                    }
                }
                break;

            default:
                break;
            }
        }
コード例 #6
0
        private void Server_OnReceivePackageEvent(int id, int signal, byte[] buffer, object userToken)
        {
            if (userToken is LinkedListNode <UserInfo> userInfoNode)
            {
                UserInfo userInfo = userInfoNode.Value;
                userInfo.LastReceiveTime = DateTime.Now;
                int    startIndex = 0;
                byte[] data;
                switch (signal)
                {
                case 0:
                    int line = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    lock (gameData) {
                        int i = 0;
                        for (; i < gameData.Count; i++)
                        {
                            if (line == gameData[i].Line)
                            {
                                if (userInfo.Line != i)
                                {
                                    gameData[userInfo.Line].ClientInfoLock.EnterWriteLock();
                                    try {
                                        gameData[userInfo.Line].ClientInfo.Remove(userInfoNode);
                                    } finally {
                                        gameData[userInfo.Line].ClientInfoLock.ExitWriteLock();
                                    }
                                    userInfo.Line = i;
                                    gameData[userInfo.Line].ClientInfoLock.EnterWriteLock();
                                    try {
                                        gameData[userInfo.Line].ClientInfo.AddLast(userInfoNode);
                                    } finally {
                                        gameData[userInfo.Line].ClientInfoLock.ExitWriteLock();
                                    }
                                }
                                break;
                            }
                        }
                        if (i == gameData.Count)
                        {
                            gameData.Add(new GameData()
                            {
                                Line = line
                            });
                            gameData[userInfo.Line].ClientInfoLock.EnterWriteLock();
                            try {
                                gameData[userInfo.Line].ClientInfo.Remove(userInfoNode);
                            } finally {
                                gameData[userInfo.Line].ClientInfoLock.ExitWriteLock();
                            }
                            userInfo.Line = i;
                            gameData[userInfo.Line].ClientInfoLock.EnterWriteLock();
                            try {
                                gameData[userInfo.Line].ClientInfo.AddLast(userInfoNode);
                            } finally {
                                gameData[userInfo.Line].ClientInfoLock.ExitWriteLock();
                            }
                        }
                    }
                    userInfo.MachineIdentity = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    userInfo.GamePath        = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    lock (sendData) {
                        sendData.Clear();
                        CCSerializeTool.IntToByteList(userInfo.Id, sendData);
                        CCSerializeTool.StringToByteList(gameData[userInfo.Line].No1Qin, sendData);
                        CCSerializeTool.StringToByteList(gameData[userInfo.Line].No2Qin, sendData);
                        CCSerializeTool.StringToByteList(gameData[userInfo.Line].No3Qin, sendData);
                        CCSerializeTool.StringToByteList(gameData[userInfo.Line].No4Qin, sendData);
                        for (int i = 0; i < gameData[userInfo.Line].QinKey.Count; i++)
                        {
                            CCSerializeTool.IntToByteList(gameData[userInfo.Line].QinKey[i], sendData);
                        }
                        sendData.AddRange(gameData[userInfo.Line].HitQinKey);
                        server.SendPackage(id, 0, sendData.ToArray());
                    }
                    break;

                case 1:
                    if (userInfo.GamePath.Equals("") || userInfo.MachineIdentity.Equals(""))
                    {
                        server.SendPackage(id, 4, buffer);
                    }
                    else
                    {
                        server.SendPackage(id, 1, buffer);
                    }
                    break;

                case 2:
                    gameData[userInfo.Line].No1Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData[userInfo.Line].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo tempUserInfo in gameData[userInfo.Line].ClientInfo)
                        {
                            if (tempUserInfo.Id != id)
                            {
                                server.SendPackage(tempUserInfo.Id, 5, buffer);
                            }
                        }
                    } finally {
                        gameData[userInfo.Line].ClientInfoLock.ExitReadLock();
                    }
                    GenerateLog(userInfo.Line, userInfo.Remark + " 修改一号琴缺弦为:" + gameData[userInfo.Line].No1Qin);
                    break;

                case 3:
                    gameData[userInfo.Line].No2Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData[userInfo.Line].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo tempUserInfo in gameData[userInfo.Line].ClientInfo)
                        {
                            if (tempUserInfo.Id != id)
                            {
                                server.SendPackage(tempUserInfo.Id, 6, buffer);
                            }
                        }
                    } finally {
                        gameData[userInfo.Line].ClientInfoLock.ExitReadLock();
                    }
                    GenerateLog(userInfo.Line, userInfo.Remark + " 修改二号琴缺弦为:" + gameData[userInfo.Line].No2Qin);
                    break;

                case 4:
                    gameData[userInfo.Line].No3Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData[userInfo.Line].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo tempUserInfo in gameData[userInfo.Line].ClientInfo)
                        {
                            if (tempUserInfo.Id != id)
                            {
                                server.SendPackage(tempUserInfo.Id, 7, buffer);
                            }
                        }
                    } finally {
                        gameData[userInfo.Line].ClientInfoLock.ExitReadLock();
                    }
                    GenerateLog(userInfo.Line, userInfo.Remark + " 修改三号琴缺弦为:" + gameData[userInfo.Line].No3Qin);
                    break;

                case 5:
                    gameData[userInfo.Line].No4Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData[userInfo.Line].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo tempUserInfo in gameData[userInfo.Line].ClientInfo)
                        {
                            if (tempUserInfo.Id != id)
                            {
                                server.SendPackage(tempUserInfo.Id, 8, buffer);
                            }
                        }
                    } finally {
                        gameData[userInfo.Line].ClientInfoLock.ExitReadLock();
                    }
                    GenerateLog(userInfo.Line, userInfo.Remark + " 修改四号琴缺弦为:" + gameData[userInfo.Line].No4Qin);
                    break;

                case 6:
                    lock (sendData) {
                        sendData.Clear();
                        int keyIndex = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                        for (int i = 0; i < gameData[userInfo.Line].QinKey.Count; i++)
                        {
                            if (i != keyIndex)
                            {
                                if (gameData[userInfo.Line].QinKey[i] == userInfo.Id)
                                {
                                    gameData[userInfo.Line].QinKey[i] = 0;
                                }
                            }
                            else
                            {
                                if (gameData[userInfo.Line].QinKey[i] == 0)
                                {
                                    gameData[userInfo.Line].QinKey[i] = userInfo.Id;
                                    GenerateLog(userInfo.Line, userInfo.Remark + " 补 " + keyIndex.ToString() + " 琴弦。");
                                }
                                else if (gameData[userInfo.Line].QinKey[i] == userInfo.Id)
                                {
                                    gameData[userInfo.Line].QinKey[i] = 0;
                                    GenerateLog(userInfo.Line, userInfo.Remark + " 放弃补 " + keyIndex.ToString() + " 琴弦。");
                                }
                                else
                                {
                                    GenerateLog(userInfo.Line, userInfo.Remark + " 尝试补 " + keyIndex.ToString() + " 琴弦但冲突。");
                                }
                            }
                            CCSerializeTool.IntToByteList(gameData[userInfo.Line].QinKey[i], sendData);
                        }
                        CCSerializeTool.IntToByteList(keyIndex, sendData);
                        data = sendData.ToArray();
                    }
                    gameData[userInfo.Line].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo tempUserInfo in gameData[userInfo.Line].ClientInfo)
                        {
                            if (tempUserInfo.Id != id)
                            {
                                server.SendPackage(tempUserInfo.Id, 9, data, 0, 48);
                            }
                            else
                            {
                                server.SendPackage(tempUserInfo.Id, 10, data);
                            }
                        }
                    } finally {
                        gameData[userInfo.Line].ClientInfoLock.ExitReadLock();
                    }
                    break;

                case 7:
                    lock (sendData) {
                        sendData.Clear();
                        int keyIndex = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                        for (int i = 0; i < gameData[userInfo.Line].QinKey.Count; i++)
                        {
                            if (i == keyIndex)
                            {
                                if (gameData[userInfo.Line].QinKey[i] == 0)
                                {
                                    gameData[userInfo.Line].QinKey[i] = userInfo.Id;
                                    GenerateLog(userInfo.Line, userInfo.Remark + " 强制补 " + keyIndex.ToString() + " 琴弦。");
                                }
                                else
                                {
                                    gameData[userInfo.Line].QinKey[i] = 0;
                                    GenerateLog(userInfo.Line, userInfo.Remark + " 强制取消补 " + keyIndex.ToString() + " 琴弦。");
                                }
                            }
                            CCSerializeTool.IntToByteList(gameData[userInfo.Line].QinKey[i], sendData);
                        }
                        CCSerializeTool.IntToByteList(keyIndex, sendData);
                        data = sendData.ToArray();
                    }
                    gameData[userInfo.Line].ClientInfoLock.EnterReadLock();
                    try {
                        foreach (UserInfo tempUserInfo in gameData[userInfo.Line].ClientInfo)
                        {
                            if (tempUserInfo.Id != id)
                            {
                                server.SendPackage(tempUserInfo.Id, 9, data, 0, 48);
                            }
                            else
                            {
                                server.SendPackage(tempUserInfo.Id, 10, data);
                            }
                        }
                    } finally {
                        gameData[userInfo.Line].ClientInfoLock.ExitReadLock();
                    }
                    break;

                case 8:
                    userInfo.MachineIdentity = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    userInfo.GamePath        = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    break;

                default:
                    break;
                }
            }
        }
コード例 #7
0
        private void Client_OnReceivePackageEvent(int signal, byte[] buffer)
        {
            string methodMD5 = "3C8905B3EE89BB1A";

            try {
                log.Generate(methodMD5 + " 进入");
                int startIndex = 0;
                int ping;
                switch (signal)
                {
                case 0:
                    gameData.SendInfoSuccess = true;
                    int licence = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    if (!gameData.Licence.Contains(licence))
                    {
                        gameData.Licence.Add(licence);
                    }
                    gameData.No1Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData.No2Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData.No3Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    gameData.No4Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    for (int i = 0; i < 12; i++)
                    {
                        gameData.QinKey[i] = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    }
                    gameData.QinKey = gameData.QinKey;
                    for (int i = 0; i < gameData.HitQinKey.Length; i++)
                    {
                        gameData.HitQinKey[i] = buffer[startIndex++];
                    }
                    gameData.HitQinKey = gameData.HitQinKey;
                    pingTimer.Start();
                    break;

                case 1:
                    ping          = Environment.TickCount - CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    startPing     = false;
                    gameData.Ping = ping > 9999 ? 9999 : (ping < 0 ? 9999 : ping);
                    break;

                case 2:
                    for (int i = 0; i < gameData.HitQinKey.Length; i++)
                    {
                        gameData.HitQinKey[i] = buffer[startIndex++];
                    }
                    gameData.HitQinKey = gameData.HitQinKey;
                    break;

                case 3:
                    gameData.Licence.Clear();
                    gameData.Licence.Add(CCSerializeTool.ByteToInt(buffer, ref startIndex));
                    gameData.No1Qin = gameData.No2Qin = gameData.No3Qin = gameData.No4Qin = "";
                    for (int i = 0; i < gameData.QinKey.Count; i++)
                    {
                        gameData.QinKey[i] = 0;
                    }
                    gameData.QinKey = gameData.QinKey;
                    for (int i = 0; i < gameData.HitQinKey.Length; i++)
                    {
                        gameData.HitQinKey[i] = 0;
                    }
                    gameData.HitQinKey   = gameData.HitQinKey;
                    gameData.HitKeyIndex = 0;
                    break;

                case 4:
                    ping          = Environment.TickCount - CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    startPing     = false;
                    gameData.Ping = ping > 9999 ? 9999 : (ping < 0 ? 9999 : ping);
                    lock (sendData) {
                        sendData.Clear();
                        sendData.AddRange(machineIdentity);
                        CCSerializeTool.StringToByteList(CCProcessInfo.GetProcessPath(GetWuXiaProcess()), sendData);
                        client.SendPackage(8, sendData.ToArray());
                    }
                    break;

                case 5:
                    gameData.No1Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    break;

                case 6:
                    gameData.No2Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    break;

                case 7:
                    gameData.No3Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    break;

                case 8:
                    gameData.No4Qin = CCSerializeTool.ByteToString(buffer, ref startIndex);
                    break;

                case 9:
                    for (int i = 0; i < 12; i++)
                    {
                        gameData.QinKey[i] = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    }
                    gameData.QinKey = gameData.QinKey;
                    break;

                case 10:
                    for (int i = 0; i < 12; i++)
                    {
                        gameData.QinKey[i] = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    }
                    gameData.QinKey = gameData.QinKey;
                    int keyIndex = CCSerializeTool.ByteToInt(buffer, ref startIndex);
                    if (!gameData.Licence.Contains(gameData.QinKey[keyIndex]))
                    {
                        SystemSounds.Asterisk.Play();
                        Dispatcher.Invoke(() => {
                            Storyboard Storyboard1 = FindResource("Storyboard1") as Storyboard;
                            Storyboard1.Stop();
                            Storyboard.SetTargetName(Storyboard1, "OneKey" + keyIndex.ToString());
                            Storyboard1.Begin();
                        });
                    }
                    break;

                default:
                    break;
                }
            } catch (Exception exception) {
                log.Generate(methodMD5 + " 异常,异常信息:" + exception.Message);
                log.Flush();
                throw;
            } finally {
                log.Generate(methodMD5 + " 退出");
            }
        }