RoleLimitDataManager.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. EventAgent.DispatchEvent(ConstMessage.NOTICE_LIMIT_CHANGED, proto.LimitId);
  17. }
  18. }
  19. public static void UpdateLimitData(UnitLimitInfoProto proto)
  20. {
  21. _roleLimitDatas.TryGetValue(proto.LimitId, out var data);
  22. if(data == null)
  23. {
  24. data = new RoleLimitData();
  25. _roleLimitDatas.Add(proto.LimitId, data);
  26. }
  27. data.FromMessage(proto);
  28. EventAgent.DispatchEvent(ConstMessage.NOTICE_LIMIT_CHANGED, proto.LimitId);
  29. }
  30. public static RoleLimitData GetLimitData(int limitId)
  31. {
  32. _roleLimitDatas.TryGetValue(limitId, out var data);
  33. return data;
  34. }
  35. public static bool CheckPlayTimesEnough(int limitId, int times)
  36. {
  37. var data = GetLimitData(limitId);
  38. if(data == null)
  39. {
  40. return true;
  41. }
  42. return data.TotalPlayMax >= data.PlayTimes + times;
  43. }
  44. }
  45. }