using UnityEngine; using System.Collections; using UnityEngine.UI; using GCGame.Table; using Games.Mission; using System.Collections.Generic; //可以挑战的对手信息 public class RoleInfo { public string name; public int carrer; public int combat; public int rank; public int level; public ulong guid; public RoleInfo(string _Name, int _Carrer, int _Combat, int _Rank, int _Level, ulong _Guid) { name = _Name; carrer = _Carrer; combat = _Combat; rank = _Rank; level = _Level; guid = _Guid; } } public class FactionChallengeCtr : MonoBehaviour { public enum Toggle_Type { Reward = 0, SCORESHOP, RANK, FIGHTRECORD, } #region 拖拽UI控件 //排名 战斗力 public Text MyRankText; public Text MyFightNumberText; //public Text ThirteenRankText; //public Text NighteenRankText; //public Text TwentyThreeRankText; //剩余挑战次数 时间 public Text TodayRemainChallengeTimes; public Text NextChallengeTimes; //金钱消耗 拥有 加钱 public Text BeginCostMoneyText; //public Text CurrentOwnMoneyText; //public Button AddMoneyButton; public GameObject cdTimePanel; //重置 快速开始 换一批 public Button ResetChallengeButtton; public Text ResetAndQuickStartText; public Button ChnageOtherButton; //切换界面Toggle // public List<GameObject> _MarkIconList; //对手信息item、父节点 public GameObject RoleInfoItem; public Transform RoleInfoItem_Parent; //对手信息展示 public RoleInfoItem[] roleInfoItem; private const int todayTotalChallengTimes = 5;//每天可以免费挑战5次 //Model //public UICameraTexture _UICameraTexture; #endregion private void OnEnable() { GetActivityBase(); //请求面板信息协议 AskChallgeneInfo(); //请求可以挑战的挑战者信息协议(跟换一批的协议一样) OnChangeOtherBtnClick(); SetCurFactionValue(); } public Text _FactionValue; public void SetCurFactionValue() { _FactionValue.text = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType( MONEYTYPE.MONEYTYPE_USERCHALLENGE).ToString(); } private Tab_ActivityBase activityBase = null; public void GetActivityBase() { activityBase = ActivityDataManager.Instance.GetActivityTabByServerType(ActivityDataManager.Activity_Type.ACTIVITY_FACTIONCHALLENGE); } public static FactionChallengeCtr Instace; private void Awake() { Instace = this; GUIData.delMoneyChanged += RefreshOwnMoneyValue; GetMaxCanBuyCount(); //获取最大购买次数 } private void OnDestroy() { Instace = null; GUIData.delMoneyChanged -= RefreshOwnMoneyValue; } void AskChallgeneInfo() //请求当前挑战信息 { CG_REQ_USER_CHALLENGE_INFO ask = (CG_REQ_USER_CHALLENGE_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_USER_CHALLENGE_INFO); ask.SetFlag(1); ask.SendPacket(); } public void OnRuleBtnClick() { MessageHelpLogic.ShowHelpMessage(24); } public List<GameObject> _MarkIconList; public void OnToggleClick(int index) { for(int _Index = 0; _Index < _MarkIconList.Count; _Index++) { _MarkIconList[_Index].SetActive(index == _Index); } switch (index) { case (int)Toggle_Type.Reward: //奖励 UIManager.ShowUI(UIInfo.FactionRankRewPanel, delegate(bool bSucess, object param) { if(bSucess) { FactionRankRewPanel.Instance.InitRank(m_TotalRank); } }); break; case (int)Toggle_Type.RANK: //打开职业排行版面板 UIManager.ShowUI(UIInfo.FactionRankPanel); break; case (int)Toggle_Type.FIGHTRECORD: //打开对战记录面板 UIManager.ShowUI(UIInfo.BattleInfoRecordPanel, delegate (bool bSucess, object param) { if (bSucess) { CG_REQ_USER_CHALLENGE_LOG ask = (CG_REQ_USER_CHALLENGE_LOG)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_USER_CHALLENGE_LOG); ask.SetBteFlag(1); ask.SendPacket(); } }); break; //case (int)Toggle_Type.CHANGESKILL: //打开更换技能面板 // UIManager.ShowUI(UIInfo.FactionSkillChangeRoot); // break; case (int)Toggle_Type.SCORESHOP: //打开积分商店面板 { YuanBaoShopLogic.OpenShopForJiFenItem(4, -1); } break; } } public void OnCloseBtnClick() { UIManager.CloseUI(UIInfo.SportsPanel); } //增加金钱btn public void OnAddMoneyItemClick() { JudgeMoneyLogic.ShowSwitchMoneyPanel(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, true); } //重置次数Btn public void OnQuickStartOrAddTimesClick() { if (isInCDTime) { MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{26003}", curCostValue), null, OnOkBtnClick, OnCancelBtnClick); }else { MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{26004}", curCostValue), null, OnOkBtnClick, OnCancelBtnClick); } } void OnOkBtnClick() { //判断当前金钱是否满足 if(JudgeMoneyLogic.IsMoneyEnough(MONEYTYPE.MONEYTYPE_YUANBAO_BIND, int.Parse(BeginCostMoneyText.text))) { //增加挑战次数 重置挑战时间 服务器会自行判断 CG_USER_CHALLENGE_RESET_CHALLENGE_NUM packet = (CG_USER_CHALLENGE_RESET_CHALLENGE_NUM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_USER_CHALLENGE_RESET_CHALLENGE_NUM); packet.SetFlag(1); packet.SendPacket(); } } void OnCancelBtnClick() { UIManager.CloseUI(UIInfo.MessageBox); } //换一批 public void OnChangeOtherBtnClick() { CG_USER_CHALLENGE_UPDATE_USER packet = (CG_USER_CHALLENGE_UPDATE_USER)PacketDistributed.CreatePacket(MessageID.PACKET_CG_USER_CHALLENGE_UPDATE_USER); packet.SetFlag(1); packet.SendPacket(); } public int m_TotalRank = 0; private int resetNum = 0; public int remainTimes = 0; //剩余挑战次数 public bool isInCDTime = false; private bool canClick = true; // 是否可以点击购买 重置Item private int buyTimes = 0; //已经购买的次数 //初始化挑战面板 public List<int> curSkillIdx = new List<int>(); public void InitMyChallengePanel(GC_RET_USER_CHALLENGE_RANK_INFO packet) { isInCDTime = false; buyTimes = packet.BuyChallengeNum; //记录当前服务器发过来的ID curSkillIdx.Clear(); for (int index = 0; index < packet.skillListCount; index++) { curSkillIdx.Add(packet.GetSkillList(index)); } //当前人物排名 if (packet.CurRank != -1) { MyRankText.text = (packet.CurRank + 1).ToString(); m_TotalRank = packet.CurRank + 1; //记录总榜排名 if(FactionRankRewPanel.Instance) FactionRankRewPanel.Instance.InitRank(m_TotalRank); } else { MyRankText.text = "0"; } MyFightNumberText.text = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.CombatValue.ToString(); //整点排名 //if (packet.OneRank != -1) //{ // ThirteenRankText.text = (packet.OneRank + 1).ToString(); //} //if(packet.TwoRank != -1) //{ // NighteenRankText.text = (packet.TwoRank + 1).ToString(); //} //if(packet.ThreddRank != -1) //{ // TwentyThreeRankText.text = (packet.ThreddRank + 1).ToString(); //} //剩余挑战次数 从活动中取0); if (activityBase != null) { remainTimes = packet.BuyChallengeNum + todayTotalChallengTimes - packet.ChallengeNum; } resetNum = packet.Resetnum; TodayRemainChallengeTimes.text = remainTimes.ToString() + "/" + todayTotalChallengTimes; if(packet.LeftTm > 0) { isInCDTime = true; }else { isInCDTime = false; } if (isInCDTime) { //计算时间 CountCanChallengeTime(packet.LeftTm); if (!cdTimePanel.activeInHierarchy) { cdTimePanel.SetActive(true); } } else { if(cdTimePanel.activeInHierarchy) { cdTimePanel.SetActive(false); } } //设置当前的快速开始消耗金钱 当前拥有金钱 RefreshMyOwnMoneyAndCostMoney(); SetBeginFightButton(); //设置增加次数 快速开始 } private float totalCountTime = 0.0f; public int remainTime = 0; void CountCanChallengeTime(int endTime) { NextChallengeTimes.text = endTime.ToString(); remainTime = endTime; isInCDTime = true; } private void Update() { if(isInCDTime && remainTime > 0) { totalCountTime += Time.deltaTime; if(totalCountTime >= 1.0f) { --remainTime; if (remainTime > 0) { NextChallengeTimes.text = remainTime.ToString(); } totalCountTime = (1 - totalCountTime) + Time.deltaTime; if(remainTime <= 0) { isInCDTime = false; NextChallengeTimes.text = "0"; if(cdTimePanel.gameObject.activeInHierarchy) { cdTimePanel.gameObject.SetActive(false); } SetBeginFightButton(); //设置增加次数 快速开始 } } } else { isInCDTime = false; if (cdTimePanel.gameObject.activeInHierarchy) { cdTimePanel.gameObject.SetActive(false); } } } public void SetCanChallengeRoleInfo(GC_RET_USER_CHALLENGE_USER_INFO packet) //设置可以挑战的人物信息 { for(int index = 0; index < packet.usersCount; index++) { //初始化Item信息 RoleInfo roleInfo = new RoleInfo(packet.GetUsers(index).Name, packet.GetUsers(index).Career, packet.GetUsers(index).Combat, packet.GetUsers(index).Rank, packet.GetUsers(index).Level, packet.GetUsers(index).Guid); roleInfoItem[index].gameObject.SetActive(true); roleInfoItem[index].InitMyRoleInfoItem(roleInfo, index); } //隐藏多余的显示 for(int index = packet.usersCount; index < 3; index++) { roleInfoItem[index].gameObject.SetActive(false); } //是否显示叠影背景 //HideInHideBgs.SetActive(packet.usersCount < 3 ? false : true); } private int maxBuyCount = 0; //最大购买次数 public void GetMaxCanBuyCount() { var tab = TableManager.GetUserChallengeBuyNum(); maxBuyCount = tab.Count; } private int curCostValue = 0; //记录当前需要的消耗 void RefreshMyOwnMoneyAndCostMoney() { Tab_UserChallengeBuyNum buyNum = null; if (resetNum >= maxBuyCount) { resetNum = maxBuyCount; buyNum = TableManager.GetUserChallengeBuyNumByID(resetNum, 0); } else { //当前需要消耗的金钱 buyNum = TableManager.GetUserChallengeBuyNumByID(resetNum + 1, 0); } if(buyNum != null) { BeginCostMoneyText.text = buyNum.Num.ToString(); curCostValue = buyNum.Num; } //当前拥有的金子 //CurrentOwnMoneyText.text = GameManager.gameManager.PlayerDataPool.GetLongPropty((int)CONSUM_TYPE.MONEY, (int)MONEYTYPE.MONEYTYPE_YUANBAO_BIND).ToString(); } public void RefreshOwnMoneyValue() { //当前拥有的金子 //CurrentOwnMoneyText.text = GameManager.gameManager.PlayerDataPool.GetLongPropty((int)CONSUM_TYPE.MONEY, (int)MONEYTYPE.MONEYTYPE_YUANBAO_BIND).ToString(); } //判断剩余的挑战次数 设置挑战Button的状态(CD时间大于0 快速开始 消耗金币 CD时间为0 增加次数) void SetBeginFightButton() { if (!isInCDTime) { ResetAndQuickStartText.text = StrDictionary.GetClientDictionaryString("#{42659}");// "增加次数"; cdTimePanel.gameObject.SetActive(false); if(NextChallengeTimes.gameObject.activeInHierarchy) NextChallengeTimes.gameObject.SetActive(false); } else { ResetChallengeButtton.interactable = true; ResetAndQuickStartText.text = StrDictionary.GetClientDictionaryString("#{42660}");// "快速开始"; cdTimePanel.gameObject.SetActive(true); } } }