少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-29 1ab3e576674ec7a10fd5b3ddfc2d2c11c92c14f4
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
14个文件已修改
464 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_Auto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/HeroAI_Base.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/Dungeon/DropItemManager.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemTipsModel.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FlyingShoesTask.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/SideMission.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OSGiftBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/FairyJadeInvestmentWin.cs 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/OSTimeLimitGiftModel.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/OSTimeLimitGiftWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/SignInWin.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DShowHero.cs 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/EnhancedScroller/EnhancedScroller.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
@@ -275,7 +275,8 @@
                            _cTarget.DoFlashWhite();
                        }
                        if (_sTarget.CurHP == 0)
                        // 2018年8月28日 20:11:06 角色有可能具有死而复生的能力 这里不在血量为0的时候调用死亡逻辑
                        if (_sTarget.CurHP == 0 && !(_cTarget is GActorPlayerBase))
                        {
                            _cTarget.ActorInfo.ResetHp((int)_sTarget.CurHP, (short)_sTarget.CurHPEx);
                            _cTarget.Die(vNetData.ObjID);
@@ -629,7 +630,8 @@
                    GAStaticDefine.PopHp(_attacker, _cTarget, _sTarget.AttackType, (int)_sTarget.HurtHP);
                }
                if (_sTarget.CurHP == 0)
                // 2018年8月28日 20:11:06 角色有可能具有死而复生的能力 这里不在血量为0的时候调用死亡逻辑
                if (_sTarget.CurHP == 0 && !(_cTarget is GActorPlayerBase))
                {
                    _cTarget.ActorInfo.ResetHp((int)_sTarget.CurHP, (short)_sTarget.CurHPEx);
                    _cTarget.Die(vNetData.ObjID);
Fight/Actor/AI/HeroAI_Auto.cs
@@ -267,7 +267,7 @@
        {
            return;
        }
        if (m_DecideSkill != null)
        {
            _skill = m_DecideSkill;
Fight/Actor/AI/HeroAI_Base.cs
@@ -182,51 +182,61 @@
    protected bool WaitForPickup()
    {
        if (Config.Instance.ContainKey<DungeonOpenTimeConfig>(PlayerDatas.Instance.baseData.MapID)) // 是副本
        {
            var _dungeonOpenTime = Config.Instance.Get<DungeonOpenTimeConfig>(PlayerDatas.Instance.baseData.MapID);
            if (_dungeonOpenTime.GuardPick == 1)// 守护可以拾取
            {
                var _singleModel = PlayerBackModel.GetSinglePackModel(PackType.rptEquip);
                if (_singleModel != null)
                {
                    // 如果有守护
                    var _itemModel = _singleModel.GetItemModelByIndex((int)RoleEquipType.retSpiritAnimal);
                    if (_itemModel != null // 有守护
                     && GeneralConfig.Instance.GuardianPickUpID.Contains(_itemModel.itemId))// 守护有拾取功能
                    {
                        return false;
                    }
                }
            }
        }
        else
        {
            var _singleModel = PlayerBackModel.GetSinglePackModel(PackType.rptEquip);
            if (_singleModel != null)
            {
                // 如果有守护
                var _itemModel = _singleModel.GetItemModelByIndex((int)RoleEquipType.retSpiritAnimal);
                if (_itemModel != null // 有守护
                 && GeneralConfig.Instance.GuardianPickUpID.Contains(_itemModel.itemId))// 守护有拾取功能
                {
                    return false;
                }
            }
        }
        GA_Hero _hero = PlayerDatas.Instance.hero;
        DropItemManager.DropObject _obj = null;
        if (DropItemManager.HandupTryGetHeroItem(out _obj))
        {
            _hero.StopRush();
            Vector3 _targetPosition = _obj.dropItem.transform.position;
            float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, _targetPosition);
            if (_chkDistSqrt > 0.5f)
            bool _needPickupSelf = true;
            // 有掉落物
            // 是否是强制守护不能拾取的
            if (_obj.ownerType != 7)
            {
                _hero.MoveToPosition(_targetPosition);
                if (Config.Instance.ContainKey<DungeonOpenTimeConfig>(PlayerDatas.Instance.baseData.MapID)) // 是副本
                {
                    var _dungeonOpenTime = Config.Instance.Get<DungeonOpenTimeConfig>(PlayerDatas.Instance.baseData.MapID);
                    if (_dungeonOpenTime.GuardPick == 1)// 守护可以拾取
                    {
                        var _singleModel = PlayerBackModel.GetSinglePackModel(PackType.rptEquip);
                        if (_singleModel != null)
                        {
                            // 如果有守护
                            var _itemModel = _singleModel.GetItemModelByIndex((int)RoleEquipType.retSpiritAnimal);
                            if (_itemModel != null // 有守护
                             && GeneralConfig.Instance.GuardianPickUpID.Contains(_itemModel.itemId))// 守护有拾取功能
                            {
                                _needPickupSelf = false;
                            }
                        }
                    }
                }
                else
                {
                    var _singleModel = PlayerBackModel.GetSinglePackModel(PackType.rptEquip);
                    if (_singleModel != null)
                    {
                        // 如果有守护
                        var _itemModel = _singleModel.GetItemModelByIndex((int)RoleEquipType.retSpiritAnimal);
                        if (_itemModel != null // 有守护
                         && GeneralConfig.Instance.GuardianPickUpID.Contains(_itemModel.itemId))// 守护有拾取功能
                        {
                            _needPickupSelf = false;
                        }
                    }
                }
            }
            return true;
            if (_needPickupSelf)
            {
                _hero.StopRush();
                Vector3 _targetPosition = _obj.dropItem.transform.position;
                float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, _targetPosition);
                if (_chkDistSqrt > 0.5f)
                {
                    _hero.MoveToPosition(_targetPosition);
                }
                return true;
            }
        }
        return false;
    }
Fight/Stage/Dungeon/DropItemManager.cs
@@ -383,6 +383,13 @@
                return false;
            }
        }
        else if (dropObject.ownerType == 7)
        {
            if (dropObject.ownerID != PlayerDatas.Instance.baseData.Family)
            {
                return false;
            }
        }
        ItemConfig _itemModel = Config.Instance.Get<ItemConfig>(dropObject.itemID);
@@ -583,6 +590,13 @@
        {
            return false;
        }
        // 如果是仙盟归属的, 设定为守护不拾取
        if (_item.ownerType == 7)
        {
            return false;
        }
        return CheckCanPickUp(_item);
    }
    #endregion
System/KnapSack/Logic/ItemTipsModel.cs
@@ -18,7 +18,7 @@
        public Dictionary<int, List<int>> equipLegendAttrTypeDict { get; private set; }
        public Dictionary<int, Dictionary<int, string>> wingsLegendAttrColorDict { get; private set; }
        private Dictionary<int, int> itemComposeTypeDict;
        public int[] NotComposeIds { get; private set;}
        public Dictionary<string, Dictionary<LegendAttrType, int>> legendAttrCntPreviewDict { get; private set; } // key 品质+星级  value 属性条目数
        public Dictionary<int, Dictionary<LegendAttrType, List<int>>> legendAttrIDPreviewDict { get; private set; } // key 装备位 value 属性类型,属性ID
        public Dictionary<int, Dictionary<int, int>> legendAttrColorValuePreviewDict { get; private set; } // key 属性ID value 装备品质,属性数值
@@ -118,7 +118,7 @@
            FuncConfigConfig itemComposeTypeFunc = Config.Instance.Get<FuncConfigConfig>("BagCompound");
            itemComposeTypeDict = ConfigParse.GetDic<int, int>(itemComposeTypeFunc.Numerical1);
            NotComposeIds = ConfigParse.GetMultipleStr<int>(itemComposeTypeFunc.Numerical2);
            FuncConfigConfig legendAttrCountPreview = Config.Instance.Get<FuncConfigConfig>("LegendAttrCountPreview");
            JsonData legendAttrCntData = JsonMapper.ToObject(legendAttrCountPreview.Numerical1);
@@ -621,7 +621,7 @@
            if (!isOverdue)
            {
                if (itemComposeTypeDict.ContainsKey(attrData.itemConfig.Type))
                if (itemComposeTypeDict.ContainsKey(attrData.itemConfig.Type) && !NotComposeIds.Contains(attrData.itemId))
                {
                    attrData.SetTipsFuncBtn(ItemWinBtnType.compose, (ItemWinBtnType, ItemAttrData) => {
                        bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(attrData.itemId);
System/MainInterfacePanel/FlyingShoesTask.cs
@@ -439,7 +439,18 @@
            {
                m_DeliveryButton.gameObject.SetActive(false);
            }
            //----------------特殊采集魔团任务的传送云处理
            if (mainModel.TaskId_Skill1.Contains(TaskID))//特殊任务
            {
                if (PlayerDatas.Instance.baseData.LV >= mainModel.TaskLv)
                {
                    m_DeliveryButton.gameObject.SetActive(true);
                }
                else
                {
                    m_DeliveryButton.gameObject.SetActive(false);
                }
            }
            m_ContentText.raycastTarget = false;
            if (taskmodel._DicTaskInformation.ContainsKey(TaskID))
System/MainInterfacePanel/SideMission.cs
@@ -122,23 +122,15 @@
                else
                {
                    int Gold = (int)UIHelper.GetMoneyCnt(1);//仙玉
                    int GoldPaper = (int)UIHelper.GetMoneyCnt(2);//绑玉
                    string strNull = string.Empty;
                    int needNumber = (mainModel.ItemNumber - itemNumber) * mainModel.UnitPrice;//所需金额
                    if (GoldPaper >= needNumber)
                    {
                        strNull = string.Format(Language.Get("PassiveSkillTask3"), needNumber);
                    }
                    else
                    {
                        strNull = string.Format(Language.Get("PassiveSkillTask4"), needNumber, GoldPaper, needNumber - GoldPaper);
                    }
                    strNull = string.Format(Language.Get("PassiveSkillTask3"), needNumber);
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strNull, (bool isOk) =>
                    {
                        if (isOk)
                        {
                            if (Gold + GoldPaper >= needNumber)
                            if (Gold >= needNumber)
                            {
                                taskmodel.CompletionOfTask(TaskIdNow);
                                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
@@ -154,7 +146,6 @@
                            }
                        }
                    });
                }
                return;
            }
System/OpenServerActivity/OSGiftBehaviour.cs
@@ -148,7 +148,7 @@
            switch ((StoreFunc)_storeConfig.ShopType)
            {
                case StoreFunc.OSTimeLimitGift:
                    if (TimeUtility.CreateDays > timeLimitGiftModel.openDays)
                    if (timeLimitGiftModel.currentDay > timeLimitGiftModel.openDays)
                    {
                        SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
                        return;
System/Vip/FairyJadeInvestmentWin.cs
@@ -8,8 +8,10 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
//仙玉投资
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class FairyJadeInvestmentWin : Window
    {
@@ -20,7 +22,7 @@
        [SerializeField] ScrollerController m_ScrollerController;
        [SerializeField] Button m_InvestmentButton;//投资按钮
        [SerializeField] GameObject m_MaxInverstment;//最大投资上限
        [SerializeField] Button  m_RealizedInvestmentButton;//追加投资
        [SerializeField] Button m_RealizedInvestmentButton;//追加投资
        [SerializeField] Button m_SelectButton;//额度选择
        [SerializeField] Text m_TextNumber;
@@ -31,10 +33,28 @@
        [SerializeField] Text m_JadeText;//所需投资仙玉
        [SerializeField] Image m_Image_AD;//投资图片
        [SerializeField] Image m_Image1;
        [SerializeField] Image m_Image2;
        [SerializeField] Image m_Image3;
        public static event Action FairyJadeInvestmentRedPointEvent;
        #region Built-in
        private List<int> GearPositionList = new List<int>();
        private string[] IconList1 = new string[4];
        private string[] IconList2 = new string[4];
        private string[] IconList3 = new string[4];
        protected override void BindController()
        {
            var JadeInves = Config.Instance.Get<FuncConfigConfig>("JadeInvestIconKey");
            int[] GearPosition = ConfigParse.GetMultipleStr<int>(JadeInves.Numerical1);
            GearPositionList.Clear();
            for (int i = 0; i < GearPosition.Length; i++)
            {
                GearPositionList.Add(GearPosition[i]);
            }
            IconList1 = ConfigParse.GetMultipleStr(JadeInves.Numerical2);
            IconList2 = ConfigParse.GetMultipleStr(JadeInves.Numerical3);
            IconList3 = ConfigParse.GetMultipleStr(JadeInves.Numerical4);
        }
        protected override void AddListeners()
@@ -88,9 +108,9 @@
                m_JadeText.gameObject.SetActive(true);
                m_JadeText.text = string.Format(Language.Get("FairyJadeInvestment_9"), fairyJadeInvestmentModel.SelectNumber - fairyJadeInvestmentModel.InvestGold);
            }
                IsInvestment();
            IsInvestment();
            GetMoney();
            SetIconKeyImage();
            m_TextNumber.text = fairyJadeInvestmentModel.SelectNumber.ToString();
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418)
            FairyJadeInvestmentModel.FairyJadeInfoSeriorsUpdate += FairyJadeInfoSeriorsUpdate;
@@ -100,9 +120,10 @@
            m_ScrollerController.JumpIndex(fairyJadeInvestmentModel.JumpInedx);
        }
        protected override void OnAfterOpen()
        {
            if (fairyJadeInvestmentModel.redPointStre1.state==RedPointState.Simple)
            if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple)
            {
                fairyJadeInvestmentModel.IsRedpoint = false;
                if (FairyJadeInvestmentRedPointEvent != null)
@@ -123,6 +144,7 @@
        private void SelectNumberRefresh()
        {
            m_TextNumber.text = fairyJadeInvestmentModel.SelectNumber.ToString();
            SetIconKeyImage();
            if (fairyJadeInvestmentModel.InvestGold >= fairyJadeInvestmentModel.RecordSelectNumberMax)
            {
                m_JadeText.gameObject.SetActive(false);
@@ -196,7 +218,7 @@
            if (fairyJadeInvestmentModel.InvestGold < fairyJadeInvestmentModel.RecordSelectNumberMax)
            {
                m_MaxInverstment.SetActive(false);
                if (fairyJadeInvestmentModel.InvestGold > 0)
                {
                    m_Image_AD.SetSprite("XT_VIP_106");
@@ -216,7 +238,7 @@
                m_MaxInverstment.SetActive(true);
                m_InvestmentButton.gameObject.SetActive(false);
                m_RealizedInvestmentButton.gameObject.SetActive(false);
            }
            }
        }
        private void InvestmentButton()//仙玉投资
@@ -228,13 +250,13 @@
            }
            if (fairyJadeInvestmentModel.InvestGold > 0)
            {
                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), string.Format(Language.Get("FairyJadeInvestment_2"), fairyJadeInvestmentModel.SelectNumber- fairyJadeInvestmentModel.InvestGold), (bool isOk) =>
                {
                    if (isOk)
                    {
                        ConsumeFairyJade(fairyJadeInvestmentModel.SelectNumber);
                    }
                });
                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), string.Format(Language.Get("FairyJadeInvestment_2"), fairyJadeInvestmentModel.SelectNumber - fairyJadeInvestmentModel.InvestGold), (bool isOk) =>
                 {
                     if (isOk)
                     {
                         ConsumeFairyJade(fairyJadeInvestmentModel.SelectNumber);
                     }
                 });
            }
            else
            {
@@ -244,8 +266,8 @@
                    {
                        ConsumeFairyJade(fairyJadeInvestmentModel.SelectNumber);
                    }
               });
            }
                });
            }
        }
        private void RealizedInvestment_Button()//追加投资按钮
@@ -276,8 +298,8 @@
        private void ConsumeFairyJade(int fairyJade)
        {
           int getFairyJade = (int)UIHelper.GetMoneyCnt(1);
            if (getFairyJade>= (fairyJade- fairyJadeInvestmentModel.InvestGold))
            int getFairyJade = (int)UIHelper.GetMoneyCnt(1);
            if (getFairyJade >= (fairyJade - fairyJadeInvestmentModel.InvestGold))
            {
                fairyJadeInvestmentModel.InvestmentMonthlyInvestment(3, fairyJade);
            }
@@ -289,7 +311,7 @@
        private void GetMoney()
        {
            m_FairyJadeText.text = UIHelper.GetMoneyCnt(1).ToString();
            m_TieTheJadeText.text= UIHelper.GetMoneyCnt(2).ToString();
            m_TieTheJadeText.text = UIHelper.GetMoneyCnt(2).ToString();
        }
@@ -312,6 +334,26 @@
                    break;
            }
        }
        private void SetIconKeyImage()
        {
            var money = fairyJadeInvestmentModel.SelectNumber;
            if (fairyJadeInvestmentModel.InvestmentAmountDic.ContainsKey(money))
            {
                var type = fairyJadeInvestmentModel.InvestmentAmountDic[money];
                if (GearPositionList.Contains(type))
                {
                    int Inedx = GearPositionList.IndexOf(type);
                    m_Image1.SetSprite(IconList1[Inedx]);
                    m_Image1.SetNativeSize();
                    m_Image2.SetSprite(IconList2[Inedx]);
                    m_Image2.SetNativeSize();
                    m_Image3.SetSprite(IconList3[Inedx]);
                    m_Image3.SetNativeSize();
                }
            }
        }
    }
}
System/Vip/OSTimeLimitGiftModel.cs
@@ -31,7 +31,7 @@
        {
            get
            {
                return TimeUtility.CreateDays <= openDays && FuncOpen.Instance.IsFuncOpen(132);
                return currentDay <= openDays && FuncOpen.Instance.IsFuncOpen(132);
            }
        }
@@ -40,6 +40,14 @@
            get
            {
                return redpoint.state == RedPointState.Simple;
            }
        }
        public int currentDay
        {
            get
            {
                return TimeUtility.OpenDay + 1;
            }
        }
@@ -66,19 +74,22 @@
            redpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, MainRedDot.REDPOINT_OPENSERVER * 100 + 3);
            TimeUtility.OnServerOpenDayRefresh += UpdateRedpoint;
            TimeUtility.OnCreateRoleTimeRefresh += OnCreateRoleTimeRefresh;
            TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
            storeModel.RefreshBuyShopLimitEvent += UpdateRedpoint;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            OpenServerActivityCenter.Instance.Register(3, this);
        }
        private void OnServerOpenDayRefresh()
        {
            OnCreateRoleTimeRefresh();
        }
        public override void UnInit()
        {
            TimeUtility.OnServerOpenDayRefresh -= UpdateRedpoint;
            TimeUtility.OnCreateRoleTimeRefresh -= OnCreateRoleTimeRefresh;
            TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
            storeModel.RefreshBuyShopLimitEvent -= UpdateRedpoint;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        }
        public void OnBeforePlayerDataInitialize()
@@ -93,9 +104,9 @@
        private void OnCreateRoleTimeRefresh()
        {
            if (TimeUtility.CreateDays <= openDays)
            if (currentDay <= openDays)
            {
                m_OverdueTime = TimeUtility.ServerNow.AddDays(openDays - TimeUtility.CreateDays + 1);
                m_OverdueTime = TimeUtility.ServerNow.AddDays(openDays - currentDay + 1);
                m_OverdueTime = new DateTime(m_OverdueTime.Year, m_OverdueTime.Month, m_OverdueTime.Day);
            }
            UpdateRedpoint();
@@ -130,13 +141,13 @@
        void UpdateRedpoint()
        {
            redpoint.state = RedPointState.None;
            if (TimeUtility.CreateDays > openDays || !FuncOpen.Instance.IsFuncOpen(132)
            if (currentDay > openDays || !FuncOpen.Instance.IsFuncOpen(132)
                || DayRemind.Instance.GetDayRemind(DayRemind.OSTIMEGIFT_REDPOINT))
            {
                return;
            }
            List<StoreConfig> _list;
            var day = Mathf.Max(1, TimeUtility.CreateDays);
            var day = Mathf.Max(1, currentDay);
            day = Mathf.Min(day, openDays);
            if (TryGetGifts(day, out _list))
            {
System/Vip/OSTimeLimitGiftWin.cs
@@ -97,7 +97,7 @@
            var t = model.overdueTime - TimeUtility.ServerNow;
            m_CoolDown.text = StringUtility.Contact(Language.Get("OSActivityCoolDown"),
                TimeUtility.SecondsToDHMSCHS((int)t.TotalSeconds));
            if (TimeUtility.CreateDays > model.openDays)
            if (model.currentDay > model.openDays)
            {
                IsOutOffTime = true;
                m_CoolDown.color = UIHelper.GetUIColor(TextColType.NavyYellow);
@@ -112,7 +112,7 @@
        private void DisplayItems()
        {
            List<StoreConfig> _list;
            var day = Mathf.Max(1, TimeUtility.CreateDays);
            var day = Mathf.Max(1, model.currentDay);
            day = Mathf.Min(day, model.openDays);
            if (model.TryGetGifts(day, out _list))
            {
System/Welfare/SignInWin.cs
@@ -46,17 +46,21 @@
        protected override void OnPreOpen()
        {
            InitSignIn();
            //signInCtrl.JumpIndex(0);
            InitCtnSign();
            ctnSignCtrl.mScrollRect.verticalNormalizedPosition = 1;
            signInCtrl.mScrollRect.verticalNormalizedPosition = 1;
            model.OnSignRefresh += OnSignRefresh;
        }
        protected override void OnActived()
        {
            base.OnActived();
            JumpToTodaySign();
        }
        protected override void OnAfterOpen()
        {
        {
            HandleAchievement();
        }
@@ -93,10 +97,6 @@
                    SysNotifyMgr.Instance.ShowTip("Achievement_16");
                    AchievementGoto.achievementType = 0;
                }
            }
            else
            {
                signInCtrl.JumpIndex(0);
            }
            signInCtrl.m_Scorller.RefreshActiveCellViews();
        }
@@ -137,6 +137,13 @@
                ctnSignCtrl.m_Scorller.RefreshActiveCellViews();
            }
        }
        private void JumpToTodaySign()
        {
            var _num = Mathf.Max(0, model.signNum);
            var _line = _num / 5;
            signInCtrl.JumpIndex(_line);
        }
    }
}
UI/Common/UI3DShowHero.cs
@@ -49,25 +49,33 @@
            if (weaponId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(weaponModel);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(weaponModel);
                }
                weaponModel = null;
            }
            if (secondaryId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(secondaryId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(secondaryModel);
                secondaryModel.SetActive(true);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(secondaryModel);
                }
                secondaryModel = null;
            }
            if (wingsId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(wingsId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(wingsModel);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(wingsModel);
                }
                wingsModel = null;
                wingsAnimator = null;
            }
@@ -75,8 +83,11 @@
            if (clothesId != 0)
            {
                prefab = InstanceResourcesLoader.LoadModelRes(clothesId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                pool.Release(clothesModel);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    pool.Release(clothesModel);
                }
                clothesModel = null;
                if (clothesAnimator)
                {
@@ -102,7 +113,10 @@
            if (clothesModel != null)
            {
                var animator = clothesModel.GetComponent<Animator>();
                animator.Play(GAStaticDefine.State_IdleHash);
                if (animator)
                {
                    animator.Play(GAStaticDefine.State_IdleHash);
                }
            }
        }
@@ -111,13 +125,19 @@
            if (clothesModel != null)
            {
                var animator = clothesModel.GetComponent<Animator>();
                animator.Play(GAStaticDefine.State_SitDown);
                if (animator)
                {
                    animator.Play(GAStaticDefine.State_SitDown);
                }
            }
            if (weaponModel)
            {
                GameObject prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel);
                if (prefab)
                {
                    GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel);
                }
                weaponModel = null;
            }
@@ -162,52 +182,57 @@
            LoadClothes(newClothes);
            clothesId = newClothes;
            if (weaponModel)
            if (clothesModel)
            {
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
                weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
                if (weaponModel)
                {
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
                    weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            if (wingsModel)
            {
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
                if (wingsModel)
                {
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                    wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            if (secondaryModel)
            {
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
                if (secondaryModel)
                {
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                    wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            LoadClothesEffect(itemID, suitID);
                LoadClothesEffect(itemID, suitID);
            }
        }
        private void LoadClothes(int resID)
        {
            var prefab = InstanceResourcesLoader.LoadModelRes(resID);
            var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
            clothesModel = pool.Request();
            LayerUtility.SetLayer(clothesModel, LayerUtility.Player, false);
            var skinnedMeshRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(true);
            LayerUtility.SetLayer(skinnedMeshRenderer.gameObject, LayerUtility.Player, false);
            clothesModel.SetActive(true);
            clothesModel.transform.SetParentEx(showPoint, Vector3.zero, Quaternion.identity, Vector3.one);
            clothesAnimator = clothesModel.GetComponent<Animator>();
            if (clothesAnimator == null)
            if (prefab)
            {
                DebugEx.LogErrorFormat("角色资源: {0} 没有动画控制器", resID);
            }
                var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                clothesModel = pool.Request();
            // 动画状态机修改
            if (clothesAnimator)
            {
                cacheClothedAC = clothesAnimator.runtimeAnimatorController;
                RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID);
                clothesAnimator.runtimeAnimatorController = _controller;
                clothesAnimator.enabled = true;
                LayerUtility.SetLayer(clothesModel, LayerUtility.Player, false);
                var skinnedMeshRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(true);
                LayerUtility.SetLayer(skinnedMeshRenderer.gameObject, LayerUtility.Player, false);
                clothesModel.SetActive(true);
                clothesModel.transform.SetParentEx(showPoint, Vector3.zero, Quaternion.identity, Vector3.one);
                clothesAnimator = clothesModel.GetComponent<Animator>();
                // 动画状态机修改
                if (clothesAnimator)
                {
                    cacheClothedAC = clothesAnimator.runtimeAnimatorController;
                    RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID);
                    clothesAnimator.runtimeAnimatorController = _controller;
                    clothesAnimator.enabled = true;
                }
                else
                {
                    DebugEx.LogErrorFormat("角色资源: {0} 没有动画控制器", resID);
                }
            }
        }
@@ -274,12 +299,16 @@
                prefab = InstanceResourcesLoader.LoadModelRes(newWeapon);
            }
            pool = GameObjectPoolManager.Instance.RequestPool(prefab);
            weaponModel = pool.Request();
            if (prefab)
            {
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                weaponModel = pool.Request();
            LayerUtility.SetLayer(weaponModel, LayerUtility.Player, false);
            var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
            weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                LayerUtility.SetLayer(weaponModel, LayerUtility.Player, false);
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WeaponBindBoneName);
                weaponModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
            }
            weaponId = newWeapon;
        }
@@ -323,11 +352,15 @@
                    newSecondary = config.BaseEquip[2];
                    prefab = InstanceResourcesLoader.LoadModelRes(newSecondary);
                }
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                secondaryModel = pool.Request();
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                secondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                if (prefab)
                {
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    secondaryModel = pool.Request();
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                    secondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                }
            }
            secondaryId = newSecondary;
@@ -371,26 +404,29 @@
                    prefab = InstanceResourcesLoader.LoadModelRes(newWings);
                }
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                wingsModel = pool.Request();
                wingsModel.layer = LayerUtility.Player;
                SkinnedMeshRenderer _renderer = wingsModel.GetComponentInChildren<SkinnedMeshRenderer>();
                if (_renderer)
                if (prefab)
                {
                    _renderer.gameObject.layer = LayerUtility.Player;
                }
                    pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                    wingsModel = pool.Request();
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                    wingsModel.layer = LayerUtility.Player;
                    SkinnedMeshRenderer _renderer = wingsModel.GetComponentInChildren<SkinnedMeshRenderer>();
                    if (_renderer)
                    {
                        _renderer.gameObject.layer = LayerUtility.Player;
                    }
                wingsAnimator = wingsModel.GetComponent<Animator>();
                if (wingsAnimator == null)
                {
                    DebugEx.LogErrorFormat("翅膀资源{0}没有动画控制器", itemID);
                    var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.WingBindBoneName);
                    wingsModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
                    wingsAnimator = wingsModel.GetComponent<Animator>();
                    if (wingsAnimator == null)
                    {
                        DebugEx.LogErrorFormat("翅膀资源{0}没有动画控制器", itemID);
                    }
                    wingsAnimator.enabled = true;
                    wingsAnimator.Play("UI_Idle", 0);
                }
                wingsAnimator.enabled = true;
                wingsAnimator.Play("UI_Idle", 0);
            }
            wingsId = newWings;
UI/EnhancedScroller/EnhancedScroller.cs
@@ -808,7 +808,7 @@
             * 所以可以通过postion和可滑动区域大小的比值来定义滑动条滑动到了哪个位置
             */
            if (NumberOfCells == 0) return 0;//如果scroll没有子物体直接返回
            if (NumberOfCells == 0 || _cellViewOffsetArray.Count == 0) return 0;//如果scroll没有子物体直接返回
            if (cellViewIndex <= 0 && insertPosition == CellViewPositionEnum.Before)
            {