12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System;
- using System.Diagnostics;
- using System.Reflection;
- namespace GFGGame
- {
- public class ItemData
- {
- public int id;
- public int num;
- public bool isOnceBonus;
- public int[] AddScoresArr;
- public int[] AddPercentArr;
- delegate object MemberGetDelegate(ItemCfg p);
- public void Reset()
- {
- id = 0;
- num = 0;
- isOnceBonus = false;
- AddScoresArr = null;
- AddPercentArr = null;
- }
- public int MainScore
- {
- get
- {
- var cfg = ItemCfgArray.Instance.GetCfg(id);
- return GetScore(cfg.mainScore);
- }
- }
- public int GetScore(int scoreType)
- {
- var cfg = ItemCfgArray.Instance.GetCfg(id);
- Type type = typeof(ItemCfg);
- PropertyInfo property = type.GetProperty("score" + scoreType);
- MemberGetDelegate memberGet = (MemberGetDelegate)System.Delegate.CreateDelegate(typeof(MemberGetDelegate), property.GetGetMethod());
- Stopwatch stopwatch = Stopwatch.StartNew();
- var scoreBase = (int)memberGet(cfg);
- int index = scoreType - 1;
- var scoreadd = AddScoresArr.Length == 0 ? 0 : AddScoresArr[index];
- var percentAdd = AddPercentArr.Length == 0 ? 0 : AddPercentArr[index];
- return CalculateUtil.GetItemScore(scoreBase, percentAdd, scoreadd);
- }
- }
- }
|