123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using System;
- using UnityEngine;
- [AddComponentMenu("NGUI/Interaction/Key Binding")]
- public class UIKeyBinding : MonoBehaviour
- {
- protected virtual void Start()
- {
- UIInput component = base.GetComponent<UIInput>();
- this.mIsInput = (component != null);
- if (component != null)
- {
- EventDelegate.Add(component.onSubmit, new EventDelegate.Callback(this.OnSubmit));
- }
- }
- protected virtual void OnSubmit()
- {
- if (UICamera.currentKey == this.keyCode && this.IsModifierActive())
- {
- this.mIgnoreUp = true;
- }
- }
- protected virtual bool IsModifierActive()
- {
- if (this.modifier == UIKeyBinding.Modifier.None)
- {
- return true;
- }
- if (this.modifier == UIKeyBinding.Modifier.Alt)
- {
- if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
- {
- return true;
- }
- }
- else if (this.modifier == UIKeyBinding.Modifier.Control)
- {
- if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
- {
- return true;
- }
- }
- else if (this.modifier == UIKeyBinding.Modifier.Shift && (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
- {
- return true;
- }
- return false;
- }
- protected virtual void Update()
- {
- if (this.keyCode == KeyCode.None || !this.IsModifierActive())
- {
- return;
- }
- if (this.action == UIKeyBinding.Action.PressAndClick || this.action == UIKeyBinding.Action.All)
- {
- if (UICamera.inputHasFocus)
- {
- return;
- }
- UICamera.currentTouch = UICamera.controller;
- UICamera.currentScheme = UICamera.ControlScheme.Mouse;
- UICamera.currentTouch.current = base.gameObject;
- if (Input.GetKeyDown(this.keyCode))
- {
- this.mPress = true;
- this.OnBindingPress(true);
- }
- if (Input.GetKeyUp(this.keyCode))
- {
- this.OnBindingPress(false);
- if (this.mPress)
- {
- this.OnBindingClick();
- this.mPress = false;
- }
- }
- UICamera.currentTouch.current = null;
- }
- if ((this.action == UIKeyBinding.Action.Select || this.action == UIKeyBinding.Action.All) && Input.GetKeyUp(this.keyCode))
- {
- if (this.mIsInput)
- {
- if (!this.mIgnoreUp && !UICamera.inputHasFocus)
- {
- UICamera.selectedObject = base.gameObject;
- }
- this.mIgnoreUp = false;
- }
- else
- {
- UICamera.selectedObject = base.gameObject;
- }
- }
- }
- protected virtual void OnBindingPress(bool pressed)
- {
- UICamera.Notify(base.gameObject, "OnPress", pressed);
- }
- protected virtual void OnBindingClick()
- {
- UICamera.Notify(base.gameObject, "OnClick", null);
- }
- public KeyCode keyCode;
- public UIKeyBinding.Modifier modifier;
- public UIKeyBinding.Action action;
- private bool mIgnoreUp;
- private bool mIsInput;
- private bool mPress;
- public enum Action
- {
- PressAndClick,
- Select,
- All
- }
- public enum Modifier
- {
- None,
- Shift,
- Control,
- Alt
- }
- }
|