/// <summary> /// 检查可以获得的下一个随机特效奖励 /// </summary> /// <param name="client"></param> /// <param name="day"></param> /// <param name="awardType"></param> /// <param name="canGetMax"></param> /// <returns></returns> private bool GetNextCanEffectAward(GameClient client, int day, out EWishEffectAwardType awardType, out int canGetMax) { awardType = EWishEffectAwardType.None; canGetMax = 0; string szEffectAward = Global.GetRoleParamByName(client, RoleParamName.CoupleWishEffectAward); string[] awardFields = !string.IsNullOrEmpty(szEffectAward) ? szEffectAward.Split(',') : null; if (awardFields == null || awardFields.Length != 2 + (int)EWishEffectAwardType.Max) { // 奖励记录数据不正确,重新从第一个开始奖励 awardType = EWishEffectAwardType.BangJin; canGetMax = WishEffectDayMaxAward[awardType]; return(true); } if (Convert.ToInt32(awardFields[1]) != day) { // 上次奖励日期不是今天,从下一个开始奖励,已获得数值清空 awardType = (EWishEffectAwardType)((Convert.ToInt32(awardFields[0]) + 1) % (int)EWishEffectAwardType.Max); canGetMax = WishEffectDayMaxAward[awardType]; return(true); } // 循环找到下一个可奖励的项 for (int i = 0; i < (int)EWishEffectAwardType.Max; i++) { int nextType = (Convert.ToInt32(awardFields[0]) + i + 1) % (int)EWishEffectAwardType.Max; int nextHadGet = Convert.ToInt32(awardFields[2 + nextType]); if (WishEffectDayMaxAward[(EWishEffectAwardType)nextType] > nextHadGet) { awardType = (EWishEffectAwardType)nextType; canGetMax = WishEffectDayMaxAward[awardType] - nextHadGet; return(true); } } return(false); }
/// <summary> /// 存储特效奖励 /// </summary> /// <param name="client"></param> /// <param name="day"></param> /// <param name="awardType"></param> /// <param name="get"></param> private void SaveGetNextEffectAward(GameClient client, int day, EWishEffectAwardType awardType, int get) { string szEffectAward = Global.GetRoleParamByName(client, RoleParamName.CoupleWishEffectAward); string[] awardFields = !string.IsNullOrEmpty(szEffectAward) ? szEffectAward.Split(',') : null; int[] newFlag = new int[2 + (int)EWishEffectAwardType.Max]; newFlag[0] = (int)awardType; newFlag[1] = day; if (awardFields != null && awardFields.Length == 2 + (int)EWishEffectAwardType.Max && Convert.ToInt32(awardFields[1]) == day) { for (int i = 0; i < (int)EWishEffectAwardType.Max; i++) { newFlag[2 + i] = Convert.ToInt32(awardFields[2 + i]); } } newFlag[2 + (int)awardType] = (int)Math.Min((long)int.MaxValue, newFlag[2 + (int)awardType] + get); Global.SaveRoleParamsStringToDB(client, RoleParamName.CoupleWishEffectAward, string.Format("{0},{1},{2},{3},{4}", newFlag[0], newFlag[1], newFlag[2], newFlag[3], newFlag[4]), true); }