Ejemplo n.º 1
0
        static public void CloseProject()
        {
            //Close all the open levels
            CloseAllLevels();

            //Set the status message
            Ogmo.MainWindow.StatusText = "Closed project " + Ogmo.Project.Name;

            //Call closed event
            if (OnProjectClose != null)
            {
                OnProjectClose(Project);
            }

            //Remove it!
            Project = null;

            //Tool and layer selection can be cleared now
            LayersWindow.SetLayer(-1);
            ToolsWindow.ClearTool();

            //Force a garbage collection
            Ogmo.MainWindow.AddStartPage();
            System.GC.Collect();
        }
Ejemplo n.º 2
0
        static private void Initialize()
        {
            //Figure out the program directory
            ProgramDirectory = Application.ExecutablePath.Remove(Application.ExecutablePath.IndexOf(Path.GetFileName(Application.ExecutablePath)));

            //Initialize global pens/brushes/bitmaps
            DrawUtil.Initialize();

            //Make sure the recent project list is valid
            InitRecentProjects();

            //The levels holder
            Levels            = new List <Level>();
            CurrentLevelIndex = -1;

            //The windows
            MainWindow            = new MainWindow();
            MainWindow.Shown     += new EventHandler(MainWindow_Shown);
            LayersWindow          = new LayersWindow();
            ToolsWindow           = new ToolsWindow();
            TilePaletteWindow     = new TilePaletteWindow();
            EntitiesWindow        = new EntitiesWindow();
            EntitySelectionWindow = new EntitySelectionWindow();

            LayersWindow.Show(MainWindow);
            ToolsWindow.Show(MainWindow);
            TilePaletteWindow.Show(MainWindow);
            EntitiesWindow.Show(MainWindow);
            EntitySelectionWindow.Show(MainWindow);
            LayersWindow.EditorVisible = ToolsWindow.EditorVisible = TilePaletteWindow.EditorVisible = EntitiesWindow.EditorVisible = EntitySelectionWindow.EditorVisible = false;

            //Add the exit event
            Application.ApplicationExit += onApplicationExit;
        }
Ejemplo n.º 3
0
        public InGameEditor()
        {
            resizeable = false;

            avaliableBiomes = DefDatabase <BiomeDef> .AllDefs.ToList();

            FieldInfo fieldlayers = typeof(WorldRenderer).GetField("layers", BindingFlags.NonPublic | BindingFlags.Instance);
            FieldInfo fieldMeshes = typeof(WorldLayer).GetField("subMeshes", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
                                                                | BindingFlags.Static);
            var tempLayers = fieldlayers.GetValue(Find.World.renderer) as List <WorldLayer>;

            Layers          = new Dictionary <string, WorldLayer>(tempLayers.Count);
            LayersSubMeshes = new Dictionary <string, List <LayerSubMesh> >(tempLayers.Count);
            foreach (var layer in tempLayers)
            {
                Layers.Add(layer.GetType().Name, layer);
                List <LayerSubMesh> meshes = fieldMeshes.GetValue(layer) as List <LayerSubMesh>;
                LayersSubMeshes.Add(layer.GetType().Name, meshes);
            }

            WorldUpdater       = WorldEditor.WorldUpdater;
            layersWindow       = new LayersWindow();
            factionEditor      = new FactionMenu();
            worldObjectsEditor = new WorldObjectsEditor();
        }
Ejemplo n.º 4
0
 public static void Init()
 {
     if (HasOpenInstances<LayersWindow>())
         return;
     LayersWindow window = CreateInstance<LayersWindow>();
     window.titleContent = new GUIContent("Layers Editor");
     window.Show();
 }
Ejemplo n.º 5
0
        static public void FinishProjectEdit(FinishProjectEditAction action = FinishProjectEditAction.None)
        {
            //Re-activate the main window
            MainWindow.EnableEditing();

            if (action == FinishProjectEditAction.CloseProject)
            {
                CloseProject();
            }
            else if (action == FinishProjectEditAction.SaveProject)
            {
                //Close all the levels
                CloseAllLevels();

                //Save the project
                Project.Save();
                Project.LoadContent();

                //Call the event
                if (OnProjectEdited != null)
                {
                    OnProjectEdited(Project);
                }

                //Start a blank level
                NewLevel();

                //Set the layer
                Ogmo.LayersWindow.SetLayer(0);

                //Set the status message
                Ogmo.MainWindow.StatusText = "Edited project " + Ogmo.Project.Name + ", all levels closed";
                UpdateRecentProjects(Project);
                GC.Collect();
            }
            else if (action == FinishProjectEditAction.LoadAndSaveProject)
            {
                //Start the project and save it
                StartProject(Project);
                Project.Save();

                //Start a blank level and start at the first layer
                LayersWindow.SetLayer(0);
                NewLevel();

                Ogmo.MainWindow.StatusText = "Opened project " + Ogmo.Project.Name;
                UpdateRecentProjects(Project);
                GC.Collect();
            }
        }
Ejemplo n.º 6
0
        private void LayersButton_Click(object sender, RoutedEventArgs e)
        {
            if (_layersWindow != null)
            {
                _layersWindow.Show();
                return;
            }

            List <LayerItem> items = new List <LayerItem>();

            foreach (var layer in _view.map.Layers)
            {
                LayerItem item = new LayerItem();
                item.Name        = layer.DisplayName;
                item.Visibility  = layer.IsVisible;
                item.LayerObject = layer;
                items.Add(item);
            }
            _layersWindow       = new LayersWindow(items);
            _layersWindow.Owner = App.Current.MainWindow;
            _layersWindow.Title = _view.eMap.MapID + ":Layers";

            // Two ways to use delegate
            //_layersWindow.Closed += delegate { _layersWindow = null; };
            //_layersWindow.Closed += delegate(object o, EventArgs args) { _layersWindow = null; };

            // Use lamda function
            _layersWindow.Closed += (o, args) =>
            {
                _layersWindow = null;
            };
            _layersWindow.OnLayerCheckBoxClick += (o, args) =>
            {
                Layer layer = args.Item.LayerObject as Layer;
                if (layer != null)
                {
                    layer.IsVisible = !layer.IsVisible;
                }
            };

            _layersWindow.Show();
        }
Ejemplo n.º 7
0
        private void LayersButton_Click(object sender, RoutedEventArgs e)
        {
            if (_layersWindow != null)
            {
                _layersWindow.Show();
                return;
            }


            //  _layersWindow = new LayersWindow(_view.PlanThemeDict,_view.map.Layers);

            _layersWindow.Title = _view.eMap.MapID + ":Layers";


            _layersWindow.Closed += (o, args) =>
            {
                _layersWindow = null;
            };


            //_layersWindow.Show();
        }
Ejemplo n.º 8
0
        void initlayerwindow(object sender, EventArgs e)
        {
            _layersWindow = new LayersWindow(profilethemeview, _view.map.Layers);
            //_layersWindow.Owner = App.Current.MainWindow;
            _layersWindow.Title = _view.eMap.MapID + ":图层";

            // Two ways to use delegate
            //_layersWindow.Closed += delegate { _layersWindow = null; };
            //_layersWindow.Closed += delegate(object o, EventArgs args) { _layersWindow = null; };

            // Use lamda function
            //_layersWindow.Closed += (o, args) =>
            //{
            //    _layersWindow = null;
            //};

            _layersWindow.OffLayerCheckBoxClick += (o, args) =>
            {
                if (args.Item.themelayer != null)
                {
                    ThemeLayer _tl = args.Item.themelayer;
                    foreach (string st in _tl.layernames)
                    {
                        Layer layer = _view.map.Layers.FirstOrDefault(x => x.ID == st);
                        if (layer != null)
                        {
                            layer.IsVisible = false;
                        }
                    }
                    Layer _layer = _view.map.Layers.FirstOrDefault(x => x.ID == _tl.tpkname + ".tpk");
                    if (_layer != null)
                    {
                        _layer.IsVisible = false;
                    }
                }
                else if (args.Item.themesection != null)
                {
                    ThemeSection _ts = args.Item.themesection;
                    foreach (string st in _ts.layernames)
                    {
                        Layer layer = _view.map.Layers.FirstOrDefault(x => x.ID == st);
                        if (layer != null)
                        {
                            layer.IsVisible = false;
                        }
                    }
                }
            };
            _layersWindow.OnLayerCheckBoxClick += (o, args) =>
            {
                if (args.Item.themelayer != null)
                {
                    ThemeLayer _tl = args.Item.themelayer;
                    foreach (string st in _tl.layernames)
                    {
                        Layer layer = _view.map.Layers.FirstOrDefault(x => x.ID == st);
                        if (layer != null)
                        {
                            layer.IsVisible = true;
                        }
                    }
                    Layer _layer = _view.map.Layers.FirstOrDefault(x => x.ID == _tl.tpkname + ".tpk");
                    if (_layer != null)
                    {
                        _layer.IsVisible = true;
                    }
                }
            };
            _view._layerswindow    = _layersWindow;
            _view.profilethemeview = profilethemeview;
            initshowlayer();

            // Globals.mainFrame.viewLoaded+=initshowlayer;
            Globals.mainFrame.viewLoaded -= initlayerwindow;
        }
Ejemplo n.º 9
0
        static public void FinishProjectEdit(FinishProjectEditAction action = FinishProjectEditAction.None)
        {
            //Re-activate the main window
            MainWindow.EnableEditing();

            if (action == FinishProjectEditAction.CloseProject)
            {
                CloseProject();
            }
            else if (action == FinishProjectEditAction.SaveProject)
            {
                // Get a list of the filepaths to each open level
                List <string> levelPaths = new List <string>();
                foreach (Level level in Levels)
                {
                    levelPaths.Add(level.SavePath);
                }
                int tempIndex = CurrentLevelIndex;

                //Close all the levels
                CloseAllLevels();

                //Save the project
                Project.Save();
                Project.LoadContent();

                //Call the event
                if (OnProjectEdited != null)
                {
                    OnProjectEdited(Project);
                }

                //Set the layer
                LayersWindow.SetLayer(0);

                // Open the default level (or previously-opened levels)
                if (levelPaths.Count == 0)
                {
                    NewLevel();
                }
                else
                {
                    OpenLevelsFromList(levelPaths, false, tempIndex);
                }

                //Set the status message
                MainWindow.StatusText = "Edited project " + Project.Name + ", all levels re-opened";
                UpdateRecentProjects(Project);
                GC.Collect();
            }
            else if (action == FinishProjectEditAction.LoadAndSaveProject)
            {
                //Start the project and save it
                StartProject(Project);
                Project.Save();

                //Start a blank level and start at the first layer
                LayersWindow.SetLayer(0);
                NewLevel();

                MainWindow.StatusText = "Opened project " + Project.Name;
                UpdateRecentProjects(Project);
                GC.Collect();
            }
        }
Ejemplo n.º 10
0
 public static void OpenLayersMenu() => LayersWindow.Init();