using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine.UI;
|
using System.Linq;
|
using LitJson;
|
using UnityEngine;
|
|
public class HolidayXianXiaMJModel : ILModel<HolidayXianXiaMJModel>
|
{
|
public ILOpenServerActivityProxy activity;
|
|
public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_JRZF;
|
public const int activityID = 113;
|
public const Operation operationType = Operation.default4; //仙匣秘境-翻牌
|
|
public const int redpointID = 28013;
|
public Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_HolidayWishes, redpointID);
|
public float startWashTime = 0;
|
public JumpUIType windowJumpID;
|
|
//抽中物品位置:显示时间
|
public Dictionary<int, float> showResultPos = new Dictionary<int, float>();
|
|
public static float washTime = 1f;
|
|
public int moneyType = 0; // 活动消耗的货币类型
|
public PlayerDataType moneyPlayerDataType = 0; //对应0418
|
|
|
public event Action onSelectUpdate;
|
int m_SelectIndex = 0; //选择大奖物品索引
|
public int selectIndex
|
{
|
get { return m_SelectIndex; }
|
set
|
{
|
if (m_SelectIndex != value)
|
{
|
m_SelectIndex = value;
|
if (onSelectUpdate != null)
|
{
|
onSelectUpdate();
|
}
|
}
|
}
|
}
|
|
protected override void Init()
|
{
|
GameEvent.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
ILOperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent;
|
GameEvent.playerDataRefreshEvent += OnPlayerDataRefreshEvent;
|
activity = new ILOpenServerActivityProxy(IsOpen, IsAdvance, priorityOpen);
|
OpenServerActivityCenter.Instance.Register(activityID, activity, activityType);
|
|
InitConfig();
|
}
|
|
protected override void UnInit()
|
{
|
GameEvent.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
ILOperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent;
|
GameEvent.playerDataRefreshEvent -= OnPlayerDataRefreshEvent;
|
}
|
|
public bool IsOpen()
|
{
|
return OperationTimeHepler.Instance.SatisfyOpenCondition(operationType);
|
}
|
|
public bool IsAdvance()
|
{
|
return false;
|
}
|
|
public bool priorityOpen()
|
{
|
//红点
|
return redpoint.state == RedPointState.Simple;
|
}
|
|
|
void InitConfig()
|
{
|
windowJumpID = (JumpUIType)int.Parse(FuncConfigConfig.Get("XianxiaMJ").Numerical1);
|
washTime = float.Parse(FuncConfigConfig.Get("XianxiaMJ").Numerical2);
|
|
}
|
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
moneyType = 0; // 活动消耗的货币类型
|
moneyPlayerDataType = 0; //对应0418
|
selectIndex = 0;
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
}
|
|
void OnPlayerDataRefreshEvent(PlayerDataType dataType)
|
{
|
if (dataType != moneyPlayerDataType)
|
{
|
return;
|
}
|
UpdateRedpoint();
|
}
|
|
private void operationTimeUpdateEvent(Operation type)
|
{
|
if (type == operationType)
|
{
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
moneyType = operation.moneyType;
|
moneyPlayerDataType = HeroControler.Instance.GetMoneyPlayerDataType(moneyType);
|
if (operation.selectBigAward != null)
|
{
|
selectIndex = operation.selectItemIDSort.IndexOf((int)operation.selectBigAward.ItemID);
|
}
|
UpdateRedpoint();
|
}
|
}
|
|
public void UpdateRedpoint()
|
{
|
redpoint.state = RedPointState.None;
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
if ((uint)HeroControler.Instance.GetMoneyCntIL(Instance.moneyType) >= operation.costMoneyValue)
|
{
|
redpoint.state = RedPointState.Simple;
|
}
|
}
|
|
|
public void SendSelectBigAward(uint itemID)
|
{
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
var pak = new IL_CAA16_tagCMActXianXiaMJSuperItem();
|
pak.ActNum = (byte)operation.ActNum;
|
pak.SuperItemCount = 1;
|
pak.SuperItemIDList = new uint[] { itemID };
|
GameNetSystem.Instance.SendInfo(pak);
|
|
}
|
public void SendSelectCard(int posNum)
|
{
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
var pak = new IL_CAA17_tagCMActXianXiaMJLottery();
|
pak.ActNum = (byte)operation.ActNum;
|
pak.PosNum = (byte)posNum;
|
GameNetSystem.Instance.SendInfo(pak);
|
|
}
|
|
public void SendPoolRefresh()
|
{
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
var pak = new IL_CAA18_tagCMActXianXiaMJAwardPoolRefresh();
|
pak.ActNum = (byte)operation.ActNum;
|
GameNetSystem.Instance.SendInfo(pak);
|
|
}
|
|
public void UpdateXianXiaMJAwardItemResult(HAA59_tagMCActXianXiaMJAwardItemResult package)
|
{
|
|
OperationBase operationBase;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
if (package.ActNum != operation.ActNum)
|
return;
|
|
|
if (WindowCenter.Instance.IsOpen("HolidayXianXiaMJLotterynWin"))
|
{
|
HolidayXianXiaMJLotterynWin.OnAwardItemResult(package.PosNum);
|
}
|
|
}
|
|
|
//洗牌/展示大奖期间不能点击按钮
|
public bool IsWashTime()
|
{
|
if (Time.time - startWashTime <= washTime)
|
{
|
return true;
|
}
|
return false;
|
}
|
|
public void PopNextLevel()
|
{
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("XianXiaMJInfo2"),
|
(bool _ok) =>
|
{
|
if (_ok)
|
{
|
SendPoolRefresh();
|
}
|
}
|
);
|
}
|
|
|
//当前盘是否有翻牌
|
public bool HasTurnCard()
|
{
|
OperationBase operationBase = null;
|
if (!OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase))
|
{
|
return false;
|
}
|
OperationXianXiaMJLottery operation = operationBase as OperationXianXiaMJLottery;
|
|
if (operation.awardItems.Count > 1)
|
{
|
return true;
|
}
|
|
if (operation.awardItems.Count == 1 && !operation.awardItems.ContainsKey(0))
|
{
|
return true;
|
}
|
|
return false;
|
}
|
}
|