Files
JJBB/Assets/Project/Script/GUI/FactionChallenge/FactionChallengeCtr.cs
2024-08-23 15:49:34 +08:00

429 lines
13 KiB
C#

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);
}
}
}