public override bool Simulate() { bool flag = CalculateHighInputsCount() > 0; if (flag && m_isMessageAllowed && (!m_lastMessageTime.HasValue || base.SubsystemElectricity.SubsystemTime.GameTime - m_lastMessageTime.Value > 0.5)) { m_isMessageAllowed = false; m_lastMessageTime = base.SubsystemElectricity.SubsystemTime.GameTime; SignData signData = base.SubsystemElectricity.Project.FindSubsystem <SubsystemSignBlockBehavior>(throwOnError: true).GetSignData(new Point3(base.CellFaces[0].X, base.CellFaces[0].Y, base.CellFaces[0].Z)); if (signData != null) { string text = string.Join("\n", signData.Lines); text = text.Trim('\n'); text = text.Replace("\\\n", ""); Color color = (signData.Colors[0] == Color.Black) ? Color.White : signData.Colors[0]; color *= 255f / (float)MathUtils.Max(color.R, color.G, color.B); foreach (ComponentPlayer componentPlayer in base.SubsystemElectricity.Project.FindSubsystem <SubsystemPlayers>(throwOnError: true).ComponentPlayers) { componentPlayer.ComponentGui.DisplaySmallMessage(text, color, blinking: true, playNotificationSound: true); } } } if (!flag) { m_isMessageAllowed = true; } return(false); }
public EditSignDialog(SubsystemSignBlockBehavior subsystemSignBlockBehavior, Point3 signPoint) { XElement node = ContentManager.Get <XElement>("Dialogs/EditSignDialog"); LoadContents(this, node); m_linesPage = Children.Find <ContainerWidget>("EditSignDialog.LinesPage"); m_urlPage = Children.Find <ContainerWidget>("EditSignDialog.UrlPage"); m_textBox1 = Children.Find <TextBoxWidget>("EditSignDialog.TextBox1"); m_textBox2 = Children.Find <TextBoxWidget>("EditSignDialog.TextBox2"); m_textBox3 = Children.Find <TextBoxWidget>("EditSignDialog.TextBox3"); m_textBox4 = Children.Find <TextBoxWidget>("EditSignDialog.TextBox4"); m_colorButton1 = Children.Find <ButtonWidget>("EditSignDialog.ColorButton1"); m_colorButton2 = Children.Find <ButtonWidget>("EditSignDialog.ColorButton2"); m_colorButton3 = Children.Find <ButtonWidget>("EditSignDialog.ColorButton3"); m_colorButton4 = Children.Find <ButtonWidget>("EditSignDialog.ColorButton4"); m_urlTextBox = Children.Find <TextBoxWidget>("EditSignDialog.UrlTextBox"); m_urlTestButton = Children.Find <ButtonWidget>("EditSignDialog.UrlTestButton"); m_okButton = Children.Find <ButtonWidget>("EditSignDialog.OkButton"); m_cancelButton = Children.Find <ButtonWidget>("EditSignDialog.CancelButton"); m_urlButton = Children.Find <ButtonWidget>("EditSignDialog.UrlButton"); m_linesButton = Children.Find <ButtonWidget>("EditSignDialog.LinesButton"); m_subsystemSignBlockBehavior = subsystemSignBlockBehavior; m_signPoint = signPoint; SignData signData = m_subsystemSignBlockBehavior.GetSignData(m_signPoint); if (signData != null) { m_textBox1.Text = signData.Lines[0]; m_textBox2.Text = signData.Lines[1]; m_textBox3.Text = signData.Lines[2]; m_textBox4.Text = signData.Lines[3]; m_colorButton1.Color = signData.Colors[0]; m_colorButton2.Color = signData.Colors[1]; m_colorButton3.Color = signData.Colors[2]; m_colorButton4.Color = signData.Colors[3]; m_urlTextBox.Text = signData.Url; } else { m_textBox1.Text = string.Empty; m_textBox2.Text = string.Empty; m_textBox3.Text = string.Empty; m_textBox4.Text = string.Empty; m_colorButton1.Color = Color.Black; m_colorButton2.Color = Color.Black; m_colorButton3.Color = Color.Black; m_colorButton4.Color = Color.Black; m_urlTextBox.Text = string.Empty; } m_linesPage.IsVisible = true; m_urlPage.IsVisible = false; UpdateControls(); }
public override bool OnInteract(TerrainRaycastResult raycastResult, ComponentMiner componentMiner) { AudioManager.PlaySound("Audio/UI/ButtonClick", 1f, 0f, 0f); Point3 point = new Point3(raycastResult.CellFace.X, raycastResult.CellFace.Y, raycastResult.CellFace.Z); if (m_subsystemGameInfo.WorldSettings.GameMode == GameMode.Adventure) { SignData signData = GetSignData(point); if (signData != null && !string.IsNullOrEmpty(signData.Url)) { WebBrowserManager.LaunchBrowser(signData.Url); } } else if (componentMiner.ComponentPlayer != null) { DialogsManager.ShowDialog(componentMiner.ComponentPlayer.GuiWidget, new EditSignDialog(this, point)); } return(true); }