private void TrySetEnemyLoop()
        {
            if (EnemyWaiting.Count == 0)
            {
                return;
            }
            if (Frame - _lastFrameSetEnemy > _enemyPlacingFrame) //准备写创造新敌人的条件
            {
                _lastFrameSetEnemy = Frame;
                RoutePosition r = new RoutePosition(FirstLink, FirstLink.GetNodeBeside(BeginNode), 0);
                switch (EnemyWaiting.Dequeue())
                {
                case Enemy.EnemyTypeEnum.Big:
                    Factory.CreatEnemy(r);
                    break;

                case Enemy.EnemyTypeEnum.Small:
                    var e = Factory.CreatEnemy(r);
                    e.BecomeSmall();
                    break;

                case Enemy.EnemyTypeEnum.None:
                    break;
                }
            }
        }
        private void SetMap()
        {
            //一、设置读取器
            Stream            stream   = new FileStream(LevelPath, FileMode.Open);
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.Async            = true;
            settings.IgnoreWhitespace = true;
            XmlReader reader = XmlReader.Create(stream, settings);

            //二、生成点
            reader.ReadToFollowing("allnodes");
            while (reader.NodeType != XmlNodeType.EndElement || reader.Name != "allnodes")
            {//读取循环到结束节点为止
                reader.ReadToFollowing("id");
                int id = Convert.ToInt32(reader.ReadString());
                reader.ReadToFollowing("x");
                float x = Convert.ToSingle(reader.ReadString());
                reader.ReadToFollowing("y");
                float y = Convert.ToSingle(reader.ReadString());
                Factory.CreatNode(id, new Vector2(x, y));
                reader.ReadEndElement();
                reader.ReadEndElement();
            }
            //设置起点终点
            reader.ReadToFollowing("startnode");
            reader.Read();
            NodeDic[reader.ReadContentAsInt()].BecomeBegin();
            reader.ReadToFollowing("endnode");
            reader.Read();
            NodeDic[reader.ReadContentAsInt()].BecomeEnd();

            //三、生成链接
            while (reader.NodeType != XmlNodeType.EndElement || reader.Name != "links")
            {
                reader.ReadToFollowing("start");
                reader.Read();
                int start = reader.ReadContentAsInt();
                reader.ReadToFollowing("end");
                reader.Read();
                int end = reader.ReadContentAsInt();
                Factory.CreatLink(NodeDic[start], NodeDic[end]);
                reader.ReadEndElement();
                reader.ReadEndElement();
            }

            //四、设置敌人列表
            reader.ReadToFollowing("enemies");
            if (!reader.IsEmptyElement)
            {
                while (reader.NodeType != XmlNodeType.EndElement || reader.Name != "enemies")
                {
                    reader.ReadToFollowing("type");
                    reader.Read();
                    EnemyWaiting.Enqueue((Enemy.EnemyTypeEnum)reader.ReadContentAsInt());
                    reader.ReadEndElement();
                    reader.ReadEndElement();
                }
            }

            //五、生成既有火箭
            reader.ReadToFollowing("allarrows");
            if (!reader.IsEmptyElement)
            {
                while (reader.NodeType != XmlNodeType.EndElement || reader.Name != "allarrows")
                {
                    reader.ReadToFollowing("type");
                    reader.Read();
                    int type = reader.ReadContentAsInt();
                    reader.ReadToFollowing("x");
                    reader.Read();
                    float x = reader.ReadContentAsFloat();
                    reader.ReadToFollowing("y");
                    reader.Read();
                    float y = reader.ReadContentAsFloat();
                    reader.ReadToFollowing("direction");
                    reader.Read();
                    float   direction = reader.ReadContentAsFloat();
                    Vector2 position  = new Vector2(x, y);
                    Vector2 dVector   = new Vector2(Mathf.Cos(direction * Mathf.Deg2Rad + Mathf.PI / 2), Mathf.Sin(direction * Mathf.Deg2Rad + Mathf.PI / 2));
                    switch (type)
                    {
                    case 0:
                        Factory.CreatDrillRocket(position, dVector);
                        break;

                    case 1:
                        Factory.CreatReturnRocket(position, dVector);
                        break;
                    }

                    reader.ReadEndElement();
                    reader.ReadEndElement();
                }
            }
            //六、设置玩家可用火箭
            reader.ReadToFollowing("attackarrow");
            reader.Read();
            DrillRocketUnused = reader.ReadContentAsInt();
            reader.ReadToFollowing("returnarrow");
            reader.Read();
            ReturnRocketUnused = reader.ReadContentAsInt();
            reader.Close();
        }