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.
425 lines
18 KiB
425 lines
18 KiB
using System; |
|
using System.Collections; |
|
using System.Linq; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using UnityEngine.UI; |
|
|
|
public class ArmyDropDownDataBind : MonoBehaviour |
|
{ |
|
public RolesInit init; |
|
public Dropdown ZongDuiDropDown; |
|
public Dropdown ZhiDuiDropDown; |
|
public Dropdown DaDuiDropDown; |
|
public Dropdown ZhongDuiDropDown; |
|
public Dropdown ZhanDouBanDropDown; |
|
public static bool IsEmpty = false; |
|
public Text UserNameText; |
|
|
|
private List<Organization> AllDataList = new List<Organization>(); |
|
private bool ZhanDouBanController = true; |
|
private bool ZhiDuiController = true; |
|
private bool DaDuiController = true; |
|
private bool ZhongDuiController = true; |
|
private Organization org; |
|
|
|
private Dictionary<int, Dropdown.OptionData> ZongDuiDropDownDic = new Dictionary<int, Dropdown.OptionData>(); |
|
private Dictionary<int, Dropdown.OptionData> ZhiDuiDropDownDic = new Dictionary<int, Dropdown.OptionData>(); |
|
private Dictionary<int, Dropdown.OptionData> DaDuiDropDownDic = new Dictionary<int, Dropdown.OptionData>(); |
|
private Dictionary<int, Dropdown.OptionData> ZhongDuiDropDownDic = new Dictionary<int, Dropdown.OptionData>(); |
|
private Dictionary<int, Dropdown.OptionData> ZhanDouBanDropDownDic = new Dictionary<int, Dropdown.OptionData>(); |
|
public void GetAllData(List<Organization> DataList) |
|
{ |
|
AllDataList = DataList; |
|
DataBind(); |
|
} |
|
void Start() |
|
{ |
|
CurrentUserInfo.role = Role.None; |
|
} |
|
private Organization GetOrganizationById(int Id) |
|
{ |
|
Organization org = new Organization(); |
|
foreach (Organization o in AllDataList) |
|
{ |
|
if (o.Id == Id) |
|
{ |
|
org.Id = o.Id; |
|
org.DisplayName = o.DisplayName; |
|
org.Level = o.Level; |
|
org.ParentId = o.ParentId; |
|
org.PersonCount = o.PersonCount; |
|
} |
|
} |
|
return org; |
|
} |
|
private int GetParentIdByName(string DisPlayName) |
|
{ |
|
int result = -100; |
|
foreach (Organization o in AllDataList) |
|
{ |
|
if (o.DisplayName == DisPlayName) |
|
{ |
|
result = o.Id; |
|
} |
|
} |
|
return result; |
|
} |
|
|
|
private int GetParentIdByOptionData(Dictionary<int, Dropdown.OptionData> Dic, Dropdown.OptionData selected) |
|
{ |
|
foreach (var item in Dic) |
|
{ |
|
if (item.Value == selected) |
|
{ |
|
return item.Key; |
|
} |
|
} |
|
|
|
return -1; |
|
} |
|
private void DataBind() |
|
{ |
|
ZongDuiDropDown.interactable = false; |
|
ZhiDuiDropDown.interactable = false; |
|
DaDuiDropDown.interactable = false; |
|
ZhongDuiDropDown.interactable = false; |
|
Organization o; |
|
CurrentUserInfo.organization = GetOrganizationById(CurrentUserInfo.mySelf.OrganizationId); |
|
switch (CurrentUserInfo.organization.Level) |
|
{ |
|
case 1://总队 |
|
ZongDuiDropDownBind(0); |
|
ManoeuvreDropDownBind(ZongDuiDropDown, CurrentUserInfo.organization.DisplayName); |
|
init.Init(SelectionInitType.总队); |
|
ZhiDuiDropDown.interactable = true; |
|
DaDuiDropDown.interactable = true; |
|
ZhongDuiDropDown.interactable = true; |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
{ |
|
ZongDuiDropDown.interactable = true; |
|
ZhiDuiDropDownBind(CurrentUserInfo.organization.Id); |
|
} |
|
break; |
|
case 2://支队 |
|
ZongDuiDropDownBind(0); |
|
o = GetOrganizationById(CurrentUserInfo.organization.ParentId); |
|
if (o != null) |
|
{ |
|
ManoeuvreDropDownBind(ZongDuiDropDown, o.DisplayName); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
ZongDuiDropDown.interactable = true; |
|
} |
|
ZhiDuiDropDownBind(CurrentUserInfo.organization.ParentId); |
|
ManoeuvreDropDownBind(ZhiDuiDropDown, CurrentUserInfo.organization.DisplayName); |
|
init.Init(SelectionInitType.支队); |
|
DaDuiDropDown.interactable = true; |
|
ZhongDuiDropDown.interactable = true; |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
{ |
|
ZhiDuiDropDown.interactable = true; |
|
DaDuiDropDownBind(CurrentUserInfo.organization.Id); |
|
} |
|
break; |
|
case 3://大队 |
|
ZongDuiDropDownBind(0); |
|
o = GetOrganizationById(CurrentUserInfo.organization.ParentId); |
|
if (o != null) |
|
{ |
|
Organization oo = GetOrganizationById(o.ParentId); |
|
if (oo != null) |
|
{ |
|
ManoeuvreDropDownBind(ZongDuiDropDown, oo.DisplayName); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
ZongDuiDropDown.interactable = true; |
|
} |
|
ZhiDuiDropDownBind(o.ParentId); |
|
ManoeuvreDropDownBind(ZhiDuiDropDown, o.DisplayName); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
ZhiDuiDropDown.interactable = true; |
|
} |
|
DaDuiDropDownBind(CurrentUserInfo.organization.ParentId); |
|
ManoeuvreDropDownBind(DaDuiDropDown, CurrentUserInfo.organization.DisplayName); |
|
init.Init(SelectionInitType.大队); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
{ |
|
DaDuiDropDown.interactable = true; |
|
ZhongDuiDropDownBind(CurrentUserInfo.organization.Id); |
|
} |
|
ZhongDuiDropDown.interactable = true; |
|
break; |
|
case 4://中队 |
|
ZongDuiDropDownBind(0); |
|
o = GetOrganizationById(CurrentUserInfo.organization.ParentId); |
|
if (o != null) |
|
{ |
|
Organization oo = GetOrganizationById(o.ParentId); |
|
if (oo != null) |
|
{ |
|
Organization ooo = GetOrganizationById(oo.ParentId); |
|
if (ooo != null) |
|
{ |
|
ManoeuvreDropDownBind(ZongDuiDropDown, ooo.DisplayName); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
ZongDuiDropDown.interactable = true; |
|
} |
|
ZhiDuiDropDownBind(oo.ParentId); |
|
ManoeuvreDropDownBind(ZhiDuiDropDown, oo.DisplayName); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
ZhiDuiDropDown.interactable = true; |
|
} |
|
DaDuiDropDownBind(o.ParentId); |
|
ManoeuvreDropDownBind(DaDuiDropDown, o.DisplayName); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
DaDuiDropDown.interactable = true; |
|
} |
|
ZhongDuiDropDownBind(CurrentUserInfo.organization.ParentId); |
|
ManoeuvreDropDownBind(ZhongDuiDropDown, CurrentUserInfo.organization.DisplayName); |
|
init.Init(SelectionInitType.中队); |
|
ZhanDouBanDropDownBind(1); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
ZhongDuiDropDown.interactable = true; |
|
break; |
|
default: |
|
break; |
|
} |
|
ZongDuiDropDown.onValueChanged.AddListener(OnValueChanged_ZongDuiDropDown); |
|
ZhiDuiDropDown.onValueChanged.AddListener(OnValueChanged_ZhiDuiDropDown); |
|
DaDuiDropDown.onValueChanged.AddListener(OnValueChanged_DaDuiDropDown); |
|
ZhongDuiDropDown.onValueChanged.AddListener(OnValueChanged_ZhongDuiDropDown); |
|
ZhanDouBanDropDown.onValueChanged.AddListener(OnValueChanged_ZhanDouBanDropDown); |
|
UserNameText.text = CurrentUserInfo.mySelf.Username; |
|
} |
|
|
|
//中队选择 |
|
private void OnValueChanged_ZhongDuiDropDown(int value) |
|
{ |
|
if (ZhongDuiController) |
|
{ |
|
ZhanDouBanController = false; |
|
if (value == 0) |
|
{ |
|
ZhanDouBanDropDownBind(-1); |
|
if (RolesInit.NowInitType != SelectionInitType.大队) |
|
init.Init(SelectionInitType.大队); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(DaDuiDropDownDic, DaDuiDropDown.options[DaDuiDropDown.value])); |
|
|
|
} |
|
else |
|
{ |
|
if (RolesInit.NowInitType != SelectionInitType.中队) |
|
init.Init(SelectionInitType.中队); |
|
ZhanDouBanDropDownBind(1); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
//CurrentUserInfo.organization = GetOrganizationById(GetParentIdByName(ZhongDuiDropDown.captionText.text)); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(ZhongDuiDropDownDic, ZhongDuiDropDown.options[value])); |
|
} |
|
IsEmpty = false; |
|
} |
|
} |
|
//战斗班选择 |
|
private void OnValueChanged_ZhanDouBanDropDown(int value) |
|
{ |
|
if (ZhanDouBanController) |
|
{ |
|
if (value != 0) |
|
{ |
|
if (RolesInit.NowInitType != SelectionInitType.战斗班 && value != 0) |
|
init.Init(SelectionInitType.战斗班); |
|
CurrentUserInfo.organization = new Organization() |
|
{ |
|
Id = value, |
|
Level = 5, |
|
DisplayName = ZhongDuiDropDown.captionText.text + "_" + ZhanDouBanDropDown.captionText.text, |
|
//ParentId = GetParentIdByName(ZhongDuiDropDown.captionText.text), |
|
ParentId = GetParentIdByOptionData(ZhongDuiDropDownDic, ZhongDuiDropDown.options[ZhongDuiDropDown.value]), |
|
}; |
|
} |
|
else |
|
{ |
|
if (RolesInit.NowInitType != SelectionInitType.中队) |
|
init.Init(SelectionInitType.中队); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(ZhongDuiDropDownDic, ZhongDuiDropDown.options[ZhongDuiDropDown.value])); |
|
} |
|
IsEmpty = false; |
|
} |
|
} |
|
//大队选择 |
|
private void OnValueChanged_DaDuiDropDown(int value) |
|
{ |
|
if (DaDuiController) |
|
{ |
|
ZhongDuiController = false; |
|
ZhanDouBanController = false; |
|
if (value == 0) |
|
{ |
|
ZhongDuiDropDownBind(-1); |
|
ZhanDouBanDropDownBind(-1); |
|
if (RolesInit.NowInitType != SelectionInitType.支队) |
|
init.Init(SelectionInitType.支队); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(ZhiDuiDropDownDic, ZhiDuiDropDown.options[ZhiDuiDropDown.value])); |
|
} |
|
else |
|
{ |
|
if (RolesInit.NowInitType != SelectionInitType.大队) |
|
init.Init(SelectionInitType.大队); |
|
//ZhongDuiDropDownBind(GetParentIdByName(DaDuiDropDown.captionText.text)); |
|
ZhongDuiDropDownBind(GetParentIdByOptionData(DaDuiDropDownDic, DaDuiDropDown.options[value])); |
|
ZhanDouBanDropDownBind(-1); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
//CurrentUserInfo.organization = GetOrganizationById(GetParentIdByName(DaDuiDropDown.captionText.text)); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(DaDuiDropDownDic, DaDuiDropDown.options[value])); |
|
} |
|
IsEmpty = false; |
|
} |
|
} |
|
//支队选择 |
|
private void OnValueChanged_ZhiDuiDropDown(int value) |
|
{ |
|
if (ZhiDuiController) |
|
{ |
|
ZhongDuiController = false; |
|
DaDuiController = false; |
|
ZhanDouBanController = false; |
|
if (value == 0) |
|
{ |
|
DaDuiDropDownBind(-1); |
|
ZhongDuiDropDownBind(-1); |
|
ZhanDouBanDropDownBind(-1); |
|
if (RolesInit.NowInitType != SelectionInitType.总队) |
|
init.Init(SelectionInitType.总队); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(ZongDuiDropDownDic, ZongDuiDropDown.options[ZongDuiDropDown.value])); |
|
} |
|
else |
|
{ |
|
if (RolesInit.NowInitType != SelectionInitType.支队) |
|
init.Init(SelectionInitType.支队); |
|
//DaDuiDropDownBind(GetParentIdByName(ZhiDuiDropDown.captionText.text)); |
|
DaDuiDropDownBind(GetParentIdByOptionData(ZhiDuiDropDownDic, ZhiDuiDropDown.options[value])); |
|
ZhongDuiDropDownBind(-1); |
|
ZhanDouBanDropDownBind(-1); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
//CurrentUserInfo.organization = GetOrganizationById(GetParentIdByName(ZhiDuiDropDown.captionText.text)); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(ZhiDuiDropDownDic, ZhiDuiDropDown.options[value])); |
|
} |
|
IsEmpty = false; |
|
} |
|
} |
|
//总队选择 |
|
private void OnValueChanged_ZongDuiDropDown(int value) |
|
{ |
|
ZhiDuiController = false; |
|
ZhongDuiController = false; |
|
DaDuiController = false; |
|
ZhanDouBanController = false; |
|
if (value == 0) |
|
{ |
|
ZhiDuiDropDownBind(-1); |
|
DaDuiDropDownBind(-1); |
|
ZhongDuiDropDownBind(-1); |
|
ZhanDouBanDropDownBind(-1); |
|
init.Init(SelectionInitType.所有); |
|
IsEmpty = true; |
|
return; |
|
} |
|
else |
|
{ |
|
if (RolesInit.NowInitType != SelectionInitType.总队) |
|
init.Init(SelectionInitType.总队); |
|
//ZhiDuiDropDownBind(GetParentIdByName(ZongDuiDropDown.captionText.text)); |
|
ZhiDuiDropDownBind(GetParentIdByOptionData(ZongDuiDropDownDic, ZongDuiDropDown.options[value])); |
|
if (GameSettings.othersSettings.mode != Mode.manoeuvre) |
|
//CurrentUserInfo.organization = GetOrganizationById(GetParentIdByName(ZongDuiDropDown.captionText.text)); |
|
CurrentUserInfo.organization = GetOrganizationById(GetParentIdByOptionData(ZongDuiDropDownDic, ZongDuiDropDown.options[value])); |
|
IsEmpty = false; |
|
} |
|
} |
|
//下拉框数据绑定 |
|
private void BindMethord(Dropdown BindDropDown, int ParentId, string ShowText, Dictionary<int, Dropdown.OptionData> Dic) |
|
{ |
|
BindDropDown.ClearOptions(); |
|
Dropdown.OptionData tempData; |
|
tempData = new Dropdown.OptionData(); |
|
tempData.text = ShowText; |
|
BindDropDown.options.Add(tempData); |
|
if (ParentId == -1) |
|
{ |
|
BindDropDown.value = 0; |
|
BindDropDown.captionText.text = BindDropDown.options[0].text; |
|
return; |
|
} |
|
List<Organization> BindList = new List<Organization>(); |
|
BindList = AllDataList.Where(a => a.ParentId == ParentId).ToList(); |
|
Dic.Clear(); |
|
for (int i = 0; i < BindList.Count; i++) |
|
{ |
|
tempData = new Dropdown.OptionData(); |
|
tempData.text = BindList[i].DisplayName; |
|
BindDropDown.options.Add(tempData); |
|
|
|
Dic.Add(BindList[i].Id, tempData); |
|
} |
|
BindDropDown.value = 0; |
|
BindDropDown.captionText.text = BindDropDown.options[0].text; |
|
} |
|
//总队数据绑定 |
|
public void ZongDuiDropDownBind(int ParentId) |
|
{ |
|
BindMethord(ZongDuiDropDown, ParentId, "选择总队", ZongDuiDropDownDic); |
|
} |
|
//支队数据绑定 |
|
public void ZhiDuiDropDownBind(int ParentId) |
|
{ |
|
BindMethord(ZhiDuiDropDown, ParentId, "选择支队", ZhiDuiDropDownDic); |
|
ZhiDuiController = true; |
|
} |
|
//大队数据绑定 |
|
public void DaDuiDropDownBind(int ParentId) |
|
{ |
|
BindMethord(DaDuiDropDown, ParentId, "选择大队", DaDuiDropDownDic); |
|
DaDuiController = true; |
|
} |
|
//中队数据绑定 |
|
public void ZhongDuiDropDownBind(int ParentId) |
|
{ |
|
BindMethord(ZhongDuiDropDown, ParentId, "选择中队", ZhongDuiDropDownDic); |
|
ZhongDuiController = true; |
|
} |
|
//战斗班数据绑定 |
|
public void ZhanDouBanDropDownBind(int ParentId) |
|
{ |
|
ZhanDouBanDropDown.ClearOptions(); |
|
Dropdown.OptionData tempData; |
|
tempData = new Dropdown.OptionData(); |
|
tempData.text = "选择战斗班"; |
|
ZhanDouBanDropDown.options.Add(tempData); |
|
if (ParentId == -1) |
|
{ |
|
ZhanDouBanDropDown.value = 0; |
|
ZhanDouBanDropDown.captionText.text = ZhanDouBanDropDown.options[0].text; |
|
return; |
|
} |
|
for (int i = 0; i < 10; i++) |
|
{ |
|
tempData = new Dropdown.OptionData(); |
|
tempData.text = "战斗" + (i + 1) + "班"; |
|
ZhanDouBanDropDown.options.Add(tempData); |
|
} |
|
ZhanDouBanDropDown.value = 0; |
|
ZhanDouBanDropDown.captionText.text = ZhanDouBanDropDown.options[0].text; |
|
ZhanDouBanController = true; |
|
} |
|
//演习模式下拉数据绑定 |
|
public void ManoeuvreDropDownBind(Dropdown Dropdown, string ShowText) |
|
{ |
|
for (int i = 0; i < Dropdown.options.Count; i++) |
|
{ |
|
if (Dropdown.options[i].text == ShowText) |
|
{ |
|
Dropdown.value = i; |
|
break; |
|
} |
|
} |
|
Dropdown.captionText.text = ShowText; |
|
} |
|
}
|
|
|