private void LoadFonts(IODataPack ioDataPack) {
            XElement xml = ioDataPack.Xml;
            IOContent contentType = ioDataPack.Type;
            IOOperation operation = ioDataPack.Operation;

            int fileCount = xml.Elements("font").Count();
            int filesLoaded = 0;
            double progress = (double)filesLoaded / (double)fileCount * 100;

            OnStart(this, new IOEventArgs(0, ioDataPack.Operation, ioDataPack.Type));
            foreach (XElement element in xml.Elements("font")) {
                SpriteFont font = Game.Content.Load<SpriteFont>(element.Element("resource").Value);
                int id = Convert.ToInt32(element.Element("id").Value);
                string name = element.Element("name").Value;
                fonts.Add(new FontPack(font, id, name));
                links.Add(id, fonts.Count - 1);
                links.Add(name, fonts.Count - 1);
                filesLoaded++;
                progress = (double)filesLoaded / (double)fileCount * 100;
                OnProgress(this, new IOEventArgs(progress, ioDataPack.Operation, ioDataPack.Type));
            }
            OnComplete(this, new IOEventArgs(progress, ioDataPack.Operation, ioDataPack.Type));
        }
        /// <summary>
        /// Creates texturepacks and adds them to the packs list.
        /// </summary>
        private void LoadTexturePacks(IODataPack ioDataPack) {
            XElement xml = ioDataPack.Xml;
            IOContent contentType = ioDataPack.Type;
            IOOperation operation = ioDataPack.Operation;

            int totalFiles = FileCount(xml);
            int loadedFiles = 0;
            int progress = 0;
            OnStart(this, new IOEventArgs(progress, operation, contentType));
            IEnumerable<XElement> xmlPacks = from element in xml.Elements() select element;
            
            foreach (XElement xmlData in xmlPacks) {
                int id = Convert.ToInt32(xmlData.Element("id").Value);
                int count = Convert.ToInt32(xmlData.Element("frames").Value);
                string folder = xmlData.Element("folder").Value;
                string name = xmlData.Element("name").Value;
                packs.Add(CreateTexturePack(id, name, folder, count, ref loadedFiles, ref totalFiles, contentType, operation));
                links.Add(name, packs.Count-1);
                links.Add(id, packs.Count-1);
                OnNewPack(this, new IOEventArgs(progress, operation, contentType));
            }
            OnComplete(this, new IOEventArgs(progress, operation, contentType));
        }