少年修仙传客户端代码仓库
client_linchunjie
2018-10-10 c6bc396fe264cd53ba594e7430011c623cc26c4a
Merge branch 'master' into 3687天赋功能

Conflicts:
Core/GameEngine/Model/ConfigManager.cs
29个文件已修改
4个文件已添加
903 ■■■■ 已修改文件
Core/GameEngine/Model/ConfigManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/TelPartialConfig/RandomNameConfig.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H05_PlayerMove/DTC0501_tagObjMove.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/SDK/SDKUtility.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActor.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorNpcFight.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Achievement/AchievementModel.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionConfig.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestData.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DayRemind.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossNoticeWin.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossNoticeWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/EquipTip.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerPackModels.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/CreateRoleWin.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/LoginModel.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/ImpactRankModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityWin.cs 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/RoleModel.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/RoleRenameWin.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/CheckDisplay.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/CheckDisplay.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/RotatePointer.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/WheelOfFortuneModel.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/WheelOfFortuneWin.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/WelfareCenter.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/WelfareWin.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelExhibition.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/UIHelper.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs
@@ -36,13 +36,13 @@
    {
        StartSyncTask<PriorBundleConfig>(AssetPath.Resource);
        StartSyncTask<PriorLanguageConfig>(AssetPath.Resource);
        StartSyncTask<LoginSeverListConfig>(AssetSource.refdataFromEditor ? AssetPath.ResourceOut : AssetPath.External);
    }
    List<ConfigTask> configTasks = new List<ConfigTask>();
    public IEnumerator Co_LoadConfigs()
    {
        StartSyncTask<LoginSeverListConfig>(AssetSource.refdataFromEditor ? AssetPath.ResourceOut : AssetPath.External);
        AddAsyncTask<IconConfig>();
        AddAsyncTask<ItemConfig>();
        AddAsyncTask<SkillConfig>();
Core/GameEngine/Model/TelPartialConfig/RandomNameConfig.cs
@@ -16,6 +16,7 @@
    public partial class RandomNameConfig : ConfigBase, IConfigPostProcess
    {
        private static Dictionary<int, List<RandomNameConfig>> m_RandomNameCfgs = new Dictionary<int, List<RandomNameConfig>>();
        private static List<RandomNameConfig> m_RandomFirstNames = new List<RandomNameConfig>();
        public void OnConfigParseCompleted()
        {
@@ -38,12 +39,17 @@
                    }
                }
            }
            if (!string.IsNullOrEmpty(RandomName1))
            {
                m_RandomFirstNames.Add(this);
            }
        }
        public static string GetFirstName(int occupa)
        {
            List<RandomNameConfig> list = null;
            m_RandomNameCfgs.TryGetValue(occupa, out list);
            List<RandomNameConfig> list = m_RandomFirstNames;
            //m_RandomNameCfgs.TryGetValue(occupa, out list);
            int cnt = list.Count;
            string str = list[Random.Range(0, cnt)].RandomName1;
            return str;
Core/NetworkPackage/DTCFile/ServerPack/H05_PlayerMove/DTC0501_tagObjMove.cs
@@ -29,6 +29,15 @@
        Vector3 _destPosition = new Vector3((vNetData.DestPosX - GA_Hero.MapOffset.x) * .5f, _actor.Pos.y, (vNetData.DestPosY - GA_Hero.MapOffset.z) * .5f);
        if (_actor is GA_Pet)
        {
            if (MathUtility.DistanceSqrtXZ(_destPosition, _actor.Pos) < 2f)
            {
                return;
            }
        }
        if (_actor.ActorType == GameObjType.gotPlayer)
        {
            GActorPlayerBase _player = _actor as GActorPlayerBase;
Core/SDK/SDKUtility.cs
@@ -21,6 +21,7 @@
        Free = 1,// 自由
        Mr = 2,// 猫耳
        Sp = 3,// 思璞
        Js = 4,// 极速
    }
    public E_ChannelPlatform ChannelPlatform { get; private set; }
@@ -320,6 +321,10 @@
                        {
                            ChannelPlatform = E_ChannelPlatform.Sp;
                        }
                        else if (_channelPlatform.Equals("js"))
                        {
                            ChannelPlatform = E_ChannelPlatform.Js;
                        }
                    }
                }
                break;
Fight/GameActor/GActor.cs
@@ -317,6 +317,7 @@
        Vector3 _validPos = Pos;
        if (TryGetValidPos(destPos, ref _validPos))
        {
            DestPos = _validPos;
            m_SearchType = E_SearchType.Static;
            MoveTo(_validPos, keepDist);
        }
@@ -424,7 +425,7 @@
                return;
            }
            Vector3 _curCorner;
            Vector3 _curCorner = Pos;
            // 获得当前点, 一般的寻路都会产生2个点
            // 第一个点为寻路起点, 所以这里如果是第一次取
@@ -433,7 +434,11 @@
            {
                m_CornerIndex = 1;
            }
            if (m_Path.corners != null && m_CornerIndex < m_Path.corners.Length)
            {
            _curCorner = m_Path.corners[m_CornerIndex];
            }
            // 计算坐标差
            Vector3 _curPos = Pos;
@@ -483,16 +488,11 @@
            }
            // 判断和终点是否已经达到保持值得
            Vector3 _endPos = m_Path.corners[m_Path.corners.Length - 1];
            _chkDistSqrt = MathUtility.DistanceSqrtXZ(_endPos, Pos);
            _chkDistSqrt = MathUtility.DistanceSqrtXZ(DestPos, Pos);
            if (_chkDistSqrt <= m_KeepDist * m_KeepDist)
            if ((_chkDistSqrt - m_KeepDist * m_KeepDist) <= .05f)
            {
                StopPathFind();
                //if (ServerInstID == PlayerDatas.Instance.PlayerId)
                //{
                //    Debug.LogFormat("已到达保持距离: {0} <= {1}", _chkDistSqrt, m_KeepDist * m_KeepDist);
                //}
            }
        }
    }
@@ -585,6 +585,21 @@
        }
    }
    public static void ForceCrossFade(Animator animator, int name, float transitionDuration, int layer = 0, float normalizedTime = float.NegativeInfinity)
    {
        animator.Update(0);
        if (animator.GetNextAnimatorStateInfo(layer).fullPathHash == 0)
        {
            animator.CrossFade(name, transitionDuration, layer, normalizedTime);
        }
        else
        {
            animator.Play(animator.GetNextAnimatorStateInfo(layer).fullPathHash, layer);
            animator.Update(0);
            animator.CrossFade(name, transitionDuration, layer, normalizedTime);
        }
    }
    /// <summary>
    /// 矫正服务端坐标至客户端坐标
    /// </summary>
Fight/GameActor/GActorNpcFight.cs
@@ -305,6 +305,11 @@
        NextAction = GAStaticDefine.Act_Idle;
    }
    public override void Run()
    {
        NextAction = GAStaticDefine.Act_Run;
    }
    public override void IdleImmediate()
    {
        if (m_Animator)
@@ -314,13 +319,11 @@
            {
                m_Animator.Play(GAStaticDefine.State_IdleHash);
            }
            //Debug.LogFormat("调用了 {0} 的立即站立", ServerInstID);
        }
    }
    public override void Run()
            if (this is GA_Pet)
    {
        NextAction = GAStaticDefine.Act_Run;
                Debug.LogFormat("调用了 {0} 的立即站立", ServerInstID);
            }
        }
    }
    public override void RunImmediate()
@@ -329,6 +332,10 @@
        {
            Run();
            m_Animator.Play(GAStaticDefine.State_RunHash);
            if (this is GA_Pet)
            {
                Debug.LogFormat(" ---- 调用了 {0} 的立即跑动", ServerInstID);
            }
        }
    }
System/Achievement/AchievementModel.cs
@@ -21,7 +21,6 @@
        PlayerTaskDatas taskmodel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } }
        GetItemPathModel getItemPathModel { get { return ModelCenter.Instance.GetModel<GetItemPathModel>(); } }
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        Dictionary<int, int> equipQualityItemIdTables = new Dictionary<int, int>() { { 1, 2110 }, { 2, 2111 }, { 3, 2112 }, { 4, 2113 }, { 5, 2114 } };
        public override void Init()
@@ -294,6 +293,7 @@
                        }
                        else
                        {
                            AchievementGoto.guideAchievementId = _achievementId;
                            playerPack.SetLookIndex(guid39);
                            GotoCompleteByJump(144);
                        }
@@ -314,6 +314,7 @@
                        }
                        else
                        {
                            AchievementGoto.guideAchievementId = _achievementId;
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            playerPack.SetLookIndex(guid82);
@@ -337,6 +338,7 @@
                        }
                        else
                        {
                            AchievementGoto.guideAchievementId = _achievementId;
                            playerPack.SetLookIndex(guid83);
                            WindowCenter.Instance.Close<TreasureLevelUpWin>();
                            WindowCenter.Instance.Close<MainInterfaceWin>();
System/ClientVersion/VersionConfig.cs
@@ -15,6 +15,9 @@
    [SerializeField] public string m_AppId = string.Empty;
    public string appId { get { return m_AppId; } }
    [SerializeField] public string m_SpID = string.Empty;
    public string SpID { get { return m_SpID; } }
    [SerializeField] VersionAuthority m_VersionAuthority;
    public VersionAuthority versionAuthority { get { return m_VersionAuthority; } }
@@ -118,6 +121,7 @@
            m_IsBanShu = int.Parse(dataStrings[17]) == 1;
            m_LogoPosition = dataStrings[18].Vector3Parse();
            m_BanHao = dataStrings[19];
            m_SpID = dataStrings[20];
        }
        catch (System.Exception ex)
        {
@@ -177,6 +181,7 @@
        _to.m_ClientPackageFlag = _from.m_ClientPackageFlag;
        _to.m_LogoPosition = _from.m_LogoPosition;
        _to.m_BanHao = _from.m_BanHao;
        _to.m_SpID = _from.m_SpID;
    }
    /// <summary>
System/DailyQuest/DailyQuestData.cs
@@ -334,6 +334,74 @@
    }
    public int GetFirstOpenSurplusSeconds()
    {
        if (IsAfterFirstOpen())
        {
            return 0;
        }
        var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        var maxDays = 15 - openDayWeek == 0 ? 7 : openDayWeek;
        for (int i = dayIndex; i <= maxDays; i++)
        {
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
            {
                var days = i - dayIndex;
                var hourMinute = specialOpenTimes[openDayWeek][dayIndex][0];
                var hour = TimeUtility.ServerNow.Hour;
                var minute = TimeUtility.ServerNow.Minute;
                var time = TimeUtility.ServerNow.AddDays(days);
                time = new DateTime(time.Year, time.Month, time.Day, hourMinute.hourBegin, hourMinute.minuteBegin, 0);
                var seconds = (int)(time - TimeUtility.ServerNow).TotalSeconds;
                return Mathf.Max(0, seconds);
            }
        }
        return 0;
    }
    public bool IsAfterFirstOpen()
    {
        var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
        if (!isSpecialDay)
        {
            return true;
        }
        var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        var maxDays = 15 - openDayWeek == 0 ? 7 : openDayWeek;
        for (int i = 1; i <= maxDays; i++)
        {
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
            {
                if (i < dayIndex)
                {
                    return true;
                }
                if (i == dayIndex)
                {
                    var hourMinute = specialOpenTimes[openDayWeek][dayIndex][0];
                    var hour = TimeUtility.ServerNow.Hour;
                    var minute = TimeUtility.ServerNow.Minute;
                    if (hour < hourMinute.hourEnd ||
                        (hour == hourMinute.hourEnd && minute < hourMinute.minuteEnd))
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                if (i > dayIndex)
                {
                    return false;
                }
            }
        }
        return true;
    }
    public bool ContainTimeNode(int week, int timeNode)
    {
        var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
System/DailyQuest/DayRemind.cs
@@ -46,6 +46,7 @@
    public const string TASK_SKILL_HOLE = "TaskSkillHole";
    public const string RUNE_SPECIAL_HOLE = "RuneSpecialHole";
    public const string LEAGUE_NOTICE_REDPOINT = "LeagueNoticeRedpoint";
    public const string FAIRYGRABBOSS_NOTICE_REDPOINT = "FairyGrabBossRedpoint";
    public Dictionary<string, int[]> dayRemindDic = new Dictionary<string, int[]>();
    public bool GetDayRemind(string _remindKey)
@@ -100,6 +101,7 @@
        SetDayRemind(TASK_SKILL_HOLE);
        SetDayRemind(RUNE_SPECIAL_HOLE);
        SetDayRemind(LEAGUE_NOTICE_REDPOINT);
        SetDayRemind(FAIRYGRABBOSS_NOTICE_REDPOINT);
    }
    private void SetDayRemind(string _key)
System/FairyAu/FairyGrabBossModel.cs
@@ -5,14 +5,14 @@
using UnityEngine;
namespace Snxxz.UI
{
    public class FairyGrabBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    public class FairyGrabBossModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
    {
        public List<int> bosses { get; private set; }
        Dictionary<int, List<Item>> dropItemDict = new Dictionary<int, List<Item>>();
        Dictionary<int, Dictionary<int, FairyGrabBossInfo>> fairyGrabBossDict = new Dictionary<int, Dictionary<int, FairyGrabBossInfo>>();
        Dictionary<int, BossProgressInfo> bossProgressDict = new Dictionary<int, BossProgressInfo>();
        public bool IsOpen
        public bool IsActivityOpen
        {
            get
            {
@@ -76,6 +76,9 @@
        public int callMemberDuty { get; private set; }
        public int callMemberSeconds { get; private set; }
        public int noticeShowPet { get; private set; }
        public int noticeShowHorse { get; private set; }
        private bool serverInited = false;
        //private DateTime lastQueryProgressTime = DateTime.Now;
@@ -103,17 +106,22 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            SysNotifyMgr.Instance.sysNotifyEvent += SystemNotifyEvent;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            TimeMgr.Instance.OnMinuteEvent += MinuteEvent;
            OpenServerActivityCenter.Instance.Register(13, this);
        }
        public void OnBeforePlayerDataInitialize()
        {
            serverInited = false;
            cacheNoticeOpen = false;
            bossAliveDict.Clear();
        }
        public void OnPlayerLoginOk()
        {
            serverInited = true;
            cacheNoticeOpen = IsOpen;
            UpdateNoticeRedpoint();
        }
        public override void UnInit()
@@ -126,6 +134,22 @@
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
            SysNotifyMgr.Instance.sysNotifyEvent -= SystemNotifyEvent;
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            TimeMgr.Instance.OnMinuteEvent -= MinuteEvent;
        }
        private void MinuteEvent()
        {
            if (serverInited)
            {
                if (cacheNoticeOpen != IsOpen)
                {
                    cacheNoticeOpen = !cacheNoticeOpen;
                    if (onStateUpate != null)
                    {
                        onStateUpate((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
                    }
                }
            }
        }
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
@@ -266,6 +290,11 @@
            if (_id == 139)
            {
                RecheckGrabBoss();
                if (onStateUpate != null)
                {
                    onStateUpate((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
                }
                UpdateNoticeRedpoint();
            }
        }
@@ -294,6 +323,14 @@
            var config = Config.Instance.Get<FuncConfigConfig>("FairyCallMember");
            callMemberSeconds = int.Parse(config.Numerical1);
            callMemberDuty = int.Parse(config.Numerical2);
            config = Config.Instance.Get<FuncConfigConfig>("FairyGrabBossShowModel");
            noticeShowHorse = 305;
            noticeShowPet = 50106305;
            if (config != null)
            {
                noticeShowPet = int.Parse(config.Numerical1);
                noticeShowHorse = int.Parse(config.Numerical2);
            }
        }
        public bool TryGetDropItems(int bossId, out List<Item> dropItems)
@@ -533,7 +570,6 @@
        #region 召集弹窗
        public bool helpCoolDown { get; set; }
        public List<FairyGrabBossHelp> fairyGrabBossHelps = new List<FairyGrabBossHelp>();
        public event Action fairyGrabBossHelpUpdate;
@@ -638,6 +674,68 @@
        }
        #endregion
        #region 骑宠争夺预告
        public bool IsOpen
        {
            get
            {
                DailyQuestOpenTime dailyQuestOpenTime;
                if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out dailyQuestOpenTime))
                {
                    return FuncOpen.Instance.IsFuncOpen(139) && !dailyQuestOpenTime.IsAfterFirstOpen();
                }
                return false;
            }
        }
        public bool IsAdvance
        {
            get { return false; }
        }
        public bool priorityOpen
        {
            get { return false; }
        }
        bool cacheNoticeOpen { get; set; }
        public event Action<int> onStateUpate;
        public int GetFirstOpenSeconds()
        {
            int seconds = 0;
            if (!InActivityTime)
            {
                DailyQuestOpenTime dailyQuestOpenTime;
                if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out dailyQuestOpenTime))
                {
                    seconds = dailyQuestOpenTime.GetFirstOpenSurplusSeconds();
                }
            }
            return seconds;
        }
        Redpoint fairyGrabBossNoticeRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20913);
        void UpdateNoticeRedpoint()
        {
            fairyGrabBossNoticeRedpoint.state = RedPointState.None;
            if (!DayRemind.Instance.GetDayRemind(DayRemind.FAIRYGRABBOSS_NOTICE_REDPOINT)
                && IsOpen)
            {
                fairyGrabBossNoticeRedpoint.state = RedPointState.Simple;
            }
        }
        public void SetViewFairyGrabBossNotice()
        {
            if (fairyGrabBossNoticeRedpoint.state == RedPointState.Simple)
            {
                DayRemind.Instance.SetDayRemind(DayRemind.FAIRYGRABBOSS_NOTICE_REDPOINT, true);
                UpdateNoticeRedpoint();
            }
        }
        #endregion
        public class FairyGrabBossInfo
        {
            public int npcId { get; private set; }
System/FairyAu/FairyGrabBossNoticeWin.cs
New file
@@ -0,0 +1,109 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, October 09, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI {
    public class FairyGrabBossNoticeWin : Window
    {
        [SerializeField] Button m_Goto;
        [SerializeField] RawImage m_Horse;
        [SerializeField] RawImage m_Pet;
        [SerializeField] Text m_SurplusTime;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Goto.onClick.AddListener(Goto);
        }
        protected override void OnPreOpen()
        {
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            Display();
            DisplayTime();
            model.SetViewFairyGrabBossNotice();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            UI3DModelExhibition.Instance.StopShow();
            UI3DModelExhibition.InstanceClone1.StopShow();
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void Goto()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FairyGrabBoss);
        }
        void Display()
        {
            m_Horse.gameObject.SetActive(true);
            m_Pet.gameObject.SetActive(true);
            var npcConfig = Config.Instance.Get<NPCConfig>(model.noticeShowPet);
            UI3DModelExhibition.Instance.ShowNPC(model.noticeShowPet, npcConfig.UIModeLOffset, npcConfig.UIModelRotation, m_Pet);
            var horseConfig = Config.Instance.Get<HorseConfig>(model.noticeShowHorse);
            UI3DModelExhibition.InstanceClone1.ShowHourse(horseConfig.Model, m_Horse);
            UI3DModelExhibition.Instance.interactable = false;
            UI3DModelExhibition.InstanceClone1.interactable = false;
        }
        private void SecondEvent()
        {
            DisplayTime();
        }
        void DisplayTime()
        {
            var seconds = model.GetFirstOpenSeconds();
            var isOpen = model.IsOpen;
            if (seconds > 0)
            {
                if (!m_SurplusTime.gameObject.activeSelf)
                {
                    m_SurplusTime.gameObject.SetActive(true);
                }
                m_SurplusTime.text = Language.Get("FairyGrabBossTime", TimeUtility.SecondsToDHMSCHS(seconds));
            }
            else if (isOpen)
            {
                if (!m_SurplusTime.gameObject.activeSelf)
                {
                    m_SurplusTime.gameObject.SetActive(true);
                }
                m_SurplusTime.text = Language.Get("FairyGrabBossOpened");
            }
            else
            {
                m_SurplusTime.gameObject.SetActive(false);
            }
        }
    }
}
System/FairyAu/FairyGrabBossNoticeWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1ab2a47cddd6c5c45bd057f4cdc3df3a
timeCreated: 1539083346
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FairyAu/FairyGrabBossWin.cs
@@ -159,7 +159,7 @@
        {
            m_FairyName.text = string.Empty;
            m_NoneFairy.gameObject.SetActive(true);
            if (!model.IsOpen)
            if (!model.IsActivityOpen)
            {
                return;
            }
System/KnapSack/Logic/EquipTip.cs
@@ -134,6 +134,8 @@
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        ItemAttrData itemAttrData;
@@ -944,6 +946,25 @@
                foreach (ItemWinBtnType key in itemAttrData.tipsFuncBtnDic.Keys)
                {
                    Button btn = OnGUIButton(btnGroup.gameObject, operateBtn, key.ToString(), Language.Get(StringUtility.Contact("ItemHandle_", key.ToString())));
                    if(itemAttrData.guid == playerPack.lookItemGUID && playerPack.lookLineIndex != -1)
                    {
                        switch (key)
                        {
                            case ItemWinBtnType.putOn:
                                SuccessConfig successConfig = Config.Instance.Get<SuccessConfig>(AchievementGoto.guideAchievementId);
                                if (successConfig != null
                                    && (successConfig.Type == 39
                                    || successConfig.Type == 82
                                    || successConfig.Type == 83))
                                {
                                    AchievementGuideEffect guidEffect = AchievementGuideEffectPool.Require(1);
                                    guidEffect.transform.SetParentEx(btn.transform, Vector3.zero, Quaternion.identity, Vector3.one);
                                    guidEffect.effect.renderQueue = 4500;
                                }
                                break;
                        }
                    }
                    btn.RemoveAllListeners();
                    btn.onClick.AddListener(() => {
                        OnClickCloseBtn();
System/KnapSack/Logic/PlayerPackModels.cs
@@ -905,6 +905,7 @@
            if (string.IsNullOrEmpty(guid) || guid == "")
            {
                lookLineIndex = -1;
                lookItemGUID = "";
            }
            else
            {
System/Login/CreateRoleWin.cs
@@ -102,8 +102,8 @@
                ChangeUserName(true);
                return;
            }
            ChangeUserName(false);
            userJob = 3;
            ChangeUserName(false);
            RoleShow(0f);
        }
@@ -114,8 +114,8 @@
                ChangeUserName(true);
                return;
            }
            ChangeUserName(false);
            userJob = 2;
            ChangeUserName(false);
            RoleShow(0f);
        }
@@ -126,8 +126,8 @@
                ChangeUserName(true);
                return;
            }
            ChangeUserName(false);
            userJob = 1;
            ChangeUserName(false);
            RoleShow(0f);
        }
@@ -186,14 +186,18 @@
                MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameNull"));
                return;
            }
            if (Encoding.UTF8.GetBytes(userNameInput.text).Length < 6)
            int error = 0;
            if (!UIHelper.SatisfyNameLength(userNameInput.text, out error))
            {
                MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameShort"));
                return;
            }
            if (!CheckNameLengthLimit(userNameInput.text))
                switch (error)
            {
                    case 1:
                MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameLimit"));
                        break;
                    case 2:
                        MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameShort"));
                        break;
                }
                return;
            }
            if (DirtyWordConfig.IsDirtWord(userNameInput.text) || UIHelper.HasSpecialCharac(userNameInput.text)
@@ -267,21 +271,6 @@
        {
            m_CreateRoleShow.Dispose();
        }
        private bool CheckNameLengthLimit(string _value)
        {
            var _chs = Regex.Replace(_value, "[^\u4e00-\u9fa5]", string.Empty);
            if (_chs.Length > GeneralConfig.Instance.playerNameLength / 3)
            {
                return false;
            }
            if (_value.Length > 6)
            {
                return false;
            }
            return true;
        }
    }
}
System/Login/LoginModel.cs
@@ -278,8 +278,8 @@
                    send.Extra = "";
                    break;
                case VersionAuthority.Release:
                    send.ExtraLen = 0;
                    send.Extra = "";
                    send.Extra = VersionConfig.Get().SpID;
                    send.ExtraLen = (byte)send.Extra.Length;
                    if (SDKUtility.Instance.ChannelPlatform == SDKUtility.E_ChannelPlatform.Free)
                    {
                        send.IDType = 1;
@@ -291,8 +291,11 @@
                    else if (SDKUtility.Instance.ChannelPlatform == SDKUtility.E_ChannelPlatform.Sp)
                    {
                        send.IDType = 3;
                        send.ExtraLen = (byte)SDKUtility.Instance.FreePlatformInfo.sessionID.Length;
                        send.Extra = SDKUtility.Instance.FreePlatformInfo.sessionID;
                        send.Extra += ("|" + SDKUtility.Instance.FreePlatformInfo.sessionID);
                        send.ExtraLen = (byte)send.Extra.Length;
                    }else if(SDKUtility.Instance.ChannelPlatform == SDKUtility.E_ChannelPlatform.Js)
                    {
                        send.IDType = 4;
                    }
                    send.AccID = sdkLoginResult.account;
                    send.Password = sdkLoginResult.token;
@@ -301,7 +304,7 @@
                    send.LineNO = 255;
                    send.AppID = VersionConfig.Get().appId;
                    send.AccountID = (uint)sdkLoginResult.accountID;// 内部登陆的时候的id
                    send.TokenExpire = sdkLoginResult.tokenExpire;// 内部登陆的时长,无所谓的
                    send.TokenExpire = sdkLoginResult.tokenExpire;
                    if (SDKUtility.Instance.ChannelPlatform == SDKUtility.E_ChannelPlatform.Sp)
                    {
                        send.TokenExpire = SDKUtility.Instance.FreePlatformInfo.timeStamp;
System/OpenServerActivity/ImpactRankModel.cs
@@ -784,6 +784,8 @@
            VipInvest,
            [Header("仙盟联赛预告")]
            FairyLeagueNotice,
            [Header("骑宠争夺预告")]
            FairyGrabBossNotice,
        }
    }
System/OpenServerActivity/OpenServerActivityCell.cs
@@ -43,7 +43,7 @@
        public void ChangeState(TitleBtnState _state)
        {
            m_Icon.SetSprite(alternativeConfig.GetIconKey(_state));
            m_Title.color = alternativeConfig.GetFontColor(_state);
            //m_Title.color = alternativeConfig.GetFontColor(_state);
            m_Title.fontSize = alternativeConfig.GetFontSize(_state);
        }
    }
System/OpenServerActivity/OpenServerActivityWin.cs
@@ -30,6 +30,7 @@
            }
        }
        FairyLeagueModel fairyLeagueModel { get { return ModelCenter.Instance.GetModel<FairyLeagueModel>(); } }
        FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        List<int> openActivitys = new List<int>();
        List<int> priorityActivitys = new List<int>();
@@ -178,13 +179,24 @@
            {
                var activityCell = cell as OpenServerActivityCell;
                var seconds = fairyLeagueModel.GetBeforeFirstLeagueTime();
                activityCell.title.text = TimeUtility.SecondsToHMS(seconds);
                activityCell.title.gameObject.SetActive(seconds > 0);
            }
            cell = m_ActivityCtrl.GetActiveCellView((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
            if (cell != null)
            {
                var activityCell = cell as OpenServerActivityCell;
                var seconds = fairyGrabBossModel.GetFirstOpenSeconds();
                bool isOpen = fairyGrabBossModel.IsOpen;
                activityCell.title.gameObject.SetActive(seconds > 0 || isOpen);
                activityCell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
                if (seconds > 0)
                {
                    activityCell.title.text = UIHelper.ReplaceNewLine(Language.Get("FairyLeagueForcast", TimeUtility.SecondsToHMS(seconds)));
                    activityCell.title.text = TimeUtility.SecondsToHMS(seconds);
                }
                else
                else if (isOpen)
                {
                    activityCell.title.text = Language.Get("FamilyMatchName");
                    activityCell.title.text = Language.Get("FairyGrabBossOpened");
                }
            }
        }
@@ -232,6 +244,14 @@
        private void RefreshOpenActivityCell(OpenServerActivityCell _cell)
        {
            var customActivity = m_CustomActivitys.Find((x) =>
            {
                return (int)x.activityType == _cell.index;
            });
            bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon);
            _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown);
            OperationBase operationBase;
            switch (_cell.index)
            {
@@ -240,25 +260,44 @@
                    {
                        _cell.title.text = Language.Get("ExpActivity_Text5", (operationBase as OperationMultiExp).GetMultipleCHS());
                    }
                    _cell.title.gameObject.SetActive(!customIcon);
                    break;
                case 8:
                    if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operationBase))
                    {
                        _cell.title.text = Language.Get("MultipleRealmPoint", Language.Get(StringUtility.Contact("Num_CHS_", (operationBase as OperationMultipleRealmPoint).multiplePractice)));
                    }
                    _cell.title.gameObject.SetActive(!customIcon);
                    break;
                case 12:
                    {
                    var seconds = fairyLeagueModel.GetBeforeFirstLeagueTime();
                        _cell.title.gameObject.SetActive(seconds > 0);
                    if (seconds > 0)
                    {
                        _cell.title.text = UIHelper.ReplaceNewLine(Language.Get("FairyLeagueForcast", TimeUtility.SecondsToHMS(seconds)));
                            _cell.title.text = TimeUtility.SecondsToHMS(seconds);
                            _cell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
                    }
                    else
                    }
                    break;
                case 13:
                    {
                        _cell.title.text = Language.Get("FamilyMatchName");
                        var seconds = fairyGrabBossModel.GetFirstOpenSeconds();
                        bool isOpen = fairyGrabBossModel.IsOpen;
                        _cell.title.gameObject.SetActive(seconds > 0 || isOpen);
                        _cell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
                        if (seconds > 0)
                        {
                            _cell.title.text = TimeUtility.SecondsToHMS(seconds);
                        }
                        else if (isOpen)
                        {
                            _cell.title.text = Language.Get("FairyGrabBossOpened");
                        }
                    }
                    break;
                default:
                    _cell.title.gameObject.SetActive(!customIcon);
                    _cell.title.text = Language.Get(StringUtility.Contact("OSActivityTitle_", _cell.index));
                    break;
            }
@@ -268,13 +307,6 @@
            _cell.downArrow.gameObject.SetActive(false);
            _cell.upArrow.gameObject.SetActive(false);
            var customActivity = m_CustomActivitys.Find((x) =>
            {
                return (int)x.activityType == _cell.index;
            });
            bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon);
            _cell.title.gameObject.SetActive(!customIcon);
            _cell.titleImage.gameObject.SetActive(customIcon);
            if (customIcon)
            {
@@ -532,6 +564,16 @@
                        WindowCenter.Instance.Open<FairyLeagueNoticeWin>(true);
                    }
                    break;
                case 13:
                    if (windowState == WindowState.Opened)
                    {
                        WindowCenter.Instance.OpenWithoutAnimation<FairyGrabBossNoticeWin>();
                    }
                    else
                    {
                        WindowCenter.Instance.Open<FairyGrabBossNoticeWin>(true);
                    }
                    break;
            }
        }
@@ -566,6 +608,7 @@
            WindowCenter.Instance.CloseImmediately<FairyJadeInvestmentWin>();
            WindowCenter.Instance.CloseImmediately<VipInvestWin>();
            WindowCenter.Instance.CloseImmediately<FairyLeagueNoticeWin>();
            WindowCenter.Instance.CloseImmediately<FairyGrabBossNoticeWin>();
        }
        private int Compare(int order_x, int order_y)
System/Role/RoleModel.cs
@@ -9,7 +9,7 @@
    public class RoleModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
    {
        FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel<FriendsModel>(); } }
        public string RecordPlayerNameKey;
        public override void Init()
        {
        }
@@ -26,7 +26,8 @@
        public void OnPlayerLoginOk()
        {
            RecordPlayerNameKey = StringUtility.Contact("RecordPlayerName",PlayerDatas.Instance.baseData.PlayerID);
            SendRenameInfoToPlayer();
        }
        public override void UnInit()
@@ -57,8 +58,7 @@
                case RoleRenameResult.RenameFailErr:
                    break;
                case RoleRenameResult.RenameSuccess:
                    string info = Language.Get("RenameText_02", UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName), playerRename);
                    friendsModel.SendChatInfoByGroup(GroupType.Friend,info);
                    LocalSave.SetString(RecordPlayerNameKey, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName));
                    SysNotifyMgr.Instance.ShowTip("RenameSuccess01", playerRename);
                    if(WindowCenter.Instance.IsOpen<RoleRenameWin>())
                    {
@@ -69,6 +69,20 @@
            }
        }
        #endregion
        private void SendRenameInfoToPlayer()
        {
            if(PlayerPrefs.HasKey(RecordPlayerNameKey))
            {
                string recordName = LocalSave.GetString(RecordPlayerNameKey);
                if(!string.IsNullOrEmpty(recordName))
                {
                    string info = Language.Get("RenameText_02",recordName, playerRename);
                    friendsModel.SendChatInfoByGroup(GroupType.Friend, info);
                    PlayerPrefs.DeleteKey(RecordPlayerNameKey);
                }
            }
        }
    }
}
System/Role/RoleRenameWin.cs
@@ -100,14 +100,18 @@
                return;
            }
            if (Encoding.UTF8.GetBytes(renameInput.text).Length < 6)
            int error = 0;
            if (!UIHelper.SatisfyNameLength(renameInput.text, out error))
            {
                MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameShort"));
                return;
            }
            if (!CheckNameLengthLimit(renameInput.text))
                switch (error)
            {
                    case 1:
                MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameLimit"));
                        break;
                    case 2:
                        MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameShort"));
                        break;
                }
                return;
            }
            if (DirtyWordConfig.IsDirtWord(renameInput.text) || UIHelper.HasSpecialCharac(renameInput.text)
@@ -141,21 +145,5 @@
              });
              
        }
        private bool CheckNameLengthLimit(string _value)
        {
            var _chs = Regex.Replace(_value, "[^\u4e00-\u9fa5]", string.Empty);
            if (_chs.Length > GeneralConfig.Instance.playerNameLength / 3)
            {
                return false;
            }
            if (_value.Length > 6)
            {
                return false;
            }
            return true;
        }
    }
}
System/Vip/VipInvest/CheckDisplay.cs
New file
@@ -0,0 +1,75 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, October 09, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class CheckDisplay:MonoBehaviour {
        [SerializeField] Image m_Image1;
        [SerializeField] Image m_Image2;
        [SerializeField] Image m_Image3;
        [SerializeField] Image m_Image4;
        [SerializeField] Image m_Image5;
        [SerializeField] Image m_Image6;
        [SerializeField] Image m_Image7;
        [SerializeField] Image m_Image8;
        [SerializeField] Image m_Image9;
        public void CloseAll()
        {
            m_Image1.gameObject.SetActive(false);
            m_Image2.gameObject.SetActive(false);
            m_Image3.gameObject.SetActive(false);
            m_Image4.gameObject.SetActive(false);
            m_Image5.gameObject.SetActive(false);
            m_Image6.gameObject.SetActive(false);
            m_Image7.gameObject.SetActive(false);
            m_Image8.gameObject.SetActive(false);
            m_Image9.gameObject.SetActive(false);
        }
        public void ShowSelected(int Index)
        {
            switch (Index)
            {
                case 1:
                    m_Image1.gameObject.SetActive(true);
                    break;
                case 2:
                    m_Image2.gameObject.SetActive(true);
                    break;
                case 3:
                    m_Image3.gameObject.SetActive(true);
                    break;
                case 4:
                    m_Image4.gameObject.SetActive(true);
                    break;
                case 5:
                    m_Image5.gameObject.SetActive(true);
                    break;
                case 6:
                    m_Image6.gameObject.SetActive(true);
                    break;
                case 7:
                    m_Image7.gameObject.SetActive(true);
                    break;
                case 8:
                    m_Image8.gameObject.SetActive(true);
                    break;
                case 9:
                    m_Image9.gameObject.SetActive(true);
                    break;
            }
        }
    }
}
System/Vip/VipInvest/CheckDisplay.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9c0e8745efd12dc438df8485acd59d27
timeCreated: 1539067713
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Vip/VipInvest/RotatePointer.cs
@@ -6,6 +6,7 @@
using System.Collections;
using UnityEngine.UI;
using DG.Tweening;
using System;
namespace Snxxz.UI {
@@ -16,6 +17,7 @@
        private float Acceleration = 0;//加速度
        private float _time;
        private bool IsRotateBool = false;//是否进行旋转
        public static event Action<bool> IsButtonShow;
        [Header("总旋转时间")]
        public float ContinuousTime = 4;//旋转时间
        [Header("加速减速时间")]
@@ -24,22 +26,38 @@
        public float MinSpeed= 400;
        [Header("最大速度")]
        public float MaxSpeed = 800;
        WheelOfFortuneModel wheelOfFortuneModel { get { return ModelCenter.Instance.GetModel<WheelOfFortuneModel>(); } }
        [SerializeField] CheckDisplay m_CheckDisplay;
        private void OnEnable()
        public void Init()
        {
            IsRotateBool = false;
            _time = 0;
            transform.localRotation = Quaternion.Euler(0, 0, -wheelOfFortuneModel.AngleSave);
            Acceleration = (MaxSpeed - MinSpeed) / SpeedTime;
            m_CheckDisplay.CloseAll();
        }
        private void OnEnable()
        {
        }
        void Update()
        {
            if (!_isRotate)
            {
              //  transform.DORotate(new Vector3(0, 0, 360 + Angle), 0.5f, RotateMode.FastBeyond360);
                if (-Angle != transform.localRotation.z)
                {
                    transform.localRotation = Quaternion.Euler(0, 0, -Angle);
                    m_CheckDisplay.ShowSelected(wheelOfFortuneModel.Lattice);
                    if (IsButtonShow != null)
                    {
                        IsButtonShow(true);
                    }
                    IsRotateBool = false;
                }
                return; //不旋转结束
            }
               
@@ -71,26 +89,49 @@
                }
                if (_time < ContinuousTime) // 没结束
                {
                    transform.Rotate(Vector3.forward * Speed * Time.deltaTime);
                    transform.Rotate(-Vector3.forward * Speed * Time.deltaTime);
                }
                else
                {
                    //结束,使用DoTween旋转到结束角度,耗时1秒
                    //这里有个360,使用来防止指针回转的,如果不加这个360,你会看到指针倒退
                    transform.DORotate(new Vector3(0, 0, 360 + Angle), 1f, RotateMode.FastBeyond360);
                    Sequence sequence = DOTween.Sequence();
                    sequence.Append(transform.DORotate(new Vector3(0, 0, -(360 + Angle)), 2f, RotateMode.FastBeyond360));
                    sequence.AppendCallback(()=>
                    {
                    _isRotate = false; // 设置不旋转
                        if (IsButtonShow != null)
                        {
                            IsButtonShow(true);
                        }
                        m_CheckDisplay.ShowSelected(wheelOfFortuneModel.Lattice);
                    });
                    IsRotateBool = false;
                }
            }          
        }
        //外部调用,初始化时间和打开旋转
        public void SetTime()
        public void SetTime(bool _bool)
        {
            _time =0;
            if (_bool)
            {
                IsRotateBool = false;
                _isRotate = false;
            }
            else
            {
            IsRotateBool = true;
            _isRotate = true;
        }
        }
        private void TweenOver()
        {
        }
        //外部调用,设置停止角度
    }
System/Vip/VipInvest/WheelOfFortuneModel.cs
@@ -30,6 +30,11 @@
        private string StrKey = string.Empty;
        private bool IsOk = false;
        private const int Redpoint_key1 = 66666;//幸运转盘红点
        public Redpoint redPointStre1 = new Redpoint(6666, Redpoint_key1);
        VipModel m_Vipmodel;
        VipModel vipmodel { get { return m_Vipmodel ?? (m_Vipmodel = ModelCenter.Instance.GetModel<VipModel>()); } }
        public override void Init()
        {
            var BindJadewheel = Config.Instance.Get<FuncConfigConfig>("BindJadeWheelCfg");
@@ -61,10 +66,15 @@
        public void OnPlayerLoginOk()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418)
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418)
            IsOk = true;
            StrKey = "IsOpenFiaryJadeRedPoint" + PlayerDatas.Instance.baseData.PlayerID;
            AngleSave = LocalSave.GetFloat(StrKey);
            RedPoint();
        }
        public void BindJadeWheelResult(HA324_tagMCBindJadeWheelResult Info)
        {
@@ -83,6 +93,7 @@
                {
                    WheelOfFortuneUpdate(AngleSave);
                }
                RedPoint();
            }
           
        }
@@ -91,6 +102,23 @@
            CA517_tagCMStartBindJadeWheel _tagC517 = new CA517_tagCMStartBindJadeWheel();
            GameNetSystem.Instance.SendInfo(_tagC517);
        }
        private void Updatefighting(PlayerDataRefresh obj)//红点
        {
            if (obj == PlayerDataRefresh.VIPLv)
            {
                RedPoint();
            }
        }
        private void RedPoint()
        {
            redPointStre1.state = RedPointState.None;
            int LotteryNumber = vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.BindJadeWheel);
            if (LotteryNumber > Number)
            {
                redPointStre1.state = RedPointState.Simple;
            }
        }
    }
}
System/Vip/VipInvest/WheelOfFortuneWin.cs
@@ -3,24 +3,34 @@
//    [  Date ]:           Friday, September 21, 2018
//--------------------------------------------------------
using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class WheelOfFortuneWin : Window
    {
        [SerializeField] Button m_LotteryBtn;
        [SerializeField] RotatePointer m_RotatePointer;
        [SerializeField] Toggle m_Toggle;
        [SerializeField] Button m_CloseBtn;
        [SerializeField] CheckDisplay m_CheckDisplay;
        [SerializeField] Text Money1_Text;
        [SerializeField] Text Money2_Text;
        [SerializeField] Text m_Text_remainingTimes;
        [SerializeField] Button m_PromotionBtn;
        [Header("最大速度")]
        public  float RollingTime = 1f;
        VipModel m_Vipmodel;
        VipModel vipmodel { get { return m_Vipmodel ?? (m_Vipmodel = ModelCenter.Instance.GetModel<VipModel>()); } }
        WheelOfFortuneModel wheelOfFortuneModel { get { return ModelCenter.Instance.GetModel<WheelOfFortuneModel>(); } }
        private int remainingTimes = 0;//剩余次数
        private int FairyJade = 0;//获取当前绑玉
        #region Built-in
        protected override void BindController()
        {
@@ -29,24 +39,32 @@
        protected override void AddListeners()
        {
            m_LotteryBtn.AddListener(OnClickButton);
            m_CloseBtn.AddListener(()=> { Close(); });
            m_Toggle.onValueChanged.AddListener(OnClickToggle);
            m_PromotionBtn.AddListener(OnClickPromotionBtn);
        }
        protected override void OnPreOpen()
        {
            FairyJade = (int)UIHelper.GetMoneyCnt(2);
            Money1_Text.text = FairyJade.ToString();
            Money2_Text.text = UIHelper.GetMoneyCnt(1).ToString();
            m_RotatePointer.Init();
            IsLottery();//判断是否拥有次数
        }
        protected override void OnAfterOpen()
        {
            wheelOfFortuneModel.WheelOfFortuneUpdate += WheelOfFortuneUpdate;
            RotatePointer.IsButtonShow += IsButtonShow;
        }
        protected override void OnPreClose()
        {
            wheelOfFortuneModel.WheelOfFortuneUpdate -= WheelOfFortuneUpdate;
            RotatePointer.IsButtonShow -= IsButtonShow;
        }
        private void WheelOfFortuneUpdate(float Angel)
        {
@@ -59,8 +77,13 @@
        private void OnClickButton()
        {
         //   m_UIEffectFly.StartFly(Text);
            m_CheckDisplay.CloseAll();
            wheelOfFortuneModel.StartTheDraw();//开始抽奖
            m_RotatePointer.SetTime();
            m_LotteryBtn.interactable = false;
            float angel = UnityEngine.Random.Range(0f, 360f);
            m_RotatePointer.Angle = angel;
            m_RotatePointer.SetTime(m_Toggle.isOn);
        }
        private void OnClickToggle(bool _bool)
        {
@@ -73,6 +96,14 @@
                m_RotatePointer._isRotate = true;
            }
        }
        private void OnClickPromotionBtn()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc4);
        }
        private void IsButtonShow(bool _bool)//是否可点击旋转
        {
            m_LotteryBtn.interactable = _bool;
        }
        private void IsLottery()
@@ -88,6 +119,18 @@
                m_LotteryBtn.interactable = false;
            }
        }
        private Sequence mScoreSequence;
        private void TiedJadeChange()//绑玉变化
        {
            mScoreSequence = DOTween.Sequence();
            mScoreSequence.SetAutoKill(false);
            mScoreSequence.Append(DOTween.To(delegate(float value)
            {
                var temp = Math.Floor(value);
                Money1_Text.text = temp + "";
            }, FairyJade,(int)UIHelper.GetMoneyCnt(2), RollingTime));
            FairyJade = (int)UIHelper.GetMoneyCnt(2);
        }
        #endregion
    }
System/Welfare/WelfareCenter.cs
@@ -13,8 +13,8 @@
        InSevenDayModel sevenDayModel { get { return ModelCenter.Instance.GetModel<InSevenDayModel>(); } }
        //FairyJadeInvestmentModel m_FairyJadeInvestmentModel;
        //FairyJadeInvestmentModel fairyJadeInvestmentModel { get { return m_FairyJadeInvestmentModel ?? (m_FairyJadeInvestmentModel = ModelCenter.Instance.GetModel<FairyJadeInvestmentModel>()); } }
        WheelOfFortuneModel m_WheelOfFortuneModel;
        WheelOfFortuneModel wheelOfFortuneModel { get { return m_WheelOfFortuneModel ?? (m_WheelOfFortuneModel = ModelCenter.Instance.GetModel<WheelOfFortuneModel>()); } }
        /// <summary>
        /// 点击主界面福利按钮打开
        /// </summary>
@@ -63,12 +63,12 @@
                return;
            }
            //if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple || fairyJadeInvestmentModel.redPointStre1.state == RedPointState.GetReward)
            //{
            //    WindowCenter.Instance.Close<MainInterfaceWin>();
            //    WindowCenter.Instance.Open<WelfareWin>(false, 5);
            //    return;
            //}
            if (wheelOfFortuneModel.redPointStre1.state == RedPointState.Simple)//绑玉转盘
            {
                WindowCenter.Instance.Close<MainInterfaceWin>();
                WindowCenter.Instance.Open<WelfareWin>(false, 5);
                return;
            }
            WindowCenter.Instance.Close<MainInterfaceWin>();
            WindowCenter.Instance.Open<WelfareWin>(false, functionOrder);
        }
@@ -110,10 +110,10 @@
                return 3;
            }
            //if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple || fairyJadeInvestmentModel.redPointStre1.state == RedPointState.GetReward)
            //{
            //    return 5;
            //}
            if (wheelOfFortuneModel.redPointStre1.state == RedPointState.Simple)
            {
                return 5;
            }
            return functionOrder;
        }
    }
System/Welfare/WelfareWin.cs
@@ -19,6 +19,7 @@
        [SerializeField] FunctionButton Btn_InSeven;
        [SerializeField] FunctionButton m_LevelGiftBtn;
        [SerializeField] FunctionButton m_ExchangeBtn;
        [SerializeField] FunctionButton m_TurntableBtn;
        [SerializeField] FunctionButtonGroup buttonGroup;
        [SerializeField] Button closeBtn;
@@ -39,6 +40,7 @@
            Btn_InSeven.AddListener(InSeven);
            m_LevelGiftBtn.onClick.AddListener(OnLevelGift);
            m_ExchangeBtn.onClick.AddListener(OnExchange);
            m_TurntableBtn.onClick.AddListener(OnTurntableBtn);
            closeBtn.onClick.AddListener(CloseClick);
        }
@@ -96,7 +98,20 @@
            }
            functionOrder = 4;
        }
        private void OnTurntableBtn()
        {
            CloseChildWin();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<WheelOfFortuneWin>();
            }
            else
            {
                WindowCenter.Instance.Open<WheelOfFortuneWin>();
            }
            functionOrder = 5;
        }
        private void OnSignIn()
        {
            CloseChildWin();
@@ -181,6 +196,10 @@
            {
                WindowCenter.Instance.CloseImmediately<AwardExchangeWin>();
            }
            if (WindowCenter.Instance.IsOpen<WheelOfFortuneWin>())
            {
                WindowCenter.Instance.CloseImmediately<WheelOfFortuneWin>();
            }
        }
        private void OperationStartEvent(Operation arg1, int arg2)
System/WindowJump/WindowJumpMgr.cs
@@ -524,6 +524,10 @@
            case JumpUIType.CeremonyOutof:
                SetJumpLogic<FairylandCeremonyWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.DogzFunc1Type1:
            case JumpUIType.DogzFunc1Type2:
                SetJumpLogic<DogzWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.FaBaoSoul_BenYuan:
            case JumpUIType.FaBaoSoul_FengMo:
            case JumpUIType.FaBaoSoul_Strength:
@@ -1368,6 +1372,8 @@
    CeremonyFire = 245, //仙界盛典烟花狂欢界面
    CeremonyPeopleToHi = 246, //仙界盛典全民来嗨界面
    CeremonyOutof = 247, //仙界盛典绝版降临界面
    DogzFunc1Type1 = 248, //神兽界面
    DogzFunc1Type2 = 249, //神兽界面
    DhszTs = 1001,//定海神针功法提升界面
    HyqTs = 1002,//皓月枪功法提升界面
    GyzTs = 1003,//鬼牙刃功法提升界面
UI/Common/UI3DModelExhibition.cs
@@ -65,6 +65,19 @@
        public static UI3DModelExhibition Instance { get; private set; }
        static UI3DModelExhibition m_InstanceClone1 = null;
        public static UI3DModelExhibition InstanceClone1
        {
            get
            {
                if (m_InstanceClone1 == null)
                {
                    CreateCloneStage();
                }
                return m_InstanceClone1;
            }
        }
        public static void CreateStage()
        {
            var prefab = Resources.Load<GameObject>("UI/Prefabs/UI3DModelExhibitionStage");
@@ -77,6 +90,18 @@
            DontDestroyOnLoad(gameObject);
        }
        static void CreateCloneStage()
        {
            var prefab = Resources.Load<GameObject>("UI/Prefabs/UI3DModelExhibitionStage");
            var gameObject = GameObject.Instantiate(prefab);
            m_InstanceClone1 = gameObject.GetComponent<UI3DModelExhibition>();
            m_InstanceClone1.transform.position = new Vector3(2000, 4000, 5000);
            m_InstanceClone1.name = "UI3DModelExhibitionStage(clone1)";
            m_InstanceClone1.gameObject.SetActive(true);
            m_InstanceClone1.m_ShowCamera.enabled = false;
            DontDestroyOnLoad(gameObject);
        }
        public void ShowLoginPlayer(RawImage _rawImage, int _job)
        {
            var clothesItemId = 0;
Utility/UIHelper.cs
@@ -775,4 +775,35 @@
        content = content.Replace(" ", string.Empty);
        return content;
    }
    public static bool SatisfyNameLength(string name, out int error)
    {
        error = 0;
        bool pureChinese = Regex.IsMatch(name, "^[\u4e00-\u9fa5]+$");
        var chsCount = GetChsCount(name);
        var maxlength = pureChinese ? 5 : chsCount > 0 ? 6 : 8;
        var minlength = pureChinese ? 2 : 3;
        if (name.Length > maxlength)
        {
            error = 1;
        }
        else if (name.Length < minlength)
        {
            error = 2;
        }
        return error == 0;
    }
    public static int GetChsCount(string name)
    {
        var count = 0;
        for (int i = 0; i < name.Length; i++)
        {
            if (Regex.IsMatch(name[i].ToString(), "[\u4e00-\u9fa5]"))
            {
                count++;
            }
        }
        return count;
    }
}