syncplayerlist.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. class SyncPlayerList
  2. {
  3. ref array<ref SyncPlayer> m_PlayerList;
  4. void CreatePlayerList()
  5. {
  6. if (GetGame().IsServer())
  7. {
  8. m_PlayerList = new array<ref SyncPlayer>();
  9. array<PlayerIdentity> identities = new array<PlayerIdentity>();
  10. GetGame().GetPlayerIndentities(identities);
  11. foreach (auto identity : identities)
  12. {
  13. SyncPlayer sync_player = new SyncPlayer;
  14. sync_player.m_Identity = identity;
  15. sync_player.m_UID = identity.GetPlainId();
  16. sync_player.m_PlayerName = identity.GetPlainName();
  17. m_PlayerList.Insert(sync_player);
  18. }
  19. }
  20. }
  21. static SyncPlayerList Compare(SyncPlayerList a, SyncPlayerList b)
  22. {
  23. SyncPlayerList new_list = new SyncPlayerList;
  24. new_list.m_PlayerList = new array<ref SyncPlayer>;
  25. if (!a && b && b.m_PlayerList)
  26. {
  27. foreach (SyncPlayer player3 : b.m_PlayerList)
  28. {
  29. new_list.m_PlayerList.Insert(player3);
  30. }
  31. }
  32. else if (a && a.m_PlayerList && !b)
  33. {
  34. foreach (SyncPlayer player4 : a.m_PlayerList)
  35. {
  36. new_list.m_PlayerList.Insert(player4);
  37. }
  38. }
  39. else if (a && a.m_PlayerList && b && b.m_PlayerList)
  40. {
  41. array<ref SyncPlayer> array_a = a.m_PlayerList;
  42. array<ref SyncPlayer> array_b = b.m_PlayerList;
  43. foreach (SyncPlayer player : array_b)
  44. {
  45. bool found = false;
  46. foreach (SyncPlayer player2 : array_a)
  47. {
  48. if (player.m_UID == player2.m_UID)
  49. {
  50. found = true;
  51. break;
  52. }
  53. }
  54. if (!found)
  55. {
  56. new_list.m_PlayerList.Insert(player);
  57. }
  58. }
  59. }
  60. return new_list;
  61. }
  62. }