using vnxbqy.UI; using System; using System.Collections.Generic; using UnityEngine.UI; using System.Linq; using LitJson; using UnityEngine; public class HolidayXianXiaMJModel : ILModel { 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 showResultPos = new Dictionary(); 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; } }