using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using SUISS.Storage; using UnityEngine; namespace SUISSEngine { public static class EdwinServerEventHandler { private static EdwinServerEventHandler.StorableStringList adjust_tokens_seen { get { if (!EdwinServerEventHandler._storage.ContainsKey("adjust_key")) { EdwinServerEventHandler._storage["adjust_key"] = new EdwinServerEventHandler.StorableStringList(); } return (EdwinServerEventHandler.StorableStringList)EdwinServerEventHandler._storage["adjust_key"]; } set { EdwinServerEventHandler._storage["adjust_key"] = value; } } //[DebuggerBrowsable(DebuggerBrowsableState.Never)] public static event Action, string> RecievedEventTokens; private static void OnRecievedEventTokens(List nonRegisteredTokens, string registeredToken) { Action, string> recievedEventTokens = EdwinServerEventHandler.RecievedEventTokens; if (recievedEventTokens != null) { recievedEventTokens(nonRegisteredTokens, registeredToken); } } //[DebuggerBrowsable(DebuggerBrowsableState.Never)] public static event Action RecievedNewNonRegisteredEventToken; private static void OnRecievedNewNonRegisteredEventToken(string arg) { Action recievedNewNonRegisteredEventToken = EdwinServerEventHandler.RecievedNewNonRegisteredEventToken; if (recievedNewNonRegisteredEventToken != null) { recievedNewNonRegisteredEventToken(arg); } } public static void HandleAdjust(string adjustTokens, string registeredEvent) { string[] array = adjustTokens.Split(new char[] { ',' }); EdwinServerEventHandler.OnRecievedEventTokens((from tok in array where !tok.Equals(registeredEvent) select tok).ToList(), registeredEvent); foreach (string text in array) { if (text == string.Empty) { UnityEngine.Debug.LogWarning("Edwin server sent empty adjust_tokens"); } else if (!EdwinServerEventHandler.adjust_tokens_seen.Contains(text)) { EdwinServerEventHandler.adjust_tokens_seen.Add(text); if (registeredEvent == null) { UnityEngine.Debug.LogError("Edwin server did not send a value for key 'adjust_registered_token'. Big problem; report to TMC immediately"); if (EdwinServerEventHandler.adjust_tokens_seen.Count <= 1) { goto IL_D0; } } if (!text.Equals(registeredEvent)) { EdwinServerEventHandler.OnRecievedNewNonRegisteredEventToken(text); } } IL_D0:; } } private static Dictionary _storage { get { return Storage.Get(StorageLifecycle.Player).GetDictionary("edwinserverEventStorage"); } } private const string ClassStorageKey = "edwinserverEventStorage"; private const string adjustKey = "adjust_key"; public class StorableStringList : StorableList { } } }