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