Exemplo n.º 1
0
        private void DrawMouseOverWindow(int id)
        {
            int index = id - ConfigHandler.Instance.MouseOverWindow;

            if (index < MouseOverStack.Count)
            {
                MouseOverStackEntry Entry = MouseOverStack[index];
                if (index == 0 && Entry.Tag.ChildTags.Count == 0)
                {
                    GUILayout.Space(15);
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(Entry.Tag.Name.Length * 10);
                    GUILayout.EndHorizontal();
                    //GUILayout.Label(Entry.Tag.Name, GUILayout.ExpandWidth(true));
                }
                GUILayout.BeginVertical(GUILayout.MinWidth(Entry.Tag.Name.Length * 9));
                foreach (PartTag subTag in Entry.Tag.ChildTags)
                {
                    if (ConfigHandler.Instance.HideUnresearchedTags && !subTag.Researched)
                    {
                        continue;
                    }
                    GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
                    bool pushed = false;
                    if (subTag.IconName != "")
                    {
                        pushed |= GUILayout.Button(ResourceProxy.Instance.GetIconTexture(subTag.IconName, true), iconStyle, GUILayout.Width(ConfigHandler.Instance.ButtonSize.x), GUILayout.Height(ConfigHandler.Instance.ButtonSize.y));
                    }
                    pushed |= GUILayout.Button(subTag.Name, subTag.Enabled ? ButtonStyleEnabled : ButtonStyle, GUILayout.ExpandWidth(true));
                    GUILayout.EndHorizontal();



                    if (pushed)
                    {
                        PartFilterManager.Instance.ToggleFilter(subTag);
                    }
                    //GUILayout.Box(ResourceProxy.Instance.GetTagIcon(subTag));
                    if (Event.current.type == EventType.Repaint && GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition))
                    {
                        while (index + 1 < MouseOverStack.Count)
                        {
                            MouseOverStack.RemoveAt(index + 1);
                        }

                        MouseOverStack.Insert(index + 1, new MouseOverStackEntry(subTag, new Vector2(0, GUILayoutUtility.GetLastRect().y + GUILayoutUtility.GetLastRect().height * 0.5f)));
                        MouseOverClear = false;
                    }
                }
                GUILayout.EndVertical();
            }
            else
            {
                GUILayout.Space(1);
            }
        }
Exemplo n.º 2
0
        private void DrawMouseOverTags()
        {
            if (GUILayoutSettings.Instance.IsOpen)
            {
                return;
            }
            for (int i = 0; i < MouseOverStack.Count; i++)
            {
                MouseOverStackEntry Entry = MouseOverStack[i];
                if (i != 0 && Entry.Tag.ChildTags.Count == 0)
                {
                    break;
                }
                Entry.WindowPos = GUILayout.Window(ConfigHandler.Instance.MouseOverWindow + i, Entry.WindowPos, DrawMouseOverWindow, Entry.Tag.Name, GUILayout.MinHeight(200), GUILayout.MinWidth(200), GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true));
                if (i > 0)
                {
                    MouseOverStackEntry LastEntry = MouseOverStack[i - 1];
                    if (ConfigHandler.Instance.ToolBarPreset == ToolBarPositions.VerticalRight)
                    {
                        Entry.WindowPos.x = Entry.Position.x - Entry.WindowPos.width;
                    }
                    else
                    {
                        Entry.WindowPos.x = Entry.Position.x + LastEntry.WindowPos.width;
                    }
                    Entry.WindowPos.y = Entry.Position.y - Entry.WindowPos.height * 0.5f;
                }
                else
                {
                    switch (ConfigHandler.Instance.ToolBarPreset)
                    {
                    case ToolBarPositions.HorizontalTop:
                        Entry.WindowPos.x = Entry.Position.x - Entry.WindowPos.width * 0.5f + ConfigHandler.Instance.ButtonSize.x * 0.5f;
                        Entry.WindowPos.y = Entry.Position.y + ConfigHandler.Instance.ButtonSize.y;
                        break;

                    case ToolBarPositions.HorizontalBottom:
                        Entry.WindowPos.x = Entry.Position.x - Entry.WindowPos.width * 0.5f + ConfigHandler.Instance.ButtonSize.x * 0.5f;
                        Entry.WindowPos.y = Entry.Position.y - Entry.WindowPos.height;
                        break;

                    case ToolBarPositions.VerticalLeft:
                        Entry.WindowPos.x = Entry.Position.x + ConfigHandler.Instance.ButtonSize.x;
                        Entry.WindowPos.y = Entry.Position.y - Entry.WindowPos.height * 0.5f;
                        break;

                    case ToolBarPositions.VerticalRight:
                        Entry.WindowPos.x = Entry.Position.x - Entry.WindowPos.width;
                        Entry.WindowPos.y = Entry.Position.y - Entry.WindowPos.height * 0.5f;
                        break;

                    default:
                        break;
                    }
                }
                if (Entry.WindowPos.x < GUIConstants.EditorPartListWidth)
                {
                    Entry.WindowPos.x = GUIConstants.EditorPartListWidth;
                }
                if (Entry.WindowPos.xMax > Screen.width)
                {
                    Entry.WindowPos.x -= Screen.width - Entry.WindowPos.xMax;
                }

                if (Entry.WindowPos.y < GUIConstants.EditorToolbarHeight)
                {
                    Entry.WindowPos.y = GUIConstants.EditorToolbarHeight;
                }
                if (Entry.WindowPos.yMax > Screen.height - GUIConstants.EditorToolbarHeight)
                {
                    Entry.WindowPos.y += (Screen.height - GUIConstants.EditorToolbarHeight) - Entry.WindowPos.yMax;
                }


                Entry.WindowPos = GUILayout.Window(ConfigHandler.Instance.MouseOverWindow + i, Entry.WindowPos, DrawMouseOverWindow, Entry.Tag.Name);

                if (Entry.WindowPos.Contains(Event.current.mousePosition))
                {
                    MouseOverClear = false;
                }
            }
        }