From 3963fc611a6962a96ab790cef9d9b8d5f51f38ce Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 06 三月 2026 17:30:24 +0800
Subject: [PATCH] 530 子 【运营需求】前往评价功能 / 【运营需求】前往评价功能-客户端
---
Main/System/SmallFunc/SmallFuncManager.cs | 116 +++++++++++++++++++
Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs | 2
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs | 13 ++
Main/System/SmallFunc/GoodReviewWin.cs | 76 ++++++++++++
Main/System/SmallFunc/GoodReviewWin.cs.meta | 11 +
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs.meta | 11 +
Main/System/Redpoint/MainRedDot.cs | 3
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs | 19 +++
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs.meta | 11 +
Main/System/Main/RightFuncInHome.cs | 6 +
Main/System/SmallFunc.meta | 8 +
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs | 1
Main/System/GeneralConfig/GeneralDefine.cs | 11 +
Main/Main.cs | 1
Main/SDK/SDKUtils.cs | 2
Main/System/SmallFunc/SmallFuncManager.cs.meta | 11 +
16 files changed, 300 insertions(+), 2 deletions(-)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
index 3606984..665129e 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -5,7 +5,7 @@
public class DTC0102_tagCDBPlayer : DtcBasic
{
- public static event Action beforePlayerDataInitializeEvent; //閲嶇櫥鍒囨崲璐﹀彿 鎴栬�� 鐭殏鐨勬柇绾块噸杩� 閮戒細瑙﹀彂,(鎱庣敤锛侊紒锛�)
+ public static event Action beforePlayerDataInitializeEvent; //閲嶇櫥鍒囨崲璐﹀彿 鎴栬�� 鐭殏鐨勬柇绾块噸杩� 閮戒細瑙﹀彂 (閫夋嫨鎬т娇鐢紒锛侊紒)
public static event Action beforePlayerDataInitializeEventOnRelogin; //閲嶇櫥鍒囨崲璐﹀彿瑙﹀彂 锛堝ぇ澶氭儏鍐电敤杩欎釜锛屾敞鎰忔湇鍔$浼氬彂鍖呭垪琛ㄧ被鐨勫瓨鍌ㄩ噸澶嶆坊鍔犵殑鎯呭喌锛�
public static event Action beforePlayerDataInitializeEventOnReconnect; //鍚岃处鍙锋柇绾块噸杩炶Е鍙�
public static event Action afterPlayerDataInitializeEvent;
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs
new file mode 100644
index 0000000..1a4e8c8
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+//A3 0C 鐜╁鍚勫鍔辩被鍨嬮鍙栬褰曚俊鎭� #tagMCPlayerRewardGetRecord
+
+public class DTCA30C_tagMCPlayerRewardGetRecord : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack) {
+ base.Done(vNetPack);
+ HA30C_tagMCPlayerRewardGetRecord vNetData = vNetPack as HA30C_tagMCPlayerRewardGetRecord;
+ SmallFuncManager.Instance.UpdatePlayerReward(vNetData);
+
+ }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs.meta
new file mode 100644
index 0000000..2bc3f33
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30C_tagMCPlayerRewardGetRecord.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f6149834f7edcb74cb112ba34d865e88
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index 2a5c795..cd1d7ef 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -155,6 +155,7 @@
Register(typeof(HAA89_tagMCActLunhuidianPlayerInfo), typeof(DTCAA89_tagMCActLunhuidianPlayerInfo));
Register(typeof(HA124_tagMCPlayerInfo), typeof(DTCA124_tagMCPlayerInfo));
Register(typeof(HA106_tagMCCoinToGoldReport), typeof(DTCA106_tagMCCoinToGoldReport));
+ Register(typeof(HA30C_tagMCPlayerRewardGetRecord), typeof(DTCA30C_tagMCPlayerRewardGetRecord));
}
//涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs
new file mode 100644
index 0000000..3b7d032
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs
@@ -0,0 +1,19 @@
+using UnityEngine;
+using System.Collections;
+
+//A3 0C 鐜╁鍚勫鍔辩被鍨嬮鍙栬褰曚俊鎭� #tagMCPlayerRewardGetRecord
+
+public class HA30C_tagMCPlayerRewardGetRecord : GameNetPackBasic {
+ public byte RewardType; //濂栧姳绫诲瀷
+ public uint RewardGetRecord; // 鎸変簩杩涘埗浣嶆爣绀洪鍙栬褰�
+
+ public HA30C_tagMCPlayerRewardGetRecord () {
+ _cmd = (ushort)0xA30C;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out RewardType, vBytes, NetDataType.BYTE);
+ TransBytes (out RewardGetRecord, vBytes, NetDataType.DWORD);
+ }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs.meta
new file mode 100644
index 0000000..90d31ea
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30C_tagMCPlayerRewardGetRecord.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 842a0ed9f41346846ba3d8c619c09112
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Main.cs b/Main/Main.cs
index 8e019f4..9152a48 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -107,6 +107,7 @@
managers.Add(TimingGiftManager.Instance);
managers.Add(SettingDataManager.Instance);
managers.Add(TimeRushManager.Instance);
+ managers.Add(SmallFuncManager.Instance);
foreach (var manager in managers)
{
diff --git a/Main/SDK/SDKUtils.cs b/Main/SDK/SDKUtils.cs
index 35f34f2..9c94b88 100644
--- a/Main/SDK/SDKUtils.cs
+++ b/Main/SDK/SDKUtils.cs
@@ -56,7 +56,7 @@
get; private set;
}
- public static string channelSign; //涓嶅悓娓犻亾鐨勬墦鍖呮爣璇�
+ public static string channelSign = ""; //涓嶅悓娓犻亾鐨勬墦鍖呮爣璇�
// 鏄惁鍚屾剰闅愮鏀跨瓥
public bool IsAgreeSecret = false;
diff --git a/Main/System/GeneralConfig/GeneralDefine.cs b/Main/System/GeneralConfig/GeneralDefine.cs
index d8cf231..f35096e 100644
--- a/Main/System/GeneralConfig/GeneralDefine.cs
+++ b/Main/System/GeneralConfig/GeneralDefine.cs
@@ -44,6 +44,10 @@
public static int lvExpFullTipLimit { get; private set; }
public static Dictionary<string, string> commonAwardTipDict { get; private set; }
+ public static int[][] review_Awards;
+ public static Dictionary<string, string> review_UrlDict;
+ public static int review_MainLevel;
+ public static int review_CD;
public static void Init()
{
try
@@ -100,6 +104,13 @@
config = FuncConfigConfig.Get("AwardEventTip");
commonAwardTipDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical1);
+
+ config = FuncConfigConfig.Get("GoodGameReward");
+ review_Awards = JsonMapper.ToObject<int[][]>(config.Numerical1);
+ config = FuncConfigConfig.Get("Review");
+ review_UrlDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical2);
+ review_MainLevel = int.Parse(config.Numerical3);
+ review_CD = int.Parse(config.Numerical4);
}
catch (Exception ex)
{
diff --git a/Main/System/Main/RightFuncInHome.cs b/Main/System/Main/RightFuncInHome.cs
index 4eb474d..cbb314f 100644
--- a/Main/System/Main/RightFuncInHome.cs
+++ b/Main/System/Main/RightFuncInHome.cs
@@ -18,6 +18,7 @@
[SerializeField] Button llmjBtn; //鍘嗙粌绉樼瑘
[SerializeField] Button signBtn;
[SerializeField] Button previewBtn;
+ [SerializeField] Button reviewBtn; //濂借瘎
static string listenWindowName = ""; //鐩戝惉鍏抽棴鏃跺啀鏄剧ず
@@ -87,6 +88,10 @@
ListenWindow("FunctionPreviewWin");
UIManager.Instance.OpenWindow<FunctionPreviewWin>();
});
+ reviewBtn.AddListener(() =>
+ {
+ UIManager.Instance.OpenWindow<GoodReviewWin>();
+ });
}
void OnDestroy()
@@ -104,6 +109,7 @@
signBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DaySign));
monthCardBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.PrivilegeCard));
previewBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.FunctionPreview));
+ reviewBtn.SetActive(SmallFuncManager.Instance.IsReviewOpen());
}
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index d612f4d..ee54644 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -83,6 +83,9 @@
public const int RedPoint_GuaBao = 118;
//鍛芥牸
public const int RedPoint_Mingge = 119;
+ //濂借瘎绂忓埄
+ public const int RedPoint_Review = 120;
+
//姝﹀皢鍗�
public const int HeroCardRedpoint = 200;
public Redpoint HeroListRedpoint = new Redpoint(MainHerosRedpoint, HeroCardRedpoint);
diff --git a/Main/System/SmallFunc.meta b/Main/System/SmallFunc.meta
new file mode 100644
index 0000000..448265b
--- /dev/null
+++ b/Main/System/SmallFunc.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d87e877ec143c7f42b49d2659587f18a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/SmallFunc/GoodReviewWin.cs b/Main/System/SmallFunc/GoodReviewWin.cs
new file mode 100644
index 0000000..459024f
--- /dev/null
+++ b/Main/System/SmallFunc/GoodReviewWin.cs
@@ -0,0 +1,76 @@
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+//濂借瘎
+public class GoodReviewWin : UIBase
+{
+ [SerializeField] ItemCell[] itemCells;
+ [SerializeField] Button goBtn;
+ [SerializeField] Text goBtnText; //鍓嶅線璇勪环 Review2 / 棰嗗彇濂栧姳 Review4
+
+
+ protected override void InitComponent()
+ {
+ goBtn.AddListener(()=>
+ {
+ if (SmallFuncManager.Instance.IsReviewOpen())
+ {
+ if (SmallFuncManager.Instance.GetReviewState() == 1)
+ {
+ //棰嗗彇濂栧姳
+ var pack = new CA504_tagCMPlayerGetReward();
+ pack.RewardType = 35;
+ GameNetSystem.Instance.SendInfo(pack);
+ CloseWindow();
+ return;
+ }
+
+ if (!string.IsNullOrEmpty(SDKUtils.channelSign))
+ {
+ //鍓嶅線璇勪环
+ Application.OpenURL(GeneralDefine.review_UrlDict[SDKUtils.channelSign]);
+ }
+ LocalSave.SetInt("review" + PlayerDatas.Instance.baseData.PlayerID, TimeUtility.AllSeconds);
+ }
+ });
+ }
+
+
+ protected override void OnPreOpen()
+ {
+ GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+ for (int i = 0; i < itemCells.Length; i++)
+ {
+ if (i < GeneralDefine.review_Awards.Length)
+ {
+ itemCells[i].SetActive(true);
+ var itemID = GeneralDefine.review_Awards[i][0];
+ itemCells[i].Init(new ItemCellModel(itemID, false, GeneralDefine.review_Awards[i][1]));
+ itemCells[i].button.AddListener(() =>
+ {
+ ItemTipUtility.Show(itemID);
+ });
+ }
+ else
+ {
+ itemCells[i].SetActive(false);
+ }
+ }
+
+ goBtnText.text = SmallFuncManager.Instance.GetReviewState() == 1 ? Language.Get("Review4") : Language.Get("Review2");
+ }
+
+ protected override void OnPreClose()
+ {
+ GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
+ }
+
+ void OnSecondEvent()
+ {
+ goBtnText.text = SmallFuncManager.Instance.GetReviewState() == 1 ? Language.Get("Review4") : Language.Get("Review2");
+ }
+
+
+
+}
diff --git a/Main/System/SmallFunc/GoodReviewWin.cs.meta b/Main/System/SmallFunc/GoodReviewWin.cs.meta
new file mode 100644
index 0000000..ef9bc1f
--- /dev/null
+++ b/Main/System/SmallFunc/GoodReviewWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: decdd0e3914df2f4a8ced80ac3ae6d4f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/SmallFunc/SmallFuncManager.cs b/Main/System/SmallFunc/SmallFuncManager.cs
new file mode 100644
index 0000000..96000bc
--- /dev/null
+++ b/Main/System/SmallFunc/SmallFuncManager.cs
@@ -0,0 +1,116 @@
+锘縰sing System.Collections.Generic;
+using UnityEngine.UI;
+using System.Linq;
+using LitJson;
+using System;
+
+//涓�浜涘皬鍔熻兘灏戦噺浠g爜瀛樻斁
+public class SmallFuncManager : GameSystemManager<SmallFuncManager>
+{
+
+ public Dictionary<int, int> playerRewardDict = new Dictionary<int, int>(); //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
+}
+
diff --git a/Main/System/SmallFunc/SmallFuncManager.cs.meta b/Main/System/SmallFunc/SmallFuncManager.cs.meta
new file mode 100644
index 0000000..c2ab9ba
--- /dev/null
+++ b/Main/System/SmallFunc/SmallFuncManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 63a1f22377829424cab384d0ce8401ea
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
--
Gitblit v1.8.0