Main/Config/ConfigManager.cs
@@ -69,6 +69,7 @@ typeof(PlayerAttrConfig), typeof(PlayerFaceConfig), typeof(PriorBundleConfig), typeof(SignInConfig), typeof(StoreConfig), typeof(SuccessConfig), typeof(SysInfoConfig), @@ -290,6 +291,8 @@ ClearConfigDictionary<PlayerFaceConfig>(); // 清空 PriorBundleConfig 字典 ClearConfigDictionary<PriorBundleConfig>(); // 清空 SignInConfig 字典 ClearConfigDictionary<SignInConfig>(); // 清空 StoreConfig 字典 ClearConfigDictionary<StoreConfig>(); // 清空 SuccessConfig 字典 Main/Config/Configs/SignInConfig.cs
New file @@ -0,0 +1,41 @@ //-------------------------------------------------------- // [Author]: YYL // [ Date ]: 2025年11月10日 //-------------------------------------------------------- using System.Collections.Generic; using System; using UnityEngine; using LitJson; public partial class SignInConfig : ConfigBase<int, SignInConfig> { static SignInConfig() { // 访问过静态构造函数 visit = true; } public int SignDay; public int[][] AwardItemList; public override int LoadKey(string _key) { int key = GetKey(_key); return key; } public override void LoadConfig(string input) { try { string[] tables = input.Split('\t'); int.TryParse(tables[0],out SignDay); AwardItemList = JsonMapper.ToObject<int[][]>(tables[1].Replace("(", "[").Replace(")", "]")); } catch (Exception exception) { Debug.LogError(exception); } } } Main/Config/Configs/SignInConfig.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: d6304eddfd727124e9bfb7266018e81d MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Core/NetworkPackage/ClientPack/CA5_Function/CA509_tagCSDaySign.cs
New file @@ -0,0 +1,18 @@ using UnityEngine; using System.Collections; //A5 09 玩家签到领奖 #tagCSDaySign public class CA509_tagCSDaySign : GameNetPackBasic { public byte Day; // 第x天,从1开始 public CA509_tagCSDaySign () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA509; } public override void WriteToBytes () { WriteBytes (Day, NetDataType.BYTE); } } Main/Core/NetworkPackage/ClientPack/CA5_Function/CA509_tagCSDaySign.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: c10a6d62687b4004ca4b36bfbde99e67 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30D_tagSCDaySignInfo.cs
New file @@ -0,0 +1,12 @@ using UnityEngine; using System.Collections; //A3 0D 玩家签到信息记录 # tagSCDaySignInfo public class DTCA30D_tagSCDaySignInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HA30D_tagSCDaySignInfo vNetData = vNetPack as HA30D_tagSCDaySignInfo; SignManager.Instance.UpdateSignInfo(vNetData); } } Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30D_tagSCDaySignInfo.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 37443778b58334c48bbd3ebe5696ceb9 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -123,6 +123,7 @@ Register(typeof(HA340_tagSCSuccessInfoList), typeof(DTCA340_tagSCSuccessInfoList)); Register(typeof(HA342_tagSCSuccessAwardRecordList), typeof(DTCA342_tagSCSuccessAwardRecordList)); Register(typeof(HB128_tagSCLLMJInfo), typeof(DTCB128_tagSCLLMJInfo)); Register(typeof(HA30D_tagSCDaySignInfo), typeof(DTCA30D_tagSCDaySignInfo)); } //主工程注册封包 Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30D_tagSCDaySignInfo.cs
New file @@ -0,0 +1,19 @@ using UnityEngine; using System.Collections; //A3 0D 玩家签到信息记录 # tagSCDaySignInfo public class HA30D_tagSCDaySignInfo : GameNetPackBasic { public byte Count; public byte[] SignStateList; //每日签到状态记录列表 [第1天状态, ...] 状态:0-不可签到;1-已签到;2-可补签;3-已领取 public HA30D_tagSCDaySignInfo () { _cmd = (ushort)0xA30D; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out Count, vBytes, NetDataType.BYTE); TransBytes (out SignStateList, vBytes, NetDataType.BYTE, Count); } } Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30D_tagSCDaySignInfo.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 5aa3f24d1c3aa3b428eff1b075952478 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/Main.cs
@@ -85,6 +85,7 @@ managers.Add(BattlePassManager.Instance); managers.Add(TianziBillboradManager.Instance); managers.Add(ExpSecretCollectionManager.Instance); managers.Add(SignManager.Instance); foreach (var manager in managers) { manager.Init(); Main/System/DayMission/SignCell.cs
New file @@ -0,0 +1,131 @@ using System; using System.Linq; using UnityEngine; using UnityEngine.UI; public class SignCell : MonoBehaviour { [SerializeField] Image bgImg; [SerializeField] Text dayText; [SerializeField] ItemCell[] itemCells; [SerializeField] Transform[] gotRects; [SerializeField] Transform nowSelectRect; [SerializeField] Transform repairRect; [SerializeField] Button signBtn; public void Display(int index) { var day = index + 1; var config = SignInConfig.Get(day); //状态:0-不可签到;1-已签到;2-可补签;3-已领取 var state = SignManager.Instance.GetSignDayState(day); for (int i = 0; i < itemCells.Length; i++) { if (i < config.AwardItemList.Length) { itemCells[i].SetActive(true); int itemID = config.AwardItemList[i][0]; itemCells[i].Init(new ItemCellModel(itemID, false, config.AwardItemList[i][1])); itemCells[i].button.AddListener(()=> { if (state == 1 || state == 2) { Sign(day); return; } ItemTipUtility.Show(itemID); }); } else { itemCells[i].SetActive(false); } } if (state == 1) { //可领取 bgImg.SetOrgSprite("Sign_img_54", "Sign"); nowSelectRect.SetActive(true); for (int i = 0; i < gotRects.Length; i++) { gotRects[i].SetActive(false); } repairRect.SetActive(false); } else if (state == 2) { //补签 bgImg.SetOrgSprite("Sign_img_58", "Sign"); nowSelectRect.SetActive(false); for (int i = 0; i < gotRects.Length; i++) { gotRects[i].SetActive(false); } repairRect.SetActive(true); } else if (state == 3) { //已领取 bgImg.SetOrgSprite("Sign_img_57", "Sign"); nowSelectRect.SetActive(false); for (int i = 0; i < gotRects.Length; i++) { gotRects[i].SetActive(true); } repairRect.SetActive(false); } else { //不可签到 bgImg.SetOrgSprite("Sign_img_58", "Sign"); nowSelectRect.SetActive(false); for (int i = 0; i < gotRects.Length; i++) { gotRects[i].SetActive(false); } repairRect.SetActive(false); } dayText.text = state == 3 ? Language.Get("Sign2") : Language.Get("SignDay" + day); signBtn.AddListener(() => { if (state == 1 || state == 2) { Sign(day); return; } }); } void Sign(int day) { var state = SignManager.Instance.GetSignDayState(day); if (state == 2) { ConfirmCancel.MoneyIconConfirm(SignManager.Instance.repairSignMoney, SignManager.Instance.repairSignMoneyType, Language.Get("Sign3", UIHelper.GetIconNameWithMoneyType(SignManager.Instance.repairSignMoneyType), SignManager.Instance.repairSignMoney), (bool isOk, bool isToggle) => { if (isOk) { var pack = new CA509_tagCSDaySign(); pack.Day = (byte)day; GameNetSystem.Instance.SendInfo(pack); } }); return; } var pack = new CA509_tagCSDaySign(); pack.Day = (byte)day; GameNetSystem.Instance.SendInfo(pack); } } Main/System/DayMission/SignCell.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 9e571a902b764294b8f222eeeb60ff3b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/DayMission/SignManager.cs
New file @@ -0,0 +1,72 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class SignManager : GameSystemManager<SignManager> { public int repairSignMoneyType; public int repairSignMoney; public byte[] signStateList = new byte[7]; public event Action OnSignEvent; public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; ParseConfig(); } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; } void OnBeforePlayerDataInitialize() { signStateList = new byte[7]; } void ParseConfig() { var config = FuncConfigConfig.Get("SignInSet"); var arr = ConfigParse.GetMultipleStr<int>(config.Numerical1); repairSignMoneyType = arr[0]; repairSignMoney = arr[1]; } public void UpdateSignInfo(HA30D_tagSCDaySignInfo netPack) { signStateList = netPack.SignStateList; OnSignEvent?.Invoke(); UpdateRedpoint(); } //状态:0-不可签到;1-已签到;2-可补签;3-已领取 public int GetSignDayState(int day) { return signStateList[day - 1]; } public Redpoint redPointSign = new Redpoint(MainRedDot.RightFuncRedpoint, MainRedDot.RedPoint_SignKey); void UpdateRedpoint() { if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DaySign)) { return; } foreach (var item in signStateList) { if (item == 1) { redPointSign.state = RedPointState.Simple; return; } } redPointSign.state = RedPointState.None; } } Main/System/DayMission/SignManager.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 216787bcde983c14fafc47d400400eed MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/DayMission/SignWin.cs
New file @@ -0,0 +1,35 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //日常任务 public class SignWin : UIBase { [SerializeField] SignCell[] signCells; protected override void OnPreOpen() { SignManager.Instance.OnSignEvent += Display; Display(); } protected override void OnPreClose() { SignManager.Instance.OnSignEvent -= Display; } void Display() { for (int i = 0; i < signCells.Length; i++) { signCells[i].Display(i); } } } Main/System/DayMission/SignWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: 49080bb35cc18c747b6c174d3e69918b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Main/System/Main/RightFuncInHome.cs
@@ -16,6 +16,7 @@ [SerializeField] Button dayMissionBtn; [SerializeField] Button battlePassBtn; [SerializeField] Button llmjBtn; //历练秘笈 [SerializeField] Button signBtn; static string listenWindowName = ""; //监听关闭时再显示 @@ -71,6 +72,13 @@ ListenWindow("ExpSecretCollectionWin"); UIManager.Instance.OpenWindow<ExpSecretCollectionWin>(); }); signBtn.AddListener(() => { //用于监听界面,打开时缩进右边功能栏,关闭时显示 ListenWindow("SignWin"); UIManager.Instance.OpenWindow<SignWin>(); }); } void ShowBtns() @@ -79,6 +87,8 @@ dayMissionBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DayMission)); battlePassBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BattlePass)); llmjBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.LLMJ)); signBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.DaySign)); // monthCardBtn.SetActive(FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.MonthCard)); } Main/System/Redpoint/MainRedDot.cs
@@ -56,6 +56,9 @@ //历练秘笈 public const int RedPoint_LLMJKey = 106; //签到 public const int RedPoint_SignKey = 107; //武将卡 Main/System/Tip/ConfirmCancel.cs
@@ -333,6 +333,7 @@ public static void MoneyIconConfirm(int moneyCnt, int _moneyType, string content, Action<bool, bool> func) { generalContent = content; toggleContent = ""; OnToggleConfirmEvent = func; moneyType = _moneyType; moneyNeedCount = moneyCnt;