少年修仙传客户端代码仓库
client_Wu Xijin
2019-07-17 2d0858f1625caa403fafce227b64fff029eb8cbe
Merge remote-tracking branch 'origin/master' into equipstar
21个文件已修改
12个文件已添加
927 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/AddUpRechargeConfig.cs 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/AddUpRechargeConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0413_tagPlayerChangeEquip.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA328_tagMCHistoryReChargeAwardRecord.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA328_tagMCHistoryReChargeAwardRecord.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA328_tagMCHistoryReChargeAwardRecord.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA328_tagMCHistoryReChargeAwardRecord.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionModel.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctioncell.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FullServiceAuctioncell.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyAuctionCell.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyFocusCell.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FriendSystem/MailWin.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/ClientHazyGrassStage.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemTipUtility.cs 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/TipEquipBaseInfoWidget.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HeadPortraitTip.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/InSevenDayWin.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/AddUpRechargeBehaviour.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/AddUpRechargeBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/AddUpRechargeModel.cs 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/AddUpRechargeModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/AddUpRechargeWin.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/AddUpRechargeWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/OSTimeLimitGiftModel.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipModel.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipRechargeWin.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/ConfigInitiator.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,7 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HA328_tagMCHistoryReChargeAwardRecord), typeof(DTCA328_tagMCHistoryReChargeAwardRecord));
        Register(typeof(HB311_tagGCTalkCache), typeof(DTCB311_tagGCTalkCache));
        Register(typeof(HAC01_tagGCFamilyWarInfo), typeof(DTCAC01_tagGCFamilyWarInfo));
        Register(typeof(HA40D_tagGCServerCreatFamilyTimes), typeof(DTCA40D_tagGCServerCreatFamilyTimes));
Core/GameEngine/Model/Config/AddUpRechargeConfig.cs
New file
@@ -0,0 +1,209 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Wednesday, July 17, 2019
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
[XLua.LuaCallCSharp]
public partial class AddUpRechargeConfig
{
    public readonly int RewardID;
    public readonly int Recharge;
    public readonly string Reward;
    public readonly int VIPLimit;
    public AddUpRechargeConfig()
    {
    }
    public AddUpRechargeConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out RewardID);
            int.TryParse(tables[1],out Recharge);
            Reward = tables[2];
            int.TryParse(tables[3],out VIPLimit);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, AddUpRechargeConfig> configs = new Dictionary<string, AddUpRechargeConfig>();
    public static AddUpRechargeConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("AddUpRechargeConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        AddUpRechargeConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new AddUpRechargeConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static AddUpRechargeConfig Get(int id)
    {
        return Get(id.ToString());
    }
    public static List<string> GetKeys()
    {
        var keys = new List<string>();
        keys.AddRange(configs.Keys);
        keys.AddRange(rawDatas.Keys);
        return keys;
    }
    public static List<AddUpRechargeConfig> GetValues()
    {
        var values = new List<AddUpRechargeConfig>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        foreach (var key in keys)
        {
            values.Add(Get(key));
        }
        return values;
    }
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    {
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/AddUpRecharge.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/AddUpRecharge.txt");
        }
        configs.Clear();
        var tempConfig = new AddUpRechargeConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            if (!preParse)
            {
                rawDatas = new Dictionary<string, string>(lines.Length - 3);
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new AddUpRechargeConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new AddUpRechargeConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
                }
                inited = true;
            });
        }
    }
}
Core/GameEngine/Model/Config/AddUpRechargeConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8d24fb2f23ef9ec4898ccbdaebe0a226
timeCreated: 1563346681
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0413_tagPlayerChangeEquip.cs
@@ -69,7 +69,7 @@
                    var _jsonData = LitJson.JsonMapper.ToObject(vNetData.UserData);
                    if ((_jsonData as IDictionary).Contains("210"))
                    {
                        _player.horseAwakeId = int.Parse(_jsonData["210"].ToString());
                        _player.horseAwakeId = int.Parse(_jsonData["210"][0].ToString());
                    }
                }
                if (_player.MovingState == E_MovingState.Ride)
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA328_tagMCHistoryReChargeAwardRecord.cs
New file
@@ -0,0 +1,24 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, July 17, 2019
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
public class DTCA328_tagMCHistoryReChargeAwardRecord : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA328_tagMCHistoryReChargeAwardRecord;
        ModelCenter.Instance.GetModel<AddUpRechargeModel>().ReceivePackage(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA328_tagMCHistoryReChargeAwardRecord.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f304f169157903a42840d01699d0b648
timeCreated: 1563350936
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA3_Function/HA328_tagMCHistoryReChargeAwardRecord.cs
New file
@@ -0,0 +1,17 @@
using UnityEngine;
using System.Collections;
// A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
public class HA328_tagMCHistoryReChargeAwardRecord : GameNetPackBasic {
    public uint AwardGetRecord;    // 按二进制位标示领取记录 配置奖励ID代表第几位
    public HA328_tagMCHistoryReChargeAwardRecord () {
        _cmd = (ushort)0xA328;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out AwardGetRecord, vBytes, NetDataType.DWORD);
    }
}
Core/NetworkPackage/ServerPack/HA3_Function/HA328_tagMCHistoryReChargeAwardRecord.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fbd33c62f56476445a2cb17a801b4917
timeCreated: 1563350923
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Auction/AuctionModel.cs
@@ -1002,12 +1002,16 @@
                    if (ItemLogicUtility.Instance.IsRealmEquip(config.ItemID))
                    {
                        var itemConfig = ItemConfig.Get(config.ItemID);
                        if (!ItemLogicUtility.Instance.IsJobCompatibleItem(config.ItemID))
                        {
                            continue;
                        }
                        if (itemConfig.EquipPlace <= 8 && itemConfig.SuiteiD == 0)
                        {
                            continue;
                        }
                        var equipControlConfig = EquipControlConfig.Get(itemConfig.LV, itemConfig.EquipPlace);
                        if (equipControlConfig.level == realmLevel)
                        if (equipControlConfig != null && equipControlConfig.realm == realmLevel)
                        {
                            AuctionInquiry.Instance.SendAttentionAuctionItemChange(config.ItemID, 1);
                        }
System/Auction/FamilyAuctioncell.cs
@@ -85,7 +85,7 @@
            var score = 0;
            if (ItemLogicUtility.Instance.IsRealmEquip(auctionItem.itemId))
            {
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict);
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict, true);
                var isUp = ItemLogicUtility.Instance.IsFightUp(auctionItem.itemId, score);
                m_ItemCell.stateIcon.gameObject.SetActive(isUp == 1);
                if (isUp == 1)
System/Auction/FullServiceAuctioncell.cs
@@ -106,7 +106,7 @@
            var score = 0;
            if (ItemLogicUtility.Instance.IsRealmEquip(auctionItem.itemId))
            {
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict);
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict, true);
                var isUp = ItemLogicUtility.Instance.IsFightUp(auctionItem.itemId, score);
                m_ItemCell.stateIcon.gameObject.SetActive(isUp == 1);
                if (isUp == 1)
System/Auction/MyAuctionCell.cs
@@ -94,7 +94,7 @@
            var score = 0;
            if (ItemLogicUtility.Instance.IsRealmEquip(auctionItem.itemId))
            {
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict);
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict,true);
                var isUp = ItemLogicUtility.Instance.IsFightUp(auctionItem.itemId, score);
                m_ItemCell.stateIcon.gameObject.SetActive(isUp == 1);
                if (isUp == 1)
System/Auction/MyFocusCell.cs
@@ -87,7 +87,7 @@
            var score = 0;
            if (ItemLogicUtility.Instance.IsRealmEquip(auctionItem.itemId))
            {
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict);
                score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict,true);
                var isUp = ItemLogicUtility.Instance.IsFightUp(auctionItem.itemId, score);
                m_ItemCell.stateIcon.gameObject.SetActive(isUp == 1);
                if (isUp == 1)
System/FriendSystem/MailWin.cs
@@ -335,7 +335,7 @@
                                    {
                                        itemId = (int)itemModel.ItemID,
                                        isAuctionEquip = true,
                                        score = ItemLogicUtility.Instance.GetEquipScore((int)itemModel.ItemID, userDataDict),
                                        score = ItemLogicUtility.Instance.GetEquipScore((int)itemModel.ItemID, userDataDict, true),
                                        legendProperty = ItemTipUtility.GetLegendProperty((int)itemModel.ItemID, userDataDict),
                                    });
                                }
System/HazyRegion/ClientHazyGrassStage.cs
@@ -19,6 +19,8 @@
    bool hasInitializedNpc = false;
    public bool hasCompleted { get; private set; }
    static Clock s_CollectClock = null;
    static Dictionary<uint, GA_NpcClientCollect> s_CollectNpcs = new Dictionary<uint, GA_NpcClientCollect>();
    static Dictionary<uint, int> s_Sid2NpcIds = new Dictionary<uint, int>();
    static Dictionary<uint, int> s_Sid2NpcIndexs = new Dictionary<uint, int>();
@@ -31,6 +33,7 @@
    HazyGrassModel model { get { return ModelCenter.Instance.GetModel<HazyGrassModel>(); } }
    HazyRegionModel hazyRegionModel { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
    DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
    PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
    public override void Initialize()
    {
@@ -59,7 +62,8 @@
        InitialPlayer();
        InitializeNpc();
        TryGotoCloserNpc();
        var npcId = TryGetScarceNpc();
        TryGotoCloserNpc(npcId);
        model.onMapNpcCountRefresh += OnMapNpcCountRefresh;
    }
@@ -67,6 +71,13 @@
    public override void UnInitialize()
    {
        base.UnInitialize();
        if (s_CollectClock != null)
        {
            Clock.Stop(s_CollectClock);
            s_CollectClock = null;
        }
        UnloadAllNpc();
@@ -81,7 +92,8 @@
        {
            InitializeNpc();
            TryGotoCloserNpc();
            var npcId = TryGetScarceNpc();
            TryGotoCloserNpc(npcId);
        }
    }
@@ -125,25 +137,35 @@
            s_CollectNpcs.Remove(_sid);
        }
        var dungeon = ClientDungeonStageUtility.dungeonInfo;
        var hintId = dungeonModel.GetDungeonHintId(dungeon.mapId, dungeon.lineId);
        var dungeonHintConfig = DungeonHintConfig.Get(hintId);
        if (dungeonHintConfig != null)
        if (s_CollectClock != null)
        {
            var collectCount = 0;
            for (int i = 0; i < dungeonHintConfig.NPC1ID.Length; i++)
            Clock.Stop(s_CollectClock);
            s_CollectClock = null;
        }
        s_CollectClock = Clock.AlarmAfter(0.5f, () =>
        {
            var dungeon = ClientDungeonStageUtility.dungeonInfo;
            var hintId = dungeonModel.GetDungeonHintId(dungeon.mapId, dungeon.lineId);
            var dungeonHintConfig = DungeonHintConfig.Get(hintId);
            if (dungeonHintConfig != null)
            {
                collectCount += dungeonModel.GetDugneonNpcCollectCount(dungeonHintConfig.NPC1ID[i]);
            }
            if (dungeonHintConfig.targetValue1.Length > 0
                && dungeonHintConfig.targetValue1[0] > 0)
            {
                if (collectCount < dungeonHintConfig.targetValue1[0] - 1)
                var collectCount = 0;
                for (int i = 0; i < dungeonHintConfig.NPC1ID.Length; i++)
                {
                    TryGotoCloserNpc();
                    collectCount += dungeonModel.GetDugneonNpcCollectCount(dungeonHintConfig.NPC1ID[i]);
                }
                if (dungeonHintConfig.targetValue1.Length > 0
                    && dungeonHintConfig.targetValue1[0] > 0)
                {
                    if (collectCount < dungeonHintConfig.targetValue1[0])
                    {
                        var npcId = TryGetScarceNpc();
                        TryGotoCloserNpc(npcId);
                    }
                }
            }
        }
        });
    }
    void InitialPlayer()
@@ -157,7 +179,11 @@
        }
    }
    void TryGotoCloserNpc()
    /// <summary>
    ///
    /// </summary>
    /// <param name="npcId">指定NpcId</param>
    void TryGotoCloserNpc(int npcId = 0)
    {
        var hero = PlayerDatas.Instance.hero;
        if (hero == null)
@@ -176,6 +202,10 @@
        foreach (var npc in s_CollectNpcs.Values)
        {
            if (npcId != 0 && npc.NpcConfig.NPCID != npcId)
            {
                continue;
            }
            var dis = MathUtility.CalDistance(hero.Pos, npc.Pos);
            if (minDis > dis)
            {
@@ -192,6 +222,49 @@
        }
    }
    int TryGetScarceNpc()
    {
        if (ClientDungeonStageUtility.clientMapId == HazyGrassModel.REIKI_CLIENTDATAMAP)
        {
            return 0;
        }
        List<int> npcIds = new List<int>();
        var dungeon = ClientDungeonStageUtility.dungeonInfo;
        var hintId = dungeonModel.GetDungeonHintId(dungeon.mapId, dungeon.lineId);
        var dungeonHintConfig = DungeonHintConfig.Get(hintId);
        if (dungeonHintConfig != null)
        {
            npcIds.AddRange(dungeonHintConfig.NPC1ID);
        }
        if (npcIds.Count > 0)
        {
            npcIds.Sort((lhs, rhs) =>
            {
                var lhs_item = model.GetGrassNpcItemId(lhs);
                var rhs_item = model.GetGrassNpcItemId(rhs);
                var lhs_npcCount = model.GetMapNpcCount(lhs);
                var rhs_npcCount = model.GetMapNpcCount(rhs);
                var lhs_empty = lhs_npcCount == 0;
                var rhs_empty = rhs_npcCount == 0;
                if (lhs_empty != rhs_empty)
                {
                    return lhs_empty.CompareTo(rhs_empty);
                }
                var lhs_itemCount = packModel.GetItemCountByID(PackType.Item, lhs_item);
                var rhs_itemCount = packModel.GetItemCountByID(PackType.Item, rhs_item);
                if (lhs_itemCount != rhs_itemCount)
                {
                    return lhs_itemCount.CompareTo(rhs_itemCount);
                }
                return lhs_item.CompareTo(rhs_item);
            });
            return npcIds[0];
        }
        return 0;
    }
    private void OnHeroFindStop()
    {
        var hero = PlayerDatas.Instance.hero;
@@ -201,20 +274,17 @@
        }
        hero.OnPathFindStop -= OnHeroFindStop;
        if (ClientDungeonStageUtility.clientMapId == HazyGrassModel.REIKI_CLIENTDATAMAP)
        if (PlayerDatas.Instance.baseData.LV >= model.autoCollectLevel)
        {
            if (PlayerDatas.Instance.baseData.LV >= model.autoCollectLevel)
            if (autoNpc != null)
            {
                if (autoNpc != null)
                {
                    float _chkDistSqrt = MathUtility.DistanceSqrtXZ(hero.Pos, autoNpc.Pos);
                    float _chkDist = GeneralDefine.CloseNpcDist + autoNpc.NpcConfig.ModelRadius + 0.3f;
                float _chkDistSqrt = MathUtility.DistanceSqrtXZ(hero.Pos, autoNpc.Pos);
                float _chkDist = GeneralDefine.CloseNpcDist + autoNpc.NpcConfig.ModelRadius + 0.3f;
                    if (_chkDistSqrt <= Mathf.Pow(_chkDist, 2))
                    {
                        hero.SelectTarget = autoNpc;
                        ClientCollectUtility.HandleCallback(E_NpcType.Collect, autoNpc.NpcConfig.NPCID, autoNpc.ServerInstID);
                    }
                if (_chkDistSqrt <= Mathf.Pow(_chkDist, 2))
                {
                    hero.SelectTarget = autoNpc;
                    ClientCollectUtility.HandleCallback(E_NpcType.Collect, autoNpc.NpcConfig.NPCID, autoNpc.ServerInstID);
                }
            }
        }
System/ItemTip/ItemTipUtility.cs
@@ -255,7 +255,7 @@
            {
                case TipType.Equip:
                    mainTipData = CreateNormalEquipData(itemId);
                    if (item.isAuctionEquip)
                    if (item.isAuctionEquip && !item.legendProperty.Equals(default(LegendProperty)))
                    {
                        mainTipData.legendProperty = item.legendProperty;
                        mainTipData.baseInfo.score = item.score;
@@ -1211,7 +1211,7 @@
            if (userData != null)
            {
                userData.TryGetValue(17, out ids);
                userData.TryGetValue(17, out values);
                userData.TryGetValue(19, out values);
            }
            if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
            {
System/ItemTip/TipEquipBaseInfoWidget.cs
@@ -46,13 +46,19 @@
                m_Label.gameObject.SetActive(false);
            }
            m_DogzStarLabel.text = "";
            if (m_DogzStarLabel != null)
            {
                m_DogzStarLabel.text = "";
            }
            var itemConfig = ItemConfig.Get(baseInfo.itemId);
            if (ItemLogicUtility.Instance.IsDogzEquip(baseInfo.itemId))
            {
                m_Star.text = "";
                m_DogzStarLabel.text = dogzModel.GetStarLevelLabel(itemConfig.StarLevel);
                m_Star.text = "";
                if (m_DogzStarLabel != null)
                {
                    m_DogzStarLabel.text = dogzModel.GetStarLevelLabel(itemConfig.StarLevel);
                }
            }
            var strengthenPostfix = baseInfo.strengthenLevel > 0 ? string.Format("+{0}", baseInfo.strengthenLevel) : "";
System/MainInterfacePanel/HeadPortraitTip.cs
@@ -286,7 +286,18 @@
                return;
            }
            WindowCenter.Instance.Close<MainInterfaceWin>();
            WindowCenter.Instance.Open<VipRechargeWin>(false, 1);
            if (ModelCenter.Instance.GetModel<VipModel>().vipRedpoint.state == RedPointState.Simple)
            {
                WindowCenter.Instance.Open<VipRechargeWin>(false, 1);
            }
            else if(ModelCenter.Instance.GetModel<AddUpRechargeModel>().redpoint.state == RedPointState.Simple)
            {
                WindowCenter.Instance.Open<VipRechargeWin>(false, 2);
            }
            else
            {
                WindowCenter.Instance.Open<VipRechargeWin>(false, 1);
            }
        }
        void HeadButton()
System/OpenServerActivity/InSevenDayWin.cs
@@ -68,11 +68,17 @@
        }
        private void AwardMessageUpdate()
        {
            if (inSevenDay.RewardForDic.ContainsKey(SelectedDay)
                && inSevenDay.RewardForDic[SelectedDay] == 1
                && SelectedDay < 7)
            {
                SelectedDay += 1;
            }
            m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
            ContentAssignment();
        }
            ContentAssignment();
        }
        void OnCreateGridLineCell(ScrollerController gridCtrl)//预制体创建
        {
            gridCtrl.Refresh();
System/OpenServerActivity/OpenServerActivityWin.cs
@@ -565,6 +565,11 @@
            switch (_order)
            {
                case 0:
                    if (impactRankModel.IsLock(_type))
                    {
                        SysNotifyMgr.Instance.ShowTip("ImpactRankActivityUnOpen");
                        return;
                    }
                    impactRankModel.presentSelectType = _type;
                    break;
                case 2:
System/Vip/AddUpRechargeBehaviour.cs
New file
@@ -0,0 +1,65 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class AddUpRechargeBehaviour : CellView
    {
        [SerializeField] Text m_Title;
        [SerializeField] RareItem[] m_Items;
        [SerializeField] Text m_Progress;
        [SerializeField] Button m_GetReward;
        [SerializeField] Transform m_Complete;
        [SerializeField] Transform m_UnAchieve;
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        AddUpRechargeModel model { get { return ModelCenter.Instance.GetModel<AddUpRechargeModel>(); } }
        public void Display(int id)
        {
            var config = AddUpRechargeConfig.Get(id);
            m_Title.text = string.Format("累计充值:{0}元", config.Recharge);
            List<Item> items;
            model.TryGetItems(id, out items);
            for (int i = 0; i < m_Items.Length; i++)
            {
                if (items != null && i < items.Count)
                {
                    m_Items[i].gameObject.SetActive(true);
                    var item = items[i];
                    var itemData = new ItemCellModel(item.id, true, (ulong)item.count);
                    m_Items[i].SetItemRare(itemData, item.quality == 1);
                    m_Items[i].button.SetListener(() =>
                    {
                        ItemTipUtility.Show(item.id);
                    });
                }
                else
                {
                    m_Items[i].gameObject.SetActive(false);
                }
            }
            var state = model.GetAddUpRechargeState(id);
            m_Progress.gameObject.SetActive(state == -1);
            m_UnAchieve.gameObject.SetActive(state == -1);
            m_Complete.gameObject.SetActive(state == 1);
            m_GetReward.gameObject.SetActive(state == 0);
            switch (state)
            {
                case -1:
                    m_Progress.text = StringUtility.Contact("进度:", PlayerDatas.Instance.baseData.coinPointTotal * 0.01, "/", config.Recharge);
                    break;
            }
            m_GetReward.SetListener(() =>
            {
                model.SendGetReward(id);
            });
        }
    }
}
System/Vip/AddUpRechargeBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7eac1fc4f4862d043a57b60c912a67bb
timeCreated: 1563348985
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Vip/AddUpRechargeModel.cs
New file
@@ -0,0 +1,153 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
{
    public class AddUpRechargeModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        Dictionary<int, Dictionary<int, List<Item>>> m_AddUpItems = new Dictionary<int, Dictionary<int, List<Item>>>();
        public readonly Redpoint redpoint = new Redpoint(35, 3506);
        public uint rewardRecord { get; private set; }
        public event Action onRewardRecordUpdate;
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        public override void Init()
        {
            ParseConfig();
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
        }
        public void OnBeforePlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
            UpdateRedpoint();
        }
        public override void UnInit()
        {
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
        }
        void ParseConfig()
        {
            var configs = AddUpRechargeConfig.GetValues();
            foreach (var config in configs)
            {
                m_AddUpItems[config.RewardID] = new Dictionary<int, List<Item>>();
                var dict = m_AddUpItems[config.RewardID];
                var json = LitJson.JsonMapper.ToObject(config.Reward);
                foreach (var jobKey in json.Keys)
                {
                    var job = int.Parse(jobKey);
                    dict[job] = new List<Item>();
                    var itemArray = LitJson.JsonMapper.ToObject<int[][]>(json[jobKey].ToJson());
                    for (int i = 0; i < itemArray.Length; i++)
                    {
                        dict[job].Add(new Item()
                        {
                            id = itemArray[i][0],
                            count = itemArray[i][1],
                            quality = itemArray[i].Length > 2 ? itemArray[i][2] : 0,
                        });
                    }
                }
            }
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
        {
            if (dataType == PlayerDataType.VIPLv
                || dataType == PlayerDataType.ChangeCoinPointTotal)
            {
                UpdateRedpoint();
            }
        }
        public bool TryGetItems(int id,out List<Item> items)
        {
            items = null;
            if (m_AddUpItems.ContainsKey(id))
            {
                m_AddUpItems[id].TryGetValue(PlayerDatas.Instance.baseData.Job, out items);
            }
            return false;
        }
        public void ReceivePackage(HA328_tagMCHistoryReChargeAwardRecord package)
        {
            rewardRecord = package.AwardGetRecord;
            if (onRewardRecordUpdate != null)
            {
                onRewardRecordUpdate();
            }
            UpdateRedpoint();
        }
        public bool SatisfyAnyVipLevel()
        {
            var configs = AddUpRechargeConfig.GetValues();
            foreach (var config in configs)
            {
                if (PlayerDatas.Instance.baseData.VIPLv >= config.VIPLimit)
                {
                    return true;
                }
            }
            return false;
        }
        public int GetAddUpRechargeState(int id)
        {
            if (MathUtility.GetBitValue(rewardRecord, (ushort)id))
            {
                return 1;
            }
            var config = AddUpRechargeConfig.Get(id);
            if (PlayerDatas.Instance.baseData.VIPLv < config.VIPLimit)
            {
                return -1;
            }
            if (PlayerDatas.Instance.baseData.coinPointTotal * 0.01 < config.Recharge)
            {
                return -1;
            }
            return 0;
        }
        public void SendGetReward(int id)
        {
            CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward();
            pak.RewardType = (byte)GotServerRewardType.Def_RewardType_HistoryChargeAward;
            pak.DataEx = (uint)id;
            pak.DataExStrLen = 0;
            pak.DataExStr = string.Empty;
            GameNetSystem.Instance.SendInfo(pak);
        }
        void UpdateRedpoint()
        {
            var isOpen = SatisfyAnyVipLevel();
            var configs = AddUpRechargeConfig.GetValues();
            var redable = false;
            foreach (var config in configs)
            {
                if (isOpen && GetAddUpRechargeState(config.RewardID) == 0)
                {
                    redable = true;
                }
            }
            redpoint.state = redable ? RedPointState.Simple : RedPointState.None;
        }
    }
}
System/Vip/AddUpRechargeModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5494b046cc7775d4daeac578bb40bbf1
timeCreated: 1563343226
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Vip/AddUpRechargeWin.cs
New file
@@ -0,0 +1,117 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, July 17, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class AddUpRechargeWin : Window
    {
        [SerializeField] ScrollerController m_Scroller;
        [SerializeField] Button m_Recharge;
        [SerializeField] Text m_GoldValue;
        AddUpRechargeModel model { get { return ModelCenter.Instance.GetModel<AddUpRechargeModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Scroller.OnRefreshCell += OnRefreshCell;
            m_Recharge.SetListener(() =>
            {
                if (VersionConfig.Get().isBanShu)
                {
                    SysNotifyMgr.Instance.ShowTip("FuncNoOpen_Nowaday");
                    return;
                }
                if (FuncOpen.Instance.IsFuncOpen(113))
                {
                    ModelCenter.Instance.GetModel<VipModel>().OpenVipPayUI(VipModel.VipWinType.Pay);
                }
                else
                {
                    FuncOpen.Instance.ProcessorFuncErrorTip(113);
                }
            });
        }
        protected override void OnPreOpen()
        {
            model.onRewardRecordUpdate += OnRewardRecordUpdate;
        }
        protected override void OnActived()
        {
            base.OnActived();
            Display();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            model.onRewardRecordUpdate -= OnRewardRecordUpdate;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void OnRewardRecordUpdate()
        {
            m_Scroller.m_Scorller.RefreshActiveCellViews();
        }
        void Display()
        {
            m_GoldValue.text = UIHelper.ReplaceLargeNum(PlayerDatas.Instance.baseData.diamond);
            var configs = AddUpRechargeConfig.GetValues();
            var jumpIndex = 0;
            m_Scroller.Refresh();
            foreach (var config in configs)
            {
                if (PlayerDatas.Instance.baseData.VIPLv >= config.VIPLimit)
                {
                    m_Scroller.AddCell(ScrollerDataType.Header, config.RewardID);
                    if (model.GetAddUpRechargeState(config.RewardID) == 1)
                    {
                        jumpIndex++;
                    }
                }
            }
            jumpIndex = Mathf.Min(jumpIndex, configs.Count - 1);
            m_Scroller.Restart();
            var offset = 0f;
            m_Scroller.JumpIndex(jumpIndex, ref offset);
            var rect = m_Scroller.mScrollRect.transform as RectTransform;
            m_Scroller.JumpIndex(offset - rect.rect.height / 2, 0, EnhancedUI.EnhancedScroller.EnhancedScroller.TweenType.immediate);
        }
        private void OnRefreshCell(ScrollerDataType type, CellView cell)
        {
            var rechargeCell = cell as AddUpRechargeBehaviour;
            rechargeCell.Display(cell.index);
        }
    }
}
System/Vip/AddUpRechargeWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e9f80d8a5ec549a4c93db536d0891273
timeCreated: 1563343249
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Vip/OSTimeLimitGiftModel.cs
@@ -65,18 +65,21 @@
            var _openDay = 0;
            List<StoreConfig> _list = null;
            StoreConfig.TryGetStoreConfigs((int)StoreFunc.OSTimeLimitGift, out _list);
            for (int i = 0; i < _list.Count; i++)
            if (_list != null)
            {
                List<StoreConfig> _configs = null;
                if (!m_OSTimeLimitGifts.TryGetValue(_list[i].LimitValue, out _configs))
                for (int i = 0; i < _list.Count; i++)
                {
                    _configs = new List<StoreConfig>();
                    m_OSTimeLimitGifts.Add(_list[i].LimitValue, _configs);
                }
                _configs.Add(_list[i]);
                if (_list[i].LimitValue > _openDay)
                {
                    _openDay = _list[i].LimitValue;
                    List<StoreConfig> _configs = null;
                    if (!m_OSTimeLimitGifts.TryGetValue(_list[i].LimitValue, out _configs))
                    {
                        _configs = new List<StoreConfig>();
                        m_OSTimeLimitGifts.Add(_list[i].LimitValue, _configs);
                    }
                    _configs.Add(_list[i]);
                    if (_list[i].LimitValue > _openDay)
                    {
                        _openDay = _list[i].LimitValue;
                    }
                }
            }
            openDays = _openDay;
System/Vip/VipModel.cs
@@ -622,8 +622,7 @@
        {
            Pay = 0,
            Vip = 1,
            VipInverst = 2,
            MonthInvest = 3,
            AddUp = 2,
        }
        public VipWinType vipWinType = VipWinType.Vip;
System/Vip/VipRechargeWin.cs
@@ -17,7 +17,10 @@
        [SerializeField] Button closeBtn;
        [SerializeField] FunctionButton vipPayTitleBtn;
        [SerializeField] FunctionButton vipTitleBtn;
        [SerializeField] FunctionButton addUpBtn;
        [SerializeField] FunctionButtonGroup buttonGroup;
        [SerializeField] Image m_Line;
        [SerializeField] Vector3[] m_LinePositions;
        private VipModel m_Model;
        private VipModel model
@@ -30,8 +33,7 @@
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        FairyJadeInvestmentModel m_FairyJadeInvestmentModel;
        FairyJadeInvestmentModel fairyJadeInvestmentModel { get { return m_FairyJadeInvestmentModel ?? (m_FairyJadeInvestmentModel = ModelCenter.Instance.GetModel<FairyJadeInvestmentModel>()); } }
        AddUpRechargeModel addUpRechargeModel { get { return ModelCenter.Instance.GetModel<AddUpRechargeModel>(); } }
        private VipModel.VipWinType presentWinType = VipModel.VipWinType.Vip;
        #region Built-in
@@ -44,7 +46,17 @@
            closeBtn.onClick.AddListener(OnClose);
            vipPayTitleBtn.onClick.AddListener(OnVipPay);
            vipTitleBtn.onClick.AddListener(OnVip);
            addUpBtn.onClick.AddListener(OnAddUp);
        }
        private void OnAddUp()
        {
            CloseChildWin();
            WindowCenter.Instance.Open<AddUpRechargeWin>();
            presentWinType = VipModel.VipWinType.AddUp;
            functionOrder = 2;
        }
        public void OnVipPay()
        {
            CloseChildWin();
@@ -63,9 +75,11 @@
        protected override void OnPreOpen()
        {
            DisplayButtonStates();
            CloseChildWin();
            model.OnVipOpenPayWinEvent += OnVipWinOpenEvnet;
            RechargeTipWin.JumpVipPanel += JumpVipPanel;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
        }
        private void JumpVipPanel()
@@ -89,7 +103,7 @@
            CloseChildWin();
            model.OnVipOpenPayWinEvent -= OnVipWinOpenEvnet;
            RechargeTipWin.JumpVipPanel -= JumpVipPanel;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
        }
        protected override void OnAfterClose()
@@ -120,6 +134,21 @@
            }
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
        {
            if (dataType == PlayerDataType.VIPLv)
            {
                DisplayButtonStates();
            }
        }
        void DisplayButtonStates()
        {
            var isAddUpOpen = addUpRechargeModel.SatisfyAnyVipLevel();
            addUpBtn.gameObject.SetActive(isAddUpOpen);
            m_Line.rectTransform.localPosition = isAddUpOpen ? m_LinePositions[1] : m_LinePositions[0];
        }
        private void OnVipWinOpenEvnet()
        {
            if (presentWinType == model.vipWinType)
@@ -133,8 +162,12 @@
                    vipPayTitleBtn.state = TitleBtnState.Click;
                    break;
                case VipModel.VipWinType.Vip:
                    vipTitleBtn.state = TitleBtnState.Click;
                    OnVip();
                    vipTitleBtn.state = TitleBtnState.Click;
                    break;
                case VipModel.VipWinType.AddUp:
                    OnAddUp();
                    addUpBtn.state = TitleBtnState.Click;
                    break;
            }
        }
System/WindowBase/ModelCenter.cs
@@ -235,6 +235,7 @@
            RegisterModel<MonthWeekInvestModel>();
            RegisterModel<NewDropItemModel>();
            RegisterModel<ExchangeActiveTokenModel>();
            RegisterModel<AddUpRechargeModel>();
            inited = true;
        }
System/WindowJump/WindowJumpMgr.cs
@@ -931,6 +931,11 @@
                break;
            case JumpUIType.OpenServerMountRank:
                var type = int.Parse(_tagWinSearchModel.SelectActive);
                if (rankModel.IsLock(type))
                {
                    SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
                    return false;
                }
                if (TimeUtility.OpenDay >= rankModel.openServerActivityDays)
                {
                    SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
Utility/ConfigInitiator.cs
@@ -298,7 +298,8 @@
        normalTasks.Add(new ConfigInitTask("OpenServerActivityConfig", () => { OpenServerActivityConfig.Init(); }, () => { return OpenServerActivityConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("RidingPetBossRewardConfig", () => { RidingPetBossRewardConfig.Init(); }, () => { return RidingPetBossRewardConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("ReikiRootEffectConfig", () => { ReikiRootEffectConfig.Init(); }, () => { return ReikiRootEffectConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("ItemExchangeConfig", () => { ItemExchangeConfig.Init(); }, () => { return ItemExchangeConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("ItemExchangeConfig", () => { ItemExchangeConfig.Init(); }, () => { return ItemExchangeConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("AddUpRechargeConfig", () => { AddUpRechargeConfig.Init(); }, () => { return AddUpRechargeConfig.inited; }));
    }
    static List<ConfigInitTask> doingTasks = new List<ConfigInitTask>();
Utility/EnumHelper.cs
@@ -1101,6 +1101,7 @@
    Def_RewardType_FeastWeekPartyAct = 25, //领取节日巡礼活动奖励25
    Def_RewardType_FeastWeekPartyPoint = 26, //领取节日巡礼积分奖励26
    Def_RewardType_FairyAdventuresAward = 27,//缥缈奇遇
    Def_RewardType_HistoryChargeAward = 28,//累计充值
}
[XLua.LuaCallCSharp]