Beispiel #1
0
        /// <summary>
        /// Update the UI state when new state data is received from the server.
        /// </summary>
        /// <param name="state">State data sent by the server.</param>
        public void UpdateState(BoundUserInterfaceState state)
        {
            var castState = (ReagentDispenserBoundUserInterfaceState)state;

            Title = castState.DispenserName;
            UpdateContainerInfo(castState);

            // Disable all buttons if not powered
            if (Contents.Children != null)
            {
                ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower);
                EjectButton.Disabled = false;
            }

            // Disable the Clear & Eject button if no beaker
            if (!castState.HasBeaker)
            {
                ClearButton.Disabled = true;
                EjectButton.Disabled = true;
            }

            switch (castState.SelectedDispenseAmount.Int())
            {
            case 1:
                DispenseButton1.Pressed = true;
                break;

            case 5:
                DispenseButton5.Pressed = true;
                break;

            case 10:
                DispenseButton10.Pressed = true;
                break;

            case 15:
                DispenseButton15.Pressed = true;
                break;

            case 20:
                DispenseButton20.Pressed = true;
                break;

            case 25:
                DispenseButton25.Pressed = true;
                break;

            case 30:
                DispenseButton30.Pressed = true;
                break;

            case 50:
                DispenseButton50.Pressed = true;
                break;

            case 100:
                DispenseButton100.Pressed = true;
                break;
            }
        }
Beispiel #2
0
        public static async Task <DialogButton> ShowDialog(SmartSpriteBatch spriteBatch, string title, string body, List <DialogButton> buttons)
        {
            TaskCompletionSource <DialogButton> completionSource = new TaskCompletionSource <DialogButton>();
            XuiDialog    dialog = new XuiDialog();
            DialogScreen screen = new DialogScreen
            {
                Buttons = new List <StaticButtonAsset>()
            };

            float margin = 0.005f;

            List <StaticButtonAsset> buttonStack = ButtonHelpers.CreateButtonHorizontalStack(new FloatRectangle(0.15f, 0.75f - margin - margin, 0.75f, 0.1f),
                                                                                             0.1f, margin,
                                                                                             buttons.Select(t => new ButtonBasics(t.Text, (args) =>
            {
                dialog.HandleClick(t, completionSource, screen);
            })).ToList());

            screen.Buttons.AddRange(buttonStack);
            screen.Title = title;
            screen.Body  = body;
            await screen.Initialise();

            Solids.Instance.ScreenManager.Add(screen);
            Solids.Instance.ScreenManager.BringToFront(screen);

            return(await completionSource.Task);
        }
Beispiel #3
0
        public static async Task <int> ShowDialog(SmartSpriteBatch spriteBatch, string title, string body,
                                                  List <string> buttons)
        {
            TaskCompletionSource <int> completionSource = new TaskCompletionSource <int>();
            XuiDialog    dialog = new XuiDialog();
            DialogScreen screen = new DialogScreen
            {
                Buttons = new List <StaticButtonAsset>()
            };

            List <StaticButtonAsset> buttonStack = ButtonHelpers.CreateButtonHorizontalStack(new Vector2(0.2f, 0.65f), 0.3f,
                                                                                             0.1f, 0.025f,
                                                                                             buttons.Select(t => new ButtonBasics(t, (args) =>
            {
                dialog.HandleClick(t, buttons.IndexOf(t), completionSource, screen);
            })).ToList());

            screen.Buttons.AddRange(buttonStack);
            screen.Title = title;
            screen.Body  = body;
            await screen.Initialise();

            Solids.Instance.ScreenManager.Add(screen);

            return(await completionSource.Task);
        }
        /// <summary>
        /// Update the UI state when new state data is received from the server.
        /// </summary>
        /// <param name="state">State data sent by the server.</param>
        public void UpdateState(BoundUserInterfaceState state)
        {
            var castState = (ChemMasterBoundUserInterfaceState)state;

            Title = castState.DispenserName;
            UpdatePanelInfo(castState);
            if (Contents.Children != null)
            {
                ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower);
                EjectButton.Disabled = !castState.HasBeaker;
            }
        }
Beispiel #5
0
        /// <summary>
        /// Update the UI state when new state data is received from the server.
        /// </summary>
        /// <param name="state">State data sent by the server.</param>
        public void UpdateState(BoundUserInterfaceState state)
        {
            var castState = (AMEControllerBoundUserInterfaceState)state;

            // Disable all buttons if not powered
            if (Contents.Children != null)
            {
                ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower);
                EjectButton.Disabled = false;
            }

            if (!castState.HasFuelJar)
            {
                EjectButton.Disabled     = true;
                ToggleInjection.Disabled = true;
                FuelAmount.Text          = Loc.GetString("ame-window-fuel-not-inserted-text");
            }
            else
            {
                EjectButton.Disabled     = false;
                ToggleInjection.Disabled = false;
                FuelAmount.Text          = $"{castState.FuelAmount}";
            }

            if (!castState.IsMaster)
            {
                ToggleInjection.Disabled = true;
            }

            if (!castState.Injecting)
            {
                InjectionStatus.Text = Loc.GetString("ame-window-engine-injection-status-not-injecting-label") + " ";
            }
            else
            {
                InjectionStatus.Text = Loc.GetString("ame-window-engine-injection-status-injecting-label") + " ";
            }

            CoreCount.Text       = $"{castState.CoreCount}";
            InjectionAmount.Text = $"{castState.InjectionAmount}";
        }
Beispiel #6
0
        /// <summary>
        /// Runs every time interval if emulation is running
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Tick(object sender, EventArgs e)
        {
            for (var i = 0; i < _deviceDTOs.Length; i++)
            {
                _deviceManager.UpdateUIDevice(ref _deviceDTOs[i], timerTaskInterval * 1000 / oneMinuteEmulationInterval);

                if (_deviceDTOs[i].Status.Equals(Status.Disabled.ToString()))
                {
                    _emulationTimer.Stop();
                    emulationSwitch.Text        = Resources.StartEmulation;
                    emulationSwitch.BackColor   = Color.DarkGreen;
                    increaseSpeedButton.Enabled = true;
                    decreaseSpeedButton.Enabled = true;

                    for (var j = 0; j < _deviceDTOs.Length; j++)
                    {
                        _deviceDTOs[j].Status         = Status.Disabled.ToString();
                        _deviceDTOs[j].ForeColorOfBar = Color.Gray;
                        _deviceDTOs[j].BackColorOfBar = Color.Gray;
                        ButtonHelpers.Disable((Button)Controls.Find(_deviceDTOs[j].Name, true).Single());
                    }
                }
            }
        }