Exemple #1
0
        public static Item GeneratorItems(Generator gen, Graph graph, int priority = 3)
        {
            Item genItems = new Item("Generator");

            genItems.onDraw   = RightClick.DrawItem;
            genItems.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Generator");
            genItems.color    = Color.gray;
            genItems.subItems = new List <Item>();
            genItems.priority = priority;

            genItems.disabled = gen == null;

            Item enableItem = new Item(gen == null || gen.enabled ? "Disable" : "Enable", onDraw: RightClick.DrawItem, priority: 11)
            {
                icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Eye"), color = Color.gray
            };

            enableItem.onClick = () =>
            {
                gen.enabled = !gen.enabled;
                GraphWindow.RefreshMapMagic(gen);
            };
            genItems.subItems.Add(enableItem);

            //genItems.subItems.Add( new Item("Export", onDraw:RightClick.DrawItem, priority:10) { icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Export"), color = Color.gray } );
            //genItems.subItems.Add( new Item("Import", onDraw:RightClick.DrawItem, priority:9) { icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Import"), color = Color.gray } );

            Item duplicateItem = new Item("Duplicate", onDraw: RightClick.DrawItem, priority: 8);

            duplicateItem.icon    = RightClick.texturesCache.GetTexture("MapMagic/Popup/Duplicate");
            duplicateItem.color   = Color.gray;
            duplicateItem.onClick = () => GraphEditorActions.DuplicateGenerator(graph, gen, ref GraphWindow.current.selected);
            genItems.subItems.Add(duplicateItem);

            genItems.subItems.Add(new Item("Update", onDraw: RightClick.DrawItem, priority: 7)
            {
                icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Update"), color = Color.gray
            });
            genItems.subItems.Add(new Item("Reset", onDraw: RightClick.DrawItem, priority: 4)
            {
                icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Reset"), color = Color.gray
            });

            /*Item testItem = new Item("Create Test", onDraw:RightClick.DrawItem, priority:5);
             * testItem.icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Export");
             * testItem.color = Color.gray;
             * testItem.onClick = ()=> GeneratorsTester.CreateTestCase(gen, GraphWindow.current.mapMagic.PreviewData);
             * genItems.subItems.Add(testItem);*/

            Item removeItem = new Item("Remove", onDraw: RightClick.DrawItem, priority: 5);

            removeItem.icon    = RightClick.texturesCache.GetTexture("MapMagic/Popup/Remove");
            removeItem.color   = Color.gray;
            removeItem.onClick = () => GraphEditorActions.RemoveGenerator(graph, gen, GraphWindow.current.selected);
            genItems.subItems.Add(removeItem);

            Item unlinkItem = new Item("Unlink", onDraw: RightClick.DrawItem, priority: 6);

            unlinkItem.icon    = RightClick.texturesCache.GetTexture("MapMagic/Popup/Unlink");
            unlinkItem.color   = Color.gray;
            unlinkItem.onClick = () =>
            {
                graph.UnlinkGenerator(gen);
                GraphWindow.RefreshMapMagic(gen);
                //undo
            };
            genItems.subItems.Add(unlinkItem);


            return(genItems);
        }
        public static Item GeneratorItems(Vector2 mousePos, Generator gen, Graph graph, int priority = 3)
        {
            Item genItems = new Item("Generator");

            genItems.onDraw   = RightClick.DrawItem;
            genItems.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Generator");
            genItems.color    = RightClick.defaultColor;
            genItems.subItems = new List <Item>();
            genItems.priority = priority;

            genItems.disabled = gen == null && copiedGenerators == null;

            {             //enable/disable
                string caption = (gen == null || gen.enabled) ? "Disable" : "Enable";
                Item   item    = new Item(caption, onDraw: RightClick.DrawItem, priority: 11);
                item.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Eye");
                item.color    = RightClick.defaultColor;
                item.disabled = gen == null;
                item.onClick  = () =>
                {
                    gen.enabled = !gen.enabled;
                    GraphWindow.RefreshMapMagic(gen);
                    GraphWindow.current.Focus();
                    GraphWindow.current.Repaint();
                };
                genItems.subItems.Add(item);
            }

            //genItems.subItems.Add( new Item("Export", onDraw:RightClick.DrawItem, priority:10) { icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Export"), color = Color.gray } );
            //genItems.subItems.Add( new Item("Import", onDraw:RightClick.DrawItem, priority:9) { icon = RightClick.texturesCache.GetTexture("MapMagic/Popup/Import"), color = Color.gray } );

            {             //duplicate
                Item item = new Item("Duplicate", onDraw: RightClick.DrawItem, priority: 8);
                item.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Duplicate");
                item.color    = RightClick.defaultColor;
                item.disabled = gen == null;
                item.onClick  = () =>
                                GraphEditorActions.DuplicateGenerator(graph, gen, ref GraphWindow.current.selected);
                genItems.subItems.Add(item);
            }


            {             //copy
                Item item = new Item("Copy", onDraw: RightClick.DrawItem, priority: 8);
                item.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Export");
                item.color    = RightClick.defaultColor;
                item.disabled = !(gen != null || (GraphWindow.current.selected != null && GraphWindow.current.selected.Count != 0));
                item.onClick  = () =>
                {
                    HashSet <Generator> gens;
                    if (GraphWindow.current.selected != null && GraphWindow.current.selected.Count != 0)
                    {
                        gens = GraphWindow.current.selected;
                    }
                    else
                    {
                        gens = new HashSet <Generator>(); gens.Add(gen);
                    }
                    copiedGenerators = graph.Export(gens);
                };
                item.closeOnClick = true;
                genItems.subItems.Add(item);
            }


            {             //paste
                Item item = new Item("Paste", onDraw: RightClick.DrawItem, priority: 7);
                item.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Export");
                item.color    = RightClick.defaultColor;
                item.disabled = copiedGenerators == null;
                item.onClick  = () =>
                {
                    Generator[] imported = graph.Import(copiedGenerators);
                    Graph.Reposition(imported, mousePos);
                };
                item.closeOnClick = true;
                genItems.subItems.Add(item);
            }


            {             //update
                Item item = new Item("Update", onDraw: RightClick.DrawItem, priority: 7);
                item.icon         = RightClick.texturesCache.GetTexture("MapMagic/Popup/Update");
                item.color        = RightClick.defaultColor;
                item.closeOnClick = true;
                item.disabled     = gen == null;
            }


            {             //reset
                Item item = new Item("Reset", onDraw: RightClick.DrawItem, priority: 4);
                item.icon         = RightClick.texturesCache.GetTexture("MapMagic/Popup/Reset");
                item.color        = RightClick.defaultColor;
                item.closeOnClick = true;
                item.disabled     = gen == null;
            }


            {             //remove
                Item item = new Item("Remove", onDraw: RightClick.DrawItem, priority: 5);
                item.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Remove");
                item.color    = RightClick.defaultColor;
                item.disabled = gen == null;
                item.onClick  = () =>
                                GraphEditorActions.RemoveGenerator(graph, gen, GraphWindow.current.selected);
                item.closeOnClick = true;
                genItems.subItems.Add(item);
            }


            {             //unlink
                Item item = new Item("Unlink", onDraw: RightClick.DrawItem, priority: 6);
                item.icon     = RightClick.texturesCache.GetTexture("MapMagic/Popup/Unlink");
                item.color    = RightClick.defaultColor;
                item.disabled = gen == null;
                item.onClick  = () =>
                {
                    graph.UnlinkGenerator(gen);
                    GraphWindow.RefreshMapMagic(gen);
                    //undo
                };
                item.closeOnClick = true;
                genItems.subItems.Add(item);
            }


            if (gen != null)
            {             //id
                Item item = new Item($"Id: {gen.id}", onDraw: RightClick.DrawItem, priority: 3);
                item.color        = RightClick.defaultColor;
                item.onClick      = () => EditorGUIUtility.systemCopyBuffer = gen.id.ToString();
                item.closeOnClick = true;
                genItems.subItems.Add(item);
            }

                        #if MM_DEBUG
            if (gen != null)
            {             //position
                Item item = new Item($"Pos: {gen.guiPosition}", onDraw: RightClick.DrawItem, priority: 2);
                item.color        = RightClick.defaultColor;
                item.onClick      = () => EditorGUIUtility.systemCopyBuffer = gen.guiPosition.ToString();
                item.closeOnClick = true;
                genItems.subItems.Add(item);
            }
                        #endif

            return(genItems);
        }