view api/Savers/Xml/WarFoundryXmlFileSaver.cs @ 321:2ba88d5fb881

Re #324: Add saving of Race and System data to files * Construct correct names for entries
author IBBoard <dev@ibboard.co.uk>
date Sat, 05 Mar 2011 20:08:41 +0000
parents 4be289645c4f
children 3e9b0603afad
line wrap: on
line source

using System;
using IBBoard.WarFoundry.API.Savers;
using IBBoard.WarFoundry.API.Objects;
using ICSharpCode.SharpZipLib.Zip;
using System.IO;

namespace IBBoard.WarFoundry.API.Savers.Xml
{
	public class WarFoundryXmlFileSaver : IWarFoundryFileSaver
	{
		public WarFoundryXmlFileSaver()
		{
		}

		public bool Save(string path, params WarFoundryLoadedObject[] objects)
		{
			ZipOutputStream zipStream = new ZipOutputStream(new FileStream(path, FileMode.Create));
			AddFiles(zipStream, objects);
			zipStream.Close();
			return true;
		}

		public void AddFiles(ZipOutputStream zipStream, WarFoundryLoadedObject[] objects)
		{
			foreach (WarFoundryLoadedObject obj in objects)
			{
				AddFile(zipStream, obj);
			}
		}

		public void AddFile(ZipOutputStream zipStream, WarFoundryLoadedObject obj)
		{
			ZipEntry entry = new ZipEntry(GetZipEntryName(obj));
			zipStream.PutNextEntry(entry);
		}
		
		private string GetZipEntryName(WarFoundryLoadedObject obj)
		{
			return obj.ID + GetFileExtension(obj);
		}

		public string GetFileExtension (WarFoundryLoadedObject obj)
		{
			string ext = "";
			
			if (obj is Army)
			{
				ext = ".armyx";
			}
			else if (obj is Race)
			{
				ext = ".racex";
			}
			else if (obj is GameSystem)
			{
				ext = ".systemx";
			}
			
			return ext;
		}
	}
}