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