网演高层钦州
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.
 
 
 

233 lines
8.6 KiB

using AX.Network.Protocols;
using AX.NetworkSystem;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using AX.Serialization;
public class CommandingCtrl : MonoBehaviour {
private List<bool> isCommandbools = new List<bool>();//当前登陆用户所有上级的是否为总指挥值的集合
public GameObject PoliceInfo;
// Use this for initialization
void Start () {
PoliceInfo = GameObject.Find("Canvas").transform.Find("Police/Main/PoliceInfo").gameObject;
NetworkMessageDispatcher.AddListener("GET_SUP_ISCOMMAND_SYNC", GetSupIsCommand);
NetworkMessageDispatcher.AddListener("ISCOMMAND_SYNC", SetSupIsCommand);
NetworkMessageDispatcher.AddListener("EXIST_OTHER_DEPT_ISCMD_SYNC", ExistOtherDeptIsCMD);
NetworkMessageDispatcher.AddListener("EXIST_OTHER_DEPT_ISCMD_RESP_SYNC", ExistOtherDeptIsCMDResp);
NetworkMessageDispatcher.AddListener("EXIST_OTHER_EXCEPTZD_DEPT_ISCMD_SYNC", ExistOtherExceptZDDeptIsCMD);
NetworkMessageDispatcher.AddListener("EXIST_OTHER_EXCEPTZD_DEPT_ISCMD_RESP_SYNC", ExistOtherExceptZDDeptIsCMDResp);
}
private void OnDestroy()
{
NetworkMessageDispatcher.RemoveListener("GET_SUP_ISCOMMAND_SYNC", GetSupIsCommand);
NetworkMessageDispatcher.RemoveListener("ISCOMMAND_SYNC", SetSupIsCommand);
NetworkMessageDispatcher.RemoveListener("EXIST_OTHER_DEPT_ISCMD", ExistOtherDeptIsCMD);
NetworkMessageDispatcher.RemoveListener("EXIST_OTHER_DEPT_ISCMD_RESP_SYNC", ExistOtherDeptIsCMDResp);
NetworkMessageDispatcher.RemoveListener("EXIST_OTHER_EXCEPTZD_DEPT_ISCMD_SYNC", ExistOtherExceptZDDeptIsCMD);
NetworkMessageDispatcher.RemoveListener("EXIST_OTHER_EXCEPTZD_DEPT_ISCMD_RESP_SYNC", ExistOtherExceptZDDeptIsCMDResp);
}
/// <summary>
/// 不存在大队指挥,支队指挥,总队指挥为总指挥,是中队为总指挥
/// </summary>
/// <param name="obj"></param>
private void ExistOtherExceptZDDeptIsCMDResp(BinaryMessage obj)
{
var data = obj.Body.Deserialize<KeyValuePair<long, IsComdDatas>>();
PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles.Add(data.Value.generalCommanding);
if (PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles.Count != data.Value.count)
{
return;
}
if (!PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles.Contains(true))
{//不存在大队指挥,支队指挥,总队指挥为总指挥,是中队为总指挥
if (CurrentUserInfo.organization.DisplayName == "龙泾中队")
{//若登陆辖区中队
CurrentUserInfo.generalCommanding = true;//设置当前登陆用户为总指挥
foreach (UserData item in CurrentUserInfo.room.UserList)
{
if (CurrentUserInfo.mySelf.Id != item.UserInfo.Id)
{//不发给自己
NetworkManager.Default.SendAsync("GENERAL_COMMANDING_UPDATE_SYNC", item.UserInfo.Id);
}
}
}
}
}
/// <summary>
/// 是否存在大队指挥,支队指挥,总队指挥为总指挥
/// </summary>
/// <param name="obj"></param>
private void ExistOtherExceptZDDeptIsCMD(BinaryMessage obj)
{
var data = obj.Body.Deserialize<KeyValuePair<long, List<long>>>();
var isComdDatas = new IsComdDatas();
isComdDatas.generalCommanding = CurrentUserInfo.generalCommanding;
isComdDatas.count = data.Value.Count;
NetworkManager.Default.SendAsync("EXIST_OTHER_EXCEPTZD_DEPT_ISCMD_RESP_SYNC",
new KeyValuePair<long, IsComdDatas>(data.Key, isComdDatas));
}
/// <summary>
/// 看看是否有组织机构已为总指挥的处理
/// </summary>
/// <param name="obj"></param>
private void ExistOtherDeptIsCMDResp(BinaryMessage obj)
{
var data = obj.Body.Deserialize<KeyValuePair<long, IsComdDatas>>();
PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles.Add(data.Value.generalCommanding);
if (PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles.Count != data.Value.count)
{
return;
}
if (!PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles.Contains(true))
{
if (CurrentUserInfo.role == Role.
|| CurrentUserInfo.role == Role.
|| CurrentUserInfo.role == Role.
|| CurrentUserInfo.role == Role.)
{
CurrentUserInfo.generalCommanding = true;//设置当前登陆用户为总指挥
}
}
else
{//处理没有大队指挥,支队指挥,总队指挥为总指挥情况下,已有某中队为总指挥,辖区中队进入后,总指挥移交辖区中队
//是否存在大队指挥,支队指挥,总队指挥为总指挥
PoliceInfo.GetComponent<PoliceInfoMsgBind>().isExistCmdRoles = new List<bool>();
List<long> Uids = new List<long>();
foreach (UserData item in CurrentUserInfo.room.UserList)
{
if ((item.Role == Role.
|| item.Role == Role.
|| item.Role == Role.)
&& item.UserInfo.Id != CurrentUserInfo.mySelf.Id
)
{
Uids.Add(item.UserInfo.Id);
}
}
if (Uids.Count == 0)
{//说明存在中队为总指挥
if (CurrentUserInfo.organization.DisplayName == "龙泾中队")
{//若登陆辖区中队
CurrentUserInfo.generalCommanding = true;//设置当前登陆用户为总指挥
foreach (UserData item in CurrentUserInfo.room.UserList)
{
if (CurrentUserInfo.mySelf.Id != item.UserInfo.Id)
{//不发给自己
NetworkManager.Default.SendAsync("GENERAL_COMMANDING_UPDATE_SYNC", item.UserInfo.Id);
}
}
}
}
else
{
//是否存在大队指挥,支队指挥,总队指挥为总指挥
NetworkManager.Default.SendAsync("EXIST_OTHER_EXCEPTZD_DEPT_ISCMD_SYNC",
new KeyValuePair<long, List<long>>(CurrentUserInfo.mySelf.Id, Uids));
}
}
}
public struct IsComdDatas
{
public bool generalCommanding;
public int count;
}
/// <summary>
/// 看看是否有组织机构已为总指挥
/// </summary>
/// <param name="obj"></param>
private void ExistOtherDeptIsCMD(BinaryMessage obj)
{
var data = obj.Body.Deserialize<KeyValuePair<long, List<long>>>();
var isComdDatas = new IsComdDatas();
isComdDatas.generalCommanding = CurrentUserInfo.generalCommanding;
isComdDatas.count = data.Value.Count;
NetworkManager.Default.SendAsync("EXIST_OTHER_DEPT_ISCMD_RESP_SYNC",
new KeyValuePair<long, IsComdDatas>(data.Key, isComdDatas));
}
private void GetSupIsCommand(BinaryMessage message)
{
var data = message.Body.Deserialize<KeyValuePair<long, List<UserData>>>();
var isComdDatas = new IsComdDatas();
isComdDatas.generalCommanding = CurrentUserInfo.generalCommanding;
isComdDatas.count = data.Value.Count;
NetworkManager.Default.SendAsync("ISCOMMAND_SYNC", new KeyValuePair<long , IsComdDatas>(data.Key, isComdDatas));
}
private void SetSupIsCommand(BinaryMessage message)
{
var data = message.Body.Deserialize<KeyValuePair<long, IsComdDatas>>();
isCommandbools.Add(data.Value.generalCommanding);
if (isCommandbools.Count != data.Value.count)
{
return;
}
if (!isCommandbools.Contains(true))
{
CurrentUserInfo.generalCommanding = true;
foreach (UserData item in CurrentUserInfo.room.UserList)
{
if (CurrentUserInfo.mySelf.Id != item.UserInfo.Id)
{
//通知当前登陆用户的下级移交总指挥(接收处理时设置CurrentUserInfo.generalCommanding为false)
NetworkManager.Default.SendAsync("GENERAL_COMMANDING_UPDATE_SYNC", item.UserInfo.Id);
}
}
}
else
{
CurrentUserInfo.generalCommanding = false;
}
}
// Update is called once per frame
void Update () {
}
}