using System; using Sfs2X; using Sfs2X.Core; using Sfs2X.Entities; public enum RequestStatus { Failed, Succeed, Pending, } public class GardenSmartFox { #region Variable public User User; public SmartFox SmartFox; public BaseLoggor Loggor; public BaseConnector Connector; public SFSExtensionManager ExtensionManager; public PlazaRoomManager PlazaRoomManager; #endregion public GardenSmartFox(BaseLoggor baseLoggor, BaseConnector baseConnector) { SmartFox = new SmartFox(); Loggor = baseLoggor.Init(this); Connector = baseConnector.Init(this); ExtensionManager = new SFSExtensionManager(this); PlazaRoomManager = new PlazaRoomManager(this); } public void ExecuteAfterCheckConection(Action execute, Action onConnectResult = null, Action onLoginResult = null) { if (!SmartFox.IsConnected) { Reset(); Connector.Connect(); if (onConnectResult != null) { new CounterAction ( (succeed, baseEvent) => { onConnectResult.Invoke(succeed, baseEvent); } ).Bind(ref Connector.onConnectResult); } if (onLoginResult != null) { new CounterAction ( (succeed, baseEvent) => { onLoginResult.Invoke(succeed, baseEvent); } ).Bind(ref Loggor.onLoginResult); } new CounterAction ( baseEven => { execute.Invoke(); } ).Bind(ref Loggor.onLogin); } else { execute.Invoke(); } } public void Reset() { SmartFox = new SmartFox(); Loggor.Init(this); Connector.Init(this); ExtensionManager = new SFSExtensionManager(this); PlazaRoomManager = new PlazaRoomManager(this); } }