Пример #1
0
        //请求唯一值
        private static byte[] OnRequestCreateEntity(UdpPoint point, IPEndPoint remote, RequestDataHandle handle)
        {
            List <byte> buffer = new List <byte>();
            int         rand;

            //Console.WriteLine("回复唯一实体随机值" + rand);
            int    license = handle.data.ToInt(0);
            string id      = handle.data.ToStr(4);

            if (NodeControl.Instance.NodeLicenseMapDic.ContainsKey(license) && EntityContent.Instance.EntityModelMemCacheDic.ContainsKey(id))
            {
                rand = ServerCtrl.EntityLicenseRandom.Next();
                //获取一个唯一随机值
                CreateEntityCmd cmd = CreateEntityCmd.Instance(rand, id, license, 0, 0);
                ServerCtrl.ReceiveCmdStack.Push(cmd);

                buffer.AddRange(rand.ToBytes());
            }
            else
            {
                Console.WriteLine("[节点许可无效或者实体识别无效]" + license + "," + id);
                return(new byte[0]);
            }

            return(buffer.ToArray());
        }
Пример #2
0
        public void CheckReceiveCmdStack()
        {
            BaseCmd cmd;

            while (ReceiveCmdStack.TryPop(out cmd))
            {
                byte[] buffer;
                switch (cmd.type)
                {
                case CmdEnum.Key:
                    KeyCmd key = (KeyCmd)cmd;
                    key.frame = CurrentFrame;
                    buffer    = key.ToBytes();
                    break;

                case CmdEnum.Order:
                    OrderCmd order = (OrderCmd)cmd;
                    order.frame = CurrentFrame;
                    buffer      = order.ToBytes();
                    break;

                case CmdEnum.CreateEntity:
                    CreateEntityCmd create = (CreateEntityCmd)cmd;
                    create.frame = CurrentFrame;
                    buffer       = create.ToBytes();
                    Console.WriteLine("[服务端同意创建]" + create.player + "[识别]" + create.id + "[索引]" + create.index + "[当前帧]" + CurrentFrame + "[时间]" + TickTime);
                    break;

                default:
                    buffer = cmd.ToBytes();
                    break;
                }
                NodeCmdBuffer.Push(buffer);
            }
        }