mirror of
https://github.com/GTA-ASM/SanAndreasUnity
synced 2024-11-23 20:43:04 +00:00
84 lines
No EOL
3 KiB
C#
84 lines
No EOL
3 KiB
C#
using UnityEngine;
|
|
|
|
public class xGUILayout
|
|
{
|
|
public delegate void DoubleClickCallback(int index);
|
|
|
|
public static int SelectionList(int selected, GUIContent[] list)
|
|
{
|
|
return SelectionList(selected, list, "button", null);
|
|
}
|
|
|
|
public static int SelectionList(int selected, GUIContent[] list, GUIStyle elementStyle)
|
|
{
|
|
return SelectionList(selected, list, elementStyle, null);
|
|
}
|
|
|
|
public static int SelectionList(int selected, GUIContent[] list, DoubleClickCallback callback)
|
|
{
|
|
return SelectionList(selected, list, "button", callback);
|
|
}
|
|
|
|
public static int SelectionList(int selected, GUIContent[] list, GUIStyle elementStyle, DoubleClickCallback callback)
|
|
{
|
|
for (int i = 0; i < list.Length; ++i)
|
|
{
|
|
Rect elementRect = GUILayoutUtility.GetRect(list[i], elementStyle);
|
|
bool hover = elementRect.Contains(Event.current.mousePosition);
|
|
if (hover && Event.current.type == EventType.MouseDown && Event.current.clickCount == 1) // added " && Event.current.clickCount == 1"
|
|
{
|
|
selected = i;
|
|
Event.current.Use();
|
|
}
|
|
else if (hover && callback != null && Event.current.type == EventType.MouseDown && Event.current.clickCount == 2) //Changed from MouseUp to MouseDown
|
|
{
|
|
callback(i);
|
|
Event.current.Use();
|
|
}
|
|
else if (Event.current.type == EventType.Repaint)
|
|
{
|
|
elementStyle.Draw(elementRect, list[i], hover, false, i == selected, false);
|
|
}
|
|
}
|
|
return selected;
|
|
}
|
|
|
|
public static int SelectionList(int selected, string[] list)
|
|
{
|
|
return SelectionList(selected, list, "button", null);
|
|
}
|
|
|
|
public static int SelectionList(int selected, string[] list, GUIStyle elementStyle)
|
|
{
|
|
return SelectionList(selected, list, elementStyle, null);
|
|
}
|
|
|
|
public static int SelectionList(int selected, string[] list, DoubleClickCallback callback)
|
|
{
|
|
return SelectionList(selected, list, "button", callback);
|
|
}
|
|
|
|
public static int SelectionList(int selected, string[] list, GUIStyle elementStyle, DoubleClickCallback callback)
|
|
{
|
|
for (int i = 0; i < list.Length; ++i)
|
|
{
|
|
Rect elementRect = GUILayoutUtility.GetRect(new GUIContent(list[i]), elementStyle);
|
|
bool hover = elementRect.Contains(Event.current.mousePosition);
|
|
if (hover && Event.current.type == EventType.MouseDown)
|
|
{
|
|
selected = i;
|
|
Event.current.Use();
|
|
}
|
|
else if (hover && callback != null && Event.current.type == EventType.MouseUp && Event.current.clickCount == 2)
|
|
{
|
|
callback(i);
|
|
Event.current.Use();
|
|
}
|
|
else if (Event.current.type == EventType.Repaint)
|
|
{
|
|
elementStyle.Draw(elementRect, list[i], hover, false, i == selected, false);
|
|
}
|
|
}
|
|
return selected;
|
|
}
|
|
} |