| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.SceneManagement;
- /*
- 模拟鼠标控制器
- 主要负责自动开关模拟鼠标
- 在蓝牙正常连接状态下,非游戏界面自动开启模拟鼠标,游戏界面自动关闭模拟鼠标。
- */
- public class SimulateMouseController
- {
- public static SimulateMouseController ins;
- public static void Init() {
- ins = new SimulateMouseController();
- SceneManager.sceneLoaded += (scene, mode) => {
- //去除添加OpenLocker的场景
- if (!scene.name.StartsWith("Game") &&
- !scene.name.Equals("Env0") &&
- !scene.name.Equals("Env1") &&
- !scene.name.Equals("Env3")) {
- Debug.Log("SimulateMouseController:"+ scene.name);
- ins.AddOpenLocker("NotGame");
- }
- };
- }
- bool bleConnected = false;
- //有locker就要保持鼠标开启状态
- HashSet<object> openLockerSet = new HashSet<object>();
- //AddOpenLocker 和 RemoveOpenLocker 应两两对应
- public void AddOpenLocker(object locker) {
- openLockerSet.Add(locker);
- Debug.Log("AddOpenLock-" + locker);
- CheckAndOpenOrClose();
- }
- public void RemoveOpenLocker(object locker) {
- openLockerSet.Remove(locker);
- Debug.Log("RemoveOpenLock-" + locker);
- CheckAndOpenOrClose();
- }
- //蓝牙是否处于连接状态
- public void SetBleConnected(bool connected) {
- bleConnected = connected;
- CheckAndOpenOrClose();
- }
- //检测和改变开关
- void CheckAndOpenOrClose() {
- Debug.Log("RemoveOpenLock after openLockerSet-" + bleConnected + " == " + openLockerSet.Count);
- if (bleConnected) {
- if (openLockerSet.Count > 0) {
- Open();
- } else {
- Close();
- }
- } else {
- Close();
- }
- }
- void Open() {
- if (SB_EventSystem.ins && !SB_EventSystem.ins.simulateMouseIsAwaked) {
- SB_EventSystem.ins.AwakenSimulateMouse();
- // Debug.Log("simulate-mouse-open");
- }
- }
- void Close() {
- if (SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked) {
- SB_EventSystem.ins.AwakenSimulateMouse();
- // Debug.Log("simulate-mouse-close");
- }
- }
- }
|