少年修仙传客户端代码仓库
client_linchunjie
2019-04-18 b59847b43b15b506ed762c37a99f06a17c119949
3335 炼丹功能
2个文件已修改
2个文件已添加
171 ■■■■■ 已修改文件
System/Alchemy/AlchemyModel.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyResultWin.cs 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyResultWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyStoveBehaviour.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyModel.cs
@@ -51,6 +51,8 @@
        public int stoveExp { get; private set; }
        public string alchemySuccRate { get; private set; }
        public bool isServerPrepare { get; private set; }
        public event Action selectQualityRefresh;
        public event Action selectAlchemyRefresh;
        public event Action alchemyStateRefresh;
@@ -67,10 +69,12 @@
            m_AlchemyTimes.Clear();
            stoveLevel = 0;
            stoveExp = 0;
            isServerPrepare = false;
        }
        public void OnPlayerLoginOk()
        {
            isServerPrepare = true;
        }
        void ParseConfig()
@@ -262,12 +266,24 @@
            {
                if (package.ItemCnt > 0)//炼丹成功
                {
                }
                else//炼丹失败
                {
                }
                if (isServerPrepare)
                {
                    if (!NewBieCenter.Instance.inGuiding && WindowCenter.Instance.IsOpen<AlchemyBaseWin>())
                    {
                        AlchemyResultWin.displayItem = new Item()
                        {
                            id = (int)package.ItemID,
                            count = package.ItemCnt,
                        };
                        WindowCenter.Instance.Open<AlchemyResultWin>();
                    }
                }
            }
            if (alchemyStateRefresh != null)
System/Alchemy/AlchemyResultWin.cs
New file
@@ -0,0 +1,123 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, April 18, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class AlchemyResultWin : Window
    {
        [SerializeField] UIAlphaTween m_DisplayAlphaTween;
        [SerializeField] Transform m_ContainerSucc;
        [SerializeField] Transform m_ContainerDefeat;
        [SerializeField] Text m_StoveLevel;
        [SerializeField] Text m_StoveExp;
        [SerializeField] Slider m_Slider;
        [SerializeField] ItemBehaviour m_Item;
        [SerializeField] Text m_CloseTip;
        [SerializeField] Button m_Close;
        public static Item displayItem;
        DateTime openTime = DateTime.Now;
        AlchemyModel model { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Close.AddListener(OnClose);
        }
        protected override void OnPreOpen()
        {
            Display();
            m_DisplayAlphaTween.SetStartState();
            m_CloseTip.gameObject.SetActive(false);
            openTime = DateTime.Now;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if ((DateTime.Now - openTime).TotalSeconds > 2f && !m_CloseTip.gameObject.activeSelf)
            {
                m_CloseTip.gameObject.SetActive(true);
            }
        }
        #endregion
        void Display()
        {
            DisplayStove();
            m_ContainerDefeat.gameObject.SetActive(displayItem.count == 0);
            m_ContainerSucc.gameObject.SetActive(displayItem.count > 0);
            if (displayItem.count > 0)
            {
                DisplayItem();
            }
        }
        void DisplayStove()
        {
            m_StoveLevel.text = StringUtility.Contact("Lv.", model.stoveLevel);
            var isMax = !RefineStoveConfig.Has(model.stoveLevel + 1);
            var stoveConfig = RefineStoveConfig.Get(model.stoveLevel);
            if (isMax)
            {
                m_StoveExp.text = "已满级";
                m_Slider.value = 1;
            }
            else
            {
                m_StoveExp.text = StringUtility.Contact(model.stoveExp, "/", stoveConfig.Exp);
                var progress = Mathf.Clamp01((float)model.stoveExp / stoveConfig.Exp);
                m_Slider.value = progress;
            }
        }
        void DisplayItem()
        {
            m_Item.SetItem(displayItem);
        }
        private void OnClose()
        {
            if ((DateTime.Now - openTime).TotalSeconds < 2f)
            {
                return;
            }
            CloseClick();
        }
    }
}
System/Alchemy/AlchemyResultWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 10ab7e1398ec3ee4e92dd074b6f3f59e
timeCreated: 1555586837
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Alchemy/AlchemyStoveBehaviour.cs
@@ -38,6 +38,8 @@
            }
        }
        float timer = 0f;
        AlchemyModel model { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
@@ -49,7 +51,6 @@
        public void Display()
        {
            model.selectAlchemyRefresh += SelectAlchemyRefresh;
            GlobalTimeEvent.Instance.secondEvent += PerSecond;
            model.alchemyStateRefresh += AlchemyStateRefresh;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
            packModel.refreshItemCountEvent += RefreshItemCountEvent;
@@ -112,7 +113,7 @@
                    {
                        var config = AlchemyConfig.Get(model.selectAlchemy);
                        var startTime = TimeUtility.GetTime(tick);
                        var seconds = Mathf.CeilToInt(config.NeedTime - (float)(TimeUtility.ServerNow - startTime).TotalSeconds);
                        var seconds = (int)(config.NeedTime - (float)(TimeUtility.ServerNow - startTime).TotalSeconds);
                        m_AlchemyTime.text = TimeUtility.SecondsToHMS(seconds);
                    }
                    break;
@@ -167,6 +168,16 @@
            }
        }
        private void LateUpdate()
        {
            timer += Time.deltaTime;
            if (timer >= 0.5f)
            {
                timer = 0f;
                PerSecond();
            }
        }
        private void PerSecond()
        {
            var _state = model.GetStoveState(model.selectAlchemy);
@@ -202,7 +213,7 @@
                    var succRate = model.GetAlchemySuccRate(model.selectAlchemy);
                    if (succRate / 100 < 100)
                    {
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), "", (bool isOk) =>
                        ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), "成功率偏低,炼丹失败无法获得丹药,是否确定要炼丹?", (bool isOk) =>
                          {
                              if (isOk)
                              {
@@ -257,7 +268,6 @@
        public void Dispose()
        {
            model.selectAlchemyRefresh -= SelectAlchemyRefresh;
            GlobalTimeEvent.Instance.secondEvent -= PerSecond;
            model.alchemyStateRefresh -= AlchemyStateRefresh;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
            packModel.refreshItemCountEvent -= RefreshItemCountEvent;