//请求唯一值 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()); }
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); } }