public MainWindow() { InitializeComponent(); _mapView = MapViewPanel.Instance; _settingsManager = new SettingsManager(); _windowMenuManager = new WindowMenuManager(showMenu, miHelp); loadDefaults(); Palette.UFOBattle.SetTransparent(true); Palette.TFTDBattle.SetTransparent(true); Palette.UFOBattle.Grayscale.SetTransparent(true); Palette.TFTDBattle.Grayscale.SetTransparent(true); #region Setup SharedSpace information and paths var sharedSpace = SharedSpace.Instance; var consoleSharedSpace = new ConsoleSharedSpace(sharedSpace); _warningHandler = new ConsoleWarningHandler(consoleSharedSpace); MainWindowsManager.MainToolStripButtonsFactory = new MainToolStripButtonsFactory(_mapView); _mainWindowsManager = new MainWindowsManager(); _mainWindowWindowsManager = new MainWindowWindowsManager( _settingsManager, consoleSharedSpace); var settings = GetSettings(); _windowMenuManager.SetMenus(consoleSharedSpace.GetNewConsole(), settings); MainWindowsManager.MainWindowsShowAllManager = _windowMenuManager.CreateShowAll(); MainWindowsManager.Initialize(); sharedSpace.GetObj("MapView", this); sharedSpace.GetObj("AppDir", Environment.CurrentDirectory); sharedSpace.GetObj("CustomDir", Environment.CurrentDirectory + "/custom"); sharedSpace.GetObj("SettingsDir", Environment.CurrentDirectory + "/settings"); var pathsFile = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "Paths", "pth"); var settingsFile = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "MVSettings", "dat"); var mapeditFile = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "MapEdit", "dat"); var imagesFile = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "Images", "dat"); sharedSpace.GetObj("MV_PathsFile", pathsFile); sharedSpace.GetObj(SettingsService.FILE_NAME, settingsFile); sharedSpace.GetObj("MV_MapEditFile", mapeditFile); sharedSpace.GetObj("MV_ImagesFile", imagesFile); #endregion if (!pathsFile.Exists()) { InstallWindow iw = new InstallWindow(); if (iw.ShowDialog(this) != DialogResult.OK) { Environment.Exit(-1); } } GameInfo.ParseLine += parseLine; InitGameInfo(pathsFile); LogFile.Instance.WriteLine("GameInfo.Init done"); _mainWindowWindowsManager.Register(); MainWindowsManager.TileView.TileViewControl.MapChanged += TileView_MapChanged; LogFile.Instance.WriteLine("Palette transparencies set"); MapViewPanel.ImageUpdate += new EventHandler(update); _mapView.Dock = DockStyle.Fill; instance = this; mapList.TreeViewNodeSorter = new System.Collections.CaseInsensitiveComparer(); toolStripContainer1.ContentPanel.Controls.Add(_mapView); MainWindowsManager.MainToolStripButtonsFactory.MakeToolstrip(toolStrip); toolStrip.Enabled = false; toolStrip.Items.Add(new ToolStripSeparator()); LogFile.Instance.WriteLine("Main view window created"); LogFile.Instance.WriteLine("Default settings loaded"); try { _mapView.MapView.CursorSprite = new CursorSprite(GameInfo.CachePck( SharedSpace.Instance.GetString("cursorFile"), "", 2, Palette.UFOBattle)); } catch { try { _mapView.MapView.CursorSprite = new CursorSprite(GameInfo.CachePck( SharedSpace.Instance.GetString("cursorFile"), "", 4, Palette.TFTDBattle)); } catch { _mapView.Cursor = null; } } LogFile.Instance.WriteLine("Cursor loaded"); initList(); LogFile.Instance.WriteLine("Map list created"); LogFile.Instance.WriteLine("Quick help and About created"); if (settingsFile.Exists()) { _settingsManager.Load(settingsFile.ToString()); LogFile.Instance.WriteLine("User settings loaded"); } else { LogFile.Instance.WriteLine("User settings NOT loaded - no settings file to load"); } OnResize(null); this.Closing += new CancelEventHandler(closing); _lf = new LoadingForm(); Bmp.LoadingEvent += _lf.Update; // I should rewrite the hq2x wrapper for .NET sometime -- not the code it's pretty insane // if (!File.Exists("hq2xa.dll")) miHq.Visible = false; // LogFile.Instance.WriteLine("Loading user-made plugins"); /****************************************/ // Copied from PckView // loadedTypes = new LoadOfType<IMapDesc>(); // sharedSpace["MapMods"] = loadedTypes.AllLoaded; // There are no currently loadable maps in this assembly so this is more for future use // loadedTypes.LoadFrom(Assembly.GetAssembly(typeof(XCom.Interfaces.Base.IMapDesc))); // if (Directory.Exists(sharedSpace["CustomDir"].ToString())) // { // xConsole.AddLine("Custom directory exists: " + sharedSpace["CustomDir"].ToString()); // foreach (string s in Directory.GetFiles(sharedSpace["CustomDir"].ToString())) // if (s.EndsWith(".dll")) // { // xConsole.AddLine("Loading dll: " + s); // loadedTypes.LoadFrom(Assembly.LoadFrom(s)); // } // } /****************************************/ LogFile.Instance.WriteLine("About to show window"); Show(); LogFile.Instance.Close(); // TODO: Keep logfile open until the program closes. }