catchyieldbank.c 970 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. typedef map<int,ref YieldItemBase> YieldsMap; //<<typename hash, yield data>> //TODO: why hash? Evaluate
  2. class CatchYieldBank
  3. {
  4. protected ref YieldsMap m_AllYieldsMap;
  5. private ref array<int> m_OrderedHashes; //for sync purposes
  6. void CatchYieldBank()
  7. {
  8. Init();
  9. }
  10. protected void Init()
  11. {
  12. m_AllYieldsMap = new YieldsMap();
  13. m_OrderedHashes = new array<int>;
  14. }
  15. YieldsMap GetYieldsMap()
  16. {
  17. return m_AllYieldsMap;
  18. }
  19. void RegisterYieldItem(YieldItemBase data)
  20. {
  21. data.SetRegistrationIdx(m_OrderedHashes.Insert(data.GetType().Hash()));
  22. m_AllYieldsMap.Set(data.GetType().Hash(),data);
  23. }
  24. void UnregisterYieldItem(string yieldType)
  25. {
  26. int hashedName = yieldType.Hash();
  27. if (m_AllYieldsMap.Contains(hashedName))
  28. m_AllYieldsMap.Remove(hashedName);
  29. }
  30. //! nucular option
  31. void ClearAllRegisteredItems()
  32. {
  33. m_AllYieldsMap.Clear();
  34. }
  35. YieldItemBase GetYieldItemByIdx(int idx)
  36. {
  37. return m_AllYieldsMap.Get(m_OrderedHashes[idx]);
  38. }
  39. }