using System; using BingoBrain.Core; using UnityEngine; using BingoBrain.HotFix; using System.Text; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic; using Newtonsoft.Json; namespace BingoBrain { public class BingoDataSystem : BaseSystem { private Action onChangeDollar; private Action onChangeGiftSwitch; public BingoDataSystem(bool isAutoInit = true) { if (isAutoInit) { Init(); } } public sealed override void Init() { base.Init(); AddListener(); } private void AddListener() { CtrlDispatcher.Instance.AddPriorityListener(CtrlMsg.Game_StartBefore, InitPreferences); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.currency101, Add101); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.currency102, Add102); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.isShowRewardFly101, OnChangeRewardFly101); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.isShowRewardFly102, OnChangeRewardFly102); CtrlDispatcher.Instance.AddListener(CtrlMsg.ResetDailyTaskActive, ResetDailyTaskActive); CtrlDispatcher.Instance.AddListener(CtrlMsg.GameNewDays, NewDay); CtrlDispatcher.Instance.AddListener(CtrlMsg.Module_GiftSwitchChange, OnChangeGiftSwitch); CtrlDispatcher.Instance.AddListener(CtrlMsg.WatchVideoFinish, AddWatchVideo); GameDispatcher.Instance.AddListener(BingoInfo.ProcessReward, OnGetReward); GameDispatcher.Instance.AddListener(BingoInfo.RefreshMakeupData, AddMakeupTaskData); GameDispatcher.Instance.AddListener(BingoInfo.RefreshMakeupData, CheckCoinMakeupTaskData); } public static void AddMakeupTaskData(object a = null) { var makeupVOModel = ConfigSystem.GetConfig(); if (makeupVOModel == null || makeupVOModel.dataList == null || makeupVOModel.dataList.Count <= 0) { return; } Debug.Log("????????????????????????3"); var lastId = -1; // var isRepeat = PreferencesMgr.Instance.MakeupTaskHistory.Count >= makeupVOModel.dataList.Count; // if (PreferencesMgr.Instance.MakeupTaskHistory.Count > 0) // { // var makeupTaskData = PreferencesMgr.Instance.MakeupTaskHistory.Last(); // if (makeupTaskData.status != MakeupTaskStatus.Inline) // { // return; // } // lastId = makeupTaskData.tableId; // } if (lastId == makeupVOModel.dataList.Last().id) { lastId = -1; } // foreach (var makeupVo in makeupVOModel.dataList) // { // if (makeupVo.id > lastId) // { // if ((isRepeat && !makeupVo.is_onetime) || !isRepeat) // { // var makeupTaskData = new MakeupTaskData(); // makeupTaskData.tableId = makeupVo.id; // makeupTaskData.id = PreferencesMgr.Instance.MakeupTaskHistory.Count + 1; // makeupTaskData.amountStr = $"{makeupVo.item_need}"; // makeupTaskData.amount = makeupVo.item_need; // makeupTaskData.orderID = GetRandomNum(8); // PreferencesMgr.Instance.MakeupTaskHistory.Add(makeupTaskData); // makeupTaskData.SetStatus(MakeupTaskStatus.None); // PreferencesMgr.Instance.SaveMakeupTaskHistory(); // PreferencesMgr.Instance.MakeupTaskH5Time = 0; // break; // } // } // } } public static void CheckMakeupTaskData() { // Debug.Log("????????????????????????1"); // if (!GameHelper.IsGiftSwitch()) // { // return; // } // if (PreferencesMgr.Instance.MakeupTaskHistory.Count == 0) // { // AddMakeupTaskData(); // } // else // { // Debug.Log("????????????????????????2"); // var common = ConfigSystem.GetConfig(); // var userId = GameHelper.GetLoginModel().uid; // foreach (var makeuptaskData in PreferencesMgr.Instance.MakeupTaskHistory) // { // if (makeuptaskData.status == MakeupTaskStatus.Inline // && makeuptaskData.inlineNum > common.inlineMin) // { // var redeemVOModel = ConfigSystem.GetConfig().dataList // .FirstOrDefault(redeem => redeem.id == makeuptaskData.tableId); // var days = PlayerPrefs.GetInt($"days_{userId}_{makeuptaskData.tableId}", 0); // Debug.Log("------------------" + days); // Debug.Log("------------------" + DateTime.Today.Day); // if (days == DateTime.Today.Day) // { // continue; // } // PlayerPrefs.SetInt($"days_{userId}_{makeuptaskData.tableId}", DateTime.Today.Day); // var loginNum = UnityEngine.Random.Range(common.inlineLoginDown[0], // common.inlineLoginDown[1]); // makeuptaskData.loginSpeedNum += loginNum; // //如果登录减少人数大于配置的阈值,则不能减少排名了 // Debug.Log($"登录累计增加的排名为:{makeuptaskData.loginSpeedNum} 阈值为:{redeemVOModel.Login_Limit_times}"); // if (makeuptaskData.loginSpeedNum > redeemVOModel.Login_Limit_times) // { // makeuptaskData.loginSpeedNum = redeemVOModel.Login_Limit_times; // continue; // } // Debug.Log($"订单为: {makeuptaskData.tableId} 通过登录减少的排名为:{loginNum}"); // makeuptaskData.inlineNum -= loginNum; // if (makeuptaskData.inlineNum < common.inlineMin) // { // makeuptaskData.inlineNum = common.inlineMin; // } // } // } // PreferencesMgr.Instance.SaveMakeupTaskHistory(); // } // if (SaveData.GetSaveobject().saveingpot_history.Count == 0) // { // // Debug.Log("tianjialishiiiiiiiiiiiiii"); // // AddMakeupTaskData(); // } // else // { // var common = ConfigSystem.GetConfig(); // foreach (var makeuptaskData in SaveData.GetSaveobject().saveingpot_history) // { // if (makeuptaskData.status == SaveingPotTaskStatus.Inline // && makeuptaskData.inlineNum > common.inlineMin) // { // var redeemVOModel = ConfigSystem.GetConfig().dataList // .FirstOrDefault(redeem => redeem.id == makeuptaskData.tableId); // var days = PlayerPrefs.GetInt($"days__{makeuptaskData.tableId}_pot", 0); // if (days == DateTime.Today.Day) // { // continue; // } // PlayerPrefs.SetInt($"days__{makeuptaskData.tableId}_pot", DateTime.Today.Day); // var loginNum = UnityEngine.Random.Range(common.inlineLoginDown[0], // common.inlineLoginDown[1]); // makeuptaskData.loginSpeedNum += loginNum; // //如果登录减少人数大于配置的阈值,则不能减少排名了 // // Debug.Log($"登录累计增加的排名为:{makeuptaskData.loginSpeedNum} 阈值为:{redeemVOModel.Login_Limit_times}"); // if (makeuptaskData.loginSpeedNum > redeemVOModel.Login_Limit_times) // { // makeuptaskData.loginSpeedNum = redeemVOModel.Login_Limit_times; // continue; // } // //Debug.Log($"订单为: {makeuptaskData.tableId} 通过登录减少的排名为:{loginNum}"); // makeuptaskData.inlineNum -= loginNum; // if (makeuptaskData.inlineNum < common.inlineMin) // { // makeuptaskData.inlineNum = common.inlineMin; // } // } // } // } // SaveData.saveDataFunc(); } public static string GetRandomNum(int count) { var resultStr = new StringBuilder(); for (int i = 0; i < count; i++) { resultStr.Append(UnityEngine.Random.Range(0, 10)); } return resultStr.ToString(); } public void AddChangeGiftSwitch(Action action) { onChangeGiftSwitch += action; } public void RemoveChangeGiftSwitch(Action action) { onChangeGiftSwitch -= action; } private void OnChangeGiftSwitch(object obj) { onChangeGiftSwitch?.Invoke(); } private void InitPreferences(object obj) { if (PreferencesMgr.Instance.Currency101 == -1) { PreferencesMgr.Instance.Currency101 = GameHelper.GetCommonModel().Initial101; GameDispatcher.Instance.Dispatch(BingoInfo.Update101Completed); } if (PreferencesMgr.Instance.CardBoardSum == -1 || (PreferencesMgr.Instance.CardBoardSum == 0 && PlayerPrefs.GetInt("First", 0) == 0)) { PreferencesMgr.Instance.CardBoardSum = GameHelper.GetCommonModel().Fisrtcard[0]; Debug.Log("777777777777777777777777777"); //PlayerPrefs.SetInt("First", 1); } if (PreferencesMgr.Instance.Currency102 == -1) { PreferencesMgr.Instance.Currency102 = 0; } if (PreferencesMgr.Instance.DailyTaskState.Count == 0) { ResetDailyTaskActive(); } if (PreferencesMgr.Instance.DailyTaskActiveState.Count == 0) { ResetDailyTaskActive(); } if (PreferencesMgr.Instance.IsResetGuide) { PreferencesMgr.Instance.IsResetGuide = false; PreferencesMgr.Instance.CompleteGuideList.Clear(); PreferencesMgr.Instance.SaveCompleteGuideList(); } PreferencesMgr.Instance.IsShowRewardFly101 = false; PreferencesMgr.Instance.IsShowRewardFly102 = false; PreferencesMgr.Instance.IsShowRewardFly105 = false; PreferencesMgr.Instance.IsShowRewardFly106 = false; CheckCoinMakeupTaskData(); CheckMakeupTaskData(); PreferencesMgr.Instance.IsShowOpenReward = true; } private void Add101(ExiteValue obj) { var val = obj.newValue - obj.oldValue; if (val > 0) { PreferencesMgr.Instance.Max101 += val; } if (!PreferencesMgr.Instance.IsShowRewardFly101) { GameDispatcher.Instance.Dispatch(BingoInfo.Update101Completed); } } private void Add102(ExiteValue obj) { var val = obj.newValue - obj.oldValue; if (val > 0) { PreferencesMgr.Instance.Max102 += val; } if (!PreferencesMgr.Instance.IsShowRewardFly102) { GameDispatcher.Instance.Dispatch(BingoInfo.Update102Completed); } onChangeDollar?.Invoke(); } private void ResetDailyTaskActive(object obj = null) { PreferencesMgr.Instance.DailyTaskActiveState.Clear(); for (int i = 0; i < 2; i++) { PreferencesMgr.Instance.DailyTaskActiveState.Add(false); } PreferencesMgr.Instance.SaveDailyTaskActiveState(); PreferencesMgr.Instance.Active = 0; } private void NewDay(object obj) { PreferencesMgr.Instance.ToDayMaxScore = 0; ResetDailyTaskActive(); } private void AddWatchVideo(object obj = null) { if (PreferencesMgr.Instance.IsRealProcessing) { PreferencesMgr.Instance.RealWatchVideo++; } // if (PreferencesMgr.Instance.MakeupTaskHistory.Count > 0) // { // CheckSpeedUpTaskData(); // var taskData = PreferencesMgr.Instance.MakeupTaskHistory.Last(); // if (taskData.status == MakeupTaskStatus.Task) // { // var makeupVo = ConfigSystem.GetConfig().dataList.FirstOrDefault(card => card.id == taskData.tableId); // if (makeupVo != null && taskData.videoCount < makeupVo.ad_need) // { // taskData.videoCount++; // NetworkKit.BuriedPoint(BuriedPointEvent.ad_task, BuriedPointEvent.watch_ad_number, 1); // PreferencesMgr.Instance.SaveMakeupTaskHistory(); // PlayerPrefs.SetInt("finish_ad_number", 0); // } // else // { // if (PlayerPrefs.GetInt("finish_ad_number", 0) == 0) // { // NetworkKit.BuriedPoint(BuriedPointEvent.ad_task, BuriedPointEvent.finish_ad_number, 1); // PlayerPrefs.SetInt("finish_ad_number", 1); // } // } // } // } // if (PreferencesMgr.Instance.CoinMakeupTaskHistory.Count > 0) // { // var taskData = PreferencesMgr.Instance.CoinMakeupTaskHistory.Last(); // if (taskData.status == MakeupTaskStatus.Task) // { // var cardRedeemNewModel = ConfigSystem.GetConfig(); // var makeupVo = cardRedeemNewModel.dataList.FirstOrDefault(card => card.id == taskData.tableId); // if (makeupVo != null && taskData.videoCount < makeupVo.fee_need) // { // taskData.videoCount++; // PreferencesMgr.Instance.SaveCoinMakeupTaskHistory(); // } // } // } if (SaveData.GetSaveobject().saveingpot_history.Count > 0) { SaveingPotHelper.TestingClearTime(); CheckSpeedUpTaskData(2); SaveingPotClass taskData = SaveData.GetSaveobject().saveingpot_history.Last(); makeup_2 makeupVo = ConfigSystem.GetConfig().GetData(taskData.tableId); SaveData.GetSaveobject().saveingpot_cash += makeupVo.ADIncrease; // GameDispatcher.Instance.Dispatch(GameMsg.RefreshSaveingPot); if (ConfigSystem.GetConfig().PiggyBankSwitch == 1 && GameHelper.IsGiftSwitch()) { if ((SaveData.GetSaveobject().saveingpot_cash > taskData.amount) && (!taskData.auto_show) && !UI.Instance.IsExistUI(UIConst.H5UI)) { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.SaveingPotUI_Open); taskData.auto_show = true; } } if (taskData.status == SaveingPotTaskStatus.Task) { ; if (makeupVo != null && taskData.videoCount < makeupVo.ad_need) { taskData.videoCount++; //NetworkKit.BuriedPoint(BuriedPointEvent.ad_task, BuriedPointEvent.watch_ad_number, 1); PlayerPrefs.SetInt("fin_ad_num_saveingpot", 0); } else { if (PlayerPrefs.GetInt("fin_ad_num_saveingpot", 0) == 0) { //NetworkKit.BuriedPoint(BuriedPointEvent.ad_task, BuriedPointEvent.finish_ad_number, 1); PlayerPrefs.SetInt("fin_ad_num_saveingpot", 1); } } } } } public static void CheckCoinMakeupTaskData(object a = null) { if (!GameHelper.IsGiftSwitch()) { return; } //if (PreferencesMgr.Instance.CoinMakeupTaskHistory == null) PreferencesMgr.Instance.CoinMakeupTaskHistory = new List(); // MakeupTaskData taskData = null; // if (PreferencesMgr.Instance.CoinMakeupTaskHistory.Count != 0) taskData = PreferencesMgr.Instance.CoinMakeupTaskHistory.Last(); // if (PreferencesMgr.Instance.CoinMakeupTaskHistory.Count == 0 || taskData.status == MakeupTaskStatus.Inline) // { // AddCoinMakeupTaskData(); // } // else // { // foreach (var makeuptaskData in PreferencesMgr.Instance.CoinMakeupTaskHistory) // { // if (makeuptaskData.status == MakeupTaskStatus.Inline // && makeuptaskData.inlineNum > GameHelper.GetCommonModel().inlineMin) // { // makeuptaskData.inlineNum -= UnityEngine.Random.Range( // GameHelper.GetCommonModel().inlineLoginDown[0], // GameHelper.GetCommonModel().inlineLoginDown[1]); // if (makeuptaskData.inlineNum < GameHelper.GetCommonModel().inlineMin) // { // makeuptaskData.inlineNum = GameHelper.GetCommonModel().inlineMin; // } // } // } // PreferencesMgr.Instance.SaveCoinMakeupTaskHistory(); // } } public static void AddCoinMakeupTaskData() { var cardRedeemNewVOModel = ConfigSystem.GetConfig(); if (cardRedeemNewVOModel.dataList.Count <= 0) { return; } var lastId = -1; // if (PreferencesMgr.Instance.CoinMakeupTaskHistory.Count > 0) // { // var makeupTaskData = PreferencesMgr.Instance.CoinMakeupTaskHistory.Last(); // if (makeupTaskData.status == MakeupTaskStatus.None // || makeupTaskData.status == MakeupTaskStatus.Task) // { // return; // } // lastId = makeupTaskData.tableId; // } // var lastVoId = cardRedeemNewVOModel.dataList.Last().id; // if (lastId == lastVoId) // { // lastId = lastVoId - 1; // } // foreach (var makeupVo in cardRedeemNewVOModel.dataList) // { // if (makeupVo.id > lastId) // { // var makeupTaskData = new MakeupTaskData(); // //makeupTaskData.makeupTaskType = MakeupTaskType.Coin; // makeupTaskData.tableId = makeupVo.id; // makeupTaskData.id = PreferencesMgr.Instance.CoinMakeupTaskHistory.Count + 1; // makeupTaskData.is_gold = true; // // makeupTaskData.amountStr = GameHelper.GetMoneyStr(makeupVo); // //makeupTaskData.orderID = GameHelper.GetRandomNum(8); // PreferencesMgr.Instance.CoinMakeupTaskHistory.Add(makeupTaskData); // makeupTaskData.SetStatus(MakeupTaskStatus.None); // PreferencesMgr.Instance.SaveCoinMakeupTaskHistory(); // PreferencesMgr.Instance.CoinMakeupTaskH5Time = 0; // break; // } // } } private void CheckSpeedUpTaskData(int type = 1) { if (!GameHelper.IsGiftSwitch()) { return; } var common = ConfigSystem.GetConfig(); // if (type == 1 && PreferencesMgr.Instance.MakeupTaskHistory.Count > 0) // { // foreach (var makeuptaskData in PreferencesMgr.Instance.MakeupTaskHistory) // { // if (makeuptaskData.status == MakeupTaskStatus.Inline // && makeuptaskData.inlineNum > common.inlineMin) // { // var redeemVOModel = ConfigSystem.GetConfig().dataList // .FirstOrDefault(redeem => redeem.id == makeuptaskData.tableId); // var dowmNum = redeemVOModel.AD_Down; // Debug.Log($"CheckSpeedUpTaskData dowmNum=== {dowmNum} makeuptaskData.WatchVideoSpeedNum ==== {makeuptaskData.WatchVideoSpeedNum}"); // makeuptaskData.WatchVideoSpeedNum += dowmNum; // //如果看广告的减少人数大于配置的阈值,则不能减少排名了 // if (makeuptaskData.WatchVideoSpeedNum > redeemVOModel.AD_Limit_times) // { // makeuptaskData.WatchVideoSpeedNum = redeemVOModel.AD_Limit_times; // continue; // } // Debug.Log($"订单为: {makeuptaskData.tableId} 通过看广告减少的排名为:{dowmNum}"); // makeuptaskData.inlineNum -= dowmNum; // Debug.Log($"订单为: {makeuptaskData.tableId} 减少后的排名:{makeuptaskData.inlineNum}"); // if (makeuptaskData.inlineNum < common.inlineMin) // { // makeuptaskData.inlineNum = common.inlineMin; // } // } // } // } if (type == 2 && SaveData.GetSaveobject().saveingpot_history.Count > 0) { foreach (var makeuptaskData in SaveData.GetSaveobject().saveingpot_history) { if (makeuptaskData.status == SaveingPotTaskStatus.Inline && makeuptaskData.inlineNum > common.inlineMin) { var redeemVOModel = ConfigSystem.GetConfig().dataList .FirstOrDefault(redeem => redeem.id == makeuptaskData.tableId); var dowmNum = redeemVOModel.AD_Down; // Debug.Log($"CheckSpeedUpTaskData dowmNum=== {dowmNum} makeuptaskData.WatchVideoSpeedNum ==== {makeuptaskData.WatchVideoSpeedNum}"); makeuptaskData.WatchVideoSpeedNum += dowmNum; //如果看广告的减少人数大于配置的阈值,则不能减少排名了 if (makeuptaskData.WatchVideoSpeedNum > redeemVOModel.AD_Limit_times) { makeuptaskData.WatchVideoSpeedNum = redeemVOModel.AD_Limit_times; continue; } //Debug.Log($"订单为: {makeuptaskData.tableId} 通过看广告减少的排名为:{dowmNum}"); makeuptaskData.inlineNum -= dowmNum; //Debug.Log($"订单为: {makeuptaskData.tableId} 减少后的排名:{makeuptaskData.inlineNum}"); if (makeuptaskData.inlineNum < common.inlineMin) { makeuptaskData.inlineNum = common.inlineMin; } } } } } private void OnGetReward(object obj) { if (obj is RewardData rewardModel) { foreach (var rewardData in rewardModel.GetRewardDataList()) { ProcessData(rewardData); } } } private void ProcessData(Goda goda) { if (goda.origin == RewardOrigin.None) { return; } switch (goda.id) { case 101: { var roomTicket = PreferencesMgr.Instance.Currency101; roomTicket += (int)goda.GetTotalValue(); PreferencesMgr.Instance.Currency101 = roomTicket; } break; case 102: { var dollar = PreferencesMgr.Instance.Currency102; dollar += goda.GetTotalValue(); PreferencesMgr.Instance.Currency102 = dollar; } break; case 104: PreferencesMgr.Instance.CardBoardSum += (int)goda.GetTotalValue(); break; case 106: PreferencesMgr.Instance.Sum777 += (int)goda.GetTotalValue(); break; case 110: BingoCell.AddKeyCardSum((int)goda.GetTotalValue()); break; } } private void OnChangeRewardFly101(ExiteValue obj) { var oldValue = obj.oldValue; var newValue = obj.newValue; InitChangeRewardFly(101, oldValue, newValue); } private void OnChangeRewardFly102(ExiteValue obj) { var oldValue = obj.oldValue; var newValue = obj.newValue; InitChangeRewardFly(102, oldValue, newValue); } private void InitChangeRewardFly(int id, bool oldValue, bool newValue) { if (oldValue && !newValue) { switch (id) { case 101: GameDispatcher.Instance.Dispatch(BingoInfo.Update101Completed); break; case 102: GameDispatcher.Instance.Dispatch(BingoInfo.Update102Completed); break; } } } } }