ItemData.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Diagnostics;
  3. using System.Reflection;
  4. namespace GFGGame
  5. {
  6. public class ItemData
  7. {
  8. public int id;
  9. public int num;
  10. public bool isOnceBonus;
  11. public int[] AddScoresArr;
  12. public int[] AddPercentArr;
  13. delegate object MemberGetDelegate(ItemCfg p);
  14. public void Reset()
  15. {
  16. id = 0;
  17. num = 0;
  18. isOnceBonus = false;
  19. AddScoresArr = null;
  20. AddPercentArr = null;
  21. }
  22. public int MainScore
  23. {
  24. get
  25. {
  26. var cfg = ItemCfgArray.Instance.GetCfg(id);
  27. return GetScore(cfg.mainScore);
  28. }
  29. }
  30. public int GetScore(int scoreType)
  31. {
  32. var cfg = ItemCfgArray.Instance.GetCfg(id);
  33. Type type = typeof(ItemCfg);
  34. PropertyInfo property = type.GetProperty("score" + scoreType);
  35. MemberGetDelegate memberGet = (MemberGetDelegate)System.Delegate.CreateDelegate(typeof(MemberGetDelegate), property.GetGetMethod());
  36. Stopwatch stopwatch = Stopwatch.StartNew();
  37. var scoreBase = (int)memberGet(cfg);
  38. int index = scoreType - 1;
  39. var scoreadd = AddScoresArr.Length == 0 ? 0 : AddScoresArr[index];
  40. var percentAdd = AddPercentArr.Length == 0 ? 0 : AddPercentArr[index];
  41. return CalculateUtil.GetItemScore(scoreBase, percentAdd, scoreadd);
  42. }
  43. }
  44. }