public void SaveSceneToFolder(ProjectItem folder, string name, Action <Error> callback)
        {
            if (BeforeSceneSave != null)
            {
                CancelArgs args = new CancelArgs();
                BeforeSceneSave(args);
                if (args.Cancel)
                {
                    if (callback != null)
                    {
                        callback(new Error(Error.OK));
                    }
                    return;
                }
            }

            Undo.Purge();
            IsBusy = true;
            m_project.Save(new[] { folder }, new[] { new byte[0] }, new[] { (object)SceneManager.GetActiveScene() }, new[] { name }, (error, assetItem) =>
            {
                IsBusy = false;
                if (!error.HasError)
                {
                    if (assetItem.Length > 0)
                    {
                        m_project.LoadedScene = assetItem[0];
                    }
                }
                if (callback != null)
                {
                    callback(error);
                }
            });
        }
        private void OnBeforeSceneSave(CancelArgs args)
        {
            IWindowManager wm = IOC.Resolve <IWindowManager>();

            args.Cancel = true;
            wm.MessageBox("Unable to save scene", "Unable to save scene");
        }
        public void OverwriteScene(AssetItem scene, Action <Error> callback)
        {
            if (BeforeSceneSave != null)
            {
                CancelArgs args = new CancelArgs();
                BeforeSceneSave(args);
                if (args.Cancel)
                {
                    if (callback != null)
                    {
                        callback(new Error(Error.OK));
                    }
                    return;
                }
            }

            Undo.Purge();
            IsBusy = true;
            m_project.Save(new[] { scene }, new[] { (object)SceneManager.GetActiveScene() }, (error, assetItem) =>
            {
                if (!error.HasError)
                {
                    m_project.LoadedScene = assetItem[0];
                }
                IsBusy = false;
                if (callback != null)
                {
                    callback(error);
                }
            });
        }
Example #4
0
 private void manager_callback(IManagerPage page, CancelArgs e)
 {
     if (page is ILogoutSucceededPage)
     {
         Console.Clear();
         e.Cancel = !ConsoleBinaryQuestion($"是否重新登录 {this.userName} ?");
     }
 }
        /// <summary>
        /// Kick the client if the server reached the maximum allowed number of clients.
        /// </summary>
        /// <param name="server">Server raising the event.</param>
        /// <param name="client">Client connecting to the server.</param>
        /// <param name="args">Specify if the client should be accepted into the server.</param>
        void BaseMessageServer_OnClientBeforeConnect(Server server, ClientS client, CancelArgs args)
        {
            if ((Clients.Count >= UserLimit) && (UserLimit != 0))
            {
                TCPMessage msg = new TCPMessage();
                msg.MessageType = MessageType.MaxUsers;
                ((BaseMessageClientS)client).Send(msg);

                args.Cancel = true;
            }
        }
Example #6
0
        private void OnRegionBeforeBeginDrag(Region region, CancelArgs args)
        {
            if (region.Root != this)
            {
                return;
            }

            if (RegionBeforeBeginDrag != null)
            {
                RegionBeforeBeginDrag(region, args);
            }
        }
Example #7
0
        private void OnRegionBeforeDepthChanged(Region region, CancelArgs arg)
        {
            if (region.Root != this)
            {
                return;
            }

            if (RegionBeforeDepthChanged != null)
            {
                RegionBeforeDepthChanged(region, arg);
            }
        }
Example #8
0
        private void CancelIfRegionIsNotActive(Region region, CancelArgs arg)
        {
            if (m_editor.ActiveWindow == null)
            {
                return;
            }

            Region activeRegion = m_editor.ActiveWindow.GetComponentInParent <Region>();

            if (activeRegion == null)
            {
                return;
            }

            if (activeRegion.GetDragRegion() != region.GetDragRegion())
            {
                arg.Cancel = true;
            }
        }
        /// <summary>
        /// 使管理器切换到下一页。
        /// </summary>
        /// <param name="changePage">页面切换的方法。</param>
        /// <param name="callback">页面切换成功的回调方法。</param>
        /// <returns>一个值,指示操作是否成功。</returns>
        public virtual bool NextPage(ChangePageHandler changePage, CallbackHandler callback = null)
        {
            if (changePage == null)
            {
                throw new ArgumentNullException(nameof(changePage));
            }

            CancelArgs e = new CancelArgs();

            this.page = changePage(this.page, e);
            if (!e.Cancel)
            {
                this.page.Initialize();
                callback?.Invoke(this.page, e);

                return(!e.Cancel);
            }
            else
            {
                return(false);
            }
        }
 private void manager_Callback(IManagerPage page, CancelArgs _e)
 {
     if (page is ILogoutSucceededPage)
     {
         this.Switch(ManagerPageType.LogoutSucceeded);
     }
     else if (page is ILoginInfoPage)
     {
         this.Switch(ManagerPageType.LoginInfo);
     }
     else if (page is ILoginSucceededPage)
     {
         this.Switch(ManagerPageType.LoginSucceeded);
     }
     else if (page is ILogoutInfoPage)
     {
         this.Switch(ManagerPageType.LogoutInfo);
     }
     else
     {
         _e.Cancel = true;
     }
 }
Example #11
0
 private void OnRegionBeforeDepthChanged(Region region, CancelArgs arg)
 {
     CancelIfRegionIsNotActive(region, arg);
 }
Example #12
0
 private void OnRegionBeforeBeginDrag(Region region, CancelArgs arg)
 {
     CancelIfRegionIsNotActive(region, arg);
 }
Example #13
0
        private IManagerPage manager_ChangePage(IManagerPage page, CancelArgs e)
        {
            if (page is ILoginInfoPage)
            {
                return(((ILoginInfoPage)page).Login(this.userName, this.userPwd, this.isAutoLogin));
            }
            else if (page is ILoginForcedPage)
            {
                if (ConsoleBinaryQuestion("您好,您当前登录的用户已在线,是否继续操作?"))
                {
                    return(((ILoginForcedPage)page).ForceLogin());
                }
                else
                {
                    return(((ILoginForcedPage)page).Cancel());
                }
            }
            else if (page is ILoginingPage)
            {
                Console.WriteLine("登录成功!");
                return(((ILoginingPage)page).Success());
            }
            else if (page is ILoginFailedPage)
            {
                ConsoleForeColoredWriteLine(ConsoleColor.Red, $"登录认证失败,用户( {userName} )当前处于非正常状态!");
                return(((ILoginFailedPage)page).Ignore());
            }
            else if (page is ILoginSucceededPage)
            {
                using (var timer = new System.Timers.Timer()
                {
                    Enabled = false, Interval = 1000
                })
                {
                    string maskedUserName = this.MaskedUserName;
                    timer.Elapsed += (sender, _e) =>
                    {
                        Console.Clear();
                        ConsoleForeColoredWrite(ConsoleColor.White, "尊敬的用户:");
                        ConsoleForeColoredWrite(ConsoleColor.Blue, maskedUserName);
                        ConsoleForeColoredWriteLine(ConsoleColor.White, ",您已登录成功");
                        Console.WriteLine();
                        ConsoleForeColoredWriteLine(ConsoleColor.Gray, "上网过程中不要关闭该窗口。如需下线,请按 Esc 键。");
                        Console.WriteLine();
                        ConsoleForeColoredWrite(ConsoleColor.White, "本次登录时长:\t");
                        TimeSpan timeSpan = DateTime.Now - ((ILoginSucceededPage)page).SucceededTime;
                        ConsoleForeColoredWriteLine(ConsoleColor.Yellow, "{0:D2} : {1:D2} : {2:D2}",
                                                    (int)Math.Floor(timeSpan.TotalHours),
                                                    timeSpan.Minutes,
                                                    timeSpan.Seconds
                                                    );

                        foreach (var pair in ((ILoginSucceededPage)page).WlanInfos)
                        {
                            ConsoleForeColoredWrite(ConsoleColor.White, "{0}:\t", pair.Key);
                            ConsoleForeColoredWriteLine(ConsoleColor.Yellow, "{0}", pair.Value);
                        }

                        Console.WriteLine();
                        ConsoleForeColoredWrite(ConsoleColor.White, "按 Esc 键下线……");
                        ;
                    };
                    timer.Start();

                    while (true)
                    {
                        if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                        {
                            timer.Stop();

                            Thread.Sleep(1000); // 等待计时器停止。

                            Console.WriteLine();
                            if (ConsoleBinaryQuestion("请确认下线!"))
                            {
                                return(((ILoginSucceededPage)page).Logout(this.userName, this.cancelAutoLogin));
                            }
                            else
                            {
                                timer.Start();
                            }
                        }
                    }
                }
            }
            else if (page is ILogoutingPage)
            {
                return(((ILogoutingPage)page).Success());
            }
            else if (page is ILogoutSucceededPage)
            {
                if (ConsoleBinaryQuestion("下线成功!是否关闭窗口?"))
                {
                    e.Cancel = true;
                    ((ILogoutSucceededPage)page).Exit();
                    return(null);
                }
                else
                {
                    return(((ILogoutSucceededPage)page).Login(this.userName, this.userPwd, this.isAutoLogin));
                }
            }
            else
            {
                IManagerPage mp = page;
                ;
                e.Cancel = true;
                return(null);
            }
        }