完成编队预设切换、编队位置交换、队长设置功能
This commit is contained in:
+1439
-649
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class TeamIndexSetterView : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] public GameObject isSelectedStatus;
|
||||||
|
public bool isSelected;
|
||||||
|
|
||||||
|
public int index;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void setTeamSettingSelect()
|
||||||
|
{
|
||||||
|
isSelected = true;
|
||||||
|
isSelectedStatus.SetActive(true);
|
||||||
|
TeamManager.Instance.setCurrentSelectedTeamSetting(index);
|
||||||
|
}
|
||||||
|
public void setUnSelectedTeamSetting()
|
||||||
|
{
|
||||||
|
isSelected = false;
|
||||||
|
isSelectedStatus.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0d151f3d4bd3448bb723df28d9eeb028
|
||||||
|
timeCreated: 1749822972
|
||||||
@@ -29,6 +29,10 @@ public class TeamManager : MonoBehaviour
|
|||||||
/// 在修改被选中的编队中角色的索引时触发
|
/// 在修改被选中的编队中角色的索引时触发
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event Action OnSelectedCharacterChanged;
|
public event Action OnSelectedCharacterChanged;
|
||||||
|
/// <summary>
|
||||||
|
/// 修改选定的预设队伍时触发
|
||||||
|
/// </summary>
|
||||||
|
public event Action OnSelectedTeamChanged;
|
||||||
|
|
||||||
void Awake()
|
void Awake()
|
||||||
{
|
{
|
||||||
@@ -55,13 +59,17 @@ public class TeamManager : MonoBehaviour
|
|||||||
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"S"));
|
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"S"));
|
||||||
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C"));
|
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C"));
|
||||||
currentTeamSettings[0].teamIdList.Add( new CharacterView(1001002,"C"));
|
currentTeamSettings[0].teamIdList.Add( new CharacterView(1001002,"C"));
|
||||||
|
currentTeamSettings[0].teamIdList.Add(new CharacterView(-1,null));
|
||||||
|
|
||||||
currentTeamSettings.Add(1,new TeamSetting(new List<CharacterView>(),1001002));
|
currentTeamSettings.Add(1,new TeamSetting(new List<CharacterView>(),1001002));
|
||||||
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C"));
|
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001001,"C"));
|
||||||
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"B"));
|
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001002,"B"));
|
||||||
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C"));
|
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001001,"C"));
|
||||||
currentTeamSettings[0].teamIdList.Add( new CharacterView(1001002,"A"));
|
currentTeamSettings[1].teamIdList.Add( new CharacterView(1001002,"A"));
|
||||||
currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"A"));
|
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001002,"A"));
|
||||||
|
|
||||||
|
currentTeamSettings.Add(2,new TeamSetting(new List<CharacterView>(),-1));
|
||||||
|
currentTeamSettings.Add(3,new TeamSetting(new List<CharacterView>(),-1));
|
||||||
|
|
||||||
|
|
||||||
Debug.Log("testTeamSetting ready");
|
Debug.Log("testTeamSetting ready");
|
||||||
@@ -69,6 +77,15 @@ public class TeamManager : MonoBehaviour
|
|||||||
public void openTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(true);
|
public void openTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(true);
|
||||||
public void closeTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(false);
|
public void closeTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(false);
|
||||||
|
|
||||||
|
public void setCurrentSelectedTeam(int index)
|
||||||
|
{
|
||||||
|
if (index > 3 || index < 0)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("所选队伍预设索引超出范围");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentSelectedTeam = index;
|
||||||
|
}
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
// if(teamSettingPanelInstance == null)
|
// if(teamSettingPanelInstance == null)
|
||||||
@@ -102,15 +119,26 @@ public class TeamManager : MonoBehaviour
|
|||||||
{
|
{
|
||||||
if (characterIndex != currentSelectedCharacter)
|
if (characterIndex != currentSelectedCharacter)
|
||||||
{
|
{
|
||||||
|
Debug.Log($"修改选中对象从{currentSelectedCharacter}到{characterIndex}");
|
||||||
currentSelectedCharacter = characterIndex;
|
currentSelectedCharacter = characterIndex;
|
||||||
OnSelectedCharacterChanged?.Invoke(); // 触发事件
|
OnSelectedCharacterChanged?.Invoke(); // 触发事件
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCurrentSelectedTeamSetting(int teamIndex)
|
||||||
|
{
|
||||||
|
if(teamIndex != currentSelectedTeam)
|
||||||
|
{
|
||||||
|
Debug.Log($"修改选中队伍预设从{currentSelectedTeam}到{teamIndex}");
|
||||||
|
currentSelectedTeam = teamIndex;
|
||||||
|
OnSelectedTeamChanged?.Invoke(); // 触发事件
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 交换指定索引中的两个队伍中元素的位置
|
/// 交换指定索引中的两个队伍中元素的位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="firstIndex"></param>
|
/// <param name="firstIndex">当前元素</param>
|
||||||
/// <param name="secondIndex"></param>
|
/// <param name="secondIndex">目标元素位置</param>
|
||||||
public void swapTeamElements(int firstIndex, int secondIndex)
|
public void swapTeamElements(int firstIndex, int secondIndex)
|
||||||
{
|
{
|
||||||
List<CharacterView> newCurrentTeam = getCurrentSelectedTeam().teamIdList;
|
List<CharacterView> newCurrentTeam = getCurrentSelectedTeam().teamIdList;
|
||||||
@@ -118,12 +146,15 @@ public class TeamManager : MonoBehaviour
|
|||||||
newCurrentTeam[firstIndex] = newCurrentTeam[secondIndex];
|
newCurrentTeam[firstIndex] = newCurrentTeam[secondIndex];
|
||||||
newCurrentTeam[secondIndex] = temp;
|
newCurrentTeam[secondIndex] = temp;
|
||||||
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
|
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
|
||||||
|
teamSettingPanelInstance.updateTeamSettingElements();
|
||||||
|
setCurrentSelectedCharacterInTeam(secondIndex);
|
||||||
|
Debug.Log($"swapTeamElements done,当前选中的为{getCurrentSelectedTeam().teamIdList[currentSelectedCharacter].characterId},开始位置是{firstIndex},目标位置是{secondIndex},现在{currentSelectedCharacter}");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
public void setTeamLeader(int characterIndex)
|
||||||
void Update()
|
|
||||||
{
|
{
|
||||||
|
getCurrentSelectedTeam().LeaderId = SelectableCharacterList[characterIndex].characterId;
|
||||||
|
teamSettingPanelInstance.updateTeamSettingElements();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class CharacterView
|
|||||||
this.characterId = characterId;
|
this.characterId = characterId;
|
||||||
this.currentBoundaryLevel = currentBoundaryLevel;
|
this.currentBoundaryLevel = currentBoundaryLevel;
|
||||||
}
|
}
|
||||||
|
//todo:回头加一个轨道颜色对应
|
||||||
public int characterId{get; set;}
|
public int characterId{get; set;}
|
||||||
public string currentBoundaryLevel{get; set;}
|
public string currentBoundaryLevel{get; set;}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,5 +65,11 @@ public class teamCharacterView : MonoBehaviour
|
|||||||
TeamManager.Instance.swapTeamElements(this.listIndex, this.listIndex - 1);
|
TeamManager.Instance.swapTeamElements(this.listIndex, this.listIndex - 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public void setLeader()
|
||||||
|
{
|
||||||
|
TeamManager.Instance.setTeamLeader(this.listIndex);
|
||||||
|
isLeader.SetActive(true);
|
||||||
|
notLeader.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
public GameObject[] teamElementsObj;
|
public GameObject[] teamElementsObj;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 编队显示上层切换编队预设按钮
|
||||||
|
/// </summary>
|
||||||
|
[SerializeField] public TeamIndexSetterView[] teamSettingButtonStatusObj;
|
||||||
|
/// <summary>
|
||||||
/// team用角色数据库总表
|
/// team用角色数据库总表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
@@ -58,6 +62,9 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
if(teamManager!=null)
|
if(teamManager!=null)
|
||||||
{
|
{
|
||||||
teamManager.OnSelectedCharacterChanged += updateTeamCharacterSelectedStatus;
|
teamManager.OnSelectedCharacterChanged += updateTeamCharacterSelectedStatus;
|
||||||
|
|
||||||
|
teamManager.OnSelectedTeamChanged += updateTeamSettingSelectedStatus;
|
||||||
|
teamManager.OnSelectedTeamChanged += updateTeamSettingElements;
|
||||||
}
|
}
|
||||||
updateTeamSettingElements();
|
updateTeamSettingElements();
|
||||||
updateSelectableCharacterViewList();
|
updateSelectableCharacterViewList();
|
||||||
@@ -69,48 +76,20 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
if (teamManager != null)
|
if (teamManager != null)
|
||||||
{
|
{
|
||||||
teamManager.OnSelectedCharacterChanged -= updateTeamCharacterSelectedStatus;
|
teamManager.OnSelectedCharacterChanged -= updateTeamCharacterSelectedStatus;
|
||||||
|
|
||||||
|
teamManager.OnSelectedTeamChanged -= updateTeamSettingSelectedStatus;
|
||||||
|
teamManager.OnSelectedTeamChanged -= updateTeamSettingElements;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// public void openTeamSettingPanel()
|
/// <summary>
|
||||||
// {
|
/// 切换预设编队
|
||||||
// //根据获取的队伍信息处理ui组件
|
/// </summary>
|
||||||
// //可在此补充ui动画信息
|
/// <param name="index"></param>
|
||||||
// StartCoroutine(UpdateTeamSettingAfterOneFrame());
|
public void updateSelectedTeam(int index)
|
||||||
// // updateTeamSettingElements();
|
|
||||||
// StartCoroutine(UpdateSelectableCharacterAfterOneFrame());
|
|
||||||
// teamSettingPanelObj.SetActive(true);
|
|
||||||
// // getSelectableCharacterList();
|
|
||||||
// }
|
|
||||||
// public void closeTeamSettingPanel()
|
|
||||||
// {
|
|
||||||
// teamSettingPanelObj.SetActive(false);
|
|
||||||
// }
|
|
||||||
private IEnumerator UpdateTeamSettingAfterOneFrame()
|
|
||||||
{
|
{
|
||||||
yield return null;
|
teamManager.setCurrentSelectedTeam(index);
|
||||||
|
|
||||||
updateTeamSettingElements();
|
updateTeamSettingElements();
|
||||||
foreach (var obj in teamElementsObj)
|
|
||||||
{
|
|
||||||
if (obj != null)
|
|
||||||
{
|
|
||||||
var t = obj.GetComponent<teamCharacterView>();
|
|
||||||
if (t != null && t.charcterImg != null)
|
|
||||||
{
|
|
||||||
LayoutRebuilder.ForceRebuildLayoutImmediate(t.charcterImg.rectTransform);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
private IEnumerator UpdateSelectableCharacterAfterOneFrame()
|
|
||||||
{
|
|
||||||
yield return null;
|
|
||||||
|
|
||||||
updateSelectableCharacterViewList();
|
|
||||||
RectTransform rt = teamCharacterViewContent.GetComponent<RectTransform>();
|
|
||||||
LayoutRebuilder.ForceRebuildLayoutImmediate(rt);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TeamCharacterDataInfo getCharacterViewInfo(int characterID)
|
public TeamCharacterDataInfo getCharacterViewInfo(int characterID)
|
||||||
{
|
{
|
||||||
if (teamCharacterList == null)
|
if (teamCharacterList == null)
|
||||||
@@ -152,32 +131,76 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 把队列恢复到空视图状态
|
||||||
|
/// </summary>
|
||||||
|
public void clearTeamSettingElements()
|
||||||
|
{
|
||||||
|
foreach (GameObject gameObject in teamElementsObj)
|
||||||
|
{
|
||||||
|
teamCharacterView t = gameObject.GetComponent<teamCharacterView>();
|
||||||
|
if (t != null)
|
||||||
|
{
|
||||||
|
t.characterID = -1;
|
||||||
|
t.charcterImg.sprite = null;
|
||||||
|
t.charcterImg.color=new Color(t.charcterImg.color.r,t.charcterImg.color.g,t.charcterImg.color.b,0f);
|
||||||
|
t.levelIcon.sprite = null;
|
||||||
|
t.levelIcon.color=new Color(t.levelIcon.color.r,t.levelIcon.color.g,t.levelIcon.color.b,0f);
|
||||||
|
t.skillName.text="";
|
||||||
|
t.isLeader.SetActive(false);
|
||||||
|
t.notLeader.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public void updateTeamSettingElements()
|
public void updateTeamSettingElements()
|
||||||
{
|
{
|
||||||
TeamSetting currentSelectedTeam = teamManager.getCurrentSelectedTeam();
|
TeamSetting currentSelectedTeam = teamManager.getCurrentSelectedTeam();
|
||||||
List<CharacterView> currentTeam = currentSelectedTeam.teamIdList;
|
List<CharacterView> currentTeam = currentSelectedTeam.teamIdList;
|
||||||
|
// if(currentTeam==null||currentTeam.Count==0)
|
||||||
|
// {
|
||||||
|
// clearTeamSettingElements();
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
clearTeamSettingElements();
|
||||||
for (int i = 0; i < teamElementsObj.Length && i < currentTeam.Count; i++)
|
for (int i = 0; i < teamElementsObj.Length && i < currentTeam.Count; i++)
|
||||||
{
|
{
|
||||||
if(teamElementsObj[i]!=null && currentTeam[i]!=null)
|
if(teamElementsObj[i]!=null && currentTeam[i]!=null)
|
||||||
{
|
{
|
||||||
|
//Debug.Log($"当前元素为第{i},当前角色为{currentTeam[i].characterId}");
|
||||||
teamCharacterView t = teamElementsObj[i].GetComponent<teamCharacterView>();
|
teamCharacterView t = teamElementsObj[i].GetComponent<teamCharacterView>();
|
||||||
if(t!=null)
|
if(t!=null)
|
||||||
{
|
{
|
||||||
t.characterID= currentTeam[i].characterId;
|
t.characterID= currentTeam[i].characterId;
|
||||||
TeamCharacterDataInfo tcdi = getCharacterViewInfo(t.characterID);
|
TeamCharacterDataInfo tcdi = getCharacterViewInfo(t.characterID);
|
||||||
|
if (tcdi != null)
|
||||||
|
{
|
||||||
|
t.charcterImg.sprite = tcdi.CharacterTeamSprite;
|
||||||
|
t.charcterImg.color=new Color(t.charcterImg.color.r,t.charcterImg.color.g,t.charcterImg.color.b,255f);
|
||||||
|
|
||||||
t.charcterImg.sprite = tcdi.CharacterTeamSprite;
|
t.levelIcon.sprite = getLevelSprite(currentTeam[i].currentBoundaryLevel);
|
||||||
t.charcterImg.color=new Color(t.charcterImg.color.r,t.charcterImg.color.g,t.charcterImg.color.b,255f);
|
t.levelIcon.color=new Color(t.levelIcon.color.r,t.levelIcon.color.g,t.levelIcon.color.b,255f);
|
||||||
|
t.skillName.text = tcdi.CharacterSkillName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t.charcterImg.sprite = null;
|
||||||
|
t.charcterImg.color=new Color(t.charcterImg.color.r,t.charcterImg.color.g,t.charcterImg.color.b,0f);
|
||||||
|
t.levelIcon.sprite = null;
|
||||||
|
t.levelIcon.color=new Color(t.levelIcon.color.r,t.levelIcon.color.g,t.levelIcon.color.b,0f);
|
||||||
|
t.skillName.text="";
|
||||||
|
}
|
||||||
|
|
||||||
t.levelIcon.sprite = getLevelSprite(currentTeam[i].currentBoundaryLevel);
|
|
||||||
t.levelIcon.color=new Color(t.levelIcon.color.r,t.levelIcon.color.g,t.levelIcon.color.b,255f);
|
|
||||||
if(currentSelectedTeam.LeaderId==currentTeam[i].characterId)
|
if(currentSelectedTeam.LeaderId==currentTeam[i].characterId)
|
||||||
{
|
{
|
||||||
|
Debug.Log($"当前队长为{currentTeam[i].characterId} {currentTeam[i].currentBoundaryLevel},存档信息为{currentSelectedTeam.LeaderId}");
|
||||||
t.isLeader.SetActive(true);
|
t.isLeader.SetActive(true);
|
||||||
t.notLeader.SetActive(false);
|
t.notLeader.SetActive(false);
|
||||||
}
|
}
|
||||||
t.skillName.text = tcdi.CharacterSkillName;
|
else
|
||||||
|
{
|
||||||
|
t.isLeader.SetActive(false);
|
||||||
|
t.notLeader.SetActive(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,17 +228,6 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
ccv.occupationIcon.sprite = tcdi.CharacterRoleSprite;
|
ccv.occupationIcon.sprite = tcdi.CharacterRoleSprite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 将当前角色向下交换位置
|
|
||||||
/// </summary>
|
|
||||||
public void downChangeCharcterIndex()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public void upChangeCharcterIndex()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用于保证team内对象的选中状态一致
|
/// 用于保证team内对象的选中状态一致
|
||||||
@@ -223,7 +235,7 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
public void updateTeamCharacterSelectedStatus()
|
public void updateTeamCharacterSelectedStatus()
|
||||||
{
|
{
|
||||||
int currentSelectedCharacter = teamManager.currentSelectedCharacter;
|
int currentSelectedCharacter = teamManager.currentSelectedCharacter;
|
||||||
Debug.Log(currentSelectedCharacter+" "+$"{teamElementsObj.Length}");
|
Debug.Log($"当前选择为{currentSelectedCharacter}");
|
||||||
for (int i = 0; i < teamElementsObj.Length; i++)
|
for (int i = 0; i < teamElementsObj.Length; i++)
|
||||||
{
|
{
|
||||||
if (i != currentSelectedCharacter)
|
if (i != currentSelectedCharacter)
|
||||||
@@ -234,6 +246,49 @@ public class teamSettingPanel : MonoBehaviour
|
|||||||
teamCharacterView.SetUnSelected();
|
teamCharacterView.SetUnSelected();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
teamCharacterView teamCharacterView = teamElementsObj[i].GetComponent<teamCharacterView>();
|
||||||
|
teamCharacterView.SetSelected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 右切换编队信息
|
||||||
|
/// </summary>
|
||||||
|
public void rightChangeTeamSettingIndex()
|
||||||
|
{
|
||||||
|
int currentSelectedTeam = teamManager.currentSelectedTeam;
|
||||||
|
if (currentSelectedTeam < 4)
|
||||||
|
{
|
||||||
|
teamManager.setCurrentSelectedTeamSetting(currentSelectedTeam + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 左切换编队信息
|
||||||
|
/// </summary>
|
||||||
|
public void leftChangeTeamSettingIndex()
|
||||||
|
{
|
||||||
|
int currentSelectedTeam = teamManager.currentSelectedTeam;
|
||||||
|
if(currentSelectedTeam>0)
|
||||||
|
{
|
||||||
|
teamManager.setCurrentSelectedTeamSetting(currentSelectedTeam - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void updateTeamSettingSelectedStatus()
|
||||||
|
{
|
||||||
|
int currentSelectedTeam = teamManager.currentSelectedTeam;
|
||||||
|
for(int i= 0;i<teamSettingButtonStatusObj.Length;i++)
|
||||||
|
{
|
||||||
|
if(i!=currentSelectedTeam)
|
||||||
|
{
|
||||||
|
teamSettingButtonStatusObj[i].setUnSelectedTeamSetting();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
teamSettingButtonStatusObj[i].setTeamSettingSelect();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user