using System.Collections.Generic; using UnityEngine.UI; using System.Linq; using LitJson; using System; //一些小功能少量代码存放 public class SmallFuncManager : GameSystemManager { public Dictionary playerRewardDict = new Dictionary(); //A3 0C 玩家各奖励类型领取记录信息 #tagMCPlayerRewardGetRecord public event Action OnPlayerRewardEvent; public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk; UIManager.Instance.OnCloseWindow += OnCloseWindow; } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk; UIManager.Instance.OnCloseWindow -= OnCloseWindow; } public void OnBeforePlayerDataInitialize() { playerRewardDict.Clear(); } void OnPlayerLoginOk() { UpdateReviewRedpoint(); } void OnCloseWindow(UIBase win) { if (win is StoryBossBattleWin) { //刚好过关的时候推送 if (PlayerDatas.Instance.baseData.ExAttr1 == (GeneralDefine.review_MainLevel + 1) * 100 && IsReviewOpen()) { PopupWindowsProcessor.Instance.Add("GoodReviewWin"); UpdateReviewRedpoint(); } } } public void UpdatePlayerReward(HA30C_tagMCPlayerRewardGetRecord pack) { playerRewardDict[pack.RewardType] = (int)pack.RewardGetRecord; UpdateReviewRedpoint(); OnPlayerRewardEvent?.Invoke(); } #region 好评 //是否显示好评 1.达到通关条件 2.该渠道有好评功能,3. 未领取奖励(未评价) public bool IsReviewOpen() { if (PlayerDatas.Instance.baseData.ExAttr1 / 100 <= GeneralDefine.review_MainLevel) { return false; } if (!GeneralDefine.review_UrlDict.ContainsKey(SDKUtils.channelSign) && VersionConfig.Get().versionAuthority == VersionAuthority.Release) { return false; } if (GetReviewState() == 2) { return false; } // 奖励 return true; } // 好评红点 Redpoint reviewRedpoint = new Redpoint(MainRedDot.RightFuncRedpoint, MainRedDot.RedPoint_Review); void UpdateReviewRedpoint() { reviewRedpoint.state = IsReviewOpen() ? RedPointState.Simple : RedPointState.None; } //评分仅可领1次 0 未评分 1 可领取 2 已领取 public int GetReviewState() { if (!playerRewardDict.ContainsKey(35) || playerRewardDict[35] == 0) { var clickTime = LocalSave.GetInt("review" + PlayerDatas.Instance.baseData.PlayerID); if (clickTime == 0) { return 0; } if (TimeUtility.AllSeconds - clickTime > GeneralDefine.review_CD) { return 1; } return 0; } return 2; } #endregion }