Files
RedHotRoast-ios/Assets/Scripts/System/Game/GameDataSystem.cs
T

558 lines
21 KiB
C#
Raw Normal View History

2026-04-22 09:52:55 +08:00
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<decimal>.Instance.AddListener(PreferencesMsg.currency101, OnChange101);
PreferencesDispatcher<float>.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<bool>.Instance.AddListener(PreferencesMsg.isShowRewardFly101, OnChangeRewardFly101);
PreferencesDispatcher<bool>.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<CommonModel>();
foreach (var makeuptaskData in PreferencesMgr.Instance.MakeupTaskHistory)
{
if (makeuptaskData.status == MakeupTaskStatus.Inline
&& makeuptaskData.inlineNum > common.inlineMin)
{
var rdVOModel = ConfigSystem.GetConfig<MakeupModel>().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<CommonModel>();
foreach (var makeuptaskData in SaveData.GetSaveobject().saveingpot_history)
{
if (makeuptaskData.status == SaveingPotTaskStatus.Inline
&& makeuptaskData.inlineNum > common.inlineMin)
{
var rdVOModel = ConfigSystem.GetConfig<MakeupModel_2>().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<CommonModel>();
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<MakeupModel>().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<MakeupModel_2>().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<MakeupModel>();
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<decimal> 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<float> 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<MakeupModel>().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<CommonModel>().ExpiryUnlock;
taskData.LvVideoCount++;
if (taskData.LvVideoCount >= ExpiryUnlock)
{
taskData.LvVideoCount = 0;
taskData.ch_time = GameHelper.GetNowTime() + ConfigSystem.GetConfig<CommonModel>().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<MakeupModel_2>().GetData(taskData.tableId);
SaveData.GetSaveobject().saveingpot_ch += makeupVo.ADIncrease;
GameDispatcher.Instance.Dispatch(GameMsg.RefreshSaveingPot);
if (ConfigSystem.GetConfig<CommonModel>().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<bool> obj)
{
var oldValue = obj.oldValue;
var newValue = obj.newValue;
InitChangeRewardFly(101, oldValue, newValue);
}
private void OnChangeRewardFly111(ChangeValue<bool> 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;
}
}
}
}
}