少年修仙传客户端代码仓库
client_Wu Xijin
2019-03-28 b18ba18338582fe72ae50bb97e3984d9dcf5836c
3335 主界面修改.
2个文件已修改
605 ■■■■ 已修改文件
System/MainInterfacePanel/ChatFrame.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureCollectBriefInfoBehaviour.cs 548 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/ChatFrame.cs
@@ -15,16 +15,17 @@
    public class ChatFrame : MonoBehaviour
    {
        [SerializeField] VoiceRecorder _TongVoiceBtn;//盟语音
        [SerializeField] VoiceRecorder _TeamChatBtn;//队语音
        [SerializeField] Button m_Voice;
        [SerializeField] VoiceRecorder m_TeamVoice;
        [SerializeField] VoiceRecorder m_GuildVoice;
        [SerializeField] Button _MailBtn;//邮件按钮
        [SerializeField] Button _OneKeyBtn;//地图挂机
        [SerializeField] Button _AutoBtn;//自动挂机  
        [SerializeField] Button _BackPack1Btn;//背包按钮
        [SerializeField] Button _SetupBtn;
        [SerializeField] GameObject _OneKeyBtnImg;//地图挂机
        [SerializeField] GameObject AutoImg;//原地挂机
        [SerializeField] Image m_ImgAuto;//原地挂机
        [SerializeField] Image m_ImgUnAuto;
        [SerializeField] Button m_TaskBtn;//任务按钮
        [SerializeField] Button m_SocialBtn;//社交按钮
@@ -50,8 +51,10 @@
            HeroBehaviour.OnStartHandupAI += OnHeroHandupAIStarted;
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            _TongVoiceBtn.voiceRecordSuccessEvent += OnVoiceRecordFairySuccessEvent;
            _TeamChatBtn.voiceRecordSuccessEvent += OnVoiceRecordTeamSuccessEvent;
            m_GuildVoice.voiceRecordSuccessEvent += OnVoiceRecordFairySuccessEvent;
            m_TeamVoice.voiceRecordSuccessEvent += OnVoiceRecordTeamSuccessEvent;
            _MailBtn.SetListener(MailButton);
            _OneKeyBtn.SetListener(OneKeyButton);
            _AutoBtn.SetListener(AutoButton);
@@ -82,17 +85,17 @@
                m_TaskBtn.gameObject.SetActive(false);
                if (OneKeyList.Contains(MapId))
                {
                    _OneKeyBtnImg.SetActive(true);
                    _OneKeyBtn.gameObject.SetActive(true);
                }
                else
                {
                    _OneKeyBtnImg.SetActive(false);
                    _OneKeyBtn.gameObject.SetActive(false);
                }
            }
            else
            {
                m_TaskBtn.gameObject.SetActive(true);
                _OneKeyBtnImg.SetActive(true);
                _OneKeyBtn.gameObject.SetActive(true);
            }
        }
        private void OnVoiceRecordTeamSuccessEvent(int _instId, float _seconds)
@@ -181,8 +184,8 @@
        public void UnInit()
        {
            _TongVoiceBtn.voiceRecordSuccessEvent -= OnVoiceRecordFairySuccessEvent;
            _TeamChatBtn.voiceRecordSuccessEvent -= OnVoiceRecordTeamSuccessEvent;
            m_GuildVoice.voiceRecordSuccessEvent -= OnVoiceRecordFairySuccessEvent;
            m_TeamVoice.voiceRecordSuccessEvent -= OnVoiceRecordTeamSuccessEvent;
            model.myTeamRefreshEvent -= myTeamRefreshEvent;
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
@@ -193,13 +196,13 @@
        private void OnRefreshFairyInfo()
        {
            _TongVoiceBtn.gameObject.SetActive(PlayerDatas.Instance.fairyData.HasFairy
            m_GuildVoice.gameObject.SetActive(PlayerDatas.Instance.fairyData.HasFairy
                && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat));
        }
        private void myTeamRefreshEvent()
        {
            _TeamChatBtn.gameObject.SetActive(model.myTeam.inTeam
            m_TeamVoice.gameObject.SetActive(model.myTeam.inTeam
                && FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat));
        }
@@ -213,7 +216,8 @@
            if (PlayerDatas.Instance.hero.aiHandler.IsAuto())
            {
                AutoImg.SetActive(false);
                m_ImgAuto.gameObject.SetActive(false);
                m_ImgUnAuto.gameObject.SetActive(true);
                if (!WindowCenter.Instance.IsOpen<ExperienceOpenWin>())
                {
                    WindowCenter.Instance.Open<ExperienceOpenWin>(true);
@@ -221,7 +225,8 @@
            }
            else
            {
                AutoImg.SetActive(true);
                m_ImgAuto.gameObject.SetActive(true);
                m_ImgUnAuto.gameObject.SetActive(false);
                if (WindowCenter.Instance.IsOpen<ExperienceOpenWin>())
                {
                    WindowCenter.Instance.Close<ExperienceOpenWin>();
@@ -360,7 +365,9 @@
                    _hero.Behaviour.StopHandupAI(true);
                }
            }
            AutoImg.SetActive(!AutoImg.activeSelf);
            m_ImgAuto.gameObject.SetActive(!m_ImgAuto.gameObject.activeSelf);
            m_ImgUnAuto.gameObject.SetActive(!m_ImgUnAuto.gameObject.activeSelf);
        }
        void BackPack1Buton()//背包按钮
@@ -371,17 +378,27 @@
        void OnHeroHandupAIStopPassive()
        {
            if (!AutoImg.activeSelf)
            if (!m_ImgAuto.gameObject.activeSelf)
            {
                AutoImg.SetActive(true);
                m_ImgAuto.gameObject.SetActive(true);
            }
            if (!m_ImgUnAuto.gameObject.activeSelf)
            {
                m_ImgUnAuto.gameObject.SetActive(false);
            }
        }
        void OnHeroHandupAIStarted()
        {
            if (AutoImg.activeSelf)
            if (m_ImgAuto.gameObject.activeSelf)
            {
                AutoImg.SetActive(false);
                m_ImgAuto.gameObject.SetActive(false);
            }
            if (!m_ImgUnAuto.gameObject.activeSelf)
            {
                m_ImgUnAuto.gameObject.SetActive(true);
            }
        }
System/Treasure/TreasureCollectBriefInfoBehaviour.cs
@@ -15,454 +15,192 @@
    public class TreasureCollectBriefInfoBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_NormalContainer;
        [SerializeField] Transform m_ContainerUnknown;
        [SerializeField] Transform m_ContainerCollect;
        [SerializeField] Image m_Icon;
        [SerializeField] Image m_TreasureName;
        [SerializeField] Text m_Progress;
        [SerializeField] Text m_Description;
        [SerializeField] Button m_Goto;
        [SerializeField] UIEffect m_ChallengeEffect;
        [SerializeField] UIEffect m_CastSoulEffect;
        [SerializeField] UIEffect m_CollectSoulEffect;
        [SerializeField] RectTransform m_AllCompletedContainer;
        [SerializeField] Transform m_ContainerCollecting;
        [SerializeField] Text m_Progress;
        [SerializeField] Slider m_TaskSlider;
        [SerializeField] Transform m_ContainerChallenge;
        [SerializeField] UIEffect m_ChallengeEffect;
        [SerializeField] Button m_Goto;
        bool dirty = false;
        int m_DisplayTreasureId = 0;
        int displayTreasureId
        {
            get { return m_DisplayTreasureId; }
            set
            {
                if (m_DisplayTreasureId != value)
        int m_DisplayId = 0;
        int displayId {
            get { return m_DisplayId; }
            set {
                if (m_DisplayId != value)
                {
                    m_DisplayTreasureId = value;
                    dirty = true;
                }
            }
        }
        DisplayState m_DisplayState = DisplayState.None;
        DisplayState displayState
        {
            get { return m_DisplayState; }
            set
            {
                if (m_DisplayState != value)
                {
                    m_DisplayState = value;
                    dirty = true;
                }
            }
        }
        int m_EffectState = 0;
        int effectState
        {
            get { return m_EffectState; }
            set
            {
                if (m_EffectState != value)
                {
                    m_EffectState = value;
                    m_DisplayId = value;
                    dirty = true;
                }
            }
        }
        TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
        List<int> m_HumanTreasures;
        List<int> humanTreasures { get { return m_HumanTreasures ?? (m_HumanTreasures = model.GetTreasureCategory(TreasureCategory.Human)); } }
        public void Display()
        {
            displayTreasureId = 0;
            displayState = DisplayState.None;
            effectState = 0;
            dirty = true;
            UpdateDisplayState();
            DisplayTreasureInfo();
            displayId = GetLatestCollectingTreasure();
            m_Goto.RemoveAllListeners();
            m_Goto.AddListener(ViewTreasure);
            model.treasureStateChangeEvent += TreasureStateChangeEvent;
            model.treasureCollectProgressRefresh += TreasureCollectProgressRefresh;
            achievementModel.achievementAwardableEvent -= OnAchievementAwardable;
            achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
            model.treasureStageUpEvent -= OnCastSoul;
            RedpointCenter.Instance.redpointValueChangeEvent -= OnRedpointUpdate;
            dirty = false;
            DisplayBase();
            achievementModel.achievementAwardableEvent += OnAchievementAwardable;
            achievementModel.achievementCompletedEvent += OnAchievementCompleted;
            model.treasureStageUpEvent += OnCastSoul;
            RedpointCenter.Instance.redpointValueChangeEvent += OnRedpointUpdate;
            m_Goto.SetListener(OnGoto);
        }
        private void TreasureStateChangeEvent(int id)
        {
            displayId = GetLatestCollectingTreasure();
        }
        private void TreasureCollectProgressRefresh(int id)
        {
            if (id == displayId)
            {
                DisplayProgress();
            }
        }
        void DisplayBase()
        {
            m_ContainerUnknown.gameObject.SetActive(displayId == 0);
            m_ContainerCollect.gameObject.SetActive(displayId != 0);
            if (displayId != 0)
            {
                DisplayTreasureInfo();
                DisplayProgress();
            }
        }
        void DisplayTreasureInfo()
        {
            if (displayId != 0)
            {
                var config = TreasureConfig.Get(displayId);
                m_Icon.SetSprite(config.Icon);
                m_TreasureName.SetSprite(config.NameIcon);
                m_TreasureName.SetNativeSize();
            }
        }
        void DisplayProgress()
        {
            m_ChallengeEffect.StopImediatly();
            if (displayId != 0)
            {
                var satisfyChallenge = model.SatisfyChallenge(displayId);
                m_ContainerChallenge.gameObject.SetActive(satisfyChallenge);
                m_ContainerCollecting.gameObject.SetActive(!satisfyChallenge);
                if (!satisfyChallenge)
                {
                    var progress = 1f;
                    List<int> tasks;
                    if (model.TryGetTreasureTasks(displayId, out tasks))
                    {
                        var count = model.GetCompleteTaskCount(displayId);
                        progress = Mathf.Clamp01((float)count / tasks.Count);
                    }
                    m_TaskSlider.value = progress;
                    m_Progress.text = StringUtility.Contact((int)(progress * 100), "%");
                }
                else
                {
                    m_ChallengeEffect.Play();
                }
            }
        }
        int GetLatestCollectingTreasure()
        {
            var treasureIds = model.GetTreasureCategory(TreasureCategory.Human);
            foreach (var id in treasureIds)
            {
                Treasure treasure;
                if (model.TryGetTreasure(id, out treasure))
                {
                    if (treasure.state == TreasureState.Collecting)
                    {
                        return id;
                    }
                }
            }
            return 0;
        }
        bool IsAllCompleted()
        {
            var treasureIds = model.GetTreasureCategory(TreasureCategory.Human);
            foreach (var id in treasureIds)
            {
                Treasure treasure;
                if (model.TryGetTreasure(id, out treasure))
                {
                    if (treasure.state != TreasureState.Collected)
                    {
                        return false;
                    }
                }
            }
            return true;
        }
        private void LateUpdate()
        {
            if (dirty)
            {
                dirty = false;
                DisplayBase();
            }
        }
        public void Dispose()
        {
            m_Goto.RemoveAllListeners();
            achievementModel.achievementAwardableEvent -= OnAchievementAwardable;
            achievementModel.achievementCompletedEvent -= OnAchievementCompleted;
            model.treasureStageUpEvent -= OnCastSoul;
            RedpointCenter.Instance.redpointValueChangeEvent -= OnRedpointUpdate;
            model.treasureStateChangeEvent -= TreasureStateChangeEvent;
            model.treasureCollectProgressRefresh -= TreasureCollectProgressRefresh;
        }
        private void OnHumanTreasureStateChange(int _treasureId)
        private void OnGoto()
        {
            UpdateDisplayState();
            DisplayTreasureInfo();
        }
        private void OnAchievementAwardable(int _achievementId)
        {
            UpdateDisplayState();
            DisplayTreasureInfo();
        }
        private void OnAchievementCompleted(int _achievementId)
        {
            UpdateDisplayState();
            DisplayTreasureInfo();
        }
        private void OnCastSoul(int _treasureId)
        {
            UpdateDisplayState();
            DisplayTreasureInfo();
        }
        private void OnPotentialLevelChange(int _treasureId, int _potentialId)
        {
            UpdateDisplayState();
            DisplayTreasureInfo();
        }
        private void OnRedpointUpdate(int _redpointId)
        {
            if (_redpointId == 7001)
            if (displayId == 0)
            {
                UpdateDisplayState();
                DisplayTreasureInfo();
            }
        }
        private void UpdateDisplayState()
        {
            var treasureId = 0;
            if (displayState != DisplayState.PotentialUp && displayState != DisplayState.PotentialUpAble && displayState != DisplayState.AllCompleted)
            {
                treasureId = GetAwakenAbleTreasure();
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.AwakenAble;
                    effectState = 2;
                    return;
                }
                treasureId = GetCanCollectSoulTreasure();
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.CollectSoul;
                    effectState = 3;
                    return;
                }
                treasureId = GetCanChallengeTreasure();
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.Challenge;
                    effectState = 0;
                    return;
                }
                treasureId = GetAwakenUnderwayTreasure1();
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.AwakenUnderway;
                    effectState = 0;
                    return;
                }
                treasureId = GetNextChallengeTreasure();
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.WaitUnLock;
                    effectState = 0;
                    return;
                }
                return;
            }
            if (displayState == DisplayState.None || displayState == DisplayState.PotentialUp || displayState == DisplayState.PotentialUpAble)
            {
                treasureId = GetPotentialUpAbleTreasure();
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.PotentialUpAble;
                    effectState = 0;
                    return;
                }
                treasureId = GetPotentialUpTreasure(15);
                if (treasureId != 0)
                {
                    this.displayTreasureId = treasureId;
                    displayState = DisplayState.PotentialUp;
                    effectState = 0;
                    return;
                }
            }
            this.displayTreasureId = 0;
            displayState = DisplayState.AllCompleted;
            effectState = 0;
        }
        private void DisplayTreasureInfo()
        {
            if (dirty)
            {
                if (displayState == DisplayState.AllCompleted || displayTreasureId == 0)
                {
                    m_NormalContainer.gameObject.SetActive(false);
                    m_AllCompletedContainer.gameObject.SetActive(true);
                    return;
                }
                if (!m_NormalContainer.gameObject.activeSelf)
                {
                    m_NormalContainer.gameObject.SetActive(true);
                }
                if (m_AllCompletedContainer.gameObject.activeSelf)
                {
                    m_AllCompletedContainer.gameObject.SetActive(false);
                }
                var config = TreasureConfig.Get(displayTreasureId);
                m_Icon.SetSprite(config.Icon);
                m_TreasureName.SetSprite(config.NameIcon);
                m_TreasureName.SetNativeSize();
                if (effectState == 1)
                {
                    m_ChallengeEffect.Play();
                }
                else
                {
                    m_ChallengeEffect.Stop();
                }
                if (effectState == 2)
                {
                    m_CastSoulEffect.Play();
                }
                else
                {
                    m_CastSoulEffect.Stop();
                }
                if (effectState == 3)
                {
                    m_CollectSoulEffect.Play();
                }
                else
                {
                    m_CollectSoulEffect.Stop();
                }
                Treasure treasure;
                model.TryGetTreasure(displayTreasureId, out treasure);
                var progress = 0f;
                switch (displayState)
                {
                    case DisplayState.Challenge:
                        DisplayProgress(false, progress);
                        m_Description.text = Language.Get("FabaoState_Text_1");
                        break;
                    case DisplayState.AwakenAble:
                        DisplayProgress(true, progress);
                        m_Description.text = Language.Get("FabaoState_Text_2");
                        break;
                    case DisplayState.CollectSoul:
                        DisplayProgress(true, progress);
                        m_Description.text = Language.Get("FabaoState_Text_3");
                        break;
                    case DisplayState.AwakenUnderway:
                        DisplayProgress(true, progress);
                        //DisplayTreasureUpStage(treasure.GetStageId(treasure.level + 1));
                        break;
                    case DisplayState.WaitUnLock:
                        //Achievement achievement = null;
                        //var achievementId = 0;
                        //if (model.TryGetTreasureUnlockAchievement(displayTreasureId, out achievementId))
                        //{
                        //    if (achievementModel.TryGetAchievement(achievementId, out achievement))
                        //    {
                        //        var achievementConfig = SuccessConfig.Get(achievementId);
                        //        var missionId = achievementConfig.Condition[0];
                        //        var taskConfig = PyTaskConfig.Get(missionId);
                        //
                        //        m_Description.text = Language.Get("FabaoState_Text_5", taskConfig.lv);
                        //    }
                        //}
                        //else
                        //{
                        //    m_Description.text = Language.Get("FabaoState_Text_5");
                        //}
                        DisplayProgress(false, progress);
                        break;
                    case DisplayState.PotentialUpAble:
                        DisplayProgress(false, progress);
                        m_Description.text = Language.Get("FabaoState_Text_9");
                        break;
                    case DisplayState.PotentialUp:
                        DisplayProgress(false, progress);
                        m_Description.text = Language.Get("FabaoState_Text_6");
                        break;
                    case DisplayState.AllCompleted:
                        DisplayProgress(false, progress);
                        m_NormalContainer.gameObject.SetActive(false);
                        m_AllCompletedContainer.gameObject.SetActive(true);
                        break;
                }
            }
        }
        private void ViewTreasure()
        {
            WindowCenter.Instance.Close<MainInterfaceWin>();
            if (model.IsRequireUnlockAnim(TreasureCategory.Human) == displayTreasureId)
            if (model.IsRequireUnlockAnim(TreasureCategory.Human) == displayId)
            {
                model.treasureGotoId = displayTreasureId;
                model.treasureGotoId = displayId;
                model.currentCategory = TreasureCategory.Human;
                WindowCenter.Instance.Open<TreasureSelectWin>();
            }
            else
            {
                var config = TreasureConfig.Get(displayTreasureId);
                model.selectedTreasure = displayTreasureId;
                var config = TreasureConfig.Get(displayId);
                model.selectedTreasure = displayId;
                model.currentCategory = (TreasureCategory)config.Category;
                WindowCenter.Instance.Open<TreasureBaseWin>();
            }
        }
        private int GetCanChallengeTreasure()
        {
            for (int i = 0; i < humanTreasures.Count; i++)
            {
                Treasure treasure;
                if (model.TryGetTreasure(humanTreasures[i], out treasure))
                {
                    if (treasure != null && treasure.state == TreasureState.Collecting)
                    {
                        return humanTreasures[i];
                    }
                }
            }
            return 0;
        }
        private int GetAwakenAbleTreasure()
        {
            return 0;
        }
        private int GetCanCollectSoulTreasure()
        {
            return 0;
        }
        private int GetAwakenUnderwayTreasure1()
        {
            return 0;
        }
        private int GetNextChallengeTreasure()
        {
            for (int i = 0; i < humanTreasures.Count; i++)
            {
                Treasure treasure;
                if (model.TryGetTreasure(humanTreasures[i], out treasure))
                {
                    if (treasure != null && treasure.state == TreasureState.Locked)
                    {
                        return humanTreasures[i];
                    }
                }
            }
            return 0;
        }
        private int GetPotentialUpAbleTreasure()
        {
            return 0;
        }
        private int GetPotentialUpTreasure(int _lastPotentialLevel)
        {
            return 0;
        }
        private void DisplayProgress(bool _show, float _progress)
        {
            if (_show)
            {
                m_Progress.text = Language.Get("FabaoState_Text_4", Mathf.RoundToInt(_progress * 100f));
            }
            else
            {
                m_Progress.text = "";
            }
        }
        private void DisplayTreasureUpStage(int _stage)
        {
            var config = TreasureUpConfig.Get(_stage);
            if (config != null)
            {
                var json = JsonMapper.ToObject(config.DescriptionMainWin);
                var job = PlayerDatas.Instance.baseData.Job;
                if (json.Keys.Contains(job.ToString()))
                {
                    m_Description.text = json[job.ToString()].ToString();
                }
                else
                {
                    m_Description.text = json["0"].ToString();
                }
            }
        }
        enum DisplayState
        {
            None,
            Challenge,
            AwakenAble,//可觉醒
            CollectSoul,//可集魂
            AwakenUnderway,//觉醒进行中
            WaitUnLock,//等待解封
            PotentialUp,//潜力提升进行中
            PotentialUpAble,//潜力可提升
            AllCompleted,
        }
    }
}