using System; using System.Linq; using UnityEngine; namespace FlowerPower { public class GameDataSystem : BaseSystem { public Action UpdateSecondEvent; private Action onChangeDollar; private Action onChangeGiftSwitch; public GameDataSystem(bool isAutoInit = true) { if (isAutoInit) { Init(); } } public sealed override void Init() { base.Init(); AddListener(); } private void AddListener() { CtrlDispatcher.Instance.AddListener(CtrlMsg.Game_StartBefore, InitPreferences); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.currency101, OnChange101); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.playReawrd111, OnChange111); CtrlDispatcher.Instance.AddListener(CtrlMsg.GameNewDays, NewDay); CtrlDispatcher.Instance.AddListener(CtrlMsg.Module_GiftSwitchChange, OnChangeGiftSwitch); GameDispatcher.Instance.AddListener(GameMsg.RefreshADTask, RefreshADTaskData); CtrlDispatcher.Instance.AddListener(CtrlMsg.WatchVideoFinish, AddWatchVideo); CtrlDispatcher.Instance.AddListener(CtrlMsg.WatchIntVideoFinish, AddIntWatchVideo); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.isShowRewardFly101, OnChangeRewardFly101); PreferencesDispatcher.Instance.AddListener(PreferencesMsg.isShowRewardFly111, OnChangeRewardFly111); GameDispatcher.Instance.AddListener(GameMsg.ProcessReward, OnGetReward); GameDispatcher.Instance.AddListener(GameMsg.RefreshMakeupData, OnRefreshMakeupData); } private void OnChangeGiftSwitch(object obj) { onChangeGiftSwitch?.Invoke(); } private void InitPreferences(object obj) { if (PreferencesMgr.Instance.Currency101 == -1) { PreferencesMgr.Instance.Currency101 = 0; } if (PreferencesMgr.Instance.Currency102 == -1) { PreferencesMgr.Instance.Currency102 = 0; } if (!GameHelper.IsContinuousSignIn()) { PreferencesMgr.Instance.SignState.Clear(); PreferencesMgr.Instance.SaveSignState(); } if (PreferencesMgr.Instance.PlayerName.IsNullOrWhiteSpace()) { if (ModuleManager.Instance.GetModel(ModelConst.LoginModel) is LoginModel loginModel) { PreferencesMgr.Instance.PlayerName = loginModel.invite_code; } } PreferencesMgr.Instance.IsShowRewardFly101 = false; PreferencesMgr.Instance.IsShowRewardFly102 = false; CheckMakeupTaskData(); PreferencesMgr.Instance.IsLastH5Tab = true; CommonHelper.CheckAdTimes(); } private void OnRefreshMakeupData(object obj) { AddMakeupTaskData(); } private void CheckMakeupTaskData() { if (!GameHelper.IsGiftSwitch()) { return; } if (PreferencesMgr.Instance.MakeupTaskHistory.Count == 0) { AddMakeupTaskData(); } else { var common = ConfigSystem.GetConfig(); foreach (var makeuptaskData in PreferencesMgr.Instance.MakeupTaskHistory) { if (makeuptaskData.status == MakeupTaskStatus.Inline && makeuptaskData.inlineNum > common.inlineMin) { var rdVOModel = ConfigSystem.GetConfig().dataList .FirstOrDefault(rd => rd.id == makeuptaskData.tableId); var days = PlayerPrefs.GetInt($"days_{NetworkKit.userId}_{makeuptaskData.tableId}", 0); if (days == DateTime.Today.Day) { continue; } PlayerPrefs.SetInt($"days_{NetworkKit.userId}_{makeuptaskData.tableId}", DateTime.Today.Day); var loginNum = CommonHelper.RandomRange(common.inlineLoginDown[0], common.inlineLoginDown[1]); makeuptaskData.loginSpeedNum += loginNum; //如果登录减少人数大于配置的阈值,则不能减少排名了 // Debug.Log($"登录累计增加的排名为:{makeuptaskData.loginSpeedNum} 阈值为:{rdVOModel.Login_Limit_times}"); if (makeuptaskData.loginSpeedNum > rdVOModel.Login_Limit_times) { makeuptaskData.loginSpeedNum = rdVOModel.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 rdVOModel = ConfigSystem.GetConfig().dataList .FirstOrDefault(rd => rd.id == makeuptaskData.tableId); var days = PlayerPrefs.GetInt($"days_{NetworkKit.userId}_{makeuptaskData.tableId}_pot", 0); if (days == DateTime.Today.Day) { continue; } PlayerPrefs.SetInt($"days_{NetworkKit.userId}_{makeuptaskData.tableId}_pot", DateTime.Today.Day); var loginNum = CommonHelper.RandomRange(common.inlineLoginDown[0], common.inlineLoginDown[1]); makeuptaskData.loginSpeedNum += loginNum; //如果登录减少人数大于配置的阈值,则不能减少排名了 // Debug.Log($"登录累计增加的排名为:{makeuptaskData.loginSpeedNum} 阈值为:{rdVOModel.Login_Limit_times}"); if (makeuptaskData.loginSpeedNum > rdVOModel.Login_Limit_times) { makeuptaskData.loginSpeedNum = rdVOModel.Login_Limit_times; continue; } //Debug.Log($"订单为: {makeuptaskData.tableId} 通过登录减少的排名为:{loginNum}"); makeuptaskData.inlineNum -= loginNum; if (makeuptaskData.inlineNum < common.inlineMin) { makeuptaskData.inlineNum = common.inlineMin; } } } } SaveData.saveDataFunc(); } 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 rdVOModel = ConfigSystem.GetConfig().dataList .FirstOrDefault(rd => rd.id == makeuptaskData.tableId); var dowmNum = rdVOModel.AD_Down; // Debug.Log($"CheckSpeedUpTaskData dowmNum=== {dowmNum} makeuptaskData.WatchVideoSpeedNum ==== {makeuptaskData.WatchVideoSpeedNum}"); makeuptaskData.WatchVideoSpeedNum += dowmNum; //如果看广告的减少人数大于配置的阈值,则不能减少排名了 if (makeuptaskData.WatchVideoSpeedNum > rdVOModel.AD_Limit_times) { makeuptaskData.WatchVideoSpeedNum = rdVOModel.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 rdVOModel = ConfigSystem.GetConfig().dataList .FirstOrDefault(rd => rd.id == makeuptaskData.tableId); var dowmNum = rdVOModel.AD_Down; // Debug.Log($"CheckSpeedUpTaskData dowmNum=== {dowmNum} makeuptaskData.WatchVideoSpeedNum ==== {makeuptaskData.WatchVideoSpeedNum}"); makeuptaskData.WatchVideoSpeedNum += dowmNum; //如果看广告的减少人数大于配置的阈值,则不能减少排名了 if (makeuptaskData.WatchVideoSpeedNum > rdVOModel.AD_Limit_times) { makeuptaskData.WatchVideoSpeedNum = rdVOModel.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; } } } } } public void AddMakeupTaskData() { var makeupVOModel = ConfigSystem.GetConfig(); if (makeupVOModel == null || makeupVOModel.dataList == null || makeupVOModel.dataList.Count <= 0) { return; } 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 = $"{GameHelper.Get101Str(makeupVo.item_need)}"; makeupTaskData.amount = makeupVo.item_need; makeupTaskData.orderID = GameHelper.GetRandomNum(8); PreferencesMgr.Instance.MakeupTaskHistory.Add(makeupTaskData); Debug.Log("uuuuuuuuuuuuuuuuuuuu"); makeupTaskData.SetStatus(MakeupTaskStatus.None); PreferencesMgr.Instance.SaveMakeupTaskHistory(); PreferencesMgr.Instance.MakeupTaskH5Time = 0; break; } } } } private void OnChange101(ChangeValue obj) { var val = obj.newValue - obj.oldValue; if (val > 0) { PreferencesMgr.Instance.MaxCurrency101 += val; } if (!PreferencesMgr.Instance.IsShowRewardFly101) { GameDispatcher.Instance.Dispatch(GameMsg.Update101Completed); } onChangeDollar?.Invoke(); } private void OnChange111(ChangeValue obj) { if (!PreferencesMgr.Instance.IsShowRewardFly111) { GameDispatcher.Instance.Dispatch(GameMsg.Update111Completed); } } private void NewDay(object obj) { PreferencesMgr.Instance.IsShowOpenReward = true; } private void RefreshADTaskData(object obj = null) { } private void AddIntWatchVideo(object obj = null) { if (PreferencesMgr.Instance.MakeupTaskHistory.Count > 0) { CheckSpeedUpTaskData(); } } private void AddWatchVideo(object obj = null) { PreferencesMgr.Instance.VideoWatchCount++; RankSystemMgr.Instance.addGameExp(addPointType.ads); GameDispatcher.Instance.Dispatch(GameMsg.RefreshRedDot); int adNums = AdRdManager.Instance.GetLookRewardADNum(); adNums++; AdRdManager.Instance.SetLookRewardADNum(adNums); if (PreferencesMgr.Instance.MakeupTaskHistory.Count > 0) { CheckSpeedUpTaskData(); var taskData = PreferencesMgr.Instance.MakeupTaskHistory.Last(); if (taskData.status == MakeupTaskStatus.Task) { var makeupVo = ConfigSystem.GetConfig().GetData(taskData.tableId); if (makeupVo != null && taskData.videoCount < makeupVo.ad_need) { taskData.videoCount++; PreferencesMgr.Instance.SaveMakeupTaskHistory(); PlayerPrefs.SetInt("fin_ad_num", 0); } else { if (PlayerPrefs.GetInt("fin_ad_num", 0) == 0) { PlayerPrefs.SetInt("fin_ad_num", 1); } } } else if (taskData.status == MakeupTaskStatus.Level) { var ExpiryUnlock = ConfigSystem.GetConfig().ExpiryUnlock; taskData.LvVideoCount++; if (taskData.LvVideoCount >= ExpiryUnlock) { taskData.LvVideoCount = 0; taskData.ch_time = GameHelper.GetNowTime() + ConfigSystem.GetConfig().BalanceExpired * 3600; } PreferencesMgr.Instance.SaveMakeupTaskHistory(); } } 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_ch += makeupVo.ADIncrease; GameDispatcher.Instance.Dispatch(GameMsg.RefreshSaveingPot); if (ConfigSystem.GetConfig().PiggyBankSwitch == 1 && GameHelper.IsGiftSwitch()) { if ((SaveData.GetSaveobject().saveingpot_ch > taskData.amount) && (!taskData.auto_show) && !UIManager.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); } } } } } private void OnChangeRewardFly101(ChangeValue obj) { var oldValue = obj.oldValue; var newValue = obj.newValue; InitChangeRewardFly(101, oldValue, newValue); } private void OnChangeRewardFly111(ChangeValue obj) { var oldValue = obj.oldValue; var newValue = obj.newValue; InitChangeRewardFly(111, oldValue, newValue); } private void InitChangeRewardFly(int id, bool oldValue, bool newValue) { if (oldValue) { if (newValue) { } else { switch (id) { case 101: GameDispatcher.Instance.Dispatch(GameMsg.Update101Completed); break; case 102: GameDispatcher.Instance.Dispatch(GameMsg.Update102Completed); break; case 111: GameDispatcher.Instance.Dispatch(GameMsg.Update111Completed); break; } } } else { if (newValue) { } else { } } } private void OnGetReward(object obj) { if (obj is RewardData rewardModel) { foreach (var rewardData in rewardModel.GetRewardDataList()) { ProcessData(rewardData); } } } private void ProcessData(RewardSingleData rewardSingleData) { if (rewardSingleData.origin == RewardOrigin.None) { return; } switch (rewardSingleData.id) { case 101: { var roomTicket = PreferencesMgr.Instance.Currency101; roomTicket += (int)rewardSingleData.GetTotalValue(); PreferencesMgr.Instance.Currency101 = roomTicket; } break; case 102: { var dollar = PreferencesMgr.Instance.Currency102; dollar += rewardSingleData.GetTotalValue(); PreferencesMgr.Instance.Currency102 = dollar; break; } case 111: { var dollar = PreferencesMgr.Instance.PlayReawrd111; dollar += rewardSingleData.GetTotalValue(); PreferencesMgr.Instance.PlayReawrd111 = dollar; break; } } } } }