using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; using SPacket.SocketInstance; using GCGame.Table; public class RankingPanelCtr : MonoBehaviour { public static RankingPanelCtr Instance; private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } public GameObject RoleInfoGameObject; public Transform ContentParent; public Text CountTimeText; //倒计时显示TEXT public Slider CountTimeSlider; //倒计时ProgressBar public int RemainTime = 0; public bool isStartCountTime = false; public float m_CountTime = 0; private float perQuestionLimitTime = 0.0f; public void SetMyQuestionRemainTime(int remainTime, ImpreialExamPanelCtr.Question_Type type) { //重置Slider 时间 CountTimeText.text = remainTime.ToString(); CountTimeSlider.value = 1; RemainTime = remainTime; isStartCountTime = true; Tab_QuestionOther other = TableManager.GetQuestionOtherByID((int)type, 0); if(other != null) { perQuestionLimitTime = other.LimitTimePer; } } public void CreateMyRoleInfoItem(int count) { for(int index = 0; index < count; index++) { GameObject m_RoleItem = GameObject.Instantiate(RoleInfoGameObject); //设置位置 m_RoleItem.transform.parent = ContentParent; m_RoleItem.transform.localPosition = Vector3.zero; m_RoleItem.transform.localRotation = Quaternion.Euler(Vector3.zero); m_RoleItem.transform.localScale = Vector3.one; } } private void OnEnable() { RankingListRoleInfoItem[] roleInfoItems = GetComponentsInChildren(); for(int index = 0; index < roleInfoItems.Length; index++) { GameObject.Destroy(roleInfoItems[index].gameObject); } } //初始化排行榜显示Item public void InitMyRoleInfoShowItem(List m_RoleInfoList) { if(m_RoleInfoList == null || m_RoleInfoList.Count == 0) { return; } //先排序 m_RoleInfoList.Sort((infoA, infoB)=> { if (infoA.score < infoB.score) { return 1; } else if (infoA.score == infoB.score) { if (infoA.Rankper > infoB.Rankper) { return 1; }else if(infoA.Rankper == infoB.Rankper) { return 0; } else { return -1; } } else { return -1; } }); //存起来 ImperialExamManager.GetInstance().SetMyQuestionRankList(m_RoleInfoList); //判断已经存在的item RankingListRoleInfoItem[] roleInfoItems = GetComponentsInChildren(); //人数不够10人 删除多余的 if (roleInfoItems.Length > m_RoleInfoList.Count && roleInfoItems != null) { for(int index = m_RoleInfoList.Count; index < roleInfoItems.Length; index++) { Destroy(roleInfoItems[index].gameObject); //删除多余的 } } else { //人数增加 CreateMyRoleInfoItem(m_RoleInfoList.Count - roleInfoItems.Length); } roleInfoItems = GetComponentsInChildren(); //增删之后再获取一次 //剩余的就是当前排行榜的人数 进行刷新 for (int role_Index = 0; role_Index < roleInfoItems.Length; role_Index++) { roleInfoItems[role_Index].SetRankingListItem(m_RoleInfoList[role_Index]); //存在的信息重置 } roleInfoItems = null; //滞空 } // Update is called once per frame void Update () { if(isStartCountTime) { if(RemainTime <= 0) { isStartCountTime = false; m_CountTime = 0.0f; return; } m_CountTime += Time.deltaTime; if(m_CountTime >= 1.0f) { RemainTime--; CountTimeSlider.value = (float)RemainTime / perQuestionLimitTime; if (RemainTime <= 0) { //显示答案正确与否 ImpreialExamPanelCtr.Instance.ShowAnswerWrongOrRight(); //启用蒙版 if(!ImpreialExamPanelCtr.Instance.ClickMask.gameObject.activeInHierarchy) ImpreialExamPanelCtr.Instance.ClickMask.gameObject.SetActive(true); } //显示 CountTimeText.text = RemainTime.ToString(); m_CountTime = 1.0f - m_CountTime; } } } }