using System;
using System.Collections;
using System.IO;
using Server.Items;

namespace Server.Commands
{
    public class ExportCommand
    {
        private const string ExportFile = @"C:\Uo\WorldForge\items.wsc";
        public static void Initialize()
        {
            CommandSystem.Register("ExportWSC", AccessLevel.Administrator, new CommandEventHandler(Export_OnCommand));
        }

        public static void Export_OnCommand(CommandEventArgs e)
        {
            StreamWriter w = new StreamWriter(ExportFile);
            ArrayList remove = new ArrayList();
            int count = 0;

            e.Mobile.SendMessage("Exporting all static items to \"{0}\"...", ExportFile);
            e.Mobile.SendMessage("This will delete all static items in the world.  Please make a backup.");

            foreach (Item item in World.Items.Values)
            {
                if ((item is Static || item is BaseFloor || item is BaseWall) &&
                    item.RootParent == null)
                {
                    w.WriteLine("SECTION WORLDITEM {0}", count);
                    w.WriteLine("{");
                    w.WriteLine("SERIAL {0}", item.Serial);
                    w.WriteLine("NAME #");
                    w.WriteLine("NAME2 #");
                    w.WriteLine("ID {0}", item.ItemID);
                    w.WriteLine("X {0}", item.X);
                    w.WriteLine("Y {0}", item.Y);
                    w.WriteLine("Z {0}", item.Z);
                    w.WriteLine("COLOR {0}", item.Hue);
                    w.WriteLine("CONT -1");
                    w.WriteLine("TYPE 0");
                    w.WriteLine("AMOUNT 1");
                    w.WriteLine("WEIGHT 255");
                    w.WriteLine("OWNER -1");
                    w.WriteLine("SPAWN -1");
                    w.WriteLine("VALUE 1");
                    w.WriteLine("}");
                    w.WriteLine("");

                    count++;
                    remove.Add(item);
                    w.Flush();
                }
            }

            w.Close();

            foreach (Item item in remove)
                item.Delete();

            e.Mobile.SendMessage("Export complete.  Exported {0} statics.", count);
        }
    }
}
/*SECTION WORLDITEM 1
{
SERIAL 1073741830
NAME #
NAME2 #
ID 1709
X 1439
Y 1613
Z 20
CONT -1
TYPE 12
AMOUNT 1
WEIGHT 25500
OWNER -1
SPAWN -1
VALUE 1
}*/