public override void BuildPacket()
        {
            PushIntoStack(enchantPackNum);
            PushIntoStack(moShiNum);
            PushIntoStack(goldNum);
            PushIntoStack(generalArray.Length);
            foreach (var general in generalArray)
            {
                UserEnchantInfo[] enchantGeneralArray = new UserEnchantInfo[0];
                UserItemInfo      useritem            = EnchantHelper.GetGeneralWeapon(general.UserID, general.GeneralID);
                ItemBaseInfo      itemInfo            = null;
                if (useritem != null)
                {
                    itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(useritem.ItemID);
                    openNum  = EnchantHelper.EnchantOpenGridNum(useritem.ItemLv);
                    if (package != null)
                    {
                        enchantGeneralArray = package.EnchantPackage.FindAll(m => m.UserItemID == useritem.UserItemID).ToArray();
                    }
                }
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(general.GeneralID);
                dsItem.PushIntoStack(general.GeneralName.ToNotNullString());
                dsItem.PushIntoStack((short)general.CareerID);
                dsItem.PushIntoStack(useritem == null ? string.Empty : useritem.UserItemID.ToNotNullString());
                dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
                dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
                dsItem.PushIntoStack((short)openNum);
                dsItem.PushIntoStack(enchantGeneralArray.Length);
                foreach (var enchant in enchantGeneralArray)
                {
                    EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(enchant.EnchantID);
                    DataStruct  dsItem1     = new DataStruct();
                    dsItem1.PushIntoStack((short)enchant.Position);
                    dsItem1.PushIntoStack(enchant.UserEnchantID.ToNotNullString());
                    dsItem1.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.EnchantName.ToNotNullString());
                    dsItem1.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.HeadID.ToNotNullString());
                    dsItem1.PushIntoStack((short)enchant.EnchantLv);
                    dsItem1.PushIntoStack(enchantInfo == null ? (short)0 : (short)enchantInfo.ColorType);
                    dsItem.PushIntoStack(dsItem1);
                }

                PushIntoStack(dsItem);
            }
            this.PushIntoStack(pageCount);
            this.PushIntoStack(enchantPackageArray.Length);
            foreach (var enchant in enchantPackageArray)
            {
                EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(enchant.EnchantID);
                DataStruct  dsItem      = new DataStruct();
                dsItem.PushIntoStack(enchant.UserEnchantID.ToNotNullString());
                dsItem.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.EnchantName.ToNotNullString());
                dsItem.PushIntoStack(enchantInfo == null ? string.Empty : enchantInfo.HeadID.ToNotNullString());
                dsItem.PushIntoStack((short)enchant.EnchantLv);
                dsItem.PushIntoStack(enchantInfo == null ? (short)0 : (short)enchantInfo.ColorType);
                PushIntoStack(dsItem);
            }
            this.PushIntoStack(mosaicList.Length);
            foreach (var mosaic in mosaicList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack((short)mosaic.Position);
                dsItem.PushIntoStack(mosaic.MosaicColor.ToNotNullString());
                dsItem.PushIntoStack((short)mosaic.DemandLv);

                this.PushIntoStack(dsItem);
            }
        }
Exemple #2
0
        public override bool TakeAction()
        {
            var syntheList = new CacheList <SynthesisInfo>();
            var package    = UserEnchant.Get(ContextUser.UserID);

            if (ops == 1)
            {
                UserEnchantInfo userEnchantinfo1 = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID1);
                UserEnchantInfo userEnchantinfo2 = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID2);
                if (userEnchantinfo1 == null || userEnchantinfo2 == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough;
                    return(false);
                }

                if (userEnchantinfo1.EnchantLv >= GameConfigSet.MaxEnchantLv)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1256_OutMaxEnchantLv;
                    return(false);
                }
                int         entExprience1 = 0;
                int         entExprience2 = 0;
                EnchantInfo enchant1      = new ConfigCacheSet <EnchantInfo>().FindKey(userEnchantinfo1.EnchantID);
                EnchantInfo enchant2      = new ConfigCacheSet <EnchantInfo>().FindKey(userEnchantinfo2.EnchantID);
                if (enchant1 != null && enchant2 != null)
                {
                    entExprience1 = enchant1.Experience;
                    entExprience2 = enchant2.Experience;
                    if (userEnchantinfo1.EnchantLv > userEnchantinfo2.EnchantLv ||
                        (userEnchantinfo1.EnchantLv == userEnchantinfo2.EnchantLv &&
                         userEnchantinfo1.CurrExprience >= userEnchantinfo2.CurrExprience))
                    {
                        UpdateEnchant(userEnchantID1, userEnchantID2, entExprience2);
                        syntheList.Add(new SynthesisInfo()
                        {
                            DemandID = userEnchantinfo2.EnchantID, Num = userEnchantinfo2.CurrExprience
                        });
                        UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, userEnchantinfo1, syntheList);
                    }
                    else
                    {
                        UpdateEnchant(userEnchantID2, userEnchantID1, entExprience1);
                        syntheList.Add(new SynthesisInfo()
                        {
                            DemandID = userEnchantinfo1.EnchantID, Num = userEnchantinfo1.CurrExprience
                        });
                        UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, userEnchantinfo2, syntheList);
                    }
                }
            }
            else if (ops == 2)
            {
                int experience   = 0;
                var enchantArray = package.EnchantPackage.FindAll(m => string.IsNullOrEmpty(m.UserItemID));
                if (enchantArray.Count == 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough;
                    return(false);
                }
                if (enchantArray.Count == 1)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1256_EnchantNumNotEnough;
                    return(false);
                }
                enchantArray.QuickSort((x, y) =>
                {
                    int result = 0;
                    if (x == null && y == null)
                    {
                        return(0);
                    }
                    if (x != null && y == null)
                    {
                        return(1);
                    }
                    if (x == null)
                    {
                        return(-1);
                    }
                    result = y.EnchantLv.CompareTo(x.EnchantLv);
                    if (result == 0)
                    {
                        result = y.CurrExprience.CompareTo(x.CurrExprience);
                    }
                    return(result);
                });

                UserEnchantInfo uEnchantInfo =
                    package.EnchantPackage.Find(m => m.UserEnchantID == enchantArray[0].UserEnchantID);
                if (uEnchantInfo == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1262_EnchantSynthesisNotEnough;
                    return(false);
                }
                EnchantLvInfo enchantLvInfo = new ConfigCacheSet <EnchantLvInfo>().FindKey(uEnchantInfo.EnchantID,
                                                                                           GameConfigSet.MaxEnchantLv);
                int maxExprience = enchantLvInfo == null ? 0 : enchantLvInfo.Experience;

                foreach (var info in enchantArray)
                {
                    EnchantInfo enchantInfo = new ConfigCacheSet <EnchantInfo>().FindKey(info.EnchantID);
                    if (enchantInfo != null)
                    {
                        experience = enchantInfo.Experience;
                    }
                    if (uEnchantInfo.UserEnchantID != info.UserEnchantID)
                    {
                        if (uEnchantInfo.CurrExprience >= maxExprience)
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St1256_OutMaxEnchantLv;
                            return(false);
                        }
                        syntheList.Add(new SynthesisInfo()
                        {
                            DemandID = info.EnchantID, Num = info.CurrExprience
                        });
                        UpdateEnchant(uEnchantInfo.UserEnchantID, info.UserEnchantID, experience);
                    }
                }
                UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, uEnchantInfo, syntheList);
            }
            return(true);
        }