using System; using System.Linq; using IgnoreOPS; using SGModule.NetKit; using UnityEngine; namespace BallKingdomCrush { public class GameDataSystem : BaseSystem { public Action UpdateSecondEvent; private Action onChangeDollar; private Action onChangeGiftSwitch; private long _uid; 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(DataMsg.currency101, OnChange101); PreferencesDispatcher.Instance.AddListener(DataMsg.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(DataMsg.isShowRewardFly101, OnChangeRewardFly101); PreferencesDispatcher.Instance.AddListener(DataMsg.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 (DataMgr.Coin.Value == -1) { DataMgr.Coin.Value = 0; } if (DataMgr.Ticket.Value == -1) { DataMgr.Ticket.Value = 0; } if (!GameHelper.IsContinuousSignIn()) { DataMgr.SignState.Value.Clear(); } if (DataMgr.PlayerName.Value.IsNullOrWhiteSpace()) { if (GameHelper.GetLoginModel() != null) { DataMgr.PlayerName.Value = GameHelper.GetLoginModel().InviteCode; } } DataMgr.IsShowRewardFly101.Value = false; DataMgr.IsShowRewardFly102.Value = false; CheckMakeupTaskData(); DataMgr.IsLastH5Tab.Value = true; CommonHelper.CheckAdTimes(); _uid = LoginKit.Instance.LoginModel.Uid; } private void OnRefreshMakeupData(object obj) { AddMakeupTaskData(); } private void CheckMakeupTaskData() { SaveData.SaveDataFunc(); } private void CheckSpeedUpTaskData(int type = 1) { if (!GameHelper.IsGiftSwitch()) { return; } } public void AddMakeupTaskData() { } private void OnChange101(ChangeValue obj) { var val = obj.newValue - obj.oldValue; if (val > 0) { DataMgr.MaxCurrency101.Value += (int)val; } if (!DataMgr.IsShowRewardFly101.Value) { GameDispatcher.Instance.Dispatch(GameMsg.Update101Completed); } onChangeDollar?.Invoke(); } private void OnChange111(ChangeValue obj) { if (!DataMgr.IsShowRewardFly111.Value) { GameDispatcher.Instance.Dispatch(GameMsg.Update111Completed); } } private void NewDay(object obj) { DataMgr.IsShowOpenReward.Value = true; } private void RefreshADTaskData(object obj = null) { } private void AddIntWatchVideo(object obj = null) { if (DataMgr.MakeupTaskHistory.Value.Count > 0) { CheckSpeedUpTaskData(); } } private void AddWatchVideo(object obj = null) { DataMgr.VideoWatchCount.Value++; GameDispatcher.Instance.Dispatch(GameMsg.RefreshRedDot); int adNums = AdExchangeManager.Instance.GetLookRewardADNum(); adNums++; AdExchangeManager.Instance.SetLookRewardADNum(adNums); } 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 = DataMgr.Coin.Value; roomTicket += (int)rewardSingleData.GetTotalValue(); DataMgr.Coin.Value = roomTicket; } break; case 102: { var dollar = DataMgr.Ticket.Value; dollar += rewardSingleData.GetTotalValue(); DataMgr.Ticket.Value = dollar; break; } case 111: { var dollar = DataMgr.PlayReawrd111.Value; dollar += rewardSingleData.GetTotalValue(); DataMgr.PlayReawrd111.Value = dollar; break; } } } } }