internal static EntityHands CreateStandardHandsHumanoid()
        {
            EntityHands h = new EntityHands();

            h.Add(new EntityHand());
            h.Add(new EntityHand());
            return(h);
        }
        public EntityBase(XElement entityBaseElement) : this()
        {
            ID    = int.Parse(entityBaseElement.Element("id").Value);
            Level = int.Parse(entityBaseElement.Element("level").Value);

            // attributes
            XElement attributesElement = entityBaseElement.Element("attributes");

            Attributes.Strength      = int.Parse(attributesElement.Element("strength").Value);
            Attributes.Intelligence  = int.Parse(attributesElement.Element("intelligence").Value);
            Attributes.Vitality      = int.Parse(attributesElement.Element("vitality").Value);
            Attributes.MaximumHealth = int.Parse(attributesElement.Element("maximum-health").Value);
            Attributes.CurrentHealth = Attributes.MaximumHealth;
            Attributes.MaximumMagic  = int.Parse(attributesElement.Element("maximum-magic").Value);
            Attributes.CurrentMagic  = Attributes.MaximumMagic;

            //<inventory>
            //  <hands>
            //    <hand />
            //    <hand />
            //  </hands>
            //  <body>
            //    <armor-head />
            //    <armor-feet />
            //    <armor-chest>0</armor-chest>
            //    <ring />
            //    <ring />
            //    <amulet />
            //    <backpack>0</backpack>
            //  </body>
            //  <gold>50</gold>
            //</inventory>
            var inventoryElement = entityBaseElement.Element("inventory");

            // hands
            var handElements = inventoryElement.Elements("hands");

            foreach (var handElement in handElements.Elements("hand"))
            {
                Hands.Add(new EntityHand(handElement));
            }

            // body
            var bodyElement = inventoryElement.Element("body");

            foreach (var bodyPartElement in bodyElement.Elements())
            {
                switch (bodyPartElement.Name.LocalName)
                {
                case "armor-chest":
                    Body.BodyParts.Add(new EntityBodyPartChest(bodyPartElement));
                    break;

                case "armor-head":
                    Body.BodyParts.Add(new EntityBodyPartHead(bodyPartElement));
                    break;

                case "armor-feet":
                    Body.BodyParts.Add(new EntityBodyPartFeet(bodyPartElement));
                    break;

                case "backpack":
                    // TODO: finish
                    // Body.BodyParts.Add(new EntityBodyPartHead(bodyPartElement));
                    break;

                case "finger":
                    Body.BodyParts.Add(new EntityBodyPartFinger(bodyPartElement));
                    break;

                case "neck":
                    Body.BodyParts.Add(new EntityBodyPartNeck(bodyPartElement));
                    break;
                }
            }

            // gold
            var goldNode = inventoryElement.Element("gold");

            if (goldNode != null)
            {
                Gold = int.Parse(goldNode.Value);
            }
        }