Files
JJBB/Assets/Project/Script/LuaScripts/UI/OpenServiceCS/OpenServiceCritDayCS.cs
2024-08-23 15:49:34 +08:00

261 lines
8.8 KiB
C#
Raw 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 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);
}
}