예제 #1
0
 internal void _doOpenUrlWith(string component, core core, bool open_in_new_tab = false, Action <LoaderResult> callback = null)
 {
     core.callComponent(component, this, (ResultModel _r) =>
     {
         LoaderResult r = (LoaderResult)_r;
         if (callback != null)
         {
             callback(r);
         }
         if (r.success)
         {
             core.openUrl(r.url, open_in_new_tab);
         }
     }
                        );
 }
예제 #2
0
        /// <summary>
        /// Will check the current status of a session.
        /// </summary>
        /// <param name="callback"></param>
        public void checkSession(Action <SessionResult> callback = null)
        {
            SessionResult sr = new SessionResult();

            sr.session = session;

            Action <ResultModel> resultHandler = (ResultModel r) =>
            {
                sr = (SessionResult)r;

                if (!r.success)
                {
                    if (sr.error == null)
                    {
                        sr.error = new error {
                            message = "Could not connect to Newgrounds.io server"
                        }
                    }
                    ;
                    if (sr.session == null)
                    {
                        sr.session = new session();
                    }
                }
                session = sr.session;

                if (callback != null)
                {
                    callback(sr);
                }
            };

            bool cooled = false;

            /* this makes sure we aren't spamming the newgrounds.io server (wich would get us blocked) */
            if (first_check || stopwatch.ElapsedMilliseconds > 3000)
            {
                stopwatch.Reset();
                stopwatch.Start();
                cooled      = true;
                first_check = false;
            }

            /* if we have an active session and our stopwatch has cooled down, reload the session from the server */
            if (cooled && sr.getStatus() != SessionResult.SESSION_EXPIRED)
            {
                if (ngioPluginLoaded() && newgroundsioUserCancelledPrompt())
                {
                    SessionResult csr = new SessionResult();
                    csr.setIsLocal(true);
                    session ns = new session();
                    ns.expired  = true;
                    ns.id       = session.id;
                    csr.session = ns;

                    csr.success       = false;
                    csr.error.message = "User cancelled login";
                    if (callback != null)
                    {
                        callback(csr);
                    }
                    session = new session();
                }
                else
                {
                    _core.callComponent(
                        "App.checkSession",
                        null,
                        resultHandler
                        );
                }
            }
            /* otherwise, just use the currently loaded session */
            else
            {
                if (callback != null)
                {
                    callback(sr);
                }
            }
        }