RoleLimitDataManager.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System.Collections.Generic;
  2. using ET;
  3. namespace GFGGame
  4. {
  5. public class RoleLimitDataManager
  6. {
  7. private static Dictionary<int, RoleLimitData> _roleLimitDatas = new Dictionary<int, RoleLimitData>();
  8. public static void InitServerData(List<UnitLimitInfoProto> unitLimitInfoProtos)
  9. {
  10. _roleLimitDatas.Clear();
  11. foreach (var proto in unitLimitInfoProtos)
  12. {
  13. var data = new RoleLimitData();
  14. data.FromMessage(proto);
  15. _roleLimitDatas.Add(proto.LimitId, data);
  16. }
  17. }
  18. public static void UpdateLimitData(UnitLimitInfoProto proto)
  19. {
  20. _roleLimitDatas.TryGetValue(proto.LimitId, out var data);
  21. if(data == null)
  22. {
  23. data = new RoleLimitData();
  24. _roleLimitDatas.Add(proto.LimitId, data);
  25. }
  26. data.FromMessage(proto);
  27. EventAgent.DispatchEvent(ConstMessage.NOTICE_LIMIT_CHANGED, proto.LimitId);
  28. }
  29. public static RoleLimitData GetLimitData(int limitId)
  30. {
  31. _roleLimitDatas.TryGetValue(limitId, out var data);
  32. return data;
  33. }
  34. public static bool CheckPlayTimesEnough(int limitId, int times)
  35. {
  36. var data = GetLimitData(limitId);
  37. if(data == null)
  38. {
  39. return true;
  40. }
  41. return data.TotalPlayMax >= data.PlayTimes + times;
  42. }
  43. }
  44. }