LimitCfgArray.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Collections.Generic;
  2. using cfg.GfgCfg;
  3. using ET;
  4. namespace GFGGame
  5. {
  6. public class LimitCfgArray : SingletonBaseET<LimitCfgArray>
  7. {
  8. /// <summary>
  9. /// 根据已购次数和本次购买次数计算所需货币id和货币数量
  10. /// </summary>
  11. /// <param name="chapterId">限购id</param>
  12. /// <param name="hadBuyTimes">已购买次数</param>
  13. /// <param name="buyTimesThis">请求的购买次数</param>
  14. /// <param name="moneyId">out 消耗的货币id</param>
  15. /// <param name="moneyNum">out 消耗的货币数量</param>
  16. public void GetMoneyIdAndNum(int chapterId, int hadBuyTimes, int buyTimesThis, out int moneyId,
  17. out int moneyNum)
  18. {
  19. var limitCfg = CommonDataManager.Tables.TblLimitCfg.GetOrDefault(chapterId);
  20. moneyId = limitCfg.MoneyId;
  21. moneyNum = 0;
  22. //每个次数单独计算消耗个数
  23. for (var theBuyTimes = hadBuyTimes + 1; theBuyTimes <= hadBuyTimes + buyTimesThis; theBuyTimes++)
  24. {
  25. //每次从最高位检测
  26. moneyNum += GetMoneyNum(limitCfg, theBuyTimes);
  27. }
  28. }
  29. //根据第几次购买获取消耗货币个数
  30. public int GetMoneyNum(LimitCfg limitCfg, int theBuyTimes)
  31. {
  32. //每次从最高位检测
  33. for (var i = limitCfg.MoneyBuyTimes.Count - 1; i >= 0; i--)
  34. {
  35. if (theBuyTimes >= limitCfg.MoneyBuyTimes[i])
  36. {
  37. return limitCfg.MoneyNum[i];
  38. }
  39. }
  40. return 0;
  41. }
  42. }
  43. }