using System;
using System.Collections;
using System.Diagnostics;
using System.Drawing;
using System.Reflection;
using System.Xml;
using nft.framework;
using nft.framework.plugin;
using nft.core.game;
using nft.util;
using System.Windows.Forms;

namespace nft.contributions.game
{
	/// <summary>
	/// CommandEntityContributuion の概要の説明です。
	/// </summary>
    public abstract class CtbWorldDivider : CtbMapGenerator, IWorldDivider
	{
        public CtbWorldDivider(Plugin p, XmlElement contrib) : base(p, contrib) { }
		public abstract IWorldDivider Divider { get; }
		public static Array ListEnabled()
		{
            Type t = typeof(CtbWorldDivider);
			return PluginManager.theInstance.ListContributions(t,true);
		}
		public override bool IsDetachable { get	{ return true; } }

        #region IWorldDivider メンバ
        public abstract ITerrainMap Divide(ITerrainMap map);
        #endregion
    }

	public class CtbSimpleDivider : CtbWorldDivider
	{
        public CtbSimpleDivider(Plugin p, XmlElement contrib) : base(p, contrib) { }		
		public override IWorldDivider Divider { get	{ return this; } }

		#region IWorldDivider メンバ

        public override ITerrainMap Divide(ITerrainMap map)
		{
			// TODO:  CtbSimpleDivider.Divide 実装を追加します。
			return map;
		}		
		#endregion
	}

}
