﻿#region Copyright & License Information
/*
 * Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
 * This file is part of OpenRA, which is free software. It is made
 * available to you under the terms of the GNU General Public License
 * as published by the Free Software Foundation. For more information,
 * see COPYING.
 */
#endregion

using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using OpenRA.Graphics;

namespace OpenRA.Editor
{
	public partial class MapSelect : Form
	{
		public string MapFolderPath;

		public MapSelect(string currentMod)
		{
			MapFolderPath = new string[] { Environment.CurrentDirectory, "mods", currentMod, "maps" }
				.Aggregate(Path.Combine);

			InitializeComponent();
			MapIconsList.Images.Add(pictureBox1.Image);
		}

		void MapSelect_Load(object sender, EventArgs e)
		{
			MapList.Items.Clear();
			txtPathOut.Text = MapFolderPath;

			foreach (var map in ModData.FindMapsIn(MapFolderPath))
			{
				ListViewItem map1 = new ListViewItem();
				map1.Tag = map;
				map1.Text = Path.GetFileNameWithoutExtension(map);
				map1.ImageIndex = 0;
				MapList.Items.Add(map1);
			}

			// hack
			if (txtNew.Text != "unnamed")
				MapList.Items[0].Selected = true;
		}

		void MapList_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (MapList.SelectedItems.Count == 1)
			{
				txtNew.Text = MapList.SelectedItems[0].Text;
				txtNew.Tag = MapList.SelectedItems[0].Tag;

				var map = new Map(txtNew.Tag as string);
				txtTitle.Text = map.Title;
				txtAuthor.Text = map.Author;
				txtTheater.Text = map.Tileset;
				txtDesc.Text = map.Description;
				pbMinimap.Image = null;

				try
				{
					pbMinimap.Image = Minimap.AddStaticResources(map, Minimap.TerrainBitmap(map, true));
				}
				catch (Exception ed)
				{
					Console.WriteLine("No map preview image found: {0}", ed.ToString());
				}
				finally { }
			}
		}

		void txtPathOut_TextChanged(object sender, EventArgs e)
		{
			MapFolderPath = txtPathOut.Text;
		}
	}
}
