//----------------------------------------------
// NGUI: Next-Gen UI kit
// Copyright © 2011-2013 Tasharen Entertainment
//----------------------------------------------
using UnityEngine;
using System.Collections.Generic;
/// <summary>
/// Attaching this script to a widget makes it react to key events such as tab, up, down, etc.
/// </summary>
[RequireComponent
(typeof(Collider
))] [AddComponentMenu("NGUI/Interaction/Button Keys 2")]
public class UIButtonKeys2 : MonoBehaviour
{
public bool backtraceSelection = true;
public bool startsSelected = false;
public UIButtonKeys2 selectOnClick;
public UIButtonKeys2 selectOnUp;
public UIButtonKeys2 selectOnDown;
public UIButtonKeys2 selectOnLeft;
public UIButtonKeys2 selectOnRight;
void OnEnable ()
{
if (startsSelected)
{
if (UICamera.selectedObject == null || !NGUITools.GetActive(UICamera.selectedObject))
{
UICamera.selectedObject = gameObject;
UICamera.Notify(gameObject, "OnHover", true);
}
}
}
void OnKey (KeyCode key)
{
if (enabled && NGUITools.GetActive(gameObject))
{
switch (key)
{
case KeyCode.LeftArrow:
if (selectOnLeft != null)
{
UICamera.selectedObject = selectOnLeft.gameObject;
if (backtraceSelection)
selectOnLeft.selectOnRight = this;
}
break;
case KeyCode.RightArrow:
if (selectOnRight != null)
{
UICamera.selectedObject = selectOnRight.gameObject;
if (backtraceSelection)
selectOnRight.selectOnLeft = this;
}
break;
case KeyCode.UpArrow:
if (selectOnUp != null)
{
UICamera.selectedObject = selectOnUp.gameObject;
if (backtraceSelection)
selectOnUp.selectOnDown = this;
}
break;
case KeyCode.DownArrow:
if (selectOnDown != null)
{
UICamera.selectedObject = selectOnDown.gameObject;
if (backtraceSelection)
selectOnDown.selectOnUp = this;
}
break;
case KeyCode.Tab:
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
{
if (selectOnLeft != null)
{
UICamera.selectedObject = selectOnLeft.gameObject;
if (backtraceSelection)
selectOnLeft.selectOnRight = this;
}
else if (selectOnUp != null)
{
UICamera.selectedObject = selectOnUp.gameObject;
if (backtraceSelection)
selectOnUp.selectOnDown = this;
}
else if (selectOnDown != null)
{
UICamera.selectedObject = selectOnDown.gameObject;
if (backtraceSelection)
selectOnDown.selectOnUp = this;
}
else if (selectOnRight != null)
{
UICamera.selectedObject = selectOnRight.gameObject;
if (backtraceSelection)
selectOnRight.selectOnLeft = this;
}
}
else
{
if (selectOnRight != null)
{
UICamera.selectedObject = selectOnRight.gameObject;
if (backtraceSelection)
selectOnRight.selectOnLeft = this;
}
else if (selectOnDown != null)
{
UICamera.selectedObject = selectOnDown.gameObject;
if (backtraceSelection)
selectOnDown.selectOnUp = this;
}
else if (selectOnUp != null)
{
UICamera.selectedObject = selectOnUp.gameObject;
if (backtraceSelection)
selectOnUp.selectOnDown = this;
}
else if (selectOnLeft != null)
{
UICamera.selectedObject = selectOnLeft.gameObject;
if (backtraceSelection)
selectOnLeft.selectOnRight = this;
}
}
break;
}
}
}
void OnClick ()
{
if (enabled && selectOnClick != null)
{
UICamera.selectedObject = selectOnClick.gameObject;
}
}
}