Files
JJBB/Assets/Project/Script/LuaScripts/UI/OpenServiceCS/OpenServiceCritDayCS.cs

261 lines
8.8 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using GCGame.Table;
// 开服活动 - 暴击日
public class OpenServiceCritDayCS : MarketingUIBaseCS {
public List<Button> advanceBtns; // 前往进阶按钮,最多两个
public List<Image> advanceTypeImages; // 进阶文字图片,最多两个
public List<Image> buttonAdvanceTypeImages; // 底部进阶文字图片,同上
public UIImgText uiImgText; // 暴击率
public Button CloseBtn; // 关闭按钮
public UIBackRayBehind behindMask; // 背面遮罩
public int beforeActId; // root和页面结合在一个页面显示
// 添加按钮和背面遮罩监听
private void Awake()
{
CloseBtn.onClick.AddListener(Close);
behindMask._BackClick.AddListener(Close);
}
private void OnEnable()
{
AskForMenuID();
}
// 解除按钮和背面遮罩监听
private void OnDestroy()
{
CloseBtn.onClick.RemoveListener(Close);
behindMask._BackClick.RemoveListener(Close);
}
private void OnDisable()
{
if (MarketingActsRoot.Instance() != null)
{
MarketingActsRoot.Instance().ClearShowingWin(_ActID);
MarketingActsRoot.Instance().ClearShowingWin(beforeActId);
}
}
/// <summary>
/// 设置每种暴击类型的:类型图片,按钮文字,按钮点击回调
/// </summary>
/// <param name="types">进阶类型数组</param>
public void SetAdvanceTypeImage(List<int> types)
{
if(types == null)
{
return;
}
for (int i = 0; i < advanceTypeImages.Count; i++)
{
if (i < types.Count && types[i] != -1)
{
string descPath;
string typePath;
string typePathButtom;
if(GetTypeName((AdvanceBase.AdvanceType)types[i], out descPath, out typePath, out typePathButtom)
&& advanceTypeImages[i] != null
&& advanceBtns[i] != null)
{
advanceTypeImages[i].gameObject.SetActive(true);
buttonAdvanceTypeImages[i].gameObject.SetActive(true);
advanceBtns[i].gameObject.SetActive(true);
// 设置图片
LoadAssetBundle.Instance.SetImageSprite(advanceTypeImages[i], typePath);
// 设置图片
LoadAssetBundle.Instance.SetImageSprite(buttonAdvanceTypeImages[i], typePathButtom);
// 设置按钮文字
LoadAssetBundle.Instance.SetImageSprite(advanceBtns[i].GetComponentInChildren<Image>(), descPath);
// 设置按钮点击回调
int adType = types[i];
advanceBtns[i].onClick.RemoveAllListeners();
advanceBtns[i].onClick.AddListener(delegate ()
{
// 事先检查进阶项是否开启
if (!AdvanceCanadvanceCtr.Instance.IsAdvanceFuncOpen(adType))
{
GUIData.AddNotifyData("#{2182}");
return;
}
UIManager.ShowUI(UIInfo.AdvanceMountPanel, delegate (bool bSucess, object param)
{
if (bSucess)
{
AdvanceMountPanelCtr.Instance.SetAdvanceType(adType);
}
});
});
continue;
}
}
// 若没有匹配的进阶类型,关闭相关物体的显示
// 文字图片
if (advanceTypeImages[i] != null)
{
advanceTypeImages[i].gameObject.SetActive(false);
}
if(buttonAdvanceTypeImages[i] != null)
{
buttonAdvanceTypeImages[i].gameObject.SetActive(false);
}
// 按钮
if (advanceBtns[i] != null)
{
advanceBtns[i].gameObject.SetActive(false);
}
}
}
/// <summary>
/// 设置暴击率显示
/// </summary>
/// <param name="rate"></param>
public void SetCritRate(int critType, int rate)
{
if(rate <= 100 && rate >= 0 && uiImgText != null)
{
uiImgText.gameObject.SetActive(true);
uiImgText.text = rate.ToString();
}
else if(uiImgText != null)
{
uiImgText.gameObject.SetActive(false);
}
}
/// <summary>
/// 根据 Type返回相应Sprite素材的AB包名称
/// </summary>
/// <param name="advanceType">进阶类型AdvanceBase.AdvanceType</param>
/// <param name="typeDesc">进阶类型按钮上的文字</param>
/// <param name="typePath">进阶文字Sprite的AB包名称</param>
/// <returns>true有匹配的字符串false:没有匹配的字符串</returns>
private bool GetTypeName(AdvanceBase.AdvanceType advanceType, out string descPath, out string typePath, out string typePathButtom)
{
bool result = true;
descPath = "";
typePath = "";
typePathButtom = "";
switch (advanceType)
{
case AdvanceBase.AdvanceType.Ride:
typePath = "CritDayAdvanceType_Ride";
typePathButtom = "CritDayAdvanceType_Ride_Small";
descPath = "CritDayAdvanceType_Ride_Btn";
break;
case AdvanceBase.AdvanceType.Piano:
typePath = "CritDayAdvanceType_GodWeapon";
typePathButtom = "CritDayAdvanceType_GodWeapon_Small";
descPath = "CritDayAdvanceType_GodWeapon_Btn";
break;
case AdvanceBase.AdvanceType.Wing:
typePath = "CritDayAdvanceType_Wing";
typePathButtom = "CritDayAdvanceType_Wing_Small";
descPath = "CritDayAdvanceType_Wing_Btn";
break;
case AdvanceBase.AdvanceType.Qilinbi:
typePath = "CritDayAdvanceType_Wish";
typePathButtom = "CritDayAdvanceType_Wish_Small";
descPath = "CritDayAdvanceType_Wish_Btn";
break;
case AdvanceBase.AdvanceType.Soul:
typePath = "CritDayAdvanceType_Seal";
typePathButtom = "CritDayAdvanceType_Seal_Small";
descPath = "CritDayAdvanceType_Seal_Btn";
break;
case AdvanceBase.AdvanceType.Mask:
typePath = "CritDayAdvanceType_Mask";
typePathButtom = "CritDayAdvanceType_Mask_Small";
descPath = "CritDayAdvanceType_Mask_Btn";
break;
case AdvanceBase.AdvanceType.Huopao:
typePath = "CritDayAdvanceType_Crown";
typePathButtom = "CritDayAdvanceType_Crown_Small";
descPath = "CritDayAdvanceType_Crown_Btn";
break;
case AdvanceBase.AdvanceType.Invalid:
default:
result = false;
break;
}
return result;
}
#region
// 菜单请求
private void AskForMenuID()
{
MarketingActsReq req = new MarketingActsReq();
req.actType = this._ActID;
req.SendMsg();
}
// root菜单接收
protected override void MarketingActRetInner(MarketingActsRet marketActsRet)
{
if (marketActsRet != null && marketActsRet.actIDState.Count > 0)
{
beforeActId = this._ActID;
MarketingActState tempActState = new MarketingActState();
tempActState.actID = marketActsRet.actIDState[0].actID;
Hashtable param = new Hashtable();
param.Add("ActState", tempActState);
if (MarketingActsRoot.Instance() != null)
{
MarketingActsRoot.Instance().LoadUICallBack(true, param, gameObject);
}
AskForInfo();
}
}
// 页面信息请求
protected void AskForInfo()
{
MarketingActAwardPageReq req = new MarketingActAwardPageReq();
req.actID = this._ActID;
req.updateOrInit = 1;
req.SendMsg();
}
protected override void MarketingActPageAwardRetDelInner(object packet)
{
MarketingViolentAttackRet data = (MarketingViolentAttackRet)packet;
if(data != null)
{
SetAdvanceTypeImage(data.advancedTypeList);
SetCritRate(data.violentAttackType, data.rate);
}
}
#endregion
// 关闭
private void Close()
{
this.gameObject.SetActive(false);
}
}