SimulateMouseController.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement;
  5. /*
  6. 模拟鼠标控制器
  7. 主要负责自动开关模拟鼠标
  8. 在蓝牙正常连接状态下,非游戏界面自动开启模拟鼠标,游戏界面自动关闭模拟鼠标。
  9. */
  10. public class SimulateMouseController
  11. {
  12. public static SimulateMouseController ins;
  13. public static void Init() {
  14. ins = new SimulateMouseController();
  15. SceneManager.sceneLoaded += (scene, mode) => {
  16. if (!scene.name.StartsWith("Game")) {
  17. ins.AddOpenLocker("NotGame");
  18. }
  19. };
  20. }
  21. bool bleConnected = false;
  22. //有locker就要保持鼠标开启状态
  23. HashSet<object> openLockerSet = new HashSet<object>();
  24. //AddOpenLocker 和 RemoveOpenLocker 应两两对应
  25. public void AddOpenLocker(object locker) {
  26. openLockerSet.Add(locker);
  27. Debug.Log("AddOpenLock-" + locker);
  28. CheckAndOpenOrClose();
  29. }
  30. public void RemoveOpenLocker(object locker) {
  31. openLockerSet.Remove(locker);
  32. Debug.Log("RemoveOpenLock-" + locker);
  33. CheckAndOpenOrClose();
  34. }
  35. //蓝牙是否处于连接状态
  36. public void SetBleConnected(bool connected) {
  37. bleConnected = connected;
  38. CheckAndOpenOrClose();
  39. }
  40. //检测和改变开关
  41. void CheckAndOpenOrClose() {
  42. Debug.Log("RemoveOpenLock after openLockerSet-" + bleConnected + " == " + openLockerSet.Count);
  43. if (bleConnected) {
  44. if (openLockerSet.Count > 0) {
  45. Open();
  46. } else {
  47. Close();
  48. }
  49. } else {
  50. Close();
  51. }
  52. }
  53. void Open() {
  54. if (SB_EventSystem.ins && !SB_EventSystem.ins.simulateMouseIsAwaked) {
  55. SB_EventSystem.ins.AwakenSimulateMouse();
  56. // Debug.Log("simulate-mouse-open");
  57. }
  58. }
  59. void Close() {
  60. if (SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked) {
  61. SB_EventSystem.ins.AwakenSimulateMouse();
  62. // Debug.Log("simulate-mouse-close");
  63. }
  64. }
  65. }