hch
18 小时以前 db1dc1f89b55406136b5b1d1620b6c8d5acc9e61
216 【福利内容】每日签到
6个文件已修改
14个文件已添加
424 ■■■■■ 已修改文件
Main/Config/ConfigManager.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/SignInConfig.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/SignInConfig.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA509_tagCSDaySign.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ClientPack/CA5_Function/CA509_tagCSDaySign.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30D_tagSCDaySignInfo.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30D_tagSCDaySignInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30D_tagSCDaySignInfo.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HA3_Function/HA30D_tagSCDaySignInfo.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/SignCell.cs 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/SignCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/SignManager.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/SignManager.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/SignWin.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/SignWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/RightFuncInHome.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Redpoint/MainRedDot.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Tip/ConfirmCancel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;