少年修仙传客户端代码仓库
client_linchunjie
2019-06-03 417cfe9fa764490bc3710e89030cc2c90de5f727
System/Alchemy/AlchemyModel.cs
@@ -8,7 +8,7 @@
    [XLua.LuaCallCSharp]
    public class AlchemyModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        Dictionary<int, uint> m_AlchemyTimes = new Dictionary<int, uint>();
        Dictionary<int, AlchemyTime> m_AlchemyTimes = new Dictionary<int, AlchemyTime>();
        Dictionary<int, Dictionary<int, AlchemyCount>> m_AlchemyCounts = new Dictionary<int, Dictionary<int, AlchemyCount>>();
        Dictionary<int, int> m_AlchemyQualityLucks = new Dictionary<int, int>();
        Dictionary<int, List<Item>> m_AlchemyMaterials = new Dictionary<int, List<Item>>();
@@ -53,6 +53,8 @@
        public bool alchemyNormalNotifySymbol { get; set; }
        public bool alchemyFairyNotifySymbol { get; set; }
        public int maxBatchAlchemyCount { get; private set; }
        public bool isServerPrepare { get; private set; }
@@ -203,6 +205,7 @@
            {
                var funcConfig = FuncConfigConfig.Get("AlchemyOverLimit");
                var itemId = int.Parse(funcConfig.Numerical1);
                maxBatchAlchemyCount = int.Parse(funcConfig.Numerical2);
                var configs = AttrFruitConfig.GetValues();
                foreach (var config in configs)
@@ -235,9 +238,9 @@
            }
        }
        public bool TryGetAlchemyStartTime(int alchemyId, out uint tick)
        public bool TryGetAlchemyStartTime(int alchemyId, out AlchemyTime alchemyTime)
        {
            return m_AlchemyTimes.TryGetValue(alchemyId, out tick);
            return m_AlchemyTimes.TryGetValue(alchemyId, out alchemyTime);
        }
        public bool TryGetAlchemyCount(int alchemyId, int luckValue, out AlchemyCount alchemyCount)
@@ -346,13 +349,14 @@
        public int GetStoveState(int alchemyId)
        {
            uint tick = 0;
            if (TryGetAlchemyStartTime(alchemyId, out tick)
                && tick > 0)
            AlchemyTime alchemyTime;
            if (TryGetAlchemyStartTime(alchemyId, out alchemyTime)
                && alchemyTime.startTick > 0)
            {
                var config = AlchemyConfig.Get(alchemyId);
                var startTime = TimeUtility.GetTime(tick);
                var seconds = config.NeedTime - (float)(TimeUtility.ServerNow - startTime).TotalSeconds;
                var startTime = TimeUtility.GetTime(alchemyTime.startTick);
                var seconds = config.NeedTime * alchemyTime.count
                    - (float)(TimeUtility.ServerNow - startTime).TotalSeconds;
                return seconds > 0 ? 1 : 2;
            }
            return 0;
@@ -394,6 +398,34 @@
                return drugUseLimit.GetUseLimit();
            }
            return 0;
        }
        public int GetCanAlchemyCount(int alchemyId)
        {
            Item item;
            var count = 0;
            if (IsAlchemyEnoughMaterial(alchemyId, out item))
            {
                List<Item> materials;
                if (TryGetAlchemyMaterials(alchemyId, out materials))
                {
                    for (int i = 0; i < materials.Count; i++)
                    {
                        var mat = materials[i];
                        var itemCount = packModel.GetItemCountByID(PackType.Item, mat.id);
                        var _count = itemCount / mat.count;
                        if (count == 0)
                        {
                            count = _count;
                        }
                        else
                        {
                            count = Mathf.Min(count, _count);
                        }
                    }
                }
            }
            return count;
        }
        public bool IsGraspRecipe(int alchemyId)
@@ -442,7 +474,11 @@
            for (int i = 0; i < package.StoveCnt; i++)
            {
                var data = package.InfoList[i];
                m_AlchemyTimes[(int)data.AlchemyID] = data.StartTime;
                m_AlchemyTimes[(int)data.AlchemyID] = new AlchemyTime()
                {
                    startTick = data.StartTime,
                    count = data.AlchemyTimes,
                };
                if (isServerPrepare)
                {
@@ -842,6 +878,12 @@
        }
    }
    public struct AlchemyTime
    {
        public uint startTick;
        public int count;
    }
    public class AlchemyRedpoint
    {
        public readonly Redpoint redpoint;