hch
1 天以前 f2c78eecd49edc328225b77492e7f45e157bad02
197 子 【内政】淘金系统 / 【内政】淘金系统-客户端
8个文件已修改
8个文件已添加
528 ■■■■■ 已修改文件
Main/Component/UI/Common/CountControler.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/OrderInfoConfig.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/GoldRushItemConfig.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/GoldRushItemConfig.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/OrderInfoConfig.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/AffairBaseWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoBuyWin.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoBuyWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoCell.cs 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoWin.cs 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushAutoWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushLeader.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/InternalAffairs/GoldRushManager.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Setting/QuickSetting.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/TimeUtility.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Component/UI/Common/CountControler.cs
@@ -15,6 +15,7 @@
    int count;  //当前数量
    int maxCount;   //最大数量
    string format;
    Action<int> OnChangeEvent;
    Func<int, bool> CanAddEvent;
@@ -60,13 +61,15 @@
    }
    public void Init(Action<int> _OnChangeEvent, int _maxCount, int _count = 1, Func<int, bool> _CanAddEvent = null, Func<int, bool> _CanDecEvent = null)
    public void Init(Action<int> _OnChangeEvent, int _maxCount, int _count = 1,
    Func<int, bool> _CanAddEvent = null, Func<int, bool> _CanDecEvent = null, string _format="{0}/{1}")
    {
        count = _count;
        maxCount = _maxCount;
        OnChangeEvent = _OnChangeEvent;
        CanAddEvent = _CanAddEvent;
        CanDecEvent = _CanDecEvent;
        format = _format;
        Refresh();
@@ -99,7 +102,7 @@
            decBtn.SetColorful(null, true);
        }
        countText.text = count + "/" + maxCount;
        countText.text = string.Format(format, count, maxCount);
        OnChangeEvent?.Invoke(count);
    }
Main/Config/Configs/OrderInfoConfig.cs
@@ -19,7 +19,7 @@
    public int id;
    public string OrderInfo;
    public string AppId;
    public float PayRMBNum;
    public float PayRMBNum; //打折请使用 PayRMBNumOnSale(0.1折)
    public int CTGID;
    public float UsdMoney;
    public string StoreOrderInfo;
Main/Config/PartialConfigs/GoldRushItemConfig.cs
New file
@@ -0,0 +1,52 @@
using System.Collections.Generic;
using UnityEngine;
public partial class GoldRushItemConfig : ConfigBase<int, GoldRushItemConfig>
{
    //物品ID:等级:配置
    public static Dictionary<int, Dictionary<int, GoldRushItemConfig>> configDics = new Dictionary<int, Dictionary<int, GoldRushItemConfig>>();
    public static Dictionary<int, int> maxLVDic = new Dictionary<int, int>();
    protected override void OnConfigParseCompleted()
    {
        Dictionary<int, GoldRushItemConfig> tempDic = null;
        if (!configDics.TryGetValue(ItemID, out tempDic))
        {
            tempDic = new Dictionary<int, GoldRushItemConfig>();
            configDics.Add(ItemID, tempDic);
        }
        tempDic[ItemLV] = this;
        if (!maxLVDic.ContainsKey(ItemID))
        {
            maxLVDic.Add(ItemID, ItemLV);
        }
        else if (maxLVDic[ItemID] < ItemLV)
        {
            maxLVDic[ItemID] = ItemLV;
        }
    }
    public static GoldRushItemConfig GetConfig(int itemID, int itemLV)
    {
        if (configDics.ContainsKey(itemID))
        {
            if (configDics[itemID].ContainsKey(itemLV))
            {
                return configDics[itemID][itemLV];
            }
        }
        return null;
    }
    public static int GetMaxLV(int itemID)
    {
        if (maxLVDic.ContainsKey(itemID))
        {
            return maxLVDic[itemID];
        }
        return 0;
    }
}
Main/Config/PartialConfigs/GoldRushItemConfig.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 80844d617cff2f641abc9e1b1ed3af1d
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Config/PartialConfigs/OrderInfoConfig.cs
@@ -7,7 +7,7 @@
    {
        get
        {
            return PayRMBNum * 0.01f;
            return PayRMBNum * 1f;
        }
    }
Main/System/InternalAffairs/AffairBaseWin.cs
@@ -36,7 +36,7 @@
        );
        autoBtn.AddListener(() =>
            {
                // UIManager.Instance.OpenWindow<RolePackWin>();
                UIManager.Instance.OpenWindow<GoldRushAutoWin>();
            }
        );
    }
Main/System/InternalAffairs/GoldRushAutoBuyWin.cs
New file
@@ -0,0 +1,53 @@
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 淘金自动续费
/// </summary>
public class GoldRushAutoBuyWin : UIBase
{
    [SerializeField] Text timeText;
    [SerializeField] Button closeBtn;
    [SerializeField] Button buyBtn;
    [SerializeField] Text buyText;
    [SerializeField] Text buyTipsText;
    protected override void InitComponent()
    {
        closeBtn.AddListener(CloseWindow);
        buyBtn.AddListener(Buy);
    }
    protected override void OnPreOpen()
    {
        Display();
    }
    void Display()
    {
        var endTime = GoldRushManager.Instance.housekeeperEndTime;
        if (endTime > 0 && TimeUtility.AllSeconds < endTime)
        {
            //续费
            buyTipsText.text = Language.Get("GoldRush45", GoldRushManager.Instance.buyAutoDaysList[0]);
            RechargeManager.Instance.TryGetOrderInfo(GoldRushManager.Instance.buyAutoCTGIDList[0], out var orderInfo);
            buyText.text = Language.Get("PayMoneyNum", orderInfo.PayRMBNumOnSale);
            timeText.text = Language.Get("GoldRush48") + TimeUtility.SecondsToShortDHMS(endTime - TimeUtility.AllSeconds);
        }
    }
    void Buy()
    {
        RechargeManager.Instance.CTG(GoldRushManager.Instance.buyAutoCTGIDList[0]);
    }
}
Main/System/InternalAffairs/GoldRushAutoBuyWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 33ba65a3f56d8f34b8691205856bd689
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/InternalAffairs/GoldRushAutoCell.cs
New file
@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//自动淘金选项
public class GoldRushAutoCell : CellView
{
    [SerializeField] Toggle autoToggle;
    [SerializeField] ItemCell itemCell;
    [SerializeField] Text nameText;
    [SerializeField] CountControler countControler;
    [SerializeField] Transform lockGo;
    [SerializeField] Text lockText;
    int arrIndex;
    int itemLV;
    public void Display(int _index)
    {
        arrIndex = _index;
        int itemID = GoldRushManager.Instance.autoRefreshItemIDs[arrIndex];
        itemLV = GoldRushManager.Instance.GetAutoItemLV(arrIndex);
        bool isOn = itemLV > 0;
        itemLV = itemLV > 0 ? itemLV : 1;
        if (IsLock(itemID, out int funcID))
        {
            lockGo.SetActive(true);
            lockText.text = Language.Get("L1038", FuncOpenLVConfig.Get(funcID).Name);
            countControler.SetActive(false);
            autoToggle.SetActive(false);
        }
        else
        {
            lockGo.SetActive(false);
            countControler.SetActive(true);
            autoToggle.SetActive(true);
            autoToggle.onValueChanged.AddListener((value) =>
            {
                autoToggle.isOn = value;
                GoldRushManager.Instance.SetAutoItemLV(arrIndex, value ? itemLV : 0);
            });
            autoToggle.isOn = isOn;
            countControler.Init(ChangeWorkerCount, GoldRushItemConfig.maxLVDic[itemID], itemLV,
            AddWorker, DecWorker, Language.Get("L1113"));
        }
        var config = GoldRushItemConfig.GetConfig(itemID, itemLV);
        if (config == null)
        {
            return;
        }
        itemCell.Init(new ItemCellModel(itemID, false, config.ItemCount));
        itemCell.button.AddListener(() =>
        {
            ItemTipUtility.Show(itemID);
        });
        nameText.text = GoldRushManager.Instance.GetCampItemName(config);
    }
    bool IsLock(int itemID, out int funcID)
    {
        funcID = 0;
        if (GoldRushManager.Instance.itemIDUnLockFuncIDDict.ContainsKey(itemID))
        {
            funcID = GoldRushManager.Instance.itemIDUnLockFuncIDDict[itemID];
            if (!FuncOpen.Instance.IsFuncOpen(funcID))
            {
                return true;
            }
            return false;
        }
        return false;
    }
    void ChangeWorkerCount(int lv)
    {
        itemLV = lv;
        if (!autoToggle.isOn)
        {
            return;
        }
        if (lv == GoldRushManager.Instance.GetAutoItemLV(arrIndex))
        {
            return;
        }
        GoldRushManager.Instance.SetAutoItemLV(arrIndex, lv);
    }
    bool AddWorker(int lv)
    {
        return true;
    }
    bool DecWorker(int count)
    {
        if (count <= 1)
        {
            return false;
        }
        return true;
    }
}
Main/System/InternalAffairs/GoldRushAutoCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3f0259002f47d514696f222259447f74
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/InternalAffairs/GoldRushAutoWin.cs
New file
@@ -0,0 +1,166 @@
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 淘金自动
/// </summary>
public class GoldRushAutoWin : UIBase
{
    [SerializeField] ScrollerController autoScroller;
    [SerializeField] Toggle autoRefreshToggle;
    [SerializeField] Button freeBtn;
    [SerializeField] Transform notFreeGo;
    [SerializeField] Button buyBtn;
    [SerializeField] Text buyText;
    [SerializeField] Text buyTipsText;
    [SerializeField] Button autoBtn;
    [SerializeField] Text autoText;
    [SerializeField] Text timeText;
    protected override void InitComponent()
    {
        freeBtn.AddListener(UseFree);
        buyBtn.AddListener(Buy);
        autoBtn.AddListener(Auto);
        autoRefreshToggle.onValueChanged.AddListener((value)=>
        {
            autoRefreshToggle.isOn = value;
            GoldRushManager.Instance.isAutoRefreshItem = autoRefreshToggle.isOn;
        });
    }
    protected override void OnPreOpen()
    {
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        GoldRushManager.Instance.OnGoldRushInfoEvent += OnGoldRushInfoEvent;
        autoScroller.OnRefreshCell += OnRefreshCell;
        Display();
    }
    protected override void OnPreClose()
    {
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        GoldRushManager.Instance.OnGoldRushInfoEvent -= OnGoldRushInfoEvent;
        autoScroller.OnRefreshCell -= OnRefreshCell;
    }
    void Display()
    {
        CreateScroller();
        autoRefreshToggle.isOn = GoldRushManager.Instance.isAutoRefreshItem;
        DisplayBtns();
    }
    void CreateScroller()
    {
        autoScroller.Refresh();
        for (int i = 0; i < GoldRushManager.Instance.autoRefreshItemIDs.Length; i++)
        {
            autoScroller.AddCell(ScrollerDataType.Header, i);
        }
        autoScroller.Restart();
    }
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as GoldRushAutoCell;
        _cell.Display(cell.index);
    }
    void DisplayBtns()
    {
        var endTime = GoldRushManager.Instance.housekeeperEndTime;
        if (endTime == 0)
        {
            freeBtn.SetActive(true);
            notFreeGo.SetActive(false);
        }
        else if (TimeUtility.AllSeconds >= endTime)
        {
            //已过期
            freeBtn.SetActive(false);
            notFreeGo.SetActive(true);
            //购买
            buyBtn.SetActive(true);
            buyTipsText.text = Language.Get("GoldRush45", GoldRushManager.Instance.buyAutoDaysList[0]);
            RechargeManager.Instance.TryGetOrderInfo(GoldRushManager.Instance.buyAutoCTGIDList[0], out var orderInfo);
            buyText.text = Language.Get("PayMoneyNum", orderInfo.PayRMBNumOnSale);
            autoBtn.SetActive(false);
        }
        else
        {
            freeBtn.SetActive(false);
            notFreeGo.SetActive(true);
            //续费
            buyBtn.SetActive(true);
            buyTipsText.text = "";
            buyText.text = Language.Get("GoldRush27");
            autoBtn.SetActive(true);
            autoText.text = Language.Get(GoldRushManager.Instance.isOpenAuto ? "GoldRush46" : "GoldRush28");
            timeText.text = Language.Get("GoldRush29") + TimeUtility.SecondsToShortDHMS(endTime - TimeUtility.AllSeconds);
        }
    }
    void OnSecondEvent()
    {
        var endTime = GoldRushManager.Instance.housekeeperEndTime;
        if (endTime > 0 && TimeUtility.AllSeconds < endTime)
        {
            timeText.text = Language.Get("GoldRush29") + TimeUtility.SecondsToShortDHMS(endTime - TimeUtility.AllSeconds);
        }
    }
    void UseFree()
    {
        if (GoldRushManager.Instance.housekeeperEndTime != 0)
            return;
        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
        Language.Get("GoldRush47"), (bool isOK) =>
            {
                if (isOK)
                {
                    var pack = new CB039_tagCSGoldRushAutoFreeUse();
                    GameNetSystem.Instance.SendInfo(pack);
                }
            });
    }
    void Buy()
    {
        var endTime = GoldRushManager.Instance.housekeeperEndTime;
        if (endTime > 0 && TimeUtility.AllSeconds < endTime)
        {
            //续费
            UIManager.Instance.OpenWindow<GoldRushAutoBuyWin>();
        }
        else
        {
            //购买
            RechargeManager.Instance.CTG(GoldRushManager.Instance.buyAutoCTGIDList[0]);
        }
    }
    void Auto()
    {
        GoldRushManager.Instance.isOpenAuto = !GoldRushManager.Instance.isOpenAuto;
        autoText.text = Language.Get(GoldRushManager.Instance.isOpenAuto ? "GoldRush46" : "GoldRush28");
        SysNotifyMgr.Instance.ShowTip(GoldRushManager.Instance.isOpenAuto ? "GoldRush11" : "GoldRush12");
        CloseWindow();
    }
    void OnGoldRushInfoEvent()
    {
        DisplayBtns();
    }
}
Main/System/InternalAffairs/GoldRushAutoWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a9a45adebbe8cb548ac2647013890283
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/InternalAffairs/GoldRushLeader.cs
@@ -12,7 +12,7 @@
    [SerializeField] RectTransform leaderGo;
    [SerializeField] UIAlphaTween leaderWord;
    [SerializeField] Text leaderText;
    public float leaderScale = 0.6f;
    public float leaderScale = 0.8f;
    public Tween leaderSequence;
    private int leaderPosIndex = -1; //监工已达移动点
Main/System/InternalAffairs/GoldRushManager.cs
@@ -2,6 +2,7 @@
using LitJson;
using System.Collections.Generic;
using System.Linq;
//淘金功能
public class GoldRushManager : GameSystemManager<GoldRushManager>
@@ -59,6 +60,24 @@
    public event Action OnAutoWorkingEvent;
    //自动刷新物品,判断是ture开 false关, 因默认开启故值相反存储0是开,1是关
    public bool isAutoRefreshItem
    {
        get
        {
            //第十个数用于存储是否开启自动刷新,其他数用于存储物品等级
            var value = QuickSetting.Instance.GetQuickSettingValue<int>(QuickSettingType.AutoGoldRush, 10);
            return value == 0;
        }
        set
        {
            QuickSetting.Instance.SetQuickSetting<int>(QuickSettingType.AutoGoldRush, Convert.ToInt32(!value), 10);
            QuickSetting.Instance.SendPackage();
        }
    }
    //配置
    public int refreshMoneyType;
@@ -101,8 +120,11 @@
    public List<int> buyAutoDaysList = new List<int>();   //购买自动管家天数
    public List<int> buyAutoCTGIDList = new List<int>();   //购买自动管家CTGID
    public int[] autoRefreshItemIDs;    //自动刷新物品ID列表
    public PlayerDataType unLockMoneyType; //刷新用
    public override void Init()
    {
@@ -149,6 +171,7 @@
            buyAutoCTGIDList.Add(tmpArr2[i][0]);
        }
        autoRefreshItemIDs = JsonMapper.ToObject<int[]>(config.Numerical3);
    }
    void OnBeforePlayerDataInitialize()
@@ -557,5 +580,36 @@
        m_IsAutoWorking = _isAutoWorking;
        OnAutoWorkingEvent?.Invoke();
    }
    //自动淘金的物品,按物品id配置索引存储
    // 返回值0代表不勾选,数值代表等级,因默认是0,所以存储上 9代表不勾选,0代表等级1, 后续加1
    public int GetAutoItemLV(int index)
    {
        var value = QuickSetting.Instance.GetQuickSettingValue<int>(QuickSettingType.AutoGoldRush, index);
        if (value == 9)
        {
            return 0;
        }
        return value + 1;
    }
    //设置自动淘金的物品,按物品id配置索引存储
    // 参数0代表不勾选,数值代表等级,因默认是0,所以存储上 9代表不勾选,0代表等级1, 后续加1
    public void SetAutoItemLV(int index, int value)
    {
        if (value == 0)
        {
            value = 9;
        }
        else
        {
            value--;
        }
        QuickSetting.Instance.SetQuickSetting<int>(QuickSettingType.AutoGoldRush, value, index);
        QuickSetting.Instance.SendPackage();
    }
}
Main/System/Setting/QuickSetting.cs
@@ -17,6 +17,7 @@
        quickSettingDic.Add(QuickSettingType.AutoFight_Speed, new QuickSettingRange(QuickSettingType.AutoFight_Speed, 1, 1));
        quickSettingDic.Add(QuickSettingType.AutoFight_FightPower, new QuickSettingRange(QuickSettingType.AutoFight_FightPower, 2, 1));
        quickSettingDic.Add(QuickSettingType.AutoFight_Open, new QuickSettingRange(QuickSettingType.AutoFight_Open, 3, 1));
        quickSettingDic.Add(QuickSettingType.AutoGoldRush, new QuickSettingRange(QuickSettingType.AutoGoldRush, 4, 10, 1));  //自动淘金,9个物品值,1个自动刷新开关
        setting = new string(UCharacter, 100);
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
@@ -158,6 +159,7 @@
    AutoFight_Speed,    //几倍速度
    AutoFight_FightPower,   //是否高战力停止
    AutoFight_Open,    //是否开启自动战斗
    AutoGoldRush,   //自动淘金
}
public class QuickSettingRange
@@ -165,7 +167,7 @@
    public QuickSettingType type;
    public int index;
    public int length;
    public int single;
    public int single;  //其中的单个长度,默认和长度一样, 用于多个值合并1个类型中
    public QuickSettingRange(QuickSettingType type, int start, int length, int single = 0)
    {
Main/Utility/TimeUtility.cs
@@ -344,6 +344,34 @@
        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
    }
    //极简显示
    // x天x小时
    // x小时x分
    // x分
    // x秒
    public static string SecondsToShortDHMS(int _seconds)
    {
        int days = _seconds / 86400;
        int hours = _seconds % 86400 / 3600;
        int mins = _seconds % 3600 / 60;
        int seconds = _seconds % 60;
        if (days > 0)
        {
            return StringUtility.Contact(days, Language.Get("L1074"), hours, Language.Get("L1072"));
        }
        else if (hours > 0)
        {
            return StringUtility.Contact(hours, Language.Get("L1072"), mins, Language.Get("L1073"));
        }
        else if (mins > 0)
        {
            return StringUtility.Contact(mins, Language.Get("L1073"));
        }
        return StringUtility.Contact(seconds, Language.Get("L1075"));
    }
    //例子
    //大于24小时显示:x天xx小时xx分
    //小于24小时显示:xx:xx:xx