SCKeyboardSpecialKey.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.EventSystems;
  6. public enum SpecialKeyEnum
  7. {
  8. Done,
  9. Clear,
  10. Delete,
  11. Space,
  12. Shift,
  13. ShowNum,
  14. ShowSymbol,
  15. ShowEnUp,
  16. ShowEnLow,
  17. ShowCn
  18. }
  19. public class SCKeyboardSpecialKey : SCKeyboardKey
  20. {
  21. public SpecialKeyEnum specialKeyEnum;
  22. private static Dictionary<SpecialKeyEnum, Action> specialCallbackDic;
  23. private static GameKey3Dboard game3DKayboardCache;
  24. protected override void OnEnable()
  25. {
  26. InitSpecialCallbackDic();
  27. }
  28. protected override void RegistKey()
  29. {
  30. PressableButton pressableButton = this.GetComponent<PressableButton>();
  31. TouchableButton touchableButton = this.GetComponent<TouchableButton>();
  32. if (pressableButton && touchableButton)
  33. {
  34. InteractionEvent interActionEvent = new InteractionEvent();
  35. interActionEvent.AddListener(OnSpecialKeyClick);
  36. pressableButton.Triggers.Add(new InteractionPressableEntry() { eventID = InteractionPressableType.PointerClick, callback = interActionEvent });
  37. touchableButton.Triggers.Add(new InteractionTouchableEntry() { eventID = InteractionTouchableType.PokePress, callback = interActionEvent });
  38. }
  39. }
  40. private void OnSpecialKeyClick(BaseEventData eventData)
  41. {
  42. if (specialCallbackDic != null && specialCallbackDic.ContainsKey(specialKeyEnum))
  43. {
  44. Action callback = specialCallbackDic[specialKeyEnum];
  45. callback?.Invoke();
  46. }
  47. }
  48. public override void OnPointerEnter(PointerEventData eventData)
  49. {
  50. this.GetComponentInChildren<MeshRenderer>().material.color = color_Blue;
  51. // base.OnPointerEnter(eventData);
  52. }
  53. private void InitSpecialCallbackDic()
  54. {
  55. if (specialCallbackDic == null)
  56. {
  57. specialCallbackDic = new Dictionary<SpecialKeyEnum, Action>();
  58. }
  59. GameKey3Dboard gameKey3Dboard = this.GetComponentInParent<GameKey3Dboard>();
  60. if ( game3DKayboardCache != gameKey3Dboard)
  61. {
  62. specialCallbackDic.Clear();
  63. specialCallbackDic.Add(SpecialKeyEnum.Done, gameKey3Dboard.OnDoneClick);
  64. specialCallbackDic.Add(SpecialKeyEnum.Clear, gameKey3Dboard.OnClearKeyClick);
  65. specialCallbackDic.Add(SpecialKeyEnum.Delete, gameKey3Dboard.OnDeleteKeyClick);
  66. specialCallbackDic.Add(SpecialKeyEnum.ShowNum, gameKey3Dboard.ShowNum);
  67. specialCallbackDic.Add(SpecialKeyEnum.ShowSymbol, gameKey3Dboard.ShowSymbol);
  68. specialCallbackDic.Add(SpecialKeyEnum.ShowEnUp, gameKey3Dboard.ShowEnUp);
  69. specialCallbackDic.Add(SpecialKeyEnum.ShowEnLow, gameKey3Dboard.ShowEnLow);
  70. specialCallbackDic.Add(SpecialKeyEnum.Space, gameKey3Dboard.OnSpaceClick);
  71. specialCallbackDic.Add(SpecialKeyEnum.Shift, gameKey3Dboard.OnShiftClick);
  72. specialCallbackDic.Add(SpecialKeyEnum.ShowCn, gameKey3Dboard.ShowCN);
  73. }
  74. }
  75. }