public static void Create(SubmarineInfo submarineInfo) { Close(); instance = new SubmarinePreview(submarineInfo); }
public void CreatePreviewWindow(GUIComponent parent) { var content = new GUIFrame(new RectTransform(Vector2.One, parent.RectTransform), style: null); var previewButton = new GUIButton(new RectTransform(new Vector2(1f, 0.5f), content.RectTransform), style: null) { CanBeFocused = SubmarineElement != null, OnClicked = (btn, obj) => { SubmarinePreview.Create(this); return(false); }, }; var previewImage = PreviewImage ?? savedSubmarines.Find(s => s.Name.Equals(Name, StringComparison.OrdinalIgnoreCase))?.PreviewImage; if (previewImage == null) { new GUITextBlock(new RectTransform(Vector2.One, previewButton.RectTransform), TextManager.Get(SavedSubmarines.Contains(this) ? "SubPreviewImageNotFound" : "SubNotDownloaded")); } else { var submarinePreviewBackground = new GUIFrame(new RectTransform(Vector2.One, previewButton.RectTransform), style: null) { Color = Color.Black, HoverColor = Color.Black, SelectedColor = Color.Black, PressedColor = Color.Black, CanBeFocused = false, }; new GUIImage(new RectTransform(new Vector2(0.98f), submarinePreviewBackground.RectTransform, Anchor.Center), previewImage, scaleToFit: true) { CanBeFocused = false }; new GUIFrame(new RectTransform(Vector2.One, submarinePreviewBackground.RectTransform), "InnerGlow", color: Color.Black) { CanBeFocused = false }; } if (SubmarineElement != null) { new GUIFrame(new RectTransform(Vector2.One * 0.12f, previewButton.RectTransform, anchor: Anchor.BottomRight, pivot: Pivot.BottomRight, scaleBasis: ScaleBasis.BothHeight) { AbsoluteOffset = new Point((int)(0.03f * previewButton.Rect.Height)) }, "ExpandButton", Color.White) { Color = Color.White, HoverColor = Color.White, PressedColor = Color.White }; } var descriptionBox = new GUIListBox(new RectTransform(new Vector2(1, 0.5f), content.RectTransform, Anchor.BottomCenter)) { UserData = "descriptionbox", ScrollBarVisible = true, Spacing = 5 }; ScalableFont font = parent.Rect.Width < 350 ? GUI.SmallFont : GUI.Font; CreateSpecsWindow(descriptionBox, font, includeDescription: true); }
public void RefreshSubmarineDisplay(bool updateSubs) { if (!initialized) { Initialize(); } if (GameMain.GraphicsWidth != createdForResolution.X || GameMain.GraphicsHeight != createdForResolution.Y) { CreateGUI(); } if (updateSubs) { UpdateSubmarines(); } if (pageIndicators != null) { for (int i = 0; i < pageIndicators.Length; i++) { pageIndicators[i].Color = i == currentPage - 1 ? Color.White : Color.Gray; } } int submarineIndex = (currentPage - 1) * submarinesPerPage; for (int i = 0; i < submarineDisplays.Length; i++) { SubmarineInfo subToDisplay = GetSubToDisplay(submarineIndex); if (subToDisplay == null) { submarineDisplays[i].submarineImage.Sprite = null; submarineDisplays[i].submarineName.Text = string.Empty; submarineDisplays[i].submarineFee.Text = string.Empty; submarineDisplays[i].submarineClass.Text = string.Empty; submarineDisplays[i].selectSubmarineButton.Enabled = false; submarineDisplays[i].selectSubmarineButton.OnClicked = null; submarineDisplays[i].displayedSubmarine = null; submarineDisplays[i].middleTextBlock.AutoDraw = false; submarineDisplays[i].previewButton.Visible = false; } else { submarineDisplays[i].displayedSubmarine = subToDisplay; Sprite previewImage = GetPreviewImage(subToDisplay); if (previewImage != null) { submarineDisplays[i].submarineImage.Sprite = previewImage; submarineDisplays[i].middleTextBlock.AutoDraw = false; } else { submarineDisplays[i].submarineImage.Sprite = null; submarineDisplays[i].middleTextBlock.Text = missingPreviewText; submarineDisplays[i].middleTextBlock.AutoDraw = true; } submarineDisplays[i].selectSubmarineButton.Enabled = true; int index = i; submarineDisplays[i].selectSubmarineButton.OnClicked = (button, userData) => { SelectSubmarine(subToDisplay, submarineDisplays[index].background.Rect); return(true); }; submarineDisplays[i].submarineName.Text = subToDisplay.DisplayName; submarineDisplays[i].submarineClass.Text = $"{TextManager.GetWithVariable("submarineclass.classsuffixformat", "[type]", TextManager.Get($"submarineclass.{subToDisplay.SubmarineClass}"))}"; if (!GameMain.GameSession.IsSubmarineOwned(subToDisplay)) { string amountString = currencyShorthandText.Replace("[credits]", subToDisplay.Price.ToString()); submarineDisplays[i].submarineFee.Text = priceText.Replace("[amount]", amountString).Replace("[currencyname]", string.Empty).TrimEnd(); } else { if (subToDisplay.Name != CurrentOrPendingSubmarine().Name) { if (deliveryFee > 0) { string amountString = currencyShorthandText.Replace("[credits]", deliveryFee.ToString()); submarineDisplays[i].submarineFee.Text = deliveryFeeText.Replace("[amount]", amountString).Replace("[currencyname]", string.Empty).TrimEnd(); } else { submarineDisplays[i].submarineFee.Text = string.Empty; } } else { submarineDisplays[i].submarineFee.Text = currentSubText; } } if (transferService && subToDisplay.Name == CurrentOrPendingSubmarine().Name&& updateSubs) { if (selectedSubmarine == null) { CoroutineManager.StartCoroutine(SelectOwnSubmarineWithDelay(subToDisplay, submarineDisplays[i])); } else { SelectSubmarine(subToDisplay, submarineDisplays[i].background.Rect); } } else if (!transferService && selectedSubmarine == null || !transferService && GameMain.GameSession.IsSubmarineOwned(selectedSubmarine) || subToDisplay == selectedSubmarine) { SelectSubmarine(subToDisplay, submarineDisplays[i].background.Rect); } submarineDisplays[i].previewButton.Visible = true; submarineDisplays[i].previewButton.OnClicked = (btn, obj) => { SubmarinePreview.Create(subToDisplay); return(false); }; } submarineIndex++; } if (subsToShow.Count == 0) { SelectSubmarine(null, Rectangle.Empty); } }