Beispiel #1
0
        public override bool TakeAction()
        {
            receipt = UsedItemResult.Successfully;

            var itemconfig = new ShareCacheStruct <Config_Item>().FindKey(itemId);

            if (itemconfig == null)
            {
                new BaseLog().SaveLog(string.Format("No found item config. ID={0}", itemId));
                return(false);
            }

            var itemdata = GetPackage.FindItem(itemId);

            if (itemdata == null)
            {
                receipt = UsedItemResult.NoItem;
                return(true);
            }
            if (itemdata.Num < useNum)
            {
                receipt = UsedItemResult.ItemNumError;
                return(true);
            }

            switch (itemconfig.ResourceType)
            {
            case ResourceType.Gold:
            {
                BigInteger resourceNum = BigInteger.Parse(itemconfig.ResourceNum);
                BigInteger value       = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * resourceNum;
                UserHelper.RewardsGold(Current.UserId, value * useNum, UpdateCoinOperate.UserItemReward);
                //receipt.GainGold = resourceNum;
            }
            break;

            case ResourceType.Diamond:
            {
                UserHelper.RewardsDiamond(Current.UserId, itemconfig.ResourceNum.ToInt() * useNum, UpdateCoinOperate.UseItem);
                //receipt.GainDiamond = resourceNum * useNum;
            }
            break;

            case ResourceType.Gift:
            {
                var giftconfig = new ShareCacheStruct <Config_Giftbag>().Find(t => t.ItemID == itemconfig.ItemID);
                if (giftconfig == null)
                {
                    new BaseLog().SaveLog(string.Format("No found gift config. ID={0}", itemconfig.ItemID));
                    return(false);
                }

                //receipt.GainItem = giftconfig.GetRewardsItem();
                var list = giftconfig.GetRewardsItem();
                foreach (var v in list)
                {
                    v.Num *= useNum;
                }
                UserHelper.RewardsItems(Current.UserId, list);
            }
            break;

            case ResourceType.Elf:
            {
                var elfconfig = new ShareCacheStruct <Config_Elves>().Find(t => t.ElvesID == itemconfig.ResourceNum.ToInt());
                if (elfconfig == null)
                {
                    new BaseLog().SaveLog(string.Format("No found elf config. ID={0}", itemconfig.ResourceNum));
                    return(false);
                }

                if (itemconfig.ItemType == ItemType.Elf)
                {
                    UserHelper.RewardsElf(Current.UserId, elfconfig.ElvesID);
                }
                else if (itemconfig.ItemType == ItemType.ElfExperienceCard)
                {
                    long experienceTimeMin = itemconfig.ItemGrade * 60 * 24;

                    UserHelper.RewardsElf(Current.UserId, elfconfig.ElvesID, true, experienceTimeMin);
                }
            }
            break;

            case ResourceType.Vit:
            {
                UserHelper.RewardsVit(Current.UserId, itemconfig.ResourceNum.ToInt() * useNum);
                //receipt.GainDiamond = resourceNum * useNum;
            }
            break;

            default:
            {
                receipt = UsedItemResult.Cannot;
                return(true);
            }
            }

            GetPackage.RemoveItem(itemId, useNum);
            return(true);
        }