/// <summary> /// 设置面板 /// </summary> /// <param name="_event"></param> /// <param name="_eventWindows"></param> public void SetPanel(Event @_event, EventWindows _eventWindows) { @event = @_event; playerGestureEventInfo = @event.playerGestureEventInfo; eventWindows = _eventWindows; EventName.text = @event.playerGestureEventInfo.eventName; Detailed.text = @event.playerGestureEventInfo.eventDetailed; playerIndex.text = @event.playerGestureEventInfo.playerIndex.ToString(); }
/// <summary> /// 设置更新事件数据 /// (注释:对应更新事件触发的玩家索引和手势名字) /// </summary> /// <param name="gestureEventInfo"></param> public void SetPlayerGestureEvent(PlayerGestureEventInfo gestureEventInfo) { for (int i = 0; i < gestureEvents.Count; i++) { if (gestureEvents[i].eventName == gestureEventInfo.eventName && gestureEvents[i].eventDetailed == gestureEventInfo.eventDetailed) { gestureEvents[i].playerIndex = gestureEventInfo.playerIndex; gestureEvents[i].gestureName = gestureEventInfo.gestureName; } } }
/// <summary> /// 初始化 /// </summary> /// <param name="_playerGestureEventInfo"></param> /// <param name="_eventWindows"></param> public void Init(PlayerGestureEventInfo _playerGestureEventInfo, EventWindows _eventWindows) { playerGestureEventInfo = _playerGestureEventInfo; GestureName.text = playerGestureEventInfo.eventName; eventWindows = _eventWindows; eventButton.OnClick.AddListener(() => { eventWindows.ReturnEventButton(this); }); }
/// <summary> /// 删除手势事件 /// </summary> /// <param name="playerIndex"></param> /// <param name="gestureName"></param> /// <param name="eventName"></param> public void RemovePlayerGestureEvent(int playerIndex, string gestureName, string eventName) { PlayerGestureEventInfo eventInfo = new PlayerGestureEventInfo(); for (int i = 0; i < gestureEvents.Count; i++) { if (gestureEvents[i].playerIndex == playerIndex && gestureEvents[i].gestureName == gestureName) { eventInfo = gestureEvents[i]; } } gestureEvents.Remove(eventInfo); }
/// <summary> /// 添加手势事件 /// </summary> /// <param name="playerIndex"></param> /// <param name="gestureName"></param> /// <param name="eventName"></param> /// <param name="eventDetailed"></param> /// <param name="gestureEvent"></param> public void AddPlayerGestureEvent(int playerIndex, string gestureName, string eventName, string eventDetailed, Action gestureEvent) { PlayerGestureEventInfo eventInfo = new PlayerGestureEventInfo(); eventDetailed += string.Format("\n\n(初始玩家事件-{0})", playerIndex); eventInfo.gestureName = gestureName; eventInfo.playerIndex = playerIndex; eventInfo.eventName = eventName; eventInfo.eventDetailed = eventDetailed; eventInfo.gestureEvent = gestureEvent; gestureEvents.Add(eventInfo); onAddGestureEvent?.Invoke(eventInfo); }
/// <summary> /// 恢复手势关联的事件,每个事件只能在一个手势上出现,此方法就是更新手势触发的事件 /// (注释:在手势添加事件时调用) /// </summary> /// <param name="playerGestureEventInfo"></param> public void ReturnGestureEvent(PlayerGestureEventInfo playerGestureEventInfo) { for (int i = 0; i < playerGestureDatas.Count; i++) { for (int j = 0; j < playerGestureDatas[i].playerGestureEvents.Count; j++)//循环整个手势数组上的所有事件 { PlayerGestureEventInfo playerGestureEvent = playerGestureDatas[i].playerGestureEvents[j]; if (playerGestureEvent.eventName == playerGestureEventInfo.eventName && playerGestureEvent.eventDetailed == playerGestureEventInfo.eventDetailed) { playerGestureDatas[i].playerGestureEvents.Remove(playerGestureEvent); return; } } } }
/// <summary> /// 设置面板 /// </summary> /// <param name="_eventWindows"></param> public void SetPanel(EventWindows _eventWindows) { transform.localScale = Vector3.one; eventWindows = _eventWindows; foreach (var item in PlayerManager.Instance.gestureEvents) { bool isF = false; for (int i = 0; i < eventWindows.events.Count; i++) { if (eventWindows.events[i].playerGestureEventInfo.eventName == item.eventName && eventWindows.events[i].playerGestureEventInfo.eventDetailed == item.eventDetailed) { isF = true; break; } } if (isF) { continue; } Event @event; if (_events.Count > 0) { @event = _events[0]; @event.transform.parent = Content; @event.transform.localScale = Vector3.one; _events.Remove(@event); } else { @event = SourcesManager.LoadSources <Event>("Event", Content.transform); } @event.Init(item, eventWindows); @event.eventButton.OnClick.AddListener(() => { Detailed.transform.localScale = Vector3.one; value.text = @event.playerGestureEventInfo.eventDetailed; playerGestureEventInfo = @event.playerGestureEventInfo; ReturnEventButton(@event); }); events.Add(@event); } }
/// <summary> /// 封装的添加事件按钮 /// </summary> /// <param name="_playerGestureEventInfo"></param> public void AddEvent(PlayerGestureEventInfo _playerGestureEventInfo) { PlayerGestureEventInfo playerGestureEventInfo = new PlayerGestureEventInfo(); playerGestureEventInfo.eventDetailed = _playerGestureEventInfo.eventDetailed; playerGestureEventInfo.eventName = _playerGestureEventInfo.eventName; playerGestureEventInfo.gestureName = gesture.playerGestureData.playerGestureInfo.GestureName; //playerGestureEventInfo.isFindGesture = _playerGestureEventInfo.isFindGesture; playerGestureEventInfo.playerIndex = _playerGestureEventInfo.playerIndex; Event @event; if (_events.Count > 0) { @event = _events[0]; @event.transform.parent = Content; @event.transform.localScale = Vector3.one; _events.Remove(@event); } else { @event = SourcesManager.LoadSources <Event>("Event", Content); } @event.Init(playerGestureEventInfo, this); @event.eventButton.OffChoice.AddListener(() => { eventInfoWindows.transform.localScale = Vector3.zero; }); @event.eventButton.OnChoice.AddListener(() => { eventInfoWindows.transform.localScale = Vector3.one; eventInfoWindows.SetPanel(@event, this); }); events.Add(@event); PlayerGestureManager.Instance.ReturnGestureEvent(@event.playerGestureEventInfo); ReturnEventButton(@event); //for (int i = 0; i < events.Count; i++) //{ // Debug.Log(events[i].playerGestureEventInfo.playerIndex); //} }