コード例 #1
0
ファイル: MainForm.cs プロジェクト: thepirateclub/netgore
        /// <summary>
        /// Raises the <see cref="E:System.Windows.Forms.Form.Load"/> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs"/> that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (DesignMode)
            {
                return;
            }

            tssInfo.Text = string.Empty;
            UpdateCursorPos(Vector2.Zero, Vector2.Zero);

            Show();

            // Set the ToolBarVisibility values. Do it here instead of setting the properties to avoid messing up
            // the controls order.
            tbGlobal.ToolBarVisibility = ToolBarVisibility.Global;
            tbMap.ToolBarVisibility    = ToolBarVisibility.Map;

            // Auto-update GrhDatas
            SetStatusMessageLoading("Updating GrhData");
            GlobalState.Instance.AutoUpdateGrhDatas();
            GlobalState.Instance.AutoUpdateMusic();
            GlobalState.Instance.AutoUpdateSounds();


            SetStatusMessageLoading("Updating cached GrhData sizes");
            AutomaticGrhDataSizeUpdater.Instance.UpdateSizes();

            // Enable the update timer
            GlobalState.Instance.IsTickEnabled = true;

            // Create the child form instances
            SetStatusMessageLoading("Creating child forms");
            _frmGrhTreeView = new GrhTreeViewForm();
            _frmGrhTreeView.VisibleChanged += _frmGrhTreeView_VisibleChanged;

            _frmSelectedMapObjs = new SelectedMapObjectsForm();
            _frmSelectedMapObjs.VisibleChanged += _frmSelectedMapObjs_VisibleChanged;

            _frmNPCChatEditor = new NPCChatEditorForm();
            _frmNPCChatEditor.VisibleChanged += _frmNPCChatEditor_VisibleChanged;

            _frmSkeletonEditor = new SkeletonEditorForm();
            _frmSkeletonEditor.VisibleChanged += _frmSkeletonEditor_VisibleChanged;

            _frmDbEditor = new DbEditorForm();
            _frmDbEditor.VisibleChanged += _frmDbEditor_VisibleChanged;

            _frmMusicEditor = new MusicEditorForm();
            _frmMusicEditor.VisibleChanged += _frmMusicEditor_VisibleChanged;

            _frmBodyEditor = new BodyEditorForm();
            _frmBodyEditor.VisibleChanged += _frmBodyEditor_VisibleChanged;

            _frmSoundEditor = new SoundEditorForm();
            _frmSoundEditor.VisibleChanged += _frmSoundEditor_VisibleChanged;

            _frmGrhTilesetForm = new GrhTilesetForm();
            _frmGrhTilesetForm.VisibleChanged += new EventHandler(_frmGrhTilesetForm_VisibleChanged);

            // Set up some other stuff
            var mapPropertiesTool = ToolManager.Instance.TryGetTool <MapPropertiesTool>();

            if (mapPropertiesTool != null)
            {
                mapPropertiesTool.DockPanel = dockPanel;
            }
            else
            {
                const string errmsg = "Unable to set DockPanel on MapPropertiesTool - couldn't find tool instance.";
                Debug.Fail(errmsg);
            }

            // Load the settings
            SetStatusMessageLoading("Loading user settings");
            LoadDockSettings("User");

            // Set up map state control listeners & display initial values
            SetStatusMessageLoading("Hooking up map events");
            GlobalState.Instance.Map.LayerDepthChanged -= Map_LayerDepthChanged;
            GlobalState.Instance.Map.LayerDepthChanged += Map_LayerDepthChanged;

            GlobalState.Instance.Map.LayerChanged -= Map_LayerChanged;
            GlobalState.Instance.Map.LayerChanged += Map_LayerChanged;

            Map_LayerChanged(GlobalState.Instance, EventArgs.Empty);
            Map_LayerDepthChanged(GlobalState.Instance, EventArgs.Empty);

            // Clean up bad maps
            SetStatusMessageLoading("Validating map ids");
            MapHelper.DeleteMissingMapIds();

            // Load the initial map
            SetStatusMessageLoading("Loading the initial map");
            var validMaps = MapHelper.FindAllMaps().ToArray();

            if (validMaps.Length > 0)
            {
                MapID     initialMapId = (MapID)EditorSettings.Default.InitialMapId;
                IMapTable initialMap   = validMaps.FirstOrDefault(x => x.ID == initialMapId);

                if (initialMap == null)
                {
                    initialMap = validMaps.MinElement(x => x.ID);
                }

                CreateEditMapForm(initialMap);
            }

            // Global not currently used...
            tbGlobal.Visible = false;

            // Bind help
            SetStatusMessageLoading("Setting up F1 help");
            var helpManager = EditorHelpManager.Instance;

            helpManager.StatusLabel = tssInfo;
            helpManager.Add(cmbLayer, "Map Layers", "Map layers");
            helpManager.Add(trackBarDepth, "Layer Depth", "Layer depth");

            SetStatusMessage(string.Empty);
        }