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

729 lines
24 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;
using Games.GlobeDefine;
using Module.Log;
public class TestingCopyBase : MonoBehaviour {
public int _FubenId; // 副本ID/场景ID
public GameObject _SingleChallengeBtn; // 单人挑战按钮
public GameObject _TeamChallengeBtn; // 团队挑战按钮
public GameObject _SweepBtn; // 一键扫荡按钮
public Text _RuleText; // 规则描述
public UIImgText _BestPassedLevel; // 最高通关层数
public GameObject _RemainTimeObj; // 剩余挑战显示
public UIImgText _RemainChallengeTimesText; // 剩余挑战次数(数字)
public GameObject _MaxPerfectLevelObj; // 最高完美通关次数
public UIImgText _MaxPerfectLevel; // 最高完美通关次数(数字)
public UIContainerBase _RewContainer; // 奖品列表
public UICameraTexture _ModelCamera; // 相机渲染贴图
public List<GameObject> _DiffcultyBtnList; // 难度按钮
protected int _RemainChallengeTimes; // 剩余挑战次数
protected int _CurSelectedDiffcultyType = (int)TestingCopyDiffcultyType.Simple; //默认解锁难度
public enum TestingCopyDiffcultyType
{
Simple = 0,
Normal = 1,
Hard = 2,
Hell = 3,
}
private enum ChallengeType
{
Single = 0,
Team,
Sweep,
}
private void Awake()
{
if(getOnceRewardBtn != null)
{
getOnceRewardBtn.onClick.AddListener(OnOnceAwardBtnClick);
getBtnImg = getOnceRewardBtn.GetComponent<Image>();
}
_TestingCopyTab = TableManager.GetTestingCopyByID(_FubenId, 0);
if (_TestingCopyTab == null)
{
LogModule.ErrorLog("Can't find id in testingCopy, id is : " + _FubenId);
return;
}
}
public void OnEnable()
{
AskForInfo();
SetChallengeBtn();
}
private void Start()
{
InitTestingCopyBaseInfoById();
}
protected Tab_TestingCopy _TestingCopyTab = null;
public virtual void InitTestingCopyBaseInfoById()
{
_CurSelectedDiffcultyType = (int)TestingCopyDiffcultyType.Simple;
SetRule();
HideAllDiffcultyBtn();
InitRewContainer();
SetChallengeBtn();
}
protected List<TestingRewardItemInfo> rewItemList;
public virtual void InitRewContainer()
{
Tab_CopySceneReward copySceneRew = TableManager.GetCopySceneRewardByID(_TestingCopyTab.RewardId, 0);
if(copySceneRew == null)
{
return;
}
rewItemList = new List<TestingRewardItemInfo>();
for (int index = 0; index < copySceneRew.getRewardCountCount(); index++)
{
rewItemList.Add(new TestingRewardItemInfo(copySceneRew.GetRewardItemIDbyIndex(index), copySceneRew.GetRewardCountbyIndex(index)));
}
_RewContainer.InitContentItem(rewItemList);
}
public void SetChallengeBtn()
{
_SingleChallengeBtn.SetActive(_TestingCopyTab.CanSingleChallenge == 1);
_TeamChallengeBtn.SetActive(_TestingCopyTab.CanTeamChallenge == 1);
Tab_NewCopyBase newCopybase = TableManager.GetNewCopyBaseByID(_FubenId, 0);
if(newCopybase != null)
{
_SweepBtn.SetActive(false);
for (int index = 0; index < newCopybase.getFastSweepConditionCount(); index++)
{
if(!newCopybase.GetFastSweepConditionbyIndex(index).Equals("-1"))
{
_SweepBtn.SetActive(true);
ShowSweepLimit();
}
}
}
}
public void HideAllDiffcultyBtn()
{
for(int index = 0; index < _DiffcultyBtnList.Count; index++)
{
if(_DiffcultyBtnList[index].activeInHierarchy)
_DiffcultyBtnList[index].SetActive(false);
}
}
public void SetRule()
{
if (_RuleText != null)
{
_RuleText.text = _TestingCopyTab.TestingRule;
}
}
#region
public void AskForInfo()
{
ReqTestingCopyInfo req = new ReqTestingCopyInfo();
req._FubenId = _FubenId;
req.SendMsg();
}
#endregion
#region
// 是否等级
private bool IsLevelEnough()
{
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level < _TestingCopyTab.UnlockLevel)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{7245}"));
return false;
}
return true;
}
// 是否处于不可退出的场景
private bool IsInSpecialScene()
{
Tab_SceneClass sceneClass = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0);
if (sceneClass == null)
{
return true;
}
if (sceneClass.CanEnterSpecialActivity != 1)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{51001}"));
return true;
}
return false;
}
// 是否在执行不可退出的任务
private bool IsDoingSpecialMission()
{
foreach (var mission in GameManager.gameManager.MissionManager.MissionList.m_aMission)
{
Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(mission.Value.m_nMissionID, 0);
if (missionBase != null)
{
if (missionBase.MissionType == (int)Games.Mission.MISSIONTYPE.MISSION_GUILDPAOSHANG)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{51002}"));
return true;
}
}
}
return false;
}
#endregion
// 是否剩余挑战次数充足
private bool IsHaveChallengeTimes()
{
if(_RemainChallengeTimes == 0)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{51000}"));
return false;
}
return true;
}
public void OnSingleBtnClcik()
{
_ChallengeType = (int)ChallengeType.Single;
if (!IsLevelEnough())
{
return;
}
if(!IsHaveChallengeTimes())
{
return;
}
if (!GameManager.gameManager.PlayerDataPool.IsHaveTeam())
{
if (IsInSpecialScene() || IsDoingSpecialMission())
{
return;
}else
{
ReqEnterCopy();
}
}
else
{
if (IsInSpecialScene() || IsDoingSpecialMission())
{
return;
}
else
{
////脱离队伍
//MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{51800}"), "", delegate () {
// ReqEnterCopy();
//}, delegate () {
// UIManager.CloseUI(UIInfo.MessageBox);
//});
// 现改为不需要请求脱离队伍
ReqEnterCopy();
}
}
}
private int _ChallengeType;
public void ReqEnterCopy()
{
CG_REQ_ENTER_COPY req = (CG_REQ_ENTER_COPY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY);
req.SetCopyid(_FubenId);
req.SetDeffcultyType(_CurSelectedDiffcultyType);
req.SetChallengeType(_ChallengeType);
req.SendPacket();
if(_ChallengeType != (int)ChallengeType.Sweep)
UIManager.CloseUI(UIInfo.CopyScenePanelCtr);
}
public void OnTeamBtnClick()
{
_ChallengeType = (int)ChallengeType.Team;
if (IsInSpecialScene() || !IsLevelEnough() || IsDoingSpecialMission() || !IsHaveChallengeTimes())
{
return;
}
//没有组队
if (!GameManager.gameManager.PlayerDataPool.IsHaveTeam())
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{51801}"), "", delegate () {
if (false == GameManager.gameManager.PlayerDataPool.IsHaveTeam() &&
null != Singleton<ObjManager>.GetInstance().MainPlayer)
{
UIManager.CloseUI(UIInfo.MessageBox);
UIManager.ShowUI(UIInfo.TeamCreateRoot, delegate (bool bSuccess, object param)
{
if (bSuccess)
{
Hashtable hash = new Hashtable();
hash["index"] = _TestingCopyTab.TargetId;
Games.Events.EventDispatcher.Instance.SendMessage(Games.Events.EventId.SELECTTEAMCREATEWNDITEM, hash);
}
});
}
}, delegate () {
UIManager.CloseUI(UIInfo.MessageBox);
});
return;
}
//不是队长
if (!GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain())
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5795}"));
return;
}
//人数不足
if(GameManager.gameManager.PlayerDataPool.TeamInfo.GetTeamMemberCount() < _TestingCopyTab.TeamChellangeNeedMembers)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{51004}", _TestingCopyTab.TeamChellangeNeedMembers));
return;
}
ReqEnterCopy();
}
private bool CanSweep()
{
Tab_NewCopyBase newCopyBase = TableManager.GetNewCopyBaseByID(_FubenId, 0);
if (newCopyBase == null)
{
LogModule.ErrorLog("newCopyBase is null, id : " + _FubenId);
return false;
}
if(!IsHaveChallengeTimes())
{
return false;
}
for(int index = 0; index < newCopyBase.getFastSweepPramCount(); index++)
{
if(!newCopyBase.GetFastSweepConditionbyIndex(index).Equals("-1"))
{
switch(newCopyBase.GetFastSweepConditionbyIndex(index))
{
case 1:
{
if(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level < newCopyBase.GetFastSweepPrambyIndex(index))
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{48105}", newCopyBase.GetFastSweepPrambyIndex(index)));
return false;
}
}
break;
case 2:
{
if(GameManager.gameManager.PlayerDataPool.VipCost< newCopyBase.GetFastSweepPrambyIndex(index))
{
var param = newCopyBase.GetFastSweepPrambyIndex(index);
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44077}", param));
//switch (param)
//{
// case 1:
// GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{48110}"));
// break;
// case 2:
// GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{48111}"));
// break;
// case 3:
// GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{48112}"));
// break;
//}
return false;
}
}
break;
case 3:
{
if (GameManager.gameManager.PlayerDataPool.MonthlyCardDayRemain <= 0)
{
GUIData.AddNotifyData("44057");
return false;
}
}
break;
case 4:
{
if (GlobalData.OpenServerDays < newCopyBase.GetFastSweepPrambyIndex(index))
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{48107}", GlobalData.OpenServerDays - newCopyBase.GetFastSweepPrambyIndex(index)));
return false;
}
}
break;
case 5:
{
if(GlobalData.CreateRoleDays < newCopyBase.GetFastSweepPrambyIndex(index))
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{48107}", GlobalData.OpenServerDays - newCopyBase.GetFastSweepPrambyIndex(index)));
return false;
}
}
break;
}
}
}
return true;
}
public void OnSweepBtnClick()
{
_ChallengeType = (int)ChallengeType.Sweep;
if(!IsLevelEnough())
{
return;
}
if(!IsHaveChallengeTimes())
{
return;
}
if(CanSweep())
{
ReqEnterCopy();
}
}
public List<GameObject> _DiffcultyMarkIcon;
public void ShowCurDiffcultyTypeBestpassedLevel()
{
if (_BestPassedLevel != null)
{
_BestPassedLevel.text = _PacketBestassedLevelList[_CurSelectedDiffcultyType];
}
}
//设置波数 剩余次数 解锁难度
protected List<string> _PacketBestassedLevelList;
protected List<int> _MaxPerfectPassedLevelList = new List<int>();
public virtual void OnPacketRet(RetTestingCopyInfo packet)
{
_PacketBestassedLevelList = new List<string>();
for (int index = 0; index < packet._BestPassedLevelList.Count; index++)
{
_PacketBestassedLevelList.Add(packet._BestPassedLevelList[index]);
}
_MaxPerfectPassedLevelList = packet._MaxPerfectLevelList;
ShowDiffcultyBtns(packet._UnLockDiffcultyLevel);
SetRemainChallengeTimes(packet._RemainTimes);
if (packet._Reward != null)
{
onceRewards = packet._Reward;
}
OnDiffcultyBtnClick(_CurSelectedDiffcultyType);
}
public void SetBestPassedLevel(int bestPassedLevel)
{
if (_BestPassedLevel != null)
{
_BestPassedLevel.text = bestPassedLevel.ToString();
}
}
public void SetRemainChallengeTimes(int _Times)
{
_RemainChallengeTimes = _Times;
if (_Times == -1)
{
_RemainTimeObj.SetActive(false);
}
else
{
_RemainTimeObj.SetActive(true);
if (_RemainChallengeTimesText != null)
{
_RemainChallengeTimesText.text = _Times.ToString();
}
}
}
private int _CurUnLockDiffcultyLevel = 0; //-1默认不显示
public void ShowDiffcultyBtns(int _Diffculty)
{
_CurUnLockDiffcultyLevel = _Diffculty;
if(_Diffculty == -1 || _Diffculty == 0)
{
HideAllDiffcultyBtn();
}
else
{
for (int index = 0; index < _DiffcultyBtnList.Count; index++)
{
_DiffcultyBtnList[index].SetActive(index <= _Diffculty);
}
}
}
public void OnRankBtnClick()
{
UIManager.ShowUI(UIInfo.TestingRankPanel, delegate(bool bSucess, object param) {
if(bSucess)
{
TestingRankPanelCtr.Instance.SetFuBtnId(_FubenId, _CurSelectedDiffcultyType);
}
});
}
#region
private List<CopyOnceReward> onceRewards;
//public TestingRewardItem onceRewardItem;
public Text onceRewardsDesc;
public Button getOnceRewardBtn;
private bool canGet = false;
public Color disableColor;
public Color enableColor;
public GameObject onceRewardPanel;
public Transform _EffectPoint; // 特效挂载点
private Image getBtnImg;
// 显示当前难度的一次性奖励dif 难度
private void ShowOnceAward(int dif)
{
if (onceRewards != null && dif < onceRewards.Count)
{
onceRewardPanel.SetActive(true);
onceRewardsDesc.text = StrDictionary.GetClientDictionaryString("#{6735}", onceRewards[dif]._Layer);
getBtnImg.color = disableColor;
_EffectPoint.gameObject.SetActive(false);
canGet = false;
if (onceRewards[dif]._RewardState == 1)
{
getBtnImg.color = enableColor;
canGet = true;
_EffectPoint.gameObject.SetActive(true);
}
}
else
{
onceRewardPanel.SetActive(false);
}
}
public void OnDiffcultyBtnClick(int _Index)
{
_CurSelectedDiffcultyType = _Index;
for (int index = 0; index < _DiffcultyBtnList.Count; index++)
{
_DiffcultyMarkIcon[index].SetActive(index == _Index);
}
ShowCurDiffcultyTypeBestpassedLevel();
ShowOnceAward(_CurSelectedDiffcultyType);
OnShowMaxPerfectPassLevle();
}
public void OnShowMaxPerfectPassLevle()
{
if(_MaxPerfectLevel != null && _MaxPerfectLevelObj != null)
{
if (_MaxPerfectPassedLevelList.Count > _CurSelectedDiffcultyType)
{
_MaxPerfectLevelObj.SetActive(true);
_MaxPerfectLevel.text = _MaxPerfectPassedLevelList[_CurSelectedDiffcultyType].ToString();
}
else
{
_MaxPerfectLevelObj.SetActive(false);
}
}
else if (_MaxPerfectLevelObj != null)
{
_MaxPerfectLevelObj.SetActive(false);
}
}
public void OnOnceAwardBtnClick()
{
if (onceRewards == null)
{
return;
}
if (canGet == true)
{
ReqGetCopyOnceReward req = new ReqGetCopyOnceReward();
req._FubenId = this._FubenId;
req._Difficult = _CurSelectedDiffcultyType;
req._NodeId = onceRewards[_CurSelectedDiffcultyType]._NodeId;
req.SendMsg();
}
else
{
CopyOnceReward awardItem = onceRewards[_CurSelectedDiffcultyType];
UIManager.ShowUI(UIInfo.TestingCopyOnceAwardTip,
(bool isSuccess, object param) =>
{
CopyOnceReward award = param as CopyOnceReward;
if (isSuccess == true)
{
TestingCopyOnceAwardTipCtr.Instance.Show(award._NodeId, award, getOnceRewardBtn.transform.position);
}
},
awardItem);
}
}
#endregion
#region
public Image fastMoneyImg;
public Text _OneKeySweepConditionDesc;
public void ShowSweepLimit()
{
//快速
Tab_NewCopyBase newCopyBase = TableManager.GetNewCopyBaseByID(_FubenId, 0);
if (newCopyBase == null)
{
LogModule.ErrorLog("ERROR, NewCopyBase id is : " + _FubenId);
return;
}
var fastConditionDesc = "";
var isFastConditionPassed = true;
for (int index = 0; index < newCopyBase.getFastSweepConditionCount(); index++)
{
if (newCopyBase.GetFastSweepConditionbyIndex(index) != -1)
{
var param = newCopyBase.GetFastSweepPrambyIndex(index);
switch (newCopyBase.GetFastSweepConditionbyIndex(index))
{
case 1:
{
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level < param)
{
isFastConditionPassed = false;
fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44070}", param);
continue;
}
}
break;
case 2:
{
if (GameManager.gameManager.PlayerDataPool.VipCost < param)
{
isFastConditionPassed = false;
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44077}", param));
//switch (param)
//{
// case 1:
// fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44062}");
// break;
// case 2:
// fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44063}");
// break;
// case 3:
// fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44063}");
// break;
//}
continue;
}
}
break;
case 3:
{
if (GameManager.gameManager.PlayerDataPool.MonthlyCardDayRemain <= 0)
{
isFastConditionPassed = false;
fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44061}");
continue;
}
}
break;
case 4:
{
if (GlobalData.OpenServerDays < param)
{
isFastConditionPassed = false;
fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44065}", param);
continue;
}
}
break;
case 5:
{
if (GlobalData.CreateRoleDays < param)
{
isFastConditionPassed = false;
fastConditionDesc += StrDictionary.GetClientDictionaryString("#{44066}", param);
continue;
}
}
break;
}
}
}
if (isFastConditionPassed && newCopyBase.FastSweepConsumeType != -1)
{
fastMoneyImg.gameObject.SetActive(true);
_OneKeySweepConditionDesc.gameObject.SetActive(false);
LoadAssetBundle.Instance.SetImageSprite(fastMoneyImg, UICurrencyItem.GetCurrencySprite((MONEYTYPE)newCopyBase.FastSweepConsumeSubType), delegate (bool isSucess, GameObject obj)
{
fastMoneyImg.SetNativeSize();
});
_OneKeySweepConditionDesc.text = newCopyBase.FastSweepConsumeNum.ToString();
}
else
{
fastMoneyImg.gameObject.SetActive(false);
_OneKeySweepConditionDesc.gameObject.SetActive(true);
_OneKeySweepConditionDesc.text = fastConditionDesc;
}
}
public void OnScoreBtn()
{
YuanBaoShopLogic.OpenShopForJiFenItem(11, -1);
}
#endregion
}