Exemplo n.º 1
0
        public BuildIpAddressStatus(UIComponent componnent)
        {
            _ReleaseHelper = new ReleaseHelper();

            _Root         = componnent.Page.RootElement;
            _Connection   = componnent.Page.RootElement.FindName("Connection") as global::Stride.UI.Controls.Button;
            _Address      = componnent.Page.RootElement.FindName("Address") as global::Stride.UI.Controls.EditText;
            _Port         = componnent.Page.RootElement.FindName("Port") as global::Stride.UI.Controls.EditText;
            _Address.Text = "114.34.92.204";
            _Port.Text    = "53772";
        }
Exemplo n.º 2
0
        public MessageStatus(UIComponent component, string message)
        {
            component.Page.RootElement.Visibility = global::Stride.UI.Visibility.Visible;
            var text = component.Page.RootElement.FindName("Text") as global::Stride.UI.Controls.TextBlock;

            text.Text = message;

            var submit = component.Page.RootElement.FindName("Submit") as global::Stride.UI.Controls.Button;

            submit.TouchUp += _Submit;

            _ReleaseHelper = new ReleaseHelper();
            _ReleaseHelper.Actions.Add(() => {
                component.Page.RootElement.Visibility = global::Stride.UI.Visibility.Hidden;
                submit.TouchUp -= _Submit;
            });
        }
        public ChatRoomLoginStatus(Remote.INotifierQueryable queryer, UIComponent component)
        {
            _ReleaseHelper = new ReleaseHelper();

            component.Page.RootElement.Visibility = Visibility.Visible;
            var name = component.Page.RootElement.FindName("Name") as global::Stride.UI.Controls.EditText;

            var enter = component.Page.RootElement.FindName("Enter") as global::Stride.UI.Controls.Button;

            var loginObs = from _ in System.Reactive.Linq.Observable.FromEventPattern <TouchEventArgs>((h) => enter.TouchUp += h, (h) => enter.TouchUp -= h).Take(1)
                           from login in queryer.QueryNotifier <Regulus.Samples.Chat1.Common.ILogin>().SupplyEvent()
                           from result in login.Login(name.Text).RemoteValue()
                           select result;

            var loginObsDispose = loginObs.Subscribe(_LoginResult);

            _ReleaseHelper.Actions.Add(() =>
            {
                component.Page.RootElement.Visibility = Visibility.Hidden;
                loginObsDispose.Dispose();
            });
        }
Exemplo n.º 4
0
        public ChatRoomPlayStatus(INotifierQueryable queryer, UIComponent room, UILibrary library)
        {
            _ReleaseHelper = new ReleaseHelper();
            room.Page.RootElement.Visibility = Visibility.Visible;

            _ReleaseHelper.Actions.Add(() => {
                room.Page.RootElement.Visibility = Visibility.Hidden;
            });


            var messageContol = room.Page.RootElement.FindName("Message") as global::Stride.UI.Controls.EditText;
            var targetContol  = room.Page.RootElement.FindName("Target") as global::Stride.UI.Controls.EditText;
            var sendControl   = room.Page.RootElement.FindName("Send") as global::Stride.UI.Controls.Button;
            var quitControl   = room.Page.RootElement.FindName("Quit") as global::Stride.UI.Controls.Button;
            var listPanel     = room.Page.RootElement.FindName("List") as global::Stride.UI.Panels.Grid;



            var sendObs = from handler in sendControl.TouchUpObs()
                          where messageContol.Text.Length > 0 && string.IsNullOrWhiteSpace(targetContol.Text)
                          from player in queryer.QueryNotifier <Regulus.Samples.Chat1.Common.IPlayer>().SupplyEvent()
                          from unit in new System.Action(() => player.Send(messageContol.Text)).ReturnVoid()
                          select unit;

            var sendObsDispose = sendObs.Subscribe(_ => messageContol.Text = "");

            _ReleaseHelper.Actions.Add(() => {
                sendObsDispose.Dispose();
            });

            var privateSendObs = from handler in sendControl.TouchUpObs()
                                 where messageContol.Text.Length > 0 && !string.IsNullOrWhiteSpace(targetContol.Text)
                                 from player in queryer.QueryNotifier <Regulus.Samples.Chat1.Common.IPlayer>().SupplyEvent()
                                 from target in player.Chatters.SupplyEvent()
                                 where target.Name.Value == targetContol.Text
                                 from unit in new System.Action(() => target.Whisper(messageContol.Text)).ReturnVoid()
                                 select unit;

            var privateSendObsDispose = privateSendObs.Subscribe(_ => messageContol.Text = "");

            _ReleaseHelper.Actions.Add(() => {
                privateSendObsDispose.Dispose();
            });


            var quitObs = from handler in quitControl.TouchUpObs().Take(1)
                          from player in queryer.QueryNotifier <Regulus.Samples.Chat1.Common.IPlayer>().SupplyEvent()
                          from unit in new System.Action(() => player.Quit()).ReturnVoid()
                          select unit;

            var quitObsDispose = quitObs.Subscribe(unit => DoneEvent());

            _ReleaseHelper.Actions.Add(() => {
                quitObsDispose.Dispose();
            });


            var publicMessageObs =
                from player in queryer.QueryNotifier <Regulus.Samples.Chat1.Common.IPlayer>().SupplyEvent()
                from message in Regulus.Remote.Reactive.Extensions.EventObservable <Common.Message>(h => player.PublicMessageEvent += h, h => player.PublicMessageEvent -= h)
                select message;

            var publicMessageObsDispose = publicMessageObs.Subscribe(msg => _ReceiveMessage(listPanel, $"{msg.Name}:{msg.Context}"));

            _ReleaseHelper.Actions.Add(() => {
                publicMessageObsDispose.Dispose();
            });

            var privateMessageObs =
                from player in queryer.QueryNotifier <Regulus.Samples.Chat1.Common.IPlayer>().SupplyEvent()
                from message in Regulus.Remote.Reactive.Extensions.EventObservable <Common.Message>(h => player.PrivateMessageEvent += h, h => player.PrivateMessageEvent -= h)
                select message;

            var privateMessageObsDispose = privateMessageObs.Subscribe(msg => _ReceiveMessage(listPanel, $"<private>{msg.Name}:{msg.Context}"));

            _ReleaseHelper.Actions.Add(() => {
                privateMessageObsDispose.Dispose();
            });
            this.library = library;
        }