少年修仙传客户端代码仓库
Client_PangDeRong
2018-08-22 64be5af337818a95337f771272f2651f49bea235
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
11个文件已修改
609 ■■■■ 已修改文件
System/AssetVersion/InGameDownLoad.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/InGameDownLoadProgress.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/RemoteFile.cs 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/LoginWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FlyingShoesTask.cs 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/PlayerMainDate.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/SideMission.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskListTip.cs 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmBossShow.cs 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCyclicScroll.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DShowHero.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/InGameDownLoad.cs
@@ -16,8 +16,6 @@
    public bool inGameDownLoadAllow = false;
    public float progress {
        get {
            return Mathf.Clamp01((float)showDownLoadedSize / showTotalSize);
@@ -240,7 +238,6 @@
        }
    }
    int workingQueueMaxCount = 1;
    IEnumerator Co_StartDownLoad()
    {
@@ -249,18 +246,14 @@
        workingQueue.Clear();
        okCount = 0;
        var downLoadTasksQueues = new Queue<AssetVersion>();
        for (int i = 0; i < tasks.Count; i++)
        {
            var assetVersion = tasks[i];
            if (!assetVersion.localValid)
            {
                var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath);
                var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
                var remoteFile = new RemoteFile();
                workingQueue.Add(remoteFile);
                remoteFile.Init(remoteURL, localURL, assetVersion, true);
                remoteFile.Begin(OnFileDownLoadCompleted);
                downLoadTasksQueues.Enqueue(assetVersion);
            }
            else
            {
@@ -270,6 +263,17 @@
        while (okCount < totalCount)
        {
            while (workingQueue.Count < 2 && downLoadTasksQueues.Count > 0)
            {
                var assetVersion = downLoadTasksQueues.Dequeue();
                var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath);
                var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
                var remoteFile = new RemoteFile();
                workingQueue.Add(remoteFile);
                remoteFile.Init(remoteURL, localURL, assetVersion, true);
                remoteFile.Begin(OnFileDownLoadCompleted);
            }
            yield return null;
        }
@@ -307,6 +311,15 @@
    private void OnFileDownLoadCompleted(bool _ok, AssetVersion _assetVersion)
    {
        foreach (var remote in workingQueue)
        {
            if (remote.assetVersion == _assetVersion)
            {
                workingQueue.Remove(remote);
                break;
            }
        }
        if (_ok)
        {
            okCount++;
System/AssetVersion/InGameDownLoadProgress.cs
@@ -27,7 +27,8 @@
            else if (!InGameDownLoad.Instance.hasReward
                && InGameDownLoad.Instance.completeDownLoadAccount == PlayerDatas.Instance.baseData.AccID)
            {
                m_ProgressText.gameObject.SetActive(false);
                m_ProgressText.gameObject.SetActive(true);
                m_ProgressText.text = "100%";
                this.gameObject.SetActive(true);
            }
            else
@@ -89,7 +90,8 @@
                    break;
                case InGameDownLoad.State.Award:
                    this.gameObject.SetActive(true);
                    m_ProgressText.gameObject.SetActive(false);
                    m_ProgressText.gameObject.SetActive(true);
                    m_ProgressText.text = "100%";
                    break;
            }
        }
System/AssetVersion/RemoteFile.cs
@@ -72,7 +72,7 @@
        }
    }
    AssetVersion assetVersion;
    public AssetVersion assetVersion { get; private set; }
    protected string mRemoteFile;
    protected string localFile;
    bool speedLimit = false;
@@ -123,6 +123,7 @@
    public static void Prepare()
    {
        gDownloadIsRunningCount = 0;
        gStartTickcount = System.Environment.TickCount;
        TotalDownloadedSize = 0L;
        downloadSpeedRef = 0f;
@@ -153,7 +154,8 @@
        }
        stop = true;
        try
        {
        if (headRequest != null)
        {
            headRequest.Abort();
@@ -190,13 +192,19 @@
            inStream.Close();
            inStream = null;
        }
        }
        catch (Exception ex)
        {
            Debug.Log(ex);
        }
        finally
        {
        onCompleted = null;
        mHadError = false;
        if (state == State.Working)
        {
            gDownloadIsRunningCount--;
            }
        }
    }
@@ -324,7 +332,11 @@
                            headResponse.Close();
                            headResponse = null;
                        }
                        if (headRequest != null)
                        {
                        headRequest.Abort();
                            headRequest = null;
                        }
                    }
                }, headRequest);
@@ -373,7 +385,12 @@
        if (mHadError)
        {
            DebugEx.LogWarningFormat("获取远程文件{0} 信息失败!", mRemoteFile);
            if (headRequest != null)
            {
            headRequest.Abort();
                headRequest = null;
            }
            done = true;
            gDownloadIsRunningCount--;
            yield break;
System/Login/LoginWin.cs
@@ -157,6 +157,11 @@
        protected virtual void EnterGame()
        {
            if (!LaunchPostProcess.Instance.completed)
            {
                return;
            }
            Login();
        }
System/MainInterfacePanel/FlyingShoesTask.cs
@@ -120,36 +120,27 @@
            m_ImgSelected.SetActive(true);
            taskmodel.GetNowTaskID = Task_ID;
            if (mainModel.TaskId_Skill1.Contains(Task_ID))
            {
                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//获取特殊物品
                if (itemNumber >= mainModel.ItemNumber)
                {
                    taskmodel.CompletionOfTask(Task_ID);
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
                }
                else
                {
                    StateDetermination();
                    ContentText.ExcuteHref();
                }
                return;
            }
            switch ((int)taskmodel.GetTaskStatus(Task_ID))
            {
                case -5:
                case 0:
                    DropItemManager.StopMissionPickup = true;//主动停止拾取物品
                    if (PlayerDatas.Instance.extersion.bossState == 1)
                    {
                        string strNpc = string.Empty;
                        strNpc = ContentText.GetHrefMessage("movenpc");
                        int npcId = 0;
                        int mapID = PlayerDatas.Instance.baseData.MapID;
                        if (int.TryParse(strNpc, out npcId))
                        {
                            var npcConfig = Config.Instance.GetAllValues<mapnpcConfig>();
                            foreach (var value in npcConfig)
                            {
                                if (value.NPCID == npcId && value.MapID != mapID)
                                {
                                    SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
                                    return;
                                }
                            }
                            var MonsterConfig = Config.Instance.Get<MonsterRefreshPointConfig>(npcId);
                            if (MonsterConfig != null && MonsterConfig.MapId != mapID)
                            {
                                SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
                                return;
                            }
                        }
                    }
                    StateDetermination();
                    ContentText.ExcuteHref();
                    OpenPanel(Task_ID);
                    break;
@@ -202,12 +193,47 @@
                    break;
                case 3:
                    taskmodel.CompletionOfTask(Task_ID);
                    if (mainModel.TaskId_Skill.Contains(Task_ID))
                    {
                        WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
                    }
                    break;
                default:
                    break;
            }
        }
        private void StateDetermination()//状态判定
        {
            DropItemManager.StopMissionPickup = true;//主动停止拾取物品
            if (PlayerDatas.Instance.extersion.bossState == 1)
            {
                string strNpc = string.Empty;
                strNpc = ContentText.GetHrefMessage("movenpc");
                int npcId = 0;
                int mapID = PlayerDatas.Instance.baseData.MapID;
                if (int.TryParse(strNpc, out npcId))
                {
                    var npcConfig = Config.Instance.GetAllValues<mapnpcConfig>();
                    foreach (var value in npcConfig)
                    {
                        if (value.NPCID == npcId && value.MapID != mapID)
                        {
                            SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
                            return;
                        }
                    }
                    var MonsterConfig = Config.Instance.Get<MonsterRefreshPointConfig>(npcId);
                    if (MonsterConfig != null && MonsterConfig.MapId != mapID)
                    {
                        SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
                        return;
                    }
                }
            }
            }
        }
        private void OnClickDeliveryButton()//传送符
        {
            mainModel.FlyShoseTaskID = Task_ID;
@@ -293,6 +319,22 @@
            }
            string str = taskmodel.allMissionDict[TaskID].InforList;
            var taskinfo = Config.Instance.Get<TASKINFOConfig>(str);
            if (mainModel.TaskId_Skill1.Contains(TaskID))//特殊任务
            {
                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//获取特殊物品
                string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
                string Str_B = Language.Get("PassiveSkillTask2");
                if (itemNumber >= mainModel.ItemNumber)
                {
                    m_ContentText.text = Str_B;
                }
                else
                {
                    m_ContentText.text = Str_A;
                }
            }
            else
            {
            if (taskinfo != null)
            {
                m_ContentText.text = taskinfo.show_writing;
@@ -302,7 +344,7 @@
                DebugEx.LogError("任务表格PyTaskInfo配置缺失");
                return;
            }
            }
            bool isOPenTransferButton = HrefAnalysis.Inst.ContainsKey(taskinfo.show_writing, "flynpc");
            if (isOPenTransferButton && !IsKaJiBool)
            {
System/MainInterfacePanel/PlayerMainDate.cs
@@ -123,6 +123,7 @@
            OneKeyList.Add(Listmap[i]);
        }
        NetworkState = (int)SDKUtility.Instance.NetworkType;
        GetPassiveSkillTask();
    }
    //----------关于某些副本可以进行地图挂机
    public List<int> OneKeyList = new List<int>();
@@ -130,6 +131,40 @@
    //----------使用娲皇卷轴后的Buff表现
    public static event Action EmperorBuffEvent;
    public bool IsEmperor = false;
    //---------关于任务需要的数据
    public List<int> TaskId_Skill = new List<int>();
    public List<int> TaskId_Skill1 = new List<int>();
    public int ItemID = 0;
    public int UnitPrice = 0;
    public int ItemNumber = 0;
    private void GetPassiveSkillTask()//获取任务数据
    {
        TaskId_Skill.Clear();
        TaskId_Skill1.Clear();
        var PassiveSkillTaskconfig = Config.Instance.Get<FuncConfigConfig>("PassiveSkillTask");
        int[] TaskId_SkillInt = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical1);
        for (int i = 0; i < TaskId_SkillInt.Length; i++)
        {
            TaskId_Skill.Add(TaskId_SkillInt[i]);
        }
        int[] TaskId_SkillInt1 = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical2);
        for (int i = 0; i < TaskId_SkillInt1.Length; i++)
        {
            TaskId_Skill1.Add(TaskId_SkillInt1[i]);
        }
        int[] PassiveSkillTask = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical3);
        if (PassiveSkillTask.Length >= 3)
        {
            ItemID = PassiveSkillTask[0];
            UnitPrice = PassiveSkillTask[1];
            ItemNumber = PassiveSkillTask[2];
        }
    }
    private void UseItemSuccessAct(int Index, int ItemID)
    {
        if (ItemID == 221)
System/MainInterfacePanel/SideMission.cs
@@ -9,9 +9,11 @@
using TableConfig;
using System.Collections.Generic;
//任务面板的支线任务
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class SideMission:MonoBehaviour {
    public class SideMission : MonoBehaviour
    {
        [SerializeField] ScrollerController _TaskRamusList;
        //右侧面板
        [SerializeField] Text _Text_TaskName;//任务名
@@ -25,6 +27,10 @@
        PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<PlayerTaskDatas>()); } }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
        PlayerMainDate m_MainModel;
        PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
        private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
        private int TaskIdNow = 0;
        private void Awake()
@@ -39,19 +45,102 @@
        {
            TaskIdNow = 0;
            _TaskRamusList.OnRefreshCell += OnRefreshGridCell;
            playerPack.RefreshItemCountAct += RefreshItemCountAct;
            playerPack.ItemCntReduceAct += ItemCntReduceAct;
            OnCreateGridLineCell(_TaskRamusList);
        }
        private void OnDisable()
        {
            _TaskRamusList.OnRefreshCell -= OnRefreshGridCell;
            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
            playerPack.ItemCntReduceAct -= ItemCntReduceAct;
        }
        private void ItemCntReduceAct(PackType arg1, int arg2, int arg3)
        {
            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
            {
                foreach (var key in taskmodel.SideQuestsDic.Keys)
                {
                    if (mainModel.TaskId_Skill1.Contains(key))
                    {
                        _TaskRamusList.m_Scorller.RefreshActiveCellViews();//刷新当前可见
                    }
                }
            }
        }
        private void RefreshItemCountAct(PackType arg1, int arg2, int arg3)
        {
            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
            {
                foreach (var key in taskmodel.SideQuestsDic.Keys)
                {
                    if (mainModel.TaskId_Skill1.Contains(key))
                    {
                        _TaskRamusList.m_Scorller.RefreshActiveCellViews();//刷新当前可见
                    }
                }
            }
        }
        private void ForwardButton()
        {
            if (mainModel.TaskId_Skill1.Contains(TaskIdNow))
            {
                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//获取特殊物品
                if (itemNumber >= mainModel.ItemNumber)
                {
                    taskmodel.CompletionOfTask(TaskIdNow);
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
                }
                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);
                    }
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strNull, (bool isOk) =>
                    {
                        if (isOk)
                        {
                            if (Gold + GoldPaper >= needNumber)
                            {
                                taskmodel.CompletionOfTask(TaskIdNow);
                                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
                            }
                            else
                            {
                                if (VersionConfig.Get().isBanShu)
                                {
                                    SysNotifyMgr.Instance.ShowTip("GoldErr");
                                    return;
                                }
                                WindowCenter.Instance.Open<RechargeTipWin>();
                            }
                        }
                    });
                }
                return;
            }
            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)
            {
                taskmodel.CompletionOfTask(TaskIdNow);
                if (mainModel.TaskId_Skill.Contains(TaskIdNow))
                {
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
                }
            }
            else
            {
@@ -122,11 +211,30 @@
            _Text_TaskName.text = Config.Instance.Get<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Name).show_writing;//任务名
            _Text_TaskDescribe.text = Config.Instance.Get<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//任务描述
            string strINfor = taskmodel.SideQuestsDic[taskID].InforList;
            string str = Config.Instance.Get<TASKINFOConfig>(strINfor).show_writing;
            string str = string.Empty;
            if (mainModel.TaskId_Skill1.Contains(taskID))
            {
                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//获取特殊物品
                if (itemNumber >= mainModel.ItemNumber)
                {
                    string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, mainModel.ItemNumber);
                    str = Str_A;
                }
                else
                {
                    string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
                    str = Str_A;
                }
            }
            else
            {
                str = Config.Instance.Get<TASKINFOConfig>(strINfor).show_writing;
            }
            str = WordAnalysis.Color_Start_Regex.Replace(str, string.Empty);
            str = WordAnalysis.Color_End_Regex.Replace(str, string.Empty);
            _Text_TaskTarget.text = str;//任务目标
            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)
            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3 || mainModel.TaskId_Skill1.Contains(taskID))//能够进行立即完成的支线任务
            {
                _Text_Forward.text = string.Format(Language.Get("FinishAtOnce_Z")) ;
            }
System/MainInterfacePanel/TaskListTip.cs
@@ -33,6 +33,10 @@
        TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TreasureModel>()); } }
        PlayerTaskDatas m_TaskModel;
        PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<PlayerTaskDatas>()); } }
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
        PlayerMainDate m_MainModel;
        PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
        List<int> RenzhuTaskIDList = new List<int>();//法宝任务数组ID
        List<int> ListSort = new List<int>();//用于排列顺序(未卡级)
        List<int> ListSort1 = new List<int>();//用于排序(卡级)
@@ -104,12 +108,12 @@
            PlayerTaskDatas.Event_TaskRefreshes += TaskRefreshes;//任务的刷新
            PlayerTaskDatas.Event_TaskToDelete += OnTaskToDelete;//任务的删除
            PlayerTaskDatas.Event_TaskInformation += TaskInformation;//任务字典信息
            //PlayerTaskDatas.CardLevelChange += CardLevelChange;//任务卡级状态改变
            PlayerTaskDatas.MainCardLevelChange += MainCardLevelChange;//卡级任务修改
            model.collectingTreasureChangeEvent += OnCollectingTreasureChangeEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            TreasureNewGotWin.CloseTreasureNewGotWinEvent += CloseTreasureNewGotWinEvent;
            playerPack.RefreshItemCountAct += RefreshItemCountAct;
            playerPack.ItemCntReduceAct += ItemCntReduceAct;
            OnCollectingTreasureChangeEvent(TreasureCategory.Human);
            TaskScheduling();//任务排序  1
            TheTaskToGenerate();//任务生成
@@ -139,11 +143,55 @@
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            TreasureNewGotWin.CloseTreasureNewGotWinEvent -= CloseTreasureNewGotWinEvent;
            PlayerTaskDatas.MainCardLevelChange -= MainCardLevelChange;//卡级任务修改
            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
            playerPack.ItemCntReduceAct -= ItemCntReduceAct;
        }
        private void ItemCntReduceAct(PackType arg1, int arg2, int arg3)
        {
            if (arg1 == PackType.rptItem && arg3== mainModel.ItemID)
            {
                foreach (var key in taskmodel.SideQuestsDic.Keys)
                {
                    if (mainModel.TaskId_Skill1.Contains(key))
                    {
                        TaskIdUpdate(key);
                    }
                }
            }
        }
        private void RefreshItemCountAct(PackType arg1, int arg2, int arg3)
        {
            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
            {
                foreach (var key in taskmodel.SideQuestsDic.Keys)
                {
                    if (mainModel.TaskId_Skill1.Contains(key))
                    {
                        TaskIdUpdate(key);
                    }
                }
            }
        }
        private void TaskIdUpdate(int taskId)
        {
            int leng = Content.childCount;
            for (int i = 0; i < leng; i++)
            {
                GameObject childObj = Content.GetChild(i).gameObject;
                TaskType childObjTaskType = Content.GetChild(i).gameObject.GetComponent<TaskType>();
                if (childObj.activeSelf && childObjTaskType.TaskID == taskId)
                {
                    childObj.GetComponent<FlyingShoesTask>().FlyingShoes_Task(taskId);
                }
            }
        }
        private void MainCardLevelChange(int _id)
        {
            TaskScheduling();
            bool IsDefault = true;
            var State = taskmodel.GetTaskStatus(_id);
@@ -348,7 +396,6 @@
            {
                _list.Sort(Compare1);//卡级排序   
            }
        }
        int Compare(int x, int y)//默认排序(无卡级)
        {
@@ -401,8 +448,6 @@
                var _position = (_list.Count - type) * m_SizeHeight + (_list.Count - type - 1) * 2;
                _position -= 196;
                m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(_position / ((Content as RectTransform).sizeDelta.y - 196));
                // m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(m_ScrollRect.verticalNormalizedPosition + ((Content as RectTransform).sizeDelta.y - 196));
                //m_ScrollRect.verticalNormalizedPosition = ((float)1 - (float)(type + 1) / _list.Count);
            }
        }
    }
System/Realm/RealmBossShow.cs
@@ -11,7 +11,12 @@
        [SerializeField, Header("展示时间")] float m_DisplayTime = 15f;
        [SerializeField, Header("特效位置")] Vector3 m_EffectPosition = Vector3.zero;
        UI3DShowHero showHero = new UI3DShowHero();
        GameObject clothesModel;
        Animator clothesAnimator;
        Transform showPoint;
        List<SFXController> closthesSFXList = new List<SFXController>();
        static RealmBossShow m_Instance = null;
        public static RealmBossShow Instance
@@ -134,10 +139,11 @@
            }
            #endregion
            var _hero = showHero.Show(_job, _clothesId, _suitLevel, _weaponId, _wingsId, _secondaryId, m_HeroStage);
            showPoint = m_HeroStage;
            var _hero = ShowHero(_job, _clothesId, _suitLevel, _weaponId, _wingsId, _secondaryId);
            if (_hero != null)
            {
                showHero.SitDown();
                SitDown();
                LayerUtility.SetLayer(m_HeroStage.gameObject, LayerUtility.BossShow, true);
            }
        }
@@ -185,12 +191,202 @@
            showCamera.enabled = false;
            m_Effect.gameObject.SetActive(false);
            transform.localPosition = new Vector3(0, 4000, 5000);
            showHero.Dispose();
            if (m_Effect != null)
            {
                SFXPlayUtility.Instance.Release(m_Effect);
                m_Effect = null;
            }
            for (int i = closthesSFXList.Count - 1; i >= 0; i--)
            {
                if (closthesSFXList[i] != null)
                {
                    Destroy(closthesSFXList[i].gameObject);
                }
            }
            closthesSFXList.Clear();
            if (clothesModel != null)
            {
                Destroy(clothesModel);
                clothesModel = null;
                clothesAnimator = null;
            }
        }
        GameObject ShowHero(int _job, int _clothes, int suitID, int _weaponId, int _wingsId, int _secondaryId)
        {
            PutOnClothes(_job, _clothes, suitID);
            return clothesModel;
        }
        public void SitDown()
        {
            if (clothesModel != null)
            {
                var animator = clothesModel.GetComponent<Animator>();
                animator.Play(GAStaticDefine.State_SitDown);
            }
        }
        public void PutOnClothes(int _job, int itemID, int suitID)
        {
            var newClothes = 0;
            var config = Config.Instance.Get<JobSetupConfig>(_job);
            if (itemID == 0)
            {
                newClothes = config.BaseEquip[0];
            }
            else
            {
                var item = Config.Instance.Get<ItemConfig>(itemID);
                newClothes = item == null ? newClothes = config.BaseEquip[0] : item.ChangeOrd;
            }
            var _prefab = InstanceResourcesLoader.LoadModelRes(newClothes);
            if (!_prefab)
            {
                newClothes = config.BaseEquip[0];
            }
            LoadClothes(newClothes);
            LoadClothesEffect(_job, itemID, suitID);
        }
        private void LoadClothes(int resID)
        {
            var prefab = InstanceResourcesLoader.LoadModelRes(resID);
            if (clothesModel == null)
            {
                clothesModel = Instantiate(prefab, Constants.Special_Hide_Position, Quaternion.identity);
            }
            clothesModel.transform.SetParent(null);
            clothesModel.transform.localScale = Vector3.one;
            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)
            {
                DebugEx.LogErrorFormat("角色资源: {0} 没有动画控制器", resID);
            }
            // 动画状态机修改
            if (clothesAnimator)
            {
                RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID);
                clothesAnimator.runtimeAnimatorController = _controller;
                clothesAnimator.enabled = true;
            }
        }
        public void LoadClothesEffect(int job,int clothedID, int suitLevel)
        {
            var _equipModel = ModelCenter.Instance.GetModel<PlayerPackModel>().GetSinglePackModel(PackType.rptEquip);
            if (_equipModel == null)
            {
                if (DTC0309_tagPlayerLoginInfo.equipSuitID > 0)
                {
                    PutOnEffect(DTC0309_tagPlayerLoginInfo.equipSuitID);
                }
                return;
            }
            int _suitCount = 0;
            int _start = (int)RoleEquipType.retHat;
            int _end = (int)RoleEquipType.retShoes;
            ItemModel _itemModel = null;
            _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retClothes);
            if (_itemModel == null)
            {
                return;
            }
            int _rank = _itemModel.chinItemModel.LV;
            for (int i = _start; i <= _end; ++i)
            {
                _itemModel = _equipModel.GetItemModelByIndex(i);
                if (_itemModel == null)
                {
                    continue;
                }
                if (_itemModel.chinItemModel.SuiteiD <= 0)
                {
                    continue;
                }
                if (i == (int)RoleEquipType.retClothes)
                {
                    _rank = _itemModel.chinItemModel.LV;
                }
                var suitModel = ModelCenter.Instance.GetModel<PlayerSuitModel>();
                if (suitModel.suitModelDict.ContainsKey(i))
                {
                    if (suitModel.suitModelDict[i].ContainsKey(1)
                     || suitModel.suitModelDict[i].ContainsKey(2))
                    {
                        if (_itemModel.chinItemModel.LV >= _rank)
                        {
                            _suitCount += 1;
                        }
                    }
                }
            }
            if (_suitCount == 5)
            {
                int _type = 1;
                int _suitEffectID = _type * 1000 + job * 100 + _rank;
                PutOnEffect(_suitEffectID);
            }
        }
        public void PutOnEffect(int id)
        {
            SuitEffectConfig _suitEffect = Config.Instance.Get<SuitEffectConfig>(id);
            // 上特效
            if (_suitEffect != null)
            {
                Transform _parent = null;
                SFXController _sfx = null;
                for (int i = 0; _suitEffect.bindbones != null && i < _suitEffect.bindbones.Length; ++i)
                {
                    if (string.IsNullOrEmpty(_suitEffect.bindbones[i])
                        || _suitEffect.effectIds[i] == 0)
                    {
                        continue;
                    }
                    _parent = clothesModel.transform.GetChildTransformDeeply(_suitEffect.bindbones[i]);
                    if (_parent == null)
                    {
                        Debug.LogErrorFormat("套装: {0} 配置的骨骼节点: {1} 不存在", id, _suitEffect.bindbones[i]);
                        continue;
                    }
                    _sfx = SFXPlayUtility.Instance.PlayBattleEffect(_suitEffect.effectIds[i], _parent);
                    closthesSFXList.Add(_sfx);
                }
            }
        }
    }
}
System/Treasure/TreasureCyclicScroll.cs
@@ -122,6 +122,7 @@
                    {
                        if (item.achievementGroup != datas[preIndex + i])
                        {
                            item.gameObject.SetActive(true);
                            item.Display(datas[preIndex + i]);
                        }
                    }
UI/Common/UI3DShowHero.cs
@@ -50,7 +50,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(weaponModel);
                pool.Release(weaponModel);
                weaponModel = null;
            }
@@ -59,7 +58,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(secondaryId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(secondaryModel);
                pool.Release(secondaryModel);
                secondaryModel.SetActive(true);
                secondaryModel = null;
@@ -69,7 +67,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(wingsId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(wingsModel);
                pool.Release(wingsModel);
                wingsModel = null;
                wingsAnimator = null;
@@ -79,7 +76,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(clothesId);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(clothesModel);
                pool.Release(clothesModel);
                clothesModel = null;
                if (clothesAnimator)
@@ -120,7 +116,6 @@
            if (weaponModel)
            {
                ResetModelLayer(weaponModel);
                GameObject prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel);
                weaponModel = null;
@@ -225,7 +220,6 @@
            var prefab = InstanceResourcesLoader.LoadModelRes(clothesId);
            var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
            ResetModelLayer(clothesModel);
            pool.Release(clothesModel);
            clothesModel = null;
            if (clothesAnimator != null)
@@ -268,7 +262,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(oldWeapon);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(weaponModel);
                pool.Release(weaponModel);
                weaponModel = null;
            }
@@ -318,7 +311,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(oldSecondary);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(secondaryModel);
                pool.Release(secondaryModel);
                secondaryModel = null;
            }
@@ -333,13 +325,6 @@
                }
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                secondaryModel = pool.Request();
                secondaryModel.layer = LayerUtility.Player;
                SkinnedMeshRenderer _renderer = secondaryModel.GetComponentInChildren<SkinnedMeshRenderer>();
                if (_renderer)
                {
                    _renderer.gameObject.layer = LayerUtility.Player;
                }
                var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                secondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
@@ -372,7 +357,6 @@
            {
                prefab = InstanceResourcesLoader.LoadModelRes(oldWings);
                pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                ResetModelLayer(wingsModel);
                pool.Release(wingsModel);
                wingsModel = null;
            }
@@ -538,19 +522,6 @@
                SFXPlayUtility.Instance.Release(closthesSFXList[i]);
            }
            closthesSFXList.Clear();
        }
        void ResetModelLayer(GameObject _go)
        {
            if (_go != null)
            {
                var skinMeshRender = _go.GetComponentInChildren<SkinnedMeshRenderer>();
                if (skinMeshRender != null)
                {
                    skinMeshRender.gameObject.layer = LayerUtility.Player;
                }
                LayerUtility.SetLayer(_go, LayerUtility.Player, false);
            }
        }
    }