/// <summary> /// 副本倍数掉落活动限制次数 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static void DuplicateDropDoubleRestrain(string userID) { FestivalInfo info = GetInfo(FestivalType.DuplicateDropDouble); if (info != null && info.FestivalExtend != null) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null) { fRest = new FestivalRestrain(); fRest.UserID = userID; fRest.FestivalID = info.FestivalID; fRest.RefreashDate = DateTime.Now; fRest.RestrainNum = 1; cacheSet.Add(fRest); } else { if (fRest.RefreashDate.Date != DateTime.Now.Date) { fRest.RestrainNum = 0; fRest.RefreashDate = DateTime.Now; } fRest.RestrainNum = MathUtils.Addition(fRest.RestrainNum, 1); } } }
/// <summary> /// 购买精力限制次数 /// </summary> /// <param name="userID"></param> /// <param name="festivalType"></param> /// <param name="typeID"></param> public static void PurchasedEnergy(string userID) { FestivalInfo info = GetInfo(FestivalType.PurchasedEnergy); if (info != null) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = DateTime.Now; fRest.RestrainNum = 1; fRest.UserID = userID; cacheSet.Add(fRest); } else { if (DateTime.Now.Date == fRest.RefreashDate.Date) { fRest.RestrainNum = MathUtils.Addition(fRest.RestrainNum, 1); } else { fRest.RestrainNum = 1; } fRest.RefreashDate = DateTime.Now; } } }
/// <summary> ///vip活动礼包 /// </summary> public static void GetVipFestival(string userID) { FestivalInfo info = GetInfo(FestivalType.VIPFestival); if (info != null && info.FestivalExtend != null) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null || fRest.RefreashDate < info.StartDate || (fRest.RestrainNum < info.RestrainNum && fRest.RefreashDate >= info.StartDate && fRest.RefreashDate <= info.EndDate)) { CacheList <PrizeInfo> prizeList = PrizeHelper.GetPrizeInfo(info.Reward); foreach (PrizeInfo prize in prizeList) { UserTakePrize userTask = PrizeHelper.GetUserTake(prize, userID, info); new ShareCacheStruct <UserTakePrize>().Add(userTask); } if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = DateTime.Now; fRest.RestrainNum = 1; fRest.UserID = userID; cacheSet.Add(fRest); } else { fRest.RestrainNum = MathUtils.Addition(fRest.RestrainNum, 1); fRest.RefreashDate = DateTime.Now; } } } }
public void updateDate(List <FestivalInfo> arrFestival) { arrFestivalVM = new List <FestivalVM>(); for (int i = 0; i < arrFestival.Count; ++i) { FestivalInfo md = arrFestival[i]; FestivalVM vm = new FestivalVM(); vm.Name = md.desc; vm.Time = md.showTime; int day = md.dayOfRange; if (day == 0) { vm.DayOfRange = "今天"; vm.dayOfRangeType = DayOfRangeType.Now; } else { if (md.isFinished) { vm.dayOfRangeType = DayOfRangeType.Finish; } else { vm.dayOfRangeType = DayOfRangeType.Wait; } vm.DayOfRange = "距离" + day + "天"; } arrFestivalVM.Add(vm); } lstFestival.ItemsSource = arrFestivalVM; }
public override bool TakeAction() { festivalList = NoviceHelper.LimitFestivalList(); if (festivalList.Count > 0) { string shortDateFormat = LanguageManager.GetLang().FestivalDataFormat; festivalInfo = festivalList[0]; beginDate = festivalInfo.StartDate.ToString(shortDateFormat); if (festivalInfo.EndDate != MathUtils.SqlMinDate) { endDate = festivalInfo.EndDate.ToString(shortDateFormat); } else { endDate = festivalInfo.StartDate.AddHours(festivalInfo.ContinuedTime).ToString(shortDateFormat); } } festivalList.QuickSort((x, y) => { if (x == null && y == null) { return(0); } if (x != null && y == null) { return(1); } if (x == null) { return(-1); } return(x.FestivalID.CompareTo(y.FestivalID)); }); return(true); }
/// <summary> /// 副本倍数掉落活动限制次数 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static void DuplicateDropDoubleRestrain(string userID) { int multiple = 1; FestivalInfo info = GetInfo(FestivalType.DuplicateDropDouble); if (info != null && info.FestivalExtend != null) { var cacheSet = new GameDataCacheSet <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null) { fRest = new FestivalRestrain(); fRest.UserID = userID; fRest.FestivalID = info.FestivalID; fRest.RefreashDate = DateTime.Now; fRest.RestrainNum = 1; cacheSet.Add(fRest, GameEnvironment.CacheUserPeriod); } else { if (fRest.RefreashDate.Date != DateTime.Now.Date) { fRest.RestrainNum = 0; fRest.RefreashDate = DateTime.Now; } fRest.RestrainNum = MathUtils.Addition(fRest.RestrainNum, 1); } } }
/// <summary> /// 累计消费送礼 /// </summary> public static void PayAccumulation(string userID, int consumeNum) { FestivalInfo fest = GetInfo(FestivalType.PayAccumulation); if (fest == null) { return; } var cacheSet = new PersonalCacheStruct <UserConsume>(); UserConsume userConsume = cacheSet.FindKey(userID); if (userConsume == null) { userConsume = new UserConsume(); userConsume.UserID = userID; userConsume.GameCoin = 0; userConsume.GoldNum = 0; userConsume.EnergyNum = 0; cacheSet.Add(userConsume); cacheSet.Update(); userConsume = new PersonalCacheStruct <UserConsume>().FindKey(userID); } if (userConsume.GoldDate < fest.StartDate) { userConsume.GoldDate = fest.StartDate; userConsume.GoldNum = consumeNum; } else { userConsume.GoldNum = MathUtils.Addition(userConsume.GoldNum, consumeNum); } var cacheSetRestrain = new PersonalCacheStruct <FestivalRestrain>(); var festivalList = new ShareCacheStruct <FestivalInfo>().FindAll(s => s.FestivalType == FestivalType.PayAccumulation); foreach (var info in festivalList) { if (!info.IsStop) { continue; } if (info.StartDate > DateTime.Now) { continue; } if (info.EndDate < DateTime.Now) { continue; } if (info.FestivalType == FestivalType.PayAccumulation) { FestivalRestrain fRest = cacheSetRestrain.FindKey(userID, info.FestivalID); if (fRest != null && userConsume.GoldNum >= info.RestrainNum) { AppendFestivalRestrain(userID, fest.FestivalID, fest.RestrainNum); } } } }
/// <summary> /// 商城折扣 /// </summary> /// <returns></returns> public static double StoreDiscount() { FestivalInfo info = GetInfo(FestivalType.StoreDiscount); if (info != null && info.FestivalExtend != null) { return(info.FestivalExtend.MinusNum); } return(1); }
/// <summary> /// 副本倍数掉落活动 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static int DuplicateDropDouble(string userID) { int multiple = 1; FestivalInfo info = GetInfo(FestivalType.DuplicateDropDouble); if (info != null && info.FestivalExtend != null && info.FestivalExtend.MinusNum > 0) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null || fRest.RefreashDate.Date != DateTime.Now.Date || fRest.RestrainNum < info.RestrainNum) { multiple = info.FestivalExtend.MinusNum.ToInt(); } } return(multiple); }
/// <summary> /// 活动剩余次数 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static int SurplusEnergyNum(string userID) { int surplusNum = 0; FestivalInfo info = GetInfo(FestivalType.PurchasedEnergy); if (info != null && info.FestivalExtend != null && info.FestivalExtend.MinusNum > 0) { surplusNum = info.RestrainNum; var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest != null && fRest.RefreashDate.Date == DateTime.Now.Date) { surplusNum = MathUtils.Subtraction(surplusNum, fRest.RestrainNum, 0); } } return(surplusNum); }
/// <summary> /// 购买精力,庄园加成 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static double SurplusPurchased(string userID, FestivalType festivalType) { double addNum = 1; FestivalInfo info = GetInfo(festivalType); if (info != null && info.FestivalExtend != null && info.FestivalExtend.MinusNum > 0) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null || fRest.RefreashDate < info.StartDate || (fRest.RefreashDate >= info.StartDate && fRest.RefreashDate <= info.EndDate)) { addNum = info.FestivalExtend.MinusNum; } } return(addNum); }
/// <summary> /// 根据类型获取活动奖励 首充奖励、登入送好礼 /// </summary> /// <param name="userID"></param> /// <param name="type"></param> public static void GetFirstReward(string userID, FestivalType type) { FestivalInfo info = GetInfo(type); if (info != null && info.FestivalExtend != null) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null) { AppendFestivalRestrain(userID, info.FestivalID, 1); //if (PrizeHelper.GetUserMail(userID, info)) //{ //} } } }
/// <summary> /// 招募佣兵送魂魄 /// </summary> /// <param name="userID"></param> public static string RecruitGeneral(string userID, RecruitType rtype) { string festivalContent = string.Empty; FestivalInfo info = GetInfo(FestivalType.RecruitGeneral); if (info != null && info.FestivalExtend != null && info.FestivalExtend.Recruit.Count > 0) { var recruitFest = info.FestivalExtend.Recruit.Find(s => s.Type == rtype); if (recruitFest != null) { var generalList = new ShareCacheStruct <GeneralInfo>().FindAll(s => s.GeneralQuality == recruitFest.GeneralQuality); if (generalList.Count > 0) { int index1 = RandomUtils.GetRandom(0, generalList.Count); if (index1 > -1) { GeneralInfo generalInfo = generalList[index1]; if (generalInfo != null) { GeneralHelper.UpdateUserGeneral(userID, generalInfo, GeneralType.Soul, recruitFest.Num); if (!string.IsNullOrEmpty(info.FestivalExtend.Desc)) { festivalContent = string.Format(info.FestivalExtend.Desc, generalInfo.GeneralName, recruitFest.Num); } return(festivalContent); } } } else if (recruitFest.GeneralID > 0) { GeneralInfo generalInfo = new ShareCacheStruct <GeneralInfo>().FindKey(recruitFest.GeneralID); if (generalInfo != null) { GeneralHelper.UpdateUserGeneral(userID, generalInfo, GeneralType.Soul, recruitFest.Num); if (!string.IsNullOrEmpty(info.FestivalExtend.Desc)) { festivalContent = string.Format(info.FestivalExtend.Desc, generalInfo.GeneralName, recruitFest.Num); } return(festivalContent); } } } } return(festivalContent); }
/// <summary> /// 累计充值活动 /// </summary> private static void TriggerFestivalPack(UserRecharge userRecharge, int GameCoins) { FestivalInfo fest = FestivalHelper.GetInfo(FestivalType.PayCount); if (fest == null) { return; } if (userRecharge.FestivalDate == null || userRecharge.FestivalDate < fest.StartDate) { userRecharge.FestivalDate = fest.StartDate; userRecharge.FestivalCount = GameCoins; } else { userRecharge.FestivalCount += GameCoins; } }
/// <summary> /// 累计消费活动奖励(晶石,金币,精力) /// </summary> private static void FestivalConsumeCount(FestivalInfo info, string userID) { UserConsume consume = new PersonalCacheStruct <UserConsume>().FindKey(userID); if (consume == null) { return; } var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest != null && fRest.RestrainNum >= 1 && fRest.RefreashDate == info.StartDate) { return; } if ((info.FestivalType == FestivalType.SparConsumption && consume.GoldDate >= info.StartDate && consume.GoldNum >= info.RestrainNum) || (info.FestivalType == FestivalType.GameCoin && consume.CoinDate >= info.StartDate && consume.GameCoin >= info.RestrainNum) || (info.FestivalType == FestivalType.Energy && consume.EnergyDate >= info.StartDate && consume.EnergyNum >= info.RestrainNum)) { CacheList <PrizeInfo> prizeList = PrizeHelper.GetPrizeInfo(info.Reward); foreach (PrizeInfo prize in prizeList) { UserTakePrize userTask = PrizeHelper.GetUserTake(prize, userID, info); new ShareCacheStruct <UserTakePrize>().Add(userTask); } if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; fRest.UserID = userID; cacheSet.Add(fRest); } else { fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; //fRest.Update(); } } }
public override bool TakeAction() { festivalInfo = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID); if (festivalInfo != null) { string shortDateFormat = LanguageManager.GetLang().FestivalDataFormat; beginDate = festivalInfo.StartDate.ToString(shortDateFormat);//yyyy-MM-dd HH:mm:ss;ms // beginDate = string.Format("{0:M}", festivalInfo.StartDate); if (festivalInfo.EndDate != MathUtils.SqlMinDate) { // endDate = string.Format("{0:M}", festivalInfo.EndDate); endDate = festivalInfo.EndDate.ToString(shortDateFormat); } else { // endDate = string.Format("{0:M}", festivalInfo.StartDate.AddHours(festivalInfo.ContinuedTime)); endDate = festivalInfo.StartDate.AddHours(festivalInfo.ContinuedTime).ToString(shortDateFormat); } } return(true); }
/// <summary> ///龟兔赛跑活动奖励 /// </summary> public static double TortoiseHare(string userID) { double energyPro = 1; FestivalInfo info = GetInfo(FestivalType.TortoiseHare); if (info == null) { return(energyPro); } List <TaskConfigInfo> taskConfigInfosList = new List <TaskConfigInfo>(info.TaskConfig); foreach (TaskConfigInfo taskConfigInfo in taskConfigInfosList) { if (taskConfigInfo.StratDate.ToDateTime() < DateTime.Now && DateTime.Now < taskConfigInfo.EndData.ToDateTime()) { energyPro = taskConfigInfo.MinusNum; break; } } return(energyPro); }
/// <summary> /// 累计充值活动 /// </summary> public static void FestivalPayCount(FestivalInfo info, GameUser user) { UserRecharge recharge = new PersonalCacheStruct <UserRecharge>().FindKey(user.UserID); if (recharge == null) { return; } var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(user.UserID, info.FestivalID); if (fRest != null && fRest.RestrainNum >= 1 && fRest.RefreashDate == info.StartDate) { return; } if (recharge.FestivalDate >= info.StartDate && recharge.FestivalCount >= info.RestrainNum) { CacheList <PrizeInfo> prizeList = PrizeHelper.GetPrizeInfo(info.Reward); foreach (PrizeInfo prize in prizeList) { UserTakePrize userTask = PrizeHelper.GetUserTake(prize, user.UserID, info); new ShareCacheStruct <UserTakePrize>().Add(userTask); } if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; fRest.UserID = user.UserID; cacheSet.Add(fRest); } else { fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; } } }
/// <summary> /// 登入送好礼 /// </summary> /// <param name="userID"></param> /// <param name="type"></param> public static void GetLoginGainReward(string userID, FestivalType type) { FestivalInfo info = GetInfo(type); if (info != null && info.FestivalExtend != null) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null) { AppendFestivalRestrain(userID, info.FestivalID, 1); } else { var prizeList = info.Reward.FindAll(s => s.RefreshDate.Date == DateTime.Now.Date); if (fRest.RefreashDate.Date != DateTime.Now.Date && prizeList.Count > 0) { fRest.RefreashDate = DateTime.Now; fRest.IsReceive = false; } } } }
public static UserTakePrize GetUserTake(PrizeInfo prize, string userID, FestivalInfo info) { UserTakePrize userPrize = new UserTakePrize(); userPrize.CreateDate = DateTime.Now; userPrize.ID = Guid.NewGuid().ToString(); userPrize.UserID = Convert.ToInt32(userID); userPrize.MailContent = info.FestivalExtend.KeyWord; userPrize.IsTasked = false; userPrize.TaskDate = MathUtils.SqlMinDate; userPrize.ItemPackage = string.Empty; userPrize.SparePackage = string.Empty; userPrize.CrystalPackage = string.Empty; userPrize.EnchantPackage = string.Empty; userPrize.OpUserID = 10000; switch (prize.Type) { case RewardType.GameGoin: userPrize.GameCoin = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GameCoin, prize.Num); break; case RewardType.Obtion: userPrize.ObtainNum = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ObtionNum, prize.Num); break; case RewardType.ExpNum: userPrize.ExpNum = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ExpNum, prize.Num); break; case RewardType.EnergyNum: userPrize.EnergyNum = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_EnergyNum, prize.Num); break; case RewardType.Experience: break; case RewardType.Gold: userPrize.Gold = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GiftGoldNum, prize.Num); break; case RewardType.Item: userPrize.ItemPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(prize.ItemID); if (itemInfo != null) { userPrize.MailContent += string.Format("{0}*{1}", itemInfo.ItemName, prize.Num); } break; case RewardType.CrystalType: //List<CrystalInfo> crystalArray2 = new ShareCacheStruct<CrystalInfo>().FindAll(CrystalInfo.Index_CrystalQuality, prize.CrystalType); //userPrize.CrystalPackage = string.Format("{0}={1}={2}", itemID, prize.UserLv, itemNum); break; case RewardType.CrystalId: userPrize.CrystalPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); CrystalInfo crystal = new ShareCacheStruct <CrystalInfo>().FindKey(prize.ItemID); if (crystal != null) { userPrize.MailContent += string.Format("{0}*{1}", crystal.CrystalName, prize.Num); } break; case RewardType.Spare: userPrize.SparePackage = string.Format("{0}={1}={2}", prize.ItemID, prize.Num, prize.Num); SparePartInfo spare = new ShareCacheStruct <SparePartInfo>().FindKey(prize.ItemID); if (spare != null) { userPrize.MailContent += string.Format("{0}*{1}", spare.Name, prize.Num); } break; case RewardType.Enchant: userPrize.EnchantPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(prize.ItemID); if (enchantInfo != null) { userPrize.MailContent += string.Format("{0}*{1}", enchantInfo.EnchantName, prize.Num); } break; default: break; } return(userPrize); }
/// <summary> /// 累计消费活动 /// </summary> public static void TriggerFestivalConsume(string userID, int consumeNum, FestivalType festivalType) { FestivalInfo fest = GetInfo(festivalType); if (fest == null) { return; } var cacheSet = new PersonalCacheStruct <UserConsume>(); UserConsume userConsume = cacheSet.FindKey(userID); if (userConsume == null) { userConsume = new UserConsume(); userConsume.UserID = userID; userConsume.GameCoin = 0; userConsume.GoldNum = 0; userConsume.EnergyNum = 0; cacheSet.Add(userConsume); cacheSet.Update(); userConsume = new PersonalCacheStruct <UserConsume>().FindKey(userID); } //晶石 if (festivalType == FestivalType.SparConsumption) { if (userConsume.GoldDate < fest.StartDate) { userConsume.GoldDate = fest.StartDate; userConsume.GoldNum = consumeNum; } else { userConsume.GoldNum = MathUtils.Addition(userConsume.GoldNum, consumeNum); } } //金币 if (festivalType == FestivalType.GameCoin) { if (userConsume.CoinDate < fest.StartDate) { userConsume.CoinDate = fest.StartDate; userConsume.GameCoin = consumeNum; } else { userConsume.GameCoin = MathUtils.Addition(userConsume.GameCoin, consumeNum); } } //精力 if (festivalType == FestivalType.Energy) { if (userConsume.EnergyDate < fest.StartDate) { userConsume.EnergyDate = fest.StartDate; userConsume.EnergyNum = consumeNum; } else { userConsume.EnergyNum = MathUtils.Addition(userConsume.EnergyNum, consumeNum); } } FestivalInfo[] festivalInfosArray = new ShareCacheStruct <FestivalInfo>().FindAll(m => m.FestivalType == festivalType).ToArray(); foreach (FestivalInfo festivalInfo in festivalInfosArray) { FestivalConsumeCount(festivalInfo, userID); } }