少年修仙传客户端代码仓库
client_linchunjie
2019-04-12 687c2722f1f8564eac09e32171776655da83c33b
Merge remote-tracking branch 'origin/master' into HazyRegion

Conflicts:
System/DailyQuest/DailyQuestWin.cs
4 文件已复制
2个文件已删除
2 文件已重命名
16个文件已添加
20个文件已修改
2010 ■■■■ 已修改文件
Core/GameEngine/Model/Config/CreateRoleConfig.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/CreateRoleConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0406_tagNPCAppear.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAE_Truck.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAF_Merge.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB0_Event.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/ResModule/InstanceResourcesLoader.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/ResModule/SceneLoader.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/AI_BossDSX.cs 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/State/SMB/STM_BaseAttack.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/CreateRoleStage.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/SelectRoleStage.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/CreateRoleConfigWrap.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleBehaviour.cs 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleBehaviour.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleManager.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleManager.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleProcessor.cs 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleProcessor.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleTimeLine.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CreateRole/CreateRoleTimeLine.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarWin.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Launch/LaunchBackGroundWin.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CreateRoleHeroShow.cs 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CreateRoleWin.cs 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/SelectRoleWin.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RidingPet/ContainerRidingPet.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SelectRole.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SelectRole/SelectRoleBehaviour.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SelectRole/SelectRoleBehaviour.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SelectRole/SelectRoleProcessor.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SelectRole/SelectRoleProcessor.cs.meta 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelFactory.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/HUD/PopUpNum.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/CreateRoleConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Thursday, February 14, 2019
//    [  Date ]:           Thursday, April 11, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -17,7 +17,9 @@
    public readonly string selectIcon;
    public readonly string unselectIcon;
    public readonly int skillid;
    public readonly string desc;
    public readonly string description;
    public readonly string jobName;
    public readonly string jobSign;
    public CreateRoleConfig()
    {
@@ -37,7 +39,11 @@
            int.TryParse(tables[3],out skillid); 
            desc = tables[4];
            description = tables[4];
            jobName = tables[5];
            jobSign = tables[6];
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/CreateRoleConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 0a16c879bf3b127479edd80ebc3b6b35
timeCreated: 1550121231
timeCreated: 1554980817
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0406_tagNPCAppear.cs
@@ -67,6 +67,7 @@
                    break;
                case E_NpcType.Fight:
                case E_NpcType.FMBoss:
                case E_NpcType.MonsterTime:
                    if (_npcConfig.Country == 1)
                    {
Core/NetworkPackage/DTCFile/ServerPack/HAD_SaleActivity.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3e05761d690b75440a6be79207d0fb01
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAE_Truck.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 1d70ccd06161e0443b7a802ad94292f8
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HAF_Merge.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 71e878ac60c49ad4f964dd2dbc725739
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HB0_Event.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: eed34091b0568664b9fb42f0634496c1
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAD_SaleActivity.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 32ceb8b7faf99f84a8b73ce53c5e3e4d
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAE_Truck.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 77f69c2b862d1704299a32d0d8eeb71e
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HAF_Merge.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: fa14960fa44b0d1439bab471a764e34f
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HB0_Event.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: d914565b65f8e8145988734c4d915834
folderAsset: yes
timeCreated: 1547643019
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/ResModule/InstanceResourcesLoader.cs
@@ -193,7 +193,6 @@
        return null;
    }
    public static void LoadCreateRole(int job, Action<bool, UnityEngine.Object> _callBack)
    {
        string _name = "Zs";
Core/ResModule/SceneLoader.cs
@@ -5,6 +5,30 @@
public class SceneLoader
{
    public static GameObject LoadCreateRole(string name)
    {
        GameObject prefab = null;
        if (AssetSource.sceneFromEditor)
        {
#if UNITY_EDITOR
            var path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "Scene/CreateRole/", name, ".prefab");
            prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(path);
#endif
        }
        else
        {
            var assetInfo = new AssetInfo("maps/createrole", name);
            prefab = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as GameObject;
        }
        if (prefab == null)
        {
            DebugEx.LogErrorFormat("SceneLoader.LoadCreateRole() => 加载不到资源: {0}.", name);
        }
        return prefab;
    }
    public static Texture2D LoadTexture(string folder, string name)
    {
        Texture2D texture2D = null;
Fight/Actor/AI/AI_BossDSX.cs
File was deleted
Fight/Actor/State/SMB/STM_BaseAttack.cs
@@ -125,6 +125,8 @@
            if (owner.ServerInstID == PlayerDatas.Instance.PlayerId)
            {
                GA_Hero.CallOnStateEnter(animator.GetCurrentAnimatorClipInfo(0).Length);
                if (owner.State == E_ActorState.AutoRun)
                {
                    owner.StopPathFind();
@@ -153,6 +155,8 @@
                {
                    HeadUpSkillName.Popup(cacheSkillID, owner.Root.position, CameraController.Instance.CameraObject);
                }
            }
            if (_player is GA_Player)
@@ -247,6 +251,11 @@
        if (owner.ActorType == GameObjType.gotPlayer)
        {
            if (owner is GA_Hero)
            {
                GA_Hero.CallOnStateEnd();
            }
            GActorPlayerBase _player = owner as GActorPlayerBase;
            if (_player != null)
            {
Fight/GameActor/GA_Hero.cs
@@ -22,6 +22,25 @@
    //    }
    //}
    public static event UnityAction<float> OnStateEnter;
    public static event UnityAction OnStateEnd;
    public static void CallOnStateEnter(float length)
    {
        if (OnStateEnter != null)
        {
            OnStateEnter(length);
        }
    }
    public static void CallOnStateEnd()
    {
        if (OnStateEnd != null)
        {
            OnStateEnd();
        }
    }
    /// <summary>
    /// 当切换锁定目标的时候, 为空的时候id=0
    /// </summary>
Fight/Stage/CreateRoleStage.cs
@@ -31,7 +31,8 @@
    protected override void OnStageLoadFinish()
    {
        base.OnStageLoadFinish();
        WindowCenter.Instance.Open<CreateRoleWin>(true);
        CreateRoleManager.Instance.StarShow();
        WindowCenter.Instance.Close<LaunchBackGroundWin>();
    }
@@ -39,11 +40,8 @@
    {
        base.UnInitialize();
        CreateRoleManager.Instance.Dispose();
        WindowCenter.Instance.Close<CreateRoleWin>();
#if !UNITY_EDITOR
        AssetBundleUtility.Instance.UnloadAssetBundle("mob/createrole", true, true);
#endif
    }
}
Fight/Stage/SelectRoleStage.cs
@@ -24,9 +24,6 @@
        {
            InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.None);
        }
        //屏蔽职业特效预先加载逻,以减少不必要的内存损耗和获得更快的场景切换速度,资源压缩使用LZ4才行。
        //   AssetPreLoad.Instance.PreLoadJobEffect(PlayerDatas.Instance.loginInfo.Job);
    }
    public override void UnInitialize()
Lua/Gen/CreateRoleConfigWrap.cs
@@ -336,14 +336,6 @@
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_desc(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                CreateRoleConfig gen_to_be_invoked = (CreateRoleConfig)translator.FastGetCSObj(L, 1);
                LuaAPI.lua_pushstring(L, gen_to_be_invoked.desc);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        
System/CreateRole.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: acd47e44c9a384044aef0466db699e20
folderAsset: yes
timeCreated: 1554861231
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
System/CreateRole/CreateRoleBehaviour.cs
New file
@@ -0,0 +1,199 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class CreateRoleBehaviour : MonoBehaviour
{
    [SerializeField] int m_Job;
    [SerializeField] float m_Scale = 1;
    [SerializeField] EnterPictureType m_EnterPictureType;
    [SerializeField] ShowAnimation m_EnterShowAnimation;
    [SerializeField] ShowAnimation m_RoutimeShowAnimation;
    [SerializeField] Effect[] m_PersistentEffect;
    [SerializeField] Effect[] m_EnterShowEffect;
    [SerializeField] Effect[] m_RoutimeShowEffect;
    [SerializeField] CreateRoleHeroPlatform m_Platform;
    [SerializeField] ActorShadowCaster m_Shadow;
    CreateRoleTimeLine showTimeLine = new CreateRoleTimeLine();
    public State state { get; private set; }
    List<SFXController> sfxControllers = new List<SFXController>();
    public void DoEnterShow()
    {
        CreateRoleManager.Instance.LoadModel(m_Job, (bool ok, UnityEngine.Object @object) =>
       {
           if (ok)
           {
               var model = @object as GameObject;
               model.transform.SetParentEx(m_Platform.transform, Vector3.zero, Quaternion.identity, Vector3.one * m_Scale);
               m_Shadow.Cast(model.transform);
               model.SetActive(true);
               ReleaseEffects();
               state = State.EnterShow;
               showTimeLine.ClearNode();
               foreach (var effect in m_PersistentEffect)
               {
                   showTimeLine.AddNone(effect.delay, () =>
                   {
                       PlayEffect(model.transform, effect);
                   });
               }
               foreach (var effect in m_EnterShowEffect)
               {
                   showTimeLine.AddNone(effect.delay, () =>
                   {
                       PlayEffect(model.transform, effect);
                   });
               }
               showTimeLine.AddNone(m_EnterShowAnimation.delay, () =>
               {
                   var animator = model.GetComponent<Animator>();
                   animator.Play(m_EnterShowAnimation.animation);
               });
               showTimeLine.AddNone(5f, () =>
               {
                   WindowCenter.Instance.Open<CreateRoleWin>();
               });
               showTimeLine.OnComplete(() => { state = State.Idle; });
               showTimeLine.Begin();
           }
       });
    }
    public void DoRoutineShow()
    {
        CreateRoleManager.Instance.LoadModel(m_Job, (bool ok, UnityEngine.Object @object) =>
        {
            if (ok)
            {
                var model = @object as GameObject;
                model.transform.SetParentEx(m_Platform.transform, Vector3.zero, Quaternion.identity, Vector3.one * m_Scale);
                switch (m_EnterPictureType)
                {
                    case EnterPictureType.OutIn:
                        model.SetActive(false);
                        break;
                    case EnterPictureType.Stand:
                        model.SetActive(true);
                        m_Shadow.Cast(model.transform);
                        break;
                }
                ReleaseEffects();
                state = State.RoutimeShow;
                showTimeLine.ClearNode();
                showTimeLine.AddNone(m_RoutimeShowAnimation.delay, () =>
                {
                    if (m_EnterPictureType == EnterPictureType.OutIn)
                    {
                        model.SetActive(true);
                        m_Shadow.Cast(model.transform);
                    }
                    var animator = model.GetComponent<Animator>();
                    animator.Play(m_RoutimeShowAnimation.animation);
                });
                foreach (var effect in m_PersistentEffect)
                {
                    showTimeLine.AddNone(effect.delay, () =>
                    {
                        PlayEffect(model.transform, effect);
                    });
                }
                foreach (var effect in m_RoutimeShowEffect)
                {
                    showTimeLine.AddNone(effect.delay, () =>
                    {
                        PlayEffect(model.transform, effect);
                    });
                }
                showTimeLine.AddNone(2f, () =>
                {
                    WindowCenter.Instance.Open<CreateRoleWin>();
                });
                showTimeLine.OnComplete(() => { state = State.Idle; });
                showTimeLine.Begin();
            }
        });
    }
    public void Dispose()
    {
        showTimeLine.Dispose();
        ReleaseEffects();
    }
    private void PlayEffect(Transform model, Effect effect)
    {
        var config = EffectConfig.Get(effect.id);
        Transform parent = null;
        if (!string.IsNullOrEmpty(config.nodeName))
        {
            parent = model.transform.GetChildTransformDeeply(config.nodeName);
        }
        else
        {
            parent = model.transform;
        }
        sfxControllers.Add(SFXPlayUtility.Instance.Play(effect.id, parent));
    }
    public void ReleaseEffects()
    {
        for (var i = sfxControllers.Count - 1; i >= 0; i--)
        {
            SFXPlayUtility.Instance.Release(sfxControllers[i]);
        }
        sfxControllers.Clear();
    }
    [System.Serializable]
    public struct ShowAnimation
    {
        public string animation;
        public float delay;
    }
    [System.Serializable]
    public struct Effect
    {
        public int id;
        public float delay;
    }
    public enum EnterPictureType
    {
        Stand,
        OutIn,
    }
    public enum State
    {
        Idle,
        EnterShow,
        RoutimeShow,
    }
}
System/CreateRole/CreateRoleBehaviour.cs.meta
copy from Fight/Actor/AI/AI_BossDSX.cs.meta copy to System/CreateRole/CreateRoleBehaviour.cs.meta
File was copied from Fight/Actor/AI/AI_BossDSX.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 265e7ff764601cf44991055e126d0d33
timeCreated: 1514970107
guid: 94bce01d1e0ec5749aab4069a3c81613
timeCreated: 1554861327
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/CreateRole/CreateRoleManager.cs
New file
@@ -0,0 +1,93 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class CreateRoleManager : Singleton<CreateRoleManager>
{
    CreateRoleProcessor m_Processor;
    CreateRoleProcessor processor {
        get {
            return m_Processor ?? (m_Processor = GameObject.FindObjectOfType<CreateRoleProcessor>());
        }
    }
    Dictionary<int, GameObject> jobModels = new Dictionary<int, GameObject>();
    public readonly LogicInt selectedJob = new LogicInt();
    public void StarShow()
    {
        selectedJob.value = 1;
        processor.LoadNecessaryResources();
        processor.DoEnterShow();
    }
    public void View(int job)
    {
        selectedJob.value = job;
        switch (job)
        {
            case 1:
                processor.SwitchToWarrior();
                break;
            case 2:
                processor.SwitchToMagic();
                break;
        }
    }
    public void Dispose()
    {
        m_Processor.Dispose();
        m_Processor = null;
        jobModels.Clear();
        if (!AssetSource.mobFromEditor)
        {
            AssetBundleUtility.Instance.UnloadAssetBundle("mob/createrole", true, false);
        }
    }
    public void LoadModel(int job, Action<bool, UnityEngine.Object> _callBack)
    {
        if (jobModels.ContainsKey(job))
        {
            if (_callBack != null)
            {
                _callBack(true, jobModels[job]);
            }
            return;
        }
        Action<bool, UnityEngine.Object> assetCallBack = (bool _ok, UnityEngine.Object _asset) =>
        {
            GameObject instance = null;
            if (_ok)
            {
                instance = GameObject.Instantiate(_asset) as GameObject;
                if (instance != null)
                {
                    jobModels[job] = instance;
                }
            }
            if (_callBack != null)
            {
                _callBack(_ok && instance != null, instance);
            }
        };
        InstanceResourcesLoader.LoadCreateRole(job, assetCallBack);
    }
    public void ReleaseModel(int job)
    {
        if (jobModels.ContainsKey(job))
        {
            jobModels[job].gameObject.SetActive(false);
        }
    }
}
System/CreateRole/CreateRoleManager.cs.meta
File was renamed from Fight/Actor/AI/AI_BossDSX.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 265e7ff764601cf44991055e126d0d33
timeCreated: 1514970107
guid: 0c3b8f02b7ef2f74aa676f88444c8e6b
timeCreated: 1554861276
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/CreateRole/CreateRoleProcessor.cs
New file
@@ -0,0 +1,90 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class CreateRoleProcessor : MonoBehaviour
{
    [SerializeField] CreateRoleBehaviour m_Warrior;
    [SerializeField] CreateRoleBehaviour m_Magic;
    [SerializeField] CameraParams m_CameraParams;
    Animator cameraAnimator;
    Camera createRoleCamera;
    public void LoadNecessaryResources()
    {
        if (cameraAnimator == null || createRoleCamera == null)
        {
            var prefab = SceneLoader.LoadCreateRole(m_CameraParams.prefabName);
            var instance = GameObject.Instantiate(prefab);
            cameraAnimator = instance.GetComponent<Animator>();
            createRoleCamera = instance.GetComponentInChildren<Camera>(true);
        }
    }
    public void DoEnterShow()
    {
        WindowCenter.Instance.Close<CreateRoleWin>();
        cameraAnimator.Play(m_CameraParams.enterShow);
        m_Warrior.gameObject.SetActive(true);
        m_Warrior.DoEnterShow();
    }
    public void SwitchToWarrior()
    {
        WindowCenter.Instance.Close<CreateRoleWin>();
        cameraAnimator.Play(m_CameraParams.magicToWarrior);
        m_Magic.ReleaseEffects();
        m_Warrior.ReleaseEffects();
        StopCoroutine("Co_SwitchToWarrior");
        StartCoroutine("Co_SwitchToWarrior");
    }
    public void SwitchToMagic()
    {
        WindowCenter.Instance.Close<CreateRoleWin>();
        cameraAnimator.Play(m_CameraParams.warriorToMagic);
        m_Magic.ReleaseEffects();
        m_Warrior.ReleaseEffects();
        StopCoroutine("Co_SwitchToMagic");
        StartCoroutine("Co_SwitchToMagic");
    }
    IEnumerator Co_SwitchToWarrior()
    {
        m_Warrior.gameObject.SetActive(true);
        yield return WaitingForSecondConst.WaitMS1000;
        m_Magic.gameObject.SetActive(false);
        m_Warrior.DoRoutineShow();
    }
    IEnumerator Co_SwitchToMagic()
    {
        yield return WaitingForSecondConst.WaitMS1000;
        m_Warrior.gameObject.SetActive(false);
        m_Magic.gameObject.SetActive(true);
        m_Magic.DoRoutineShow();
    }
    public void Dispose()
    {
        m_Warrior.Dispose();
        m_Magic.Dispose();
    }
    [System.Serializable]
    public struct CameraParams
    {
        public string prefabName;
        public string enterShow;
        public string warriorToMagic;
        public string magicToWarrior;
    }
}
System/CreateRole/CreateRoleProcessor.cs.meta
copy from Fight/Actor/AI/AI_BossDSX.cs.meta copy to System/CreateRole/CreateRoleProcessor.cs.meta
File was copied from Fight/Actor/AI/AI_BossDSX.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 265e7ff764601cf44991055e126d0d33
timeCreated: 1514970107
guid: 2ae1317e6fb06ee449130819c45f90c5
timeCreated: 1554864340
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/CreateRole/CreateRoleTimeLine.cs
New file
@@ -0,0 +1,113 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class CreateRoleTimeLine
{
    public bool busying { get; private set; }
    Action onComplete;
    List<Node> nodes = new List<Node>();
    LogicUpdate update;
    public CreateRoleTimeLine()
    {
        update = new LogicUpdate();
        update.Start(OnUpdate);
    }
    public void AddNone(float time, Action task)
    {
        nodes.Add(new Node()
        {
            time = Time.time + time,
            task = task
        });
    }
    public void Begin()
    {
        busying = true;
    }
    public void Stop()
    {
        Reset();
        busying = false;
    }
    public void OnComplete(Action onComplete)
    {
        this.onComplete = onComplete;
    }
    public void ClearNode()
    {
        nodes.Clear();
    }
    public void Dispose()
    {
        ClearNode();
        if (update != null)
        {
            update.Destroy();
        }
    }
    private void Reset()
    {
        foreach (var node in nodes)
        {
            node.executed = false;
        }
    }
    private void OnUpdate()
    {
        var allExecuted = true;
        foreach (var node in nodes)
        {
            if (!node.executed)
            {
                if (Time.time >= node.time)
                {
                    node.Execute();
                }
            }
            else
            {
                allExecuted = false;
            }
        }
        if (allExecuted)
        {
            if (this.onComplete != null)
            {
                this.onComplete();
            }
            busying = false;
        }
    }
    public class Node
    {
        public bool executed;
        public float time;
        public Action task;
        public void Execute()
        {
            executed = true;
            if (task != null)
            {
                task();
            }
        }
    }
}
System/CreateRole/CreateRoleTimeLine.cs.meta
copy from Fight/Actor/AI/AI_BossDSX.cs.meta copy to System/CreateRole/CreateRoleTimeLine.cs.meta
File was copied from Fight/Actor/AI/AI_BossDSX.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 265e7ff764601cf44991055e126d0d33
timeCreated: 1514970107
guid: 6faa6c8425ab0bc4ea46a56636ebef92
timeCreated: 1554954545
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/DailyQuest/DailyQuestWin.cs
@@ -319,6 +319,10 @@
                case DailyQuestType.AllianceBoss:
                    GotoAllianceBoss(_id, 0);
                    break;
                case DailyQuestType.RidingPetActivity:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<LootPreciousFrameWin>(false, 1);
                    break;
                case DailyQuestType.HazyRegion:
                    WindowCenter.Instance.Close<DailyQuestWin>();
                    WindowCenter.Instance.Open<CrossServerWin>(false, 2);
System/EquipStar/EquipStarModel.cs
@@ -22,6 +22,8 @@
            {5,new LogicString () },
        };
        public readonly LogicList<Star> stars = new LogicList<Star>();
        public readonly LogicInt specialMaterial = new LogicInt();
        public readonly LogicInt starResultEffect = new LogicInt();
@@ -52,6 +54,7 @@
        public void UpdateStarLevels(HA3B1_tagMCEquipPartStarInfo info)
        {
            var selectedEquipOldStar = GetEquipStarLevel(new Int2(selectedLevel.value, selectedPlace.value));
            for (var i = 0; i < info.InfoList.Length; i++)
            {
                var equipPosition = EquipSet.ServerPlaceToClientPlace(info.InfoList[i].EquipPackIndex);
@@ -62,8 +65,12 @@
                }
            }
            equipStarLevel.value = GetEquipStarLevel(new Int2(selectedLevel.value, selectedPlace.value));
            var starLevel = GetEquipStarLevel(new Int2(selectedLevel.value, selectedPlace.value));
            equipStarLevel.value = starLevel;
            selectedPlace.dirty = true;
            var maxStarLevel = GetMaxStarLevel(selectedLevel.value);
            UpdateSelelctedEquipStars(selectedEquipOldStar, starLevel, maxStarLevel);
            foreach (var candidate in candidatePlaces.Values)
            {
@@ -174,6 +181,8 @@
            {
                item.value = string.Empty;
            }
            stars.Clear();
        }
        public void SelectLevel(int level)
@@ -212,9 +221,12 @@
                candidate.selected.value = candidate.equipPosition == equipPosition;
            }
            equipStarLevel.value = GetEquipStarLevel(equipPosition);
            equipMaxStarLevel.value = GetMaxStarLevel(equipPosition.x);
            var starLevel = GetEquipStarLevel(equipPosition);
            var maxStarLevel = GetMaxStarLevel(equipPosition.x);
            equipStarLevel.value = starLevel;
            equipMaxStarLevel.value = maxStarLevel;
            UpdateSelelctedEquipStars(starLevel, starLevel, maxStarLevel);
            AutoAddMaterials(equipPosition);
            CalculateStarUpgradeProbability(equipPosition);
        }
@@ -558,6 +570,19 @@
            return materials.ContainsKey(index) ? materials[index] : null;
        }
        private void UpdateSelelctedEquipStars(int oldStarLevel, int newStarLevel, int maxStarLevel)
        {
            stars.Clear();
            for (var i = 1; i <= maxStarLevel; i++)
            {
                stars.Add(new Star()
                {
                    actived = i <= newStarLevel,
                    newGet = i <= newStarLevel && i > oldStarLevel,
                });
            }
        }
        private void ParseConfig()
        {
            var configs = EquipStarConfig.GetValues();
@@ -570,6 +595,11 @@
            }
        }
        public struct Star
        {
            public bool actived;
            public bool newGet;
        }
    }
}
System/EquipStar/EquipStarWin.cs
@@ -15,7 +15,7 @@
    public class EquipStarWin : Window
    {
        [SerializeField] RectTransform m_LevelContainer;
        [SerializeField] ImageCouple[] m_Stars;
        [SerializeField] Star[] m_Stars;
        [SerializeField] ItemCell m_TargetEquip;
        [SerializeField] Text m_EquipStar;
        [SerializeField] Materials m_Materials;
@@ -56,7 +56,6 @@
            }
            DisplayBaseInfo();
            DisplayDynamicInfo(true);
        }
        protected override void OnAfterOpen()
@@ -71,6 +70,12 @@
        protected override void OnAfterClose()
        {
            model.ResetOperateParams();
        }
        protected override void OnActived()
        {
            base.OnActived();
            DisplayDynamicInfo(true);
        }
        protected override void LateUpdate()
@@ -143,9 +148,13 @@
                var equipPosition = new Int2(model.selectedLevel.value, model.selectedPlace.value);
                var starLevel = model.equipStarLevel.Fetch();
                var maxStar = model.equipMaxStarLevel.Fetch();
                DisplayStars(equipPosition, starLevel, maxStar);
                DisplayPropertyPreview(equipPosition, starLevel, EquipStarModel.GetMaxStarLevel(equipPosition.x));
                DisplayStarUpgradeButton(equipPosition, starLevel);
            }
            if (force || model.stars.dirty)
            {
                DisplayStars(model.stars.Fetch());
            }
            if (force || model.starUpgradeProbability.dirty)
@@ -167,29 +176,10 @@
            }
        }
        private void DisplayStars(Int2 equipPosition, int currentStar, int maxStar)
        private void DisplayStars(List<EquipStarModel.Star> stars)
        {
            if (equipPosition.y == 0)
            {
                foreach (var behaviour in m_Stars)
                {
                    behaviour.Hide();
                }
            }
            else
            {
                for (var i = 0; i < m_Stars.Length; i++)
                {
                    if (i < maxStar)
                    {
                        m_Stars[i].Display(i < currentStar);
                    }
                    else
                    {
                        m_Stars[i].Hide();
                    }
                }
            }
            StopCoroutine("Co_DisplayStars");
            StartCoroutine("Co_DisplayStars", stars);
        }
        private void DisplayMaterialSlots(Int2 equipPosition, int currentStarLevel)
@@ -427,6 +417,32 @@
            m_EffectFailed.Play();
        }
        IEnumerator Co_DisplayStars(List<EquipStarModel.Star> stars)
        {
            var hasNewStar = stars.FindIndex(x => { return x.newGet; }) != -1;
            if (hasNewStar)
            {
                yield return WaitingForSecondConst.WaitMS2000;
            }
            for (var i = 0; i < m_Stars.Length; i++)
            {
                if (i < stars.Count)
                {
                    var star = stars[i];
                    m_Stars[i].Display(star.actived);
                    if (star.newGet)
                    {
                        m_Stars[i].PlayEffect();
                    }
                }
                else
                {
                    m_Stars[i].Hide();
                }
            }
        }
        private void ViewEquipTip()
        {
            var level = model.selectedLevel.value;
@@ -440,11 +456,12 @@
        }
        [System.Serializable]
        public class ImageCouple
        public class Star
        {
            public RectTransform container;
            public Image imageBase;
            public Image imageStar;
            public UIEffect newStarEffect;
            public void Display(bool active)
            {
@@ -456,6 +473,11 @@
            {
                container.gameObject.SetActive(false);
            }
            public void PlayEffect()
            {
                newStarEffect.Play();
            }
        }
        [System.Serializable]
System/Launch/LaunchBackGroundWin.cs
@@ -17,16 +17,11 @@
    {
        [SerializeField] RectTransform m_StaticBackGround;
        [SerializeField] Image m_BackGroundImage;
        [SerializeField] RectTransform m_DynamicBackGround;
        [SerializeField] SkeletonGraphic m_SkeletonGraphic;
        [SerializeField] UIAlphaTween m_AlphaTween;
        GameObject loginEffect;
        bool useStaticBackGround = false;
        #region Built-in
        protected override void BindController()
        {
            loginEffect = this.transform.Find("Pivot/Effect_DengLu").gameObject;
        }
        protected override void AddListeners()
@@ -36,41 +31,18 @@
        protected override void OnPreOpen()
        {
            var sprite = BuiltInLoader.LoadSprite("LoginBackGround");
            useStaticBackGround = sprite != null;
            if (useStaticBackGround)
            {
                m_BackGroundImage.overrideSprite = sprite;
                m_StaticBackGround.gameObject.SetActive(true);
                m_DynamicBackGround.gameObject.SetActive(false);
            }
            else
            {
                m_StaticBackGround.gameObject.SetActive(false);
                m_DynamicBackGround.gameObject.SetActive(true);
            }
            if (loginEffect != null)
            {
                loginEffect.gameObject.SetActive(false);
            }
            m_BackGroundImage.overrideSprite = sprite;
            m_StaticBackGround.gameObject.SetActive(true);
            this.transform.SetAsFirstSibling();
        }
        protected override void OnAfterOpen()
        {
            StageLoad.Instance.onStageLoadFinish += ShowLoginEffect;
            if (StageLoad.Instance.currentStage is LoginStage)
            {
                ShowLoginEffect();
            }
        }
        protected override void OnPreClose()
        {
            StageLoad.Instance.onStageLoadFinish -= ShowLoginEffect;
            Resources.UnloadAsset(m_SkeletonGraphic.material);
        }
        protected override void OnAfterClose()
@@ -80,33 +52,15 @@
        protected override void OnActived()
        {
            base.OnActived();
            if (!useStaticBackGround)
            {
                if (m_SkeletonGraphic != null)
                {
                    m_SkeletonGraphic.AnimationState.SetEmptyAnimations(0);
                }
            }
        }
        #endregion
        void ShowLoginEffect()
        private void Start()
        {
            if (!useStaticBackGround)
            {
                if (loginEffect != null)
                {
                    loginEffect.gameObject.SetActive(true);
                }
                if (m_SkeletonGraphic != null)
                {
                    m_SkeletonGraphic.AnimationState.SetAnimation(0, "animation2", true);
                }
            }
            m_AlphaTween.Play();
        }
        #endregion
    }
}
System/Login/CreateRoleHeroShow.cs
File was deleted
System/Login/CreateRoleWin.cs
@@ -3,38 +3,36 @@
//    [  Date ]:           Saturday, September 02, 2017
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine.Events;
namespace Snxxz.UI
{
    public class CreateRoleWin : Window
    {
        [SerializeField] Button qhBtn;
        [SerializeField] Image qhImg;
        [SerializeField] Button dsBtn;
        [SerializeField] Image dsImg;
        [SerializeField] Button jsBtn;
        [SerializeField] Image jsImg;
        [SerializeField] Button createBtn;
        [SerializeField] Button randomBtn;
        [SerializeField] Button backBtn;
        [SerializeField] InputField userNameInput;
        [SerializeField] Image m_DescImg;
        private int userJob = 0;
        CreateRoleHeroShow m_CreateRoleShow;
        [SerializeField] SelectRoleButton m_JobSelect1;
        [SerializeField] SelectRoleButton m_JobSelect2;
        LoginModel m_Model;
        LoginModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<LoginModel>()); } }
        [SerializeField] Button m_Create;
        [SerializeField] Button m_RandomName;
        [SerializeField] Button m_Back;
        [SerializeField] InputField m_NameInput;
        [SerializeField] Image m_Description;
        [SerializeField] Image m_JobName;
        [SerializeField] Image m_JobSign;
        [SerializeField] PositionTween m_LeftPostionTween;
        [SerializeField] PositionTween m_RightPositionTween;
        LoginModel model { get { return ModelCenter.Instance.GetModel<LoginModel>(); } }
        string m_MarkName = string.Empty;
        #region Built-in
        protected override void BindController()
        {
@@ -42,17 +40,16 @@
        protected override void AddListeners()
        {
            qhBtn.onClick.AddListener(QhBtn);
            dsBtn.onClick.AddListener(DsBtn);
            jsBtn.onClick.AddListener(JsBtn);
            m_JobSelect1.SetListener(SelectJob1);
            m_JobSelect2.SetListener(SelectJob2);
            createBtn.onClick.AddListener(CreateBtn);
            randomBtn.onClick.AddListener(() =>
            m_Back.SetListener(BackBtn);
            m_Create.SetListener(CreateRole);
            m_RandomName.SetListener(() =>
            {
                ChangeUserName(true);
                var job = CreateRoleManager.Instance.selectedJob.value;
                ChangeUserName(job, true);
            });
            backBtn.onClick.AddListener(BackBtn);
        }
        private void BackBtn()
@@ -62,25 +59,13 @@
        protected override void OnPreOpen()
        {
            DTC0309_tagPlayerLoginInfo.RoleChange += RoleChage;
            DTC0309_tagPlayerLoginInfo.RoleChange += OnCreateRoleSuccess;
            model.onCreateRole = true;
        }
        protected override void OnAfterOpen()
        {
            userJob = 1;
            int _rand = UnityEngine.Random.Range(0, 100);
            for (int i = 0; i < GeneralDefine.RandomJobs.Count; i++)
            {
                var _value = GeneralDefine.RandomJobs[i];
                if (_value != 0 && _rand < _value)
                {
                    userJob = i + 1;
                    break;
                }
            }
            ChangeUserName(true);
            RoleShow(0.2f);
        }
        protected override void OnPreClose()
@@ -89,105 +74,95 @@
        protected override void OnAfterClose()
        {
            DTC0309_tagPlayerLoginInfo.RoleChange -= RoleChage;
            DTC0309_tagPlayerLoginInfo.RoleChange -= OnCreateRoleSuccess;
            model.onCreateRole = false;
            RemoveRoleModel();
        }
        protected override void OnActived()
        {
            base.OnActived();
            m_LeftPostionTween.Play();
            m_RightPositionTween.Play();
            ChangeUserName(CreateRoleManager.Instance.selectedJob.value, true);
            DisplayDynamicInfo(true);
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            DisplayDynamicInfo(false);
        }
        #endregion
        private void JsBtn()
        private void DisplayDynamicInfo(bool force)
        {
            if (userJob == 3)
            if (force || CreateRoleManager.Instance.selectedJob.dirty)
            {
                ChangeUserName(true);
                var job = CreateRoleManager.Instance.selectedJob.Fetch();
                m_JobSelect1.SetSelected(job == 1);
                m_JobSelect2.SetSelected(job == 2);
                var config = CreateRoleConfig.Get(job);
                m_Description.SetSprite(config.description);
                m_JobName.SetSprite(config.jobName);
                m_JobSign.SetSprite(config.jobSign);
            }
        }
        private void SelectJob1()
        {
            if (CreateRoleManager.Instance.selectedJob.value == 1)
            {
                ChangeUserName(1, true);
                return;
            }
            userJob = 3;
            ChangeUserName(false);
            RoleShow(0f);
            ChangeUserName(1, false);
            CreateRoleManager.Instance.View(1);
        }
        private void DsBtn()
        private void SelectJob2()
        {
            if (userJob == 2)
            if (CreateRoleManager.Instance.selectedJob.value == 2)
            {
                ChangeUserName(true);
                ChangeUserName(2, true);
                return;
            }
            userJob = 2;
            ChangeUserName(false);
            RoleShow(0f);
            ChangeUserName(2, false);
            CreateRoleManager.Instance.View(2);
        }
        private void QhBtn()
        private void ChangeUserName(int job, bool force = true)
        {
            if (userJob == 1)
            {
                ChangeUserName(true);
                return;
            }
            userJob = 1;
            ChangeUserName(false);
            RoleShow(0f);
        }
        public void UpdateInfo()
        {
            CreateRoleConfig qhCfg = CreateRoleConfig.Get(1);
            CreateRoleConfig dsCfg = CreateRoleConfig.Get(2);
            CreateRoleConfig jsCfg = CreateRoleConfig.Get(3);
            CreateRoleConfig sltCfg = null;
            switch (userJob)
            {
                case 1:
                    sltCfg = qhCfg;
                    break;
                case 2:
                    sltCfg = dsCfg;
                    break;
                case 3:
                    sltCfg = jsCfg;
                    break;
            }
            qhBtn.image.SetSprite(userJob == 1 ? sltCfg.selectIcon : sltCfg.unselectIcon);
            dsBtn.image.SetSprite(userJob == 2 ? sltCfg.selectIcon : sltCfg.unselectIcon);
            jsBtn.image.SetSprite(userJob == 3 ? sltCfg.selectIcon : sltCfg.unselectIcon);
            qhImg.SetSprite(userJob == 1 ? "CreateRole_Job1_Select" : "CreateRole_Job1_UnSelect");
            dsImg.SetSprite(userJob == 2 ? "CreateRole_Job2_Select" : "CreateRole_Job2_UnSelect");
            jsImg.SetSprite(userJob == 3 ? "CreateRole_Job3_Select" : "CreateRole_Job3_UnSelect");
            m_DescImg.SetSprite(sltCfg.desc);
        }
        private void ChangeUserName(bool _force = true)
        {
            if (!_force && !m_MarkName.Equals(userNameInput.text))
            if (!force && !m_MarkName.Equals(m_NameInput.text))
            {
                return;
            }
            var _name = RandomNameConfig.GetFirstName(userJob) + RandomNameConfig.GetSecondName(userJob);
            m_MarkName = _name;
            ChangeUserName(_name);
            var name = RandomNameConfig.GetFirstName(job) + RandomNameConfig.GetSecondName(job);
            m_MarkName = name;
            m_NameInput.text = name;
        }
        private void ChangeUserName(string _name)
        {
            userNameInput.text = _name;
        }
        private void CreateBtn()
        private void CreateRole()
        {
            if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected)
            {
                return;
            }
            if (userNameInput.text.Equals(string.Empty))
            if (m_NameInput.text.Equals(string.Empty))
            {
                ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameNull"));
                return;
            }
            int error = 0;
            if (!UIHelper.SatisfyNameLength(userNameInput.text, out error))
            if (!UIHelper.SatisfyNameLength(m_NameInput.text, out error))
            {
                switch (error)
                {
@@ -200,22 +175,24 @@
                }
                return;
            }
            if (DirtyWordConfig.IsDirtWord(userNameInput.text) || UIHelper.HasSpecialCharac(userNameInput.text)
                || DirtyNameConfig.IsDirtName(userNameInput.text))
            if (DirtyWordConfig.IsDirtWord(m_NameInput.text) || UIHelper.HasSpecialCharac(m_NameInput.text)
                || DirtyNameConfig.IsDirtName(m_NameInput.text))
            {
                ServerTipDetails.DisplayNormalTip(Language.Get("L1007"));
                return;
            }
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                ServerTipDetails.DisplayNormalTip(Language.Get("L1116"));
                return;
            }
            LanguageVerify.Instance.VerifyPlayerName(userNameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) =>
            LanguageVerify.Instance.VerifyPlayerName(m_NameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) =>
              {
                  C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole
                  createRole.Job = (byte)userJob;
                  createRole.Job = (byte)CreateRoleManager.Instance.selectedJob.value;
                  createRole.Name = name;
                  createRole.Sex = 1;
                  createRole.Hair = 10002;
@@ -225,52 +202,46 @@
                  createRole.PlayerType = 1;
                  GameNetSystem.Instance.SendInfo(createRole);//发送创角包
              });
            //屏蔽职业特效预先加载逻,以减少不必要的内存损耗和获得更快的场景切换速度,资源压缩使用LZ4才行。
            // AssetPreLoad.Instance.PreLoadJobEffect(userJob);
        }
        private void RoleChage()
        private void OnCreateRoleSuccess()
        {
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                ServerTipDetails.DisplayNormalTip(Language.Get("L1116"));
                return;
            }
            C0108_tagCRoleLoginAsk tagCRoleLoginAsk = new C0108_tagCRoleLoginAsk();
            var tagCRoleLoginAsk = new C0108_tagCRoleLoginAsk();
            tagCRoleLoginAsk.Type = 2;//进入游戏
            tagCRoleLoginAsk.ClientID = SDKUtility.Instance.RegistrationID;
            GameNetSystem.Instance.SendInfo(tagCRoleLoginAsk);
            NetLinkWin.Show();
        }
        private void RoleShow(float _delay)
        [System.Serializable]
        public struct SelectRoleButton
        {
            StopCoroutine("DelayShowActor");
            StartCoroutine("DelayShowActor", _delay);
            public int job;
            public Button select;
            public Image backGround;
            public Image icon;
            public void SetListener(UnityAction action)
            {
                select.SetListener(action);
            }
            public void SetSelected(bool selected)
            {
                var config = CreateRoleConfig.Get(job);
                backGround.SetSprite(selected ? "CreateRole_ChoosenBottom_a" : "CreateRole_UnChoosenBottom_a");
                icon.SetSprite(selected ? config.selectIcon : config.unselectIcon);
                icon.SetNativeSize();
            }
        }
        IEnumerator DelayShowActor(float _delay)
        {
            m_CreateRoleShow = GameObject.FindObjectOfType<CreateRoleHeroShow>();
            UpdateInfo();
            yield return new WaitForSeconds(_delay);
            RemoveRoleModel();
            ShowRoleModel();
        }
        private void ShowRoleModel()
        {
            m_CreateRoleShow.CreateRoleShow(userJob);
        }
        private void RemoveRoleModel()
        {
            m_CreateRoleShow.Dispose();
        }
    }
}
System/Login/SelectRoleWin.cs
@@ -6,22 +6,35 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class SelectRoleWin : Window
    {
        [SerializeField] Text nameText;
        [SerializeField] Text lvText;
        [SerializeField] Text m_PlayerName;
        [SerializeField] Text m_PlayerLevel;
        [SerializeField] Button beginBtn;
        [SerializeField] Image playerIcon;
        [SerializeField] Button backBtn;
        [SerializeField] Button m_Begin;
        [SerializeField] Button m_Back;
        CreateRoleHeroShow m_CreateRoleShow;
        [SerializeField] Image m_Description;
        [SerializeField] Image m_JobName;
        [SerializeField] Image m_JobSign;
        SelectRoleProcessor m_SelectRoleProcessor;
        SelectRoleProcessor selectRoleProcessor {
            get {
                if (m_SelectRoleProcessor == null)
                {
                    m_SelectRoleProcessor = GameObject.FindObjectOfType<SelectRoleProcessor>();
                }
                return m_SelectRoleProcessor;
            }
        }
        LoginModel model { get { return ModelCenter.Instance.GetModel<LoginModel>(); } }
@@ -32,8 +45,8 @@
        protected override void AddListeners()
        {
            beginBtn.onClick.AddListener(BeginBtn);
            backBtn.onClick.AddListener(BackToLogin);
            m_Begin.onClick.AddListener(BeginBtn);
            m_Back.onClick.AddListener(BackToLogin);
        }
        private void BackToLogin()
@@ -43,8 +56,6 @@
        protected override void OnPreOpen()
        {
            m_CreateRoleShow = GameObject.FindObjectOfType<CreateRoleHeroShow>();
            InitInfo();
        }
@@ -58,35 +69,31 @@
        protected override void OnAfterClose()
        {
            RemoveRoleModel();
            selectRoleProcessor.Dispose();
        }
        #endregion
        private void RemoveRoleModel()
        {
            m_CreateRoleShow.Dispose();
        }
        private void BeginBtn()
        {
            if (GameNetSystem.Instance.netState != GameNetSystem.NetState.Connected)
            if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected)
            {
                if (Application.internetReachability == NetworkReachability.NotReachable)
                {
                    ConfirmCancel.ShowPopConfirm(
                        Language.Get("Mail101"),
                        Language.Get("L1116"),
                        () => { }
                        );
                    NetLinkWin.Hide();
                }
                else
                {
                    LoadingWin.targetMapResId =2;
                    WindowCenter.Instance.Open<LoadingWin>();
                    model.EnterWorld(2);
                }
                return;
            }
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                ConfirmCancel.ShowPopConfirm(
                    Language.Get("Mail101"),
                    Language.Get("L1116")
                    );
                NetLinkWin.Hide();
                return;
            }
            LoadingWin.targetMapResId = 2;
            WindowCenter.Instance.Open<LoadingWin>();
            model.EnterWorld(2);
        }
        private void InitInfo()
@@ -95,11 +102,15 @@
            {
                return;
            }
            nameText.text = PlayerDatas.Instance.loginInfo.PlayerName.ToString();//玩家昵称
            lvText.text = Language.Get("Z1024", PlayerDatas.Instance.loginInfo.LV);//玩家等级
            CreateRoleConfig _cfg = CreateRoleConfig.Get(PlayerDatas.Instance.loginInfo.Job);
            playerIcon.SetSprite(_cfg.desc);
            m_CreateRoleShow.SelectRoleShow();
            m_PlayerName.text = PlayerDatas.Instance.loginInfo.PlayerName.ToString();//玩家昵称
            m_PlayerLevel.text = Language.Get("Z1024", PlayerDatas.Instance.loginInfo.LV);//玩家等级
            var config = CreateRoleConfig.Get(PlayerDatas.Instance.loginInfo.Job);
            m_Description.SetSprite(config.description);
            m_JobName.SetSprite(config.jobName);
            m_JobSign.SetSprite(config.jobSign);
            selectRoleProcessor.Show(PlayerDatas.Instance.loginInfo.Job);
        }
    }
System/RidingPet/ContainerRidingPet.cs
@@ -20,6 +20,7 @@
        [SerializeField] RawImage m_BossRawImage;
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        RidingPetBossModel ridingPetMdoel { get { return ModelCenter.Instance.GetModel<RidingPetBossModel>(); } }
        public int RawImagetestBossID = 50103006;
        public RewardPositionType rewardPositonType;
        [SerializeField] ItemCell[] m_RewardArray;
@@ -33,8 +34,8 @@
        public void DisplayBossRawImage()
        {
            var config = NPCConfig.Get(RawImagetestBossID);
            UI3DModelExhibition.Instance.ShowNPC(RawImagetestBossID, config.UIModeLOffset, config.UIModelRotation, m_BossRawImage);
            var config = NPCConfig.Get(ridingPetMdoel.BossIDArray[0]);
            UI3DModelExhibition.Instance.ShowNPC(ridingPetMdoel.BossIDArray[0], config.UIModeLOffset, config.UIModelRotation, m_BossRawImage);
        }
        public void StopShowBossRawImage()
@@ -49,8 +50,8 @@
        public void DisplayAnotherBossRawImage()
        {
            var config = NPCConfig.Get(RawImagetestBossID);
            UI3DModelExhibition.InstanceClone1.ShowNPC(RawImagetestBossID, config.UIModeLOffset, config.UIModelRotation, m_BossRawImage);
            var config = NPCConfig.Get(ridingPetMdoel.BossIDArray[1]);
            UI3DModelExhibition.InstanceClone1.ShowNPC(ridingPetMdoel.BossIDArray[1], config.UIModeLOffset, config.UIModelRotation, m_BossRawImage);
        }
        public void DisplaySpiritPetHP()
@@ -64,7 +65,7 @@
            dailyQuestModel.TryGetOpenTime((int)DailyQuestType.RidingPetActivity, out dailyQuestOpentime);
            HourMinute hourMin;
            dailyQuestOpentime.TryGetNextOpenTime(out hourMin);
            m_ActivityInfo.text = Language.Get("RidingPetBossQuestTime", hourMin.hourBegin, hourMin.minuteBegin);
            m_ActivityInfo.text = Language.Get("RidingPetBossQuestTime", "<color=red>"+hourMin.hourBegin+":"+hourMin.minuteBegin+"</color>");
        }
        public void DisplayRewardItem()
System/SelectRole.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: e131efedb12411f41931be24df713a3c
folderAsset: yes
timeCreated: 1554890866
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
System/SelectRole/SelectRoleBehaviour.cs
New file
@@ -0,0 +1,92 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class SelectRoleBehaviour : MonoBehaviour
{
    [SerializeField] Camera m_CreateRoleCamera;
    [SerializeField] CreateRoleHeroPlatform m_HeroPlatform;
    [SerializeField] ActorShadowCaster m_Shadow;
    UI3DShowHero playerModel = new UI3DShowHero();
    public void Show()
    {
        Dispose();
        var fashionClothes = 0;
        var fashionWeapon = 0;
        var fashionSecondary = 0;
        var clothesItemId = 0;
        var weaponItemId = 0;
        var wingsItemId = 0;
        var secondaryItemId = 0;
        var suitLevel = 0;
        var equipInfos = PlayerDatas.Instance.loginInfo.EquipInfo;
        for (int i = 0; i < equipInfos.Length; i++)
        {
            var equipInfo = equipInfos[i];
            var itemConfig = ItemConfig.Get((int)equipInfo.ItemID);
            switch ((RoleEquipType)itemConfig.EquipPlace)
            {
                case RoleEquipType.FashionClothes:
                    fashionClothes = (int)equipInfo.ItemID;
                    break;
                case RoleEquipType.FashionWeapon:
                    fashionWeapon = (int)equipInfo.ItemID;
                    break;
                case RoleEquipType.FashionWeapon2:
                    fashionSecondary = (int)equipInfo.ItemID;
                    break;
                case RoleEquipType.Weapon:
                    weaponItemId = (int)equipInfo.ItemID;
                    break;
                case RoleEquipType.Clothes:
                    clothesItemId = (int)equipInfo.ItemID;
                    break;
                case RoleEquipType.Wing:
                    wingsItemId = (int)equipInfo.ItemID;
                    break;
                case RoleEquipType.Weapon2:
                    secondaryItemId = (int)equipInfo.ItemID;
                    break;
            }
        }
        var data = new UI3DPlayerExhibitionData()
        {
            job = PlayerDatas.Instance.loginInfo.Job,
            fashionClothesId = fashionClothes,
            clothesId = clothesItemId,
            suitLevel = suitLevel,
            fashionWeaponId = fashionWeapon,
            weaponId = weaponItemId,
            wingsId = wingsItemId,
            fashionSecondaryId = fashionSecondary,
            secondaryId = secondaryItemId,
        };
        m_CreateRoleCamera.gameObject.SetActive(true);
        var model = playerModel.Show(data, m_HeroPlatform.transform);
        playerModel.StandUp();
        m_Shadow.Cast(model.transform);
    }
    public void Dispose()
    {
        playerModel.Dispose();
    }
    private void OnEnable()
    {
    }
    private void OnDestroy()
    {
        StopAllCoroutines();
    }
}
System/SelectRole/SelectRoleBehaviour.cs.meta
copy from Fight/Actor/AI/AI_BossDSX.cs.meta copy to System/SelectRole/SelectRoleBehaviour.cs.meta
File was copied from Fight/Actor/AI/AI_BossDSX.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 265e7ff764601cf44991055e126d0d33
timeCreated: 1514970107
guid: 215e4bd908ee7314984e023ff5b3967a
timeCreated: 1554946916
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/SelectRole/SelectRoleProcessor.cs
New file
@@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class SelectRoleProcessor : MonoBehaviour
{
    [SerializeField] SelectRoleBehaviour m_Job1;
    [SerializeField] SelectRoleBehaviour m_Job2;
    public void Show(int job)
    {
        switch (job)
        {
            case 1:
                m_Job1.Show();
                break;
            case 2:
                m_Job2.Show();
                break;
        }
    }
    public void Dispose()
    {
        m_Job1.Dispose();
        m_Job2.Dispose();
    }
}
System/SelectRole/SelectRoleProcessor.cs.meta
UI/Common/UI3DModelFactory.cs
@@ -1,67 +1,12 @@
using UnityEngine;
using System.Collections.Generic;
using System;
public class UI3DModelFactory
{
    static UI3DModelFactory()
    {
        GlobalTimeEvent.Instance.minuteEvent += OnPerMinute;
    }
    static Dictionary<int, GameObject> jobModels = new Dictionary<int, GameObject>();
    public static void LoadCreateRole(int job, Action<bool, UnityEngine.Object> _callBack)
    {
        if (jobModels.ContainsKey(job))
        {
            if (_callBack != null)
            {
                _callBack(true, jobModels[job]);
            }
            return;
        }
        Action<bool, UnityEngine.Object> assetCallBack = (bool _ok, UnityEngine.Object _asset) =>
        {
            GameObject instance = null;
            if (_ok)
            {
                instance = GameObject.Instantiate(_asset) as GameObject;
                if (instance != null)
                {
                    jobModels[job] = instance;
                }
            }
            if (_callBack != null)
            {
                _callBack(_ok && instance != null, instance);
            }
        };
        InstanceResourcesLoader.LoadCreateRole(job, assetCallBack);
    }
    public static void ReleaseCreateRole(int job)
    {
        if (jobModels.ContainsKey(job))
        {
            jobModels[job].gameObject.SetActive(false);
        }
    }
    public static void ClearCreateRole()
    {
        jobModels.Clear();
        if (!AssetSource.mobFromEditor)
        {
            AssetBundleUtility.Instance.UnloadAssetBundle("mob/createrole", true, false);
        }
    }
    public static GameObject LoadUINPC(int id)
UI/HUD/PopUpNum.cs
@@ -331,6 +331,10 @@
            PetZhuXian = 38,                        //宠物诛仙                      
            EnemyZhuXian = 39,                   //敌人诛仙
            PlayerDeadlyHit = 43,                    //玩家致死一击
            PetDeadlyHit = 44,                        //宠物致死一击
            EnemyDeadlyHit = 45,                   //敌人致死一击
            BuffAddDefense = 101,//+防御buff
            BuffAddAttack = 102,//+攻击buff
            BuffAddAttackSpeed = 103,//+攻速buff
Utility/EnumHelper.cs
@@ -120,6 +120,7 @@
    BreakableObj = 19,//场景可被攻击物     19
    FightAssist = 20,// 助战
    SGZC_FightAssist = 21,// 上古战场助战
    MonsterTime = 22,// 按时间掉血
    OpenWorldMap = 99,// 打开世界地图
}
@@ -750,8 +751,8 @@
    EveryLvAddHp = 53, //每1级+%s生命
    AddEquipDropPrecent = 54, //增加装备掉落率
    AddCoinsPrecent = 55,//增加金币
    ArmorMaxHPPer=63,//基础装备生命
    WeaponAtkPer =65,//基础装备攻击
    ArmorMaxHPPer = 63,//基础装备生命
    WeaponAtkPer = 65,//基础装备攻击
    ArmorDefPer = 66, //防具防御百分比
    MinAtk = 67, //最小攻击
    MaxAtk = 68, //最大攻击
@@ -1163,6 +1164,8 @@
    ZhuXianAtk,
    /** 终极斩杀 */
    FinalKill,
    /*致命一击*/
    DeadlyHit
}
public enum DungeonTargetType