You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

104 lines
3.0 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using SUISS.Storage;
  6. using UnityEngine;
  7. namespace SUISSEngine
  8. {
  9. public static class EdwinServerEventHandler
  10. {
  11. private static EdwinServerEventHandler.StorableStringList adjust_tokens_seen
  12. {
  13. get
  14. {
  15. if (!EdwinServerEventHandler._storage.ContainsKey("adjust_key"))
  16. {
  17. EdwinServerEventHandler._storage["adjust_key"] = new EdwinServerEventHandler.StorableStringList();
  18. }
  19. return (EdwinServerEventHandler.StorableStringList)EdwinServerEventHandler._storage["adjust_key"];
  20. }
  21. set
  22. {
  23. EdwinServerEventHandler._storage["adjust_key"] = value;
  24. }
  25. }
  26. //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
  27. public static event Action<List<string>, string> RecievedEventTokens;
  28. private static void OnRecievedEventTokens(List<string> nonRegisteredTokens, string registeredToken)
  29. {
  30. Action<List<string>, string> recievedEventTokens = EdwinServerEventHandler.RecievedEventTokens;
  31. if (recievedEventTokens != null)
  32. {
  33. recievedEventTokens(nonRegisteredTokens, registeredToken);
  34. }
  35. }
  36. //[DebuggerBrowsable(DebuggerBrowsableState.Never)]
  37. public static event Action<string> RecievedNewNonRegisteredEventToken;
  38. private static void OnRecievedNewNonRegisteredEventToken(string arg)
  39. {
  40. Action<string> recievedNewNonRegisteredEventToken = EdwinServerEventHandler.RecievedNewNonRegisteredEventToken;
  41. if (recievedNewNonRegisteredEventToken != null)
  42. {
  43. recievedNewNonRegisteredEventToken(arg);
  44. }
  45. }
  46. public static void HandleAdjust(string adjustTokens, string registeredEvent)
  47. {
  48. string[] array = adjustTokens.Split(new char[]
  49. {
  50. ','
  51. });
  52. EdwinServerEventHandler.OnRecievedEventTokens((from tok in array
  53. where !tok.Equals(registeredEvent)
  54. select tok).ToList<string>(), registeredEvent);
  55. foreach (string text in array)
  56. {
  57. if (text == string.Empty)
  58. {
  59. UnityEngine.Debug.LogWarning("Edwin server sent empty adjust_tokens");
  60. }
  61. else if (!EdwinServerEventHandler.adjust_tokens_seen.Contains(text))
  62. {
  63. EdwinServerEventHandler.adjust_tokens_seen.Add(text);
  64. if (registeredEvent == null)
  65. {
  66. UnityEngine.Debug.LogError("Edwin server did not send a value for key 'adjust_registered_token'. Big problem; report to TMC immediately");
  67. if (EdwinServerEventHandler.adjust_tokens_seen.Count <= 1)
  68. {
  69. goto IL_D0;
  70. }
  71. }
  72. if (!text.Equals(registeredEvent))
  73. {
  74. EdwinServerEventHandler.OnRecievedNewNonRegisteredEventToken(text);
  75. }
  76. }
  77. IL_D0:;
  78. }
  79. }
  80. private static Dictionary<string, object> _storage
  81. {
  82. get
  83. {
  84. return Storage.Get(StorageLifecycle.Player).GetDictionary("edwinserverEventStorage");
  85. }
  86. }
  87. private const string ClassStorageKey = "edwinserverEventStorage";
  88. private const string adjustKey = "adjust_key";
  89. public class StorableStringList : StorableList<string>
  90. {
  91. }
  92. }
  93. }