Пример #1
0
        private bool LeaderboardDropAreaGUI(string message, SteamworksLeaderboardManager pManager)
        {
            Event evt       = Event.current;
            Rect  drop_area = GUILayoutUtility.GetRect(0.0f, 60.0f, GUILayout.ExpandWidth(true));

            var style = new GUIStyle(GUI.skin.box);

            style.normal.background = dropBoxTexture;
            style.normal.textColor  = Color.white;
            style.border            = new RectOffset(5, 5, 5, 5);
            var color     = GUI.backgroundColor;
            var fontColor = GUI.contentColor;

            GUI.backgroundColor = SteamUtilities.Colors.SteamGreen * SteamUtilities.Colors.HalfAlpha;
            GUI.contentColor    = SteamUtilities.Colors.BrightGreen;
            GUI.Box(drop_area, "\n\n" + message, style);
            GUI.backgroundColor = color;
            GUI.contentColor    = fontColor;

            switch (evt.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:
                if (!drop_area.Contains(evt.mousePosition))
                {
                    return(false);
                }

                DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

                if (evt.type == EventType.DragPerform)
                {
                    DragAndDrop.AcceptDrag();

                    foreach (UnityEngine.Object dragged_object in DragAndDrop.objectReferences)
                    {
                        // Do On Drag Stuff here
                        if (dragged_object.GetType() == typeof(SteamworksLeaderboardData))
                        {
                            SteamworksLeaderboardData go = dragged_object as SteamworksLeaderboardData;
                            if (go != null)
                            {
                                if (!pManager.Leaderboards.Exists(p => p == go))
                                {
                                    pManager.Leaderboards.Add(go);
                                    return(true);
                                }
                            }
                        }
                    }
                }
                break;
            }

            return(false);
        }
Пример #2
0
        private void DrawLeaderboardList(SteamworksLeaderboardManager pManager)
        {
            if (pManager.Leaderboards == null)
            {
                pManager.Leaderboards = new System.Collections.Generic.List <SteamworksLeaderboardData>();
            }

            pManager.Leaderboards.RemoveAll(p => p == null);
            if (pManager.Leaderboards == null)
            {
                pManager.Leaderboards = new System.Collections.Generic.List <SteamworksLeaderboardData>();
            }

            var bgColor = GUI.backgroundColor;
            int il      = EditorGUI.indentLevel;

            EditorGUI.indentLevel++;
            for (int i = 0; i < pManager.Leaderboards.Count; i++)
            {
                var item = pManager.Leaderboards[i];

                EditorGUILayout.BeginHorizontal(EditorStyles.toolbar, GUILayout.ExpandWidth(true));
                if (GUILayout.Button(leaderboardIcon, EditorStyles.toolbarButton, GUILayout.Width(20)))
                {
                    GUI.FocusControl(null);
                    EditorGUIUtility.PingObject(item);
                    Selection.activeObject = item;
                }
                if (GUILayout.Button(item.name.Replace("Leaderboard", "") + " ID", EditorStyles.toolbarButton))
                {
                    GUI.FocusControl(null);
                    EditorGUIUtility.PingObject(item);
                }
                item.leaderboardName = EditorGUILayout.TextField(item.leaderboardName);
                var color = GUI.contentColor;
                GUI.contentColor = SteamUtilities.Colors.ErrorRed;
                if (GUILayout.Button("X", EditorStyles.toolbarButton, GUILayout.Width(25)))
                {
                    GUI.FocusControl(null);
                    pManager.Leaderboards.RemoveAt(i);
                    return;
                }
                GUI.contentColor = color;
                EditorGUILayout.EndHorizontal();
            }
            EditorGUI.indentLevel = il;
            GUI.backgroundColor   = bgColor;
        }