You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.4 KiB
105 lines
3.4 KiB
4 years ago
|
using AX.MessageSystem;
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
public class TransferPersonItemFour : BaseToggle {
|
||
|
public Toggle toggle;
|
||
|
//public ToggleGroup toggleGroup;
|
||
|
public UserData data;
|
||
|
public CloneGameObjInfo info;
|
||
|
public Text userName;
|
||
|
public static List<Toggle> toggles = new List<Toggle>(4);
|
||
|
|
||
|
public void SetPersonInfo(CloneGameObjInfo userInfo, UserData userData)
|
||
|
{
|
||
|
info = userInfo;
|
||
|
data = userData;
|
||
|
userName = transform.Find("Label").GetComponent<Text>();
|
||
|
userName.text = data.UserInfo.RealName + "(外)"; //判断室内室外
|
||
|
toggle = GetComponent<Toggle>();
|
||
|
if (toggles.Count > 3)
|
||
|
{
|
||
|
toggle.interactable = false;
|
||
|
}
|
||
|
MessageDispatcher.AddListener("QuadDisplayMore", DisableToggle);
|
||
|
}
|
||
|
public override void OnDestroy()
|
||
|
{
|
||
|
base.OnDestroy();
|
||
|
//删除前先看自己是否被选中
|
||
|
if (toggle.isOn == true)
|
||
|
{
|
||
|
//如果被选中先执行取消选中的逻辑
|
||
|
MessageDispatcher.SendMessage("CancelQuadDisplay", info);//取消相机
|
||
|
toggles.Remove(toggle);
|
||
|
if (toggles.Count < 4)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("QuadDisplayMore", true); //没有选到4个人,则可以再选中
|
||
|
}
|
||
|
}
|
||
|
MessageDispatcher.RemoveListener("QuadDisplayMore", DisableToggle);
|
||
|
}
|
||
|
public override void RespondFun(bool value)
|
||
|
{
|
||
|
PersonDisplayed(value);
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 是否分屏显示此人员
|
||
|
/// </summary>
|
||
|
/// <param name="isON"></param>
|
||
|
void PersonDisplayed(bool isON)
|
||
|
{
|
||
|
if (isON) //被选中显示
|
||
|
{
|
||
|
//创建相机
|
||
|
MessageDispatcher.SendMessage("QuadDisplay", info);
|
||
|
toggles.Add(toggle);
|
||
|
if (toggles.Count > 3) //已经选了4个显示人员
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("QuadDisplayMore", false); //禁用其他toggle,不能再选人员了
|
||
|
}
|
||
|
}
|
||
|
else //被取消选中
|
||
|
{
|
||
|
if (toggles.Contains(toggle))
|
||
|
{
|
||
|
//取消相机
|
||
|
MessageDispatcher.SendMessage("CancelQuadDisplay", info);
|
||
|
toggles.Remove(toggle);
|
||
|
if (toggles.Count < 4)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("QuadDisplayMore", true); //没有选到4个人,则可以再选中
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
void DisableToggle(IMessage obj)
|
||
|
{
|
||
|
var canMore = (bool)obj.Data; //是否可以选中更多
|
||
|
if (canMore == false) //不能再选中了
|
||
|
{
|
||
|
if (toggle && toggle.isOn == false) //如果此按钮没被选中
|
||
|
{
|
||
|
toggle.interactable = false; //则不可以再选中了
|
||
|
}
|
||
|
}
|
||
|
else //可以再选中
|
||
|
{
|
||
|
if (toggle && toggle.interactable == false) //如果当前toggle被禁用
|
||
|
{
|
||
|
toggle.interactable = true; //解禁
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
IEnumerator BeforeDestroy()
|
||
|
{
|
||
|
//等待取消选中逻辑完成
|
||
|
yield return new WaitForEndOfFrame();
|
||
|
//取消注册消息
|
||
|
MessageDispatcher.RemoveListener("QuadDisplayMore", DisableToggle);
|
||
|
}
|
||
|
}
|