public override bool InitOne(ContentManager content, int id)
        {
            XmlDocument _doc = new XmlDocument();
            _doc.Load(_xmlInfo);
            XmlNode _monster = _doc.SelectSingleNode(@"//Monster[@id = '" + id.ToString() + "']");
            _prototype[id] = new Monster();
            _prototype[id]._nsprite = 40;
            _prototype[id]._sprite = new GameSprite[_prototype[id]._nsprite];

            XmlNode node = _monster.SelectSingleNode(@"Stand");
            GameSprite[] temp = Utility.LoadSprites(node, content);
            for (int j = 0; j < 8; ++j)
                _prototype[id]._sprite[j] = temp[j];

            node = _monster.SelectSingleNode(@"Move");
            temp = Utility.LoadSprites(node, content);
            for (int j = 8; j < 16; ++j)
                _prototype[id]._sprite[j] = temp[j - 8];

            node = _monster.SelectSingleNode(@"Attack");
            temp = Utility.LoadSprites(node, content);
            for (int j = 16; j < 24; ++j)
                _prototype[id]._sprite[j] = temp[j - 16];

            node = _monster.SelectSingleNode(@"Dying");
            temp = Utility.LoadSprites(node, content);
            for (int j = 24; j < 32; ++j)
                _prototype[id]._sprite[j] = temp[j - 24];

            node = _monster.SelectSingleNode(@"Dyed");
            temp = Utility.LoadSprites(node, content);
            for (int j = 32; j < 40; ++j)
                _prototype[id]._sprite[j] = temp[j - 32];

            ((Monster)_prototype[id]).CellToMove = new List<Point>();
            ((Monster)_prototype[id]).DestPoint = new Point();
            ((Monster)_prototype[id]).IsMoving = false;
            ((Monster)_prototype[id]).Map = null;
            ((Monster)_prototype[id]).Speed = float.Parse(_monster.SelectSingleNode(@"Speed").InnerText);
            ((Monster)_prototype[id]).Hp = int.Parse(_monster.SelectSingleNode(@"Hp").InnerText);
            ((Monster)_prototype[id]).Mp = int.Parse(_monster.SelectSingleNode(@"Mp").InnerText);
            ((Monster)_prototype[id]).CriticalRate = int.Parse(_monster.SelectSingleNode(@"CriticalRate").InnerText);
            ((Monster)_prototype[id]).MinDamage = int.Parse(_monster.SelectSingleNode(@"MinDamage").InnerText);
            ((Monster)_prototype[id]).MaxDamage = int.Parse(_monster.SelectSingleNode(@"MaxDamage").InnerText);
            ((Monster)_prototype[id]).Defense = int.Parse(_monster.SelectSingleNode(@"Defense").InnerText);
            ((Monster)_prototype[id]).AttackSpeed = int.Parse(_monster.SelectSingleNode(@"AttackSpeed").InnerText);
            ((Monster)_prototype[id]).Range = int.Parse(_monster.SelectSingleNode(@"Range").InnerText);
            ((Monster)_prototype[id]).X = 0;
            ((Monster)_prototype[id]).Y = 0;
            ((Monster)_prototype[id]).HitFrame = int.Parse(_monster.SelectSingleNode(@"HitFrame").InnerText);
            ((Monster)_prototype[id]).Sight = int.Parse(_monster.SelectSingleNode(@"Sight").InnerText);
            ((Monster)_prototype[id]).MaxHp = int.Parse(_monster.SelectSingleNode(@"MaxHp").InnerText);
            ((Monster)_prototype[id]).MaxMp = int.Parse(_monster.SelectSingleNode(@"MaxMp").InnerText);
            ((Monster)_prototype[id]).ChangeToDodge = int.Parse(_monster.SelectSingleNode(@"ChangeToDodge").InnerText);
            ((Monster)_prototype[id]).ExpReward = int.Parse(_monster.SelectSingleNode(@"ExpReward").InnerText);
            return true;
        }
        public override bool InitPrototypes(ContentManager content, string fileName)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(fileName);
                XmlNodeList nodelist = doc.SelectNodes(@"//Monster");
                _nprototype = nodelist.Count;
                _prototype = new VisibleGameObject[_nprototype];
                for (int i = 0; i < nodelist.Count; ++i)
                {
                    _prototype[i] = new Monster();
                    _prototype[i]._nsprite = 40;
                    _prototype[i]._sprite = new GameSprite[_prototype[i]._nsprite];

                    XmlNode node = nodelist[i].SelectSingleNode(@"Stand");
                    GameSprite[] temp = Utility.LoadSprites(node, content);
                    for (int j = 0; j < 8; ++j)
                        _prototype[i]._sprite[j] = temp[j];

                    node = nodelist[i].SelectSingleNode(@"Move");
                    temp = Utility.LoadSprites(node, content);
                    for (int j = 8; j < 16; ++j)
                        _prototype[i]._sprite[j] = temp[j - 8];

                    node = nodelist[i].SelectSingleNode(@"Attack");
                    temp = Utility.LoadSprites(node, content);
                    for (int j = 16; j < 24; ++j)
                        _prototype[i]._sprite[j] = temp[j - 16];

                    node = nodelist[i].SelectSingleNode(@"Dying");
                    temp = Utility.LoadSprites(node, content);
                    for (int j = 24; j < 32; ++j)
                        _prototype[i]._sprite[j] = temp[j - 24];

                    node = nodelist[i].SelectSingleNode(@"Dyed");
                    temp = Utility.LoadSprites(node, content);
                    for (int j = 32; j < 40; ++j)
                        _prototype[i]._sprite[j] = temp[j - 32];

                    ((Monster)_prototype[i]).CellToMove = new List<Point>();
                    ((Monster)_prototype[i]).IsMoving = false;
                    ((Monster)_prototype[i]).Map = null;
                    ((Monster)_prototype[i]).Speed = int.Parse(nodelist[i].SelectSingleNode(@"Speed").InnerText);
                    ((Monster)_prototype[i]).Hp = int.Parse(nodelist[i].SelectSingleNode(@"Hp").InnerText);
                    ((Monster)_prototype[i]).Mp = int.Parse(nodelist[i].SelectSingleNode(@"Mp").InnerText);
                    ((Monster)_prototype[i]).CriticalRate = int.Parse(nodelist[i].SelectSingleNode(@"CriticalRate").InnerText);
                    ((Monster)_prototype[i]).Attack = int.Parse(nodelist[i].SelectSingleNode(@"Damage").InnerText);
                    ((Monster)_prototype[i]).Defense = int.Parse(nodelist[i].SelectSingleNode(@"Defense").InnerText);
                    ((Monster)_prototype[i]).AttackSpeed = int.Parse(nodelist[i].SelectSingleNode(@"AttackSpeed").InnerText);
                    ((Monster)_prototype[i]).Range = int.Parse(nodelist[i].SelectSingleNode(@"Range").InnerText);
                    ((Monster)_prototype[i]).X = 0;
                    ((Monster)_prototype[i]).Y = 0;
                    ((Monster)_prototype[i]).HitFrame = int.Parse(nodelist[i].SelectSingleNode(@"HitFrame").InnerText);
                    ((Monster)_prototype[i]).Sight = int.Parse(nodelist[i].SelectSingleNode(@"Sight").InnerText);
                }
                return true;
            }
            catch
            {
                return false;
            }
        }