Beispiel #1
0
        /*--------------------------------------------------------------------------------------------*/
        private void AddControl(HoverkeyItemLabels pLabels)
        {
            switch (pLabels.DefaultKey)
            {
            case KeyCode.Backspace:
                if (CursorIndex > 0)
                {
                    TextInput = TextInput.Substring(0, CursorIndex - 1) +
                                TextInput.Substring(CursorIndex, TextInput.Length - CursorIndex);
                    CursorIndex--;
                }
                break;

            case KeyCode.Delete:
                if (CursorIndex < TextInput.Length)
                {
                    TextInput = TextInput.Substring(0, CursorIndex) +
                                TextInput.Substring(CursorIndex + 1, TextInput.Length - CursorIndex - 1);
                }
                break;

            case KeyCode.Return:
            case KeyCode.KeypadEnter:
                AddCharacter("\n");
                break;
            }
        }
Beispiel #2
0
        /*--------------------------------------------------------------------------------------------*/
        private void AddNavigation(HoverkeyItemLabels pLabels)
        {
            switch (pLabels.DefaultKey)
            {
            case KeyCode.LeftArrow:
                CursorIndex = Mathf.Max(0, CursorIndex - 1);
                break;

            case KeyCode.RightArrow:
                CursorIndex = Mathf.Min(TextInput.Length, CursorIndex + 1);
                break;

            case KeyCode.Home:
                CursorIndex = 0;
                break;

            case KeyCode.End:
                CursorIndex = TextInput.Length;
                break;

            case KeyCode.Tab:
                AddCharacter("\t");
                break;
            }
        }
Beispiel #3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void SendInputFieldEvent(HoverkeyItemLabels pLabels)
        {
            if (InputField == null)
            {
                return;
            }

            InputField.text          = TextInput;
            InputField.caretPosition = CursorIndex;
            InputField.ForceLabelUpdate();

            /*
             * //TODO: the following seems like the right way to do it, but isn't working as expected
             * //http://docs.unity3d.com/540/Documentation/ScriptReference/UI.InputField.html
             * //https://docs.unity3d.com/ScriptReference/Event.KeyboardEvent.html
             * //https://docs.unity3d.com/Manual/ConventionalGameInput.html
             *
             * string keyName = (pLabels.DefaultKey+"").ToLower();
             *
             * switch ( pLabels.DefaultKey ) {
             *      case KeyCode.Keypad0:
             *      case KeyCode.Keypad1:
             *      case KeyCode.Keypad2:
             *      case KeyCode.Keypad3:
             *      case KeyCode.Keypad4:
             *      case KeyCode.Keypad5:
             *      case KeyCode.Keypad6:
             *      case KeyCode.Keypad7:
             *      case KeyCode.Keypad8:
             *      case KeyCode.Numlock:
             *      case KeyCode.KeypadDivide:
             *      case KeyCode.KeypadMultiply:
             *      case KeyCode.KeypadMinus:
             *      case KeyCode.KeypadPlus:
             *      case KeyCode.KeypadPeriod:
             *      case KeyCode.KeypadEnter:
             *              keyName = "["+keyName+"]";
             *              break;
             * }
             *
             * if ( Hoverkey.IsInShiftMode ) {
             *      keyName = "#"+keyName;
             *      //keyName = keyName.ToUpper();
             * }
             *
             * Debug.Log("KEY: "+keyName);
             * InputField.ActivateInputField();
             * InputField.ProcessEvent(Event.KeyboardEvent(keyName));
             * InputField.ForceLabelUpdate();*/
        }
Beispiel #4
0
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateShiftLabels(bool pForceUpdate=false)
        {
            bool isShiftMode = IsInShiftMode;

            if (  isShiftMode == vWasShiftMode && !pForceUpdate ) {
                return;
            }

            vWasShiftMode = isShiftMode;

            for ( int i = 0 ; i < vAllLabels.Count ; i++ ) {
                HoverkeyItemLabels label = vAllLabels[i];
                label.GetComponent<HoverItemData>().Label =
                    (isShiftMode && label.HasShiftLabel ? label.ShiftLabel : label.DefaultLabel);
            }
        }
Beispiel #5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void HandleKeySelected(IItemDataSelectable pItemData, HoverkeyItemLabels pLabels)
        {
            switch (pLabels.ActionType)
            {
            case HoverkeyItemLabels.KeyActionType.Character:
                AddCharacter(pLabels);
                break;

            case HoverkeyItemLabels.KeyActionType.Control:
                AddControl(pLabels);
                break;

            case HoverkeyItemLabels.KeyActionType.Navigation:
                AddNavigation(pLabels);
                break;
            }

            SendInputFieldEvent(pLabels);
        }
Beispiel #6
0
        /*--------------------------------------------------------------------------------------------*/
        private GameObject BuildRowItem(Transform pRowTx, HoverkeyBuilderKeyInfo pKeyInfo)
        {
            var itemGo = new GameObject(pKeyInfo.DefaultKey + "");

            itemGo.transform.SetParent(pRowTx, false);

            HoverItemBuilder build = itemGo.AddComponent <HoverItemBuilder>();

            build.ItemType             = pKeyInfo.ItemType;
            build.ButtonRendererPrefab = ButtonRendererPrefab;
            build.SliderRendererPrefab = SliderRendererPrefab;
            build.OnEditorTriggerButtonSelected();
            DestroyImmediate(build, false);

            ////

            HoverItemData data = itemGo.GetComponent <HoverItemData>();

            data.Id    = pKeyInfo.ID;
            data.Label = pKeyInfo.DefaultLabel;

            itemGo.AddComponent <HoverShapeRect>();

            HoverkeyItemLabels labels = itemGo.AddComponent <HoverkeyItemLabels>();

            labels.ActionType    = pKeyInfo.ActionType;
            labels.DefaultKey    = pKeyInfo.DefaultKey;
            labels.DefaultLabel  = pKeyInfo.DefaultLabel;
            labels.HasShiftLabel = pKeyInfo.HasShiftLabel;
            labels.ShiftLabel    = pKeyInfo.ShiftLabel;

            if (pKeyInfo.RelativeSizeX != 1)
            {
                HoverLayoutRectRelativeSizer sizer =
                    itemGo.AddComponent <HoverLayoutRectRelativeSizer>();
                sizer.RelativeSizeX = pKeyInfo.RelativeSizeX;
            }

            HoverCanvas can = itemGo.GetComponentInChildren <HoverCanvas>();

            can.Alignment = HoverCanvas.CanvasAlignmentType.Center;
            can.PaddingX  = 0.001f;

            ////

            HoverkeyInterface     inter        = gameObject.GetComponent <HoverkeyInterface>();
            HoverItemDataSelector selData      = (data as HoverItemDataSelector);
            HoverItemDataSticky   stickyData   = (data as HoverItemDataSticky);
            HoverItemDataCheckbox checkboxData = (data as HoverItemDataCheckbox);

            if (selData != null)
            {
#if UNITY_EDITOR
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    selData.OnSelectedEvent, inter.HandleItemSelected);
#else
                selData.OnSelectedEvent.AddListener(inter.HandleItemSelected);
#endif
            }
            else if (stickyData != null)
            {
#if UNITY_EDITOR
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    stickyData.OnSelectedEvent, inter.HandleItemSelected);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    stickyData.OnDeselectedEvent, inter.HandleItemDeselected);
#else
                stickyData.OnSelectedEvent.AddListener(inter.HandleItemSelected);
                stickyData.OnDeselectedEvent.AddListener(inter.HandleItemDeselected);
#endif
            }
            else if (checkboxData != null)
            {
#if UNITY_EDITOR
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    checkboxData.OnSelectedEvent, inter.HandleItemSelected);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    checkboxData.OnValueChangedEvent, inter.HandleItemValueChanged);
#else
                checkboxData.OnSelectedEvent.AddListener(inter.HandleItemSelected);
                checkboxData.OnValueChangedEvent.AddListener(inter.HandleItemValueChanged);
#endif
            }

            return(itemGo);
        }
Beispiel #7
0
 /*--------------------------------------------------------------------------------------------* /
  * private void HandleKeyToggled(IItemDataSelectable<bool> pArg0, HoverkeyItemLabels pArg1) {
  *      throw new NotImplementedException();
  * }
  *
  * /*--------------------------------------------------------------------------------------------* /
  * private void HandleKeyDeselected(IItemDataSelectable pArg0, HoverkeyItemLabels pArg1) {
  *      throw new NotImplementedException();
  * }
  *
  *
  * ////////////////////////////////////////////////////////////////////////////////////////////////
  * /*--------------------------------------------------------------------------------------------*/
 private void AddCharacter(HoverkeyItemLabels pLabels)
 {
     AddCharacter(Hoverkey.IsInShiftMode && pLabels.HasShiftLabel ?
                  pLabels.ShiftLabel : pLabels.DefaultLabel);
 }