// Decompiled with JetBrains decompiler // Type: Terraria.GameContent.UI.States.UIWorldCreation // Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null // MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System; using System.Collections.Generic; using System.Linq; using Terraria.Audio; using Terraria.GameContent.UI.Elements; using Terraria.ID; using Terraria.IO; using Terraria.Localization; using Terraria.Social; using Terraria.UI; using Terraria.UI.Gamepad; namespace Terraria.GameContent.UI.States { public class UIWorldCreation : UIState { private UIWorldCreation.WorldSizeId _optionSize; private UIWorldCreation.WorldDifficultyId _optionDifficulty; private UIWorldCreation.WorldEvilId _optionEvil; private string _optionwWorldName; private string _optionSeed; private UICharacterNameButton _namePlate; private UICharacterNameButton _seedPlate; private UIWorldCreationPreview _previewPlate; private GroupOptionButton[] _sizeButtons; private GroupOptionButton[] _difficultyButtons; private GroupOptionButton[] _evilButtons; private UIText _descriptionText; private const int MAX_NAME_LENGTH = 27; private const int MAX_SEED_LENGTH = 40; public UIWorldCreation() => this.BuildPage(); private void BuildPage() { int num = 18; this.RemoveAllChildren(); UIElement uiElement1 = new UIElement() { Width = StyleDimension.FromPixels(500f), Height = StyleDimension.FromPixels(434f + (float) num), Top = StyleDimension.FromPixels(170f - (float) num), HAlign = 0.5f, VAlign = 0.0f }; uiElement1.SetPadding(0.0f); this.Append(uiElement1); UIPanel uiPanel1 = new UIPanel(); uiPanel1.Width = StyleDimension.FromPercent(1f); uiPanel1.Height = StyleDimension.FromPixels((float) (280 + num)); uiPanel1.Top = StyleDimension.FromPixels(50f); uiPanel1.BackgroundColor = new Color(33, 43, 79) * 0.8f; UIPanel uiPanel2 = uiPanel1; uiPanel2.SetPadding(0.0f); uiElement1.Append((UIElement) uiPanel2); this.MakeBackAndCreatebuttons(uiElement1); UIElement uiElement2 = new UIElement() { Top = StyleDimension.FromPixelsAndPercent(0.0f, 0.0f), Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f), Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f), HAlign = 1f }; uiElement2.SetPadding(0.0f); uiElement2.PaddingTop = 8f; uiElement2.PaddingBottom = 12f; uiPanel2.Append(uiElement2); this.MakeInfoMenu(uiElement2); } private void MakeInfoMenu(UIElement parentContainer) { UIElement uiElement = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f), Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f), HAlign = 0.5f, VAlign = 0.0f }; uiElement.SetPadding(10f); uiElement.PaddingBottom = 0.0f; uiElement.PaddingTop = 0.0f; parentContainer.Append(uiElement); float pixels1 = 0.0f; float num1 = 44f; float num2 = (float) (88.0 + (double) num1); float pixels2 = num1; GroupOptionButton groupOptionButton1 = new GroupOptionButton(true, (LocalizedText) null, Language.GetText("UI.WorldCreationRandomizeNameDescription"), Color.White, "Images/UI/WorldCreation/IconRandomName"); groupOptionButton1.Width = StyleDimension.FromPixelsAndPercent(40f, 0.0f); groupOptionButton1.Height = new StyleDimension(40f, 0.0f); groupOptionButton1.HAlign = 0.0f; groupOptionButton1.Top = StyleDimension.FromPixelsAndPercent(pixels1, 0.0f); groupOptionButton1.ShowHighlightWhenSelected = false; GroupOptionButton groupOptionButton2 = groupOptionButton1; groupOptionButton2.OnMouseDown += new UIElement.MouseEvent(this.ClickRandomizeName); groupOptionButton2.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); groupOptionButton2.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); groupOptionButton2.SetSnapPoint("RandomizeName", 0); uiElement.Append((UIElement) groupOptionButton2); UICharacterNameButton characterNameButton1 = new UICharacterNameButton(Language.GetText("UI.WorldCreationName"), Language.GetText("UI.WorldCreationNameEmpty"), Language.GetText("UI.WorldDescriptionName")); characterNameButton1.Width = StyleDimension.FromPixelsAndPercent(-num2, 1f); characterNameButton1.HAlign = 0.0f; characterNameButton1.Left = new StyleDimension(pixels2, 0.0f); characterNameButton1.Top = StyleDimension.FromPixelsAndPercent(pixels1, 0.0f); UICharacterNameButton characterNameButton2 = characterNameButton1; characterNameButton2.OnMouseDown += new UIElement.MouseEvent(this.Click_SetName); characterNameButton2.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); characterNameButton2.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); characterNameButton2.SetSnapPoint("Name", 0); uiElement.Append((UIElement) characterNameButton2); this._namePlate = characterNameButton2; CalculatedStyle dimensions1 = characterNameButton2.GetDimensions(); float pixels3 = pixels1 + (dimensions1.Height + 4f); GroupOptionButton groupOptionButton3 = new GroupOptionButton(true, (LocalizedText) null, Language.GetText("UI.WorldCreationRandomizeSeedDescription"), Color.White, "Images/UI/WorldCreation/IconRandomSeed"); groupOptionButton3.Width = StyleDimension.FromPixelsAndPercent(40f, 0.0f); groupOptionButton3.Height = new StyleDimension(40f, 0.0f); groupOptionButton3.HAlign = 0.0f; groupOptionButton3.Top = StyleDimension.FromPixelsAndPercent(pixels3, 0.0f); groupOptionButton3.ShowHighlightWhenSelected = false; GroupOptionButton groupOptionButton4 = groupOptionButton3; groupOptionButton4.OnMouseDown += new UIElement.MouseEvent(this.ClickRandomizeSeed); groupOptionButton4.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); groupOptionButton4.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); groupOptionButton4.SetSnapPoint("RandomizeSeed", 0); uiElement.Append((UIElement) groupOptionButton4); UICharacterNameButton characterNameButton3 = new UICharacterNameButton(Language.GetText("UI.WorldCreationSeed"), Language.GetText("UI.WorldCreationSeedEmpty"), Language.GetText("UI.WorldDescriptionSeed")); characterNameButton3.Width = StyleDimension.FromPixelsAndPercent(-num2, 1f); characterNameButton3.HAlign = 0.0f; characterNameButton3.Left = new StyleDimension(pixels2, 0.0f); characterNameButton3.Top = StyleDimension.FromPixelsAndPercent(pixels3, 0.0f); characterNameButton3.DistanceFromTitleToOption = 29f; UICharacterNameButton characterNameButton4 = characterNameButton3; characterNameButton4.OnMouseDown += new UIElement.MouseEvent(this.Click_SetSeed); characterNameButton4.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); characterNameButton4.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); characterNameButton4.SetSnapPoint("Seed", 0); uiElement.Append((UIElement) characterNameButton4); this._seedPlate = characterNameButton4; UIWorldCreationPreview worldCreationPreview1 = new UIWorldCreationPreview(); worldCreationPreview1.Width = StyleDimension.FromPixels(84f); worldCreationPreview1.Height = StyleDimension.FromPixels(84f); worldCreationPreview1.HAlign = 1f; worldCreationPreview1.VAlign = 0.0f; UIWorldCreationPreview worldCreationPreview2 = worldCreationPreview1; uiElement.Append((UIElement) worldCreationPreview2); this._previewPlate = worldCreationPreview2; CalculatedStyle dimensions2 = characterNameButton4.GetDimensions(); float accumualtedHeight1 = pixels3 + (dimensions2.Height + 10f); UIWorldCreation.AddHorizontalSeparator(uiElement, accumualtedHeight1 + 2f); float usableWidthPercent = 1f; this.AddWorldSizeOptions(uiElement, accumualtedHeight1, new UIElement.MouseEvent(this.ClickSizeOption), "size", usableWidthPercent); float accumualtedHeight2 = accumualtedHeight1 + 48f; UIWorldCreation.AddHorizontalSeparator(uiElement, accumualtedHeight2); this.AddWorldDifficultyOptions(uiElement, accumualtedHeight2, new UIElement.MouseEvent(this.ClickDifficultyOption), "difficulty", usableWidthPercent); float accumualtedHeight3 = accumualtedHeight2 + 48f; UIWorldCreation.AddHorizontalSeparator(uiElement, accumualtedHeight3); this.AddWorldEvilOptions(uiElement, accumualtedHeight3, new UIElement.MouseEvent(this.ClickEvilOption), "evil", usableWidthPercent); float num3 = accumualtedHeight3 + 48f; UIWorldCreation.AddHorizontalSeparator(uiElement, num3); this.AddDescriptionPanel(uiElement, num3, "desc"); this.SetDefaultOptions(); } private static void AddHorizontalSeparator(UIElement Container, float accumualtedHeight) { UIHorizontalSeparator horizontalSeparator1 = new UIHorizontalSeparator(); horizontalSeparator1.Width = StyleDimension.FromPercent(1f); horizontalSeparator1.Top = StyleDimension.FromPixels(accumualtedHeight - 8f); horizontalSeparator1.Color = Color.Lerp(Color.White, new Color(63, 65, 151, (int) byte.MaxValue), 0.85f) * 0.9f; UIHorizontalSeparator horizontalSeparator2 = horizontalSeparator1; Container.Append((UIElement) horizontalSeparator2); } private void SetDefaultOptions() { this.AssignRandomWorldName(); this.AssignRandomWorldSeed(); this.UpdateInputFields(); foreach (GroupOptionButton sizeButton in this._sizeButtons) sizeButton.SetCurrentOption(UIWorldCreation.WorldSizeId.Small); if (Main.ActivePlayerFileData.Player.difficulty == (byte) 3) { foreach (GroupOptionButton difficultyButton in this._difficultyButtons) difficultyButton.SetCurrentOption(UIWorldCreation.WorldDifficultyId.Creative); this._optionDifficulty = UIWorldCreation.WorldDifficultyId.Creative; this.UpdatePreviewPlate(); } else { foreach (GroupOptionButton difficultyButton in this._difficultyButtons) difficultyButton.SetCurrentOption(UIWorldCreation.WorldDifficultyId.Normal); } foreach (GroupOptionButton evilButton in this._evilButtons) evilButton.SetCurrentOption(UIWorldCreation.WorldEvilId.Random); } private void AddDescriptionPanel(UIElement container, float accumulatedHeight, string tagGroup) { float num = 0.0f; UISlicedImage uiSlicedImage1 = new UISlicedImage(Main.Assets.Request("Images/UI/CharCreation/CategoryPanelHighlight", (AssetRequestMode) 1)); uiSlicedImage1.HAlign = 0.5f; uiSlicedImage1.VAlign = 1f; uiSlicedImage1.Width = StyleDimension.FromPixelsAndPercent((float) (-(double) num * 2.0), 1f); uiSlicedImage1.Left = StyleDimension.FromPixels(-num); uiSlicedImage1.Height = StyleDimension.FromPixelsAndPercent(40f, 0.0f); uiSlicedImage1.Top = StyleDimension.FromPixels(2f); UISlicedImage uiSlicedImage2 = uiSlicedImage1; uiSlicedImage2.SetSliceDepths(10); uiSlicedImage2.Color = Color.LightGray * 0.7f; container.Append((UIElement) uiSlicedImage2); UIText uiText1 = new UIText(Language.GetText("UI.WorldDescriptionDefault"), 0.82f); uiText1.HAlign = 0.0f; uiText1.VAlign = 0.0f; uiText1.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); uiText1.Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f); uiText1.Top = StyleDimension.FromPixelsAndPercent(5f, 0.0f); UIText uiText2 = uiText1; uiText2.PaddingLeft = 20f; uiText2.PaddingRight = 20f; uiText2.PaddingTop = 6f; uiSlicedImage2.Append((UIElement) uiText2); this._descriptionText = uiText2; } private void AddWorldSizeOptions( UIElement container, float accumualtedHeight, UIElement.MouseEvent clickEvent, string tagGroup, float usableWidthPercent) { UIWorldCreation.WorldSizeId[] worldSizeIdArray = new UIWorldCreation.WorldSizeId[3] { UIWorldCreation.WorldSizeId.Small, UIWorldCreation.WorldSizeId.Medium, UIWorldCreation.WorldSizeId.Large }; LocalizedText[] localizedTextArray1 = new LocalizedText[3] { Lang.menu[92], Lang.menu[93], Lang.menu[94] }; LocalizedText[] localizedTextArray2 = new LocalizedText[3] { Language.GetText("UI.WorldDescriptionSizeSmall"), Language.GetText("UI.WorldDescriptionSizeMedium"), Language.GetText("UI.WorldDescriptionSizeLarge") }; Color[] colorArray = new Color[3] { Color.Cyan, Color.Lerp(Color.Cyan, Color.LimeGreen, 0.5f), Color.LimeGreen }; string[] strArray = new string[3] { "Images/UI/WorldCreation/IconSizeSmall", "Images/UI/WorldCreation/IconSizeMedium", "Images/UI/WorldCreation/IconSizeLarge" }; GroupOptionButton[] groupOptionButtonArray = new GroupOptionButton[worldSizeIdArray.Length]; for (int id = 0; id < groupOptionButtonArray.Length; ++id) { GroupOptionButton groupOptionButton = new GroupOptionButton(worldSizeIdArray[id], localizedTextArray1[id], localizedTextArray2[id], colorArray[id], strArray[id], titleAlignmentX: 1f, titleWidthReduction: 16f); groupOptionButton.Width = StyleDimension.FromPixelsAndPercent((float) (-4 * (groupOptionButtonArray.Length - 1)), 1f / (float) groupOptionButtonArray.Length * usableWidthPercent); groupOptionButton.Left = StyleDimension.FromPercent(1f - usableWidthPercent); groupOptionButton.HAlign = (float) id / (float) (groupOptionButtonArray.Length - 1); groupOptionButton.Top.Set(accumualtedHeight, 0.0f); groupOptionButton.OnMouseDown += clickEvent; groupOptionButton.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); groupOptionButton.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); groupOptionButton.SetSnapPoint(tagGroup, id); container.Append((UIElement) groupOptionButton); groupOptionButtonArray[id] = groupOptionButton; } this._sizeButtons = groupOptionButtonArray; } private void AddWorldDifficultyOptions( UIElement container, float accumualtedHeight, UIElement.MouseEvent clickEvent, string tagGroup, float usableWidthPercent) { UIWorldCreation.WorldDifficultyId[] worldDifficultyIdArray = new UIWorldCreation.WorldDifficultyId[4] { UIWorldCreation.WorldDifficultyId.Creative, UIWorldCreation.WorldDifficultyId.Normal, UIWorldCreation.WorldDifficultyId.Expert, UIWorldCreation.WorldDifficultyId.Master }; LocalizedText[] localizedTextArray1 = new LocalizedText[4] { Language.GetText("UI.Creative"), Language.GetText("UI.Normal"), Language.GetText("UI.Expert"), Language.GetText("UI.Master") }; LocalizedText[] localizedTextArray2 = new LocalizedText[4] { Language.GetText("UI.WorldDescriptionCreative"), Language.GetText("UI.WorldDescriptionNormal"), Language.GetText("UI.WorldDescriptionExpert"), Language.GetText("UI.WorldDescriptionMaster") }; Color[] colorArray = new Color[4] { Main.creativeModeColor, Color.White, Main.mcColor, Main.hcColor }; string[] strArray = new string[4] { "Images/UI/WorldCreation/IconDifficultyCreative", "Images/UI/WorldCreation/IconDifficultyNormal", "Images/UI/WorldCreation/IconDifficultyExpert", "Images/UI/WorldCreation/IconDifficultyMaster" }; GroupOptionButton[] groupOptionButtonArray = new GroupOptionButton[worldDifficultyIdArray.Length]; for (int id = 0; id < groupOptionButtonArray.Length; ++id) { GroupOptionButton groupOptionButton = new GroupOptionButton(worldDifficultyIdArray[id], localizedTextArray1[id], localizedTextArray2[id], colorArray[id], strArray[id], titleAlignmentX: 1f, titleWidthReduction: 16f); groupOptionButton.Width = StyleDimension.FromPixelsAndPercent((float) (-1 * (groupOptionButtonArray.Length - 1)), 1f / (float) groupOptionButtonArray.Length * usableWidthPercent); groupOptionButton.Left = StyleDimension.FromPercent(1f - usableWidthPercent); groupOptionButton.HAlign = (float) id / (float) (groupOptionButtonArray.Length - 1); groupOptionButton.Top.Set(accumualtedHeight, 0.0f); groupOptionButton.OnMouseDown += clickEvent; groupOptionButton.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); groupOptionButton.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); groupOptionButton.SetSnapPoint(tagGroup, id); container.Append((UIElement) groupOptionButton); groupOptionButtonArray[id] = groupOptionButton; } this._difficultyButtons = groupOptionButtonArray; } private void AddWorldEvilOptions( UIElement container, float accumualtedHeight, UIElement.MouseEvent clickEvent, string tagGroup, float usableWidthPercent) { UIWorldCreation.WorldEvilId[] worldEvilIdArray = new UIWorldCreation.WorldEvilId[3] { UIWorldCreation.WorldEvilId.Random, UIWorldCreation.WorldEvilId.Corruption, UIWorldCreation.WorldEvilId.Crimson }; LocalizedText[] localizedTextArray1 = new LocalizedText[3] { Lang.misc[103], Lang.misc[101], Lang.misc[102] }; LocalizedText[] localizedTextArray2 = new LocalizedText[3] { Language.GetText("UI.WorldDescriptionEvilRandom"), Language.GetText("UI.WorldDescriptionEvilCorrupt"), Language.GetText("UI.WorldDescriptionEvilCrimson") }; Color[] colorArray = new Color[3] { Color.White, Color.MediumPurple, Color.IndianRed }; string[] strArray = new string[3] { "Images/UI/WorldCreation/IconEvilRandom", "Images/UI/WorldCreation/IconEvilCorruption", "Images/UI/WorldCreation/IconEvilCrimson" }; GroupOptionButton[] groupOptionButtonArray = new GroupOptionButton[worldEvilIdArray.Length]; for (int id = 0; id < groupOptionButtonArray.Length; ++id) { GroupOptionButton groupOptionButton = new GroupOptionButton(worldEvilIdArray[id], localizedTextArray1[id], localizedTextArray2[id], colorArray[id], strArray[id], titleAlignmentX: 1f, titleWidthReduction: 16f); groupOptionButton.Width = StyleDimension.FromPixelsAndPercent((float) (-4 * (groupOptionButtonArray.Length - 1)), 1f / (float) groupOptionButtonArray.Length * usableWidthPercent); groupOptionButton.Left = StyleDimension.FromPercent(1f - usableWidthPercent); groupOptionButton.HAlign = (float) id / (float) (groupOptionButtonArray.Length - 1); groupOptionButton.Top.Set(accumualtedHeight, 0.0f); groupOptionButton.OnMouseDown += clickEvent; groupOptionButton.OnMouseOver += new UIElement.MouseEvent(this.ShowOptionDescription); groupOptionButton.OnMouseOut += new UIElement.MouseEvent(this.ClearOptionDescription); groupOptionButton.SetSnapPoint(tagGroup, id); container.Append((UIElement) groupOptionButton); groupOptionButtonArray[id] = groupOptionButton; } this._evilButtons = groupOptionButtonArray; } private void ClickRandomizeName(UIMouseEvent evt, UIElement listeningElement) { this.AssignRandomWorldName(); this.UpdateInputFields(); this.UpdateSliders(); this.UpdatePreviewPlate(); } private void ClickRandomizeSeed(UIMouseEvent evt, UIElement listeningElement) { this.AssignRandomWorldSeed(); this.UpdateInputFields(); this.UpdateSliders(); this.UpdatePreviewPlate(); } private void ClickSizeOption(UIMouseEvent evt, UIElement listeningElement) { GroupOptionButton groupOptionButton = (GroupOptionButton) listeningElement; this._optionSize = groupOptionButton.OptionValue; foreach (GroupOptionButton sizeButton in this._sizeButtons) sizeButton.SetCurrentOption(groupOptionButton.OptionValue); this.UpdatePreviewPlate(); } private void ClickDifficultyOption(UIMouseEvent evt, UIElement listeningElement) { GroupOptionButton groupOptionButton = (GroupOptionButton) listeningElement; this._optionDifficulty = groupOptionButton.OptionValue; foreach (GroupOptionButton difficultyButton in this._difficultyButtons) difficultyButton.SetCurrentOption(groupOptionButton.OptionValue); this.UpdatePreviewPlate(); } private void ClickEvilOption(UIMouseEvent evt, UIElement listeningElement) { GroupOptionButton groupOptionButton = (GroupOptionButton) listeningElement; this._optionEvil = groupOptionButton.OptionValue; foreach (GroupOptionButton evilButton in this._evilButtons) evilButton.SetCurrentOption(groupOptionButton.OptionValue); this.UpdatePreviewPlate(); } private void UpdatePreviewPlate() => this._previewPlate.UpdateOption((byte) this._optionDifficulty, (byte) this._optionEvil, (byte) this._optionSize); private void UpdateSliders() { foreach (GroupOptionButton sizeButton in this._sizeButtons) sizeButton.SetCurrentOption(this._optionSize); foreach (GroupOptionButton difficultyButton in this._difficultyButtons) difficultyButton.SetCurrentOption(this._optionDifficulty); foreach (GroupOptionButton evilButton in this._evilButtons) evilButton.SetCurrentOption(this._optionEvil); } public void ShowOptionDescription(UIMouseEvent evt, UIElement listeningElement) { LocalizedText text = (LocalizedText) null; if (listeningElement is GroupOptionButton groupOptionButton1) text = groupOptionButton1.Description; if (listeningElement is GroupOptionButton groupOptionButton2) text = groupOptionButton2.Description; if (listeningElement is GroupOptionButton groupOptionButton3) text = groupOptionButton3.Description; if (listeningElement is UICharacterNameButton characterNameButton) text = characterNameButton.Description; if (listeningElement is GroupOptionButton groupOptionButton4) text = groupOptionButton4.Description; if (text == null) return; this._descriptionText.SetText(text); } public void ClearOptionDescription(UIMouseEvent evt, UIElement listeningElement) => this._descriptionText.SetText(Language.GetText("UI.WorldDescriptionDefault")); private void MakeBackAndCreatebuttons(UIElement outerContainer) { UITextPanel uiTextPanel1 = new UITextPanel(Language.GetText("UI.Back"), 0.7f, true); uiTextPanel1.Width = StyleDimension.FromPixelsAndPercent(-10f, 0.5f); uiTextPanel1.Height = StyleDimension.FromPixels(50f); uiTextPanel1.VAlign = 1f; uiTextPanel1.HAlign = 0.0f; uiTextPanel1.Top = StyleDimension.FromPixels(-45f); UITextPanel uiTextPanel2 = uiTextPanel1; uiTextPanel2.OnMouseOver += new UIElement.MouseEvent(this.FadedMouseOver); uiTextPanel2.OnMouseOut += new UIElement.MouseEvent(this.FadedMouseOut); uiTextPanel2.OnMouseDown += new UIElement.MouseEvent(this.Click_GoBack); uiTextPanel2.SetSnapPoint("Back", 0); outerContainer.Append((UIElement) uiTextPanel2); UITextPanel uiTextPanel3 = new UITextPanel(Language.GetText("UI.Create"), 0.7f, true); uiTextPanel3.Width = StyleDimension.FromPixelsAndPercent(-10f, 0.5f); uiTextPanel3.Height = StyleDimension.FromPixels(50f); uiTextPanel3.VAlign = 1f; uiTextPanel3.HAlign = 1f; uiTextPanel3.Top = StyleDimension.FromPixels(-45f); UITextPanel uiTextPanel4 = uiTextPanel3; uiTextPanel4.OnMouseOver += new UIElement.MouseEvent(this.FadedMouseOver); uiTextPanel4.OnMouseOut += new UIElement.MouseEvent(this.FadedMouseOut); uiTextPanel4.OnMouseDown += new UIElement.MouseEvent(this.Click_NamingAndCreating); uiTextPanel4.SetSnapPoint("Create", 0); outerContainer.Append((UIElement) uiTextPanel4); } private void Click_GoBack(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(11); Main.OpenWorldSelectUI(); } private void FadedMouseOver(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); ((UIPanel) evt.Target).BackgroundColor = new Color(73, 94, 171); ((UIPanel) evt.Target).BorderColor = Colors.FancyUIFatButtonMouseOver; } private void FadedMouseOut(UIMouseEvent evt, UIElement listeningElement) { ((UIPanel) evt.Target).BackgroundColor = new Color(63, 82, 151) * 0.8f; ((UIPanel) evt.Target).BorderColor = Color.Black; } private void Click_SetName(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(10); Main.clrInput(); UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Lang.menu[48].Value, "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnFinishedSettingName), new Action(this.GoBackHere), allowEmpty: true); uiVirtualKeyboard.SetMaxInputLength(27); Main.MenuUI.SetState((UIState) uiVirtualKeyboard); } private void Click_SetSeed(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(10); Main.clrInput(); UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Language.GetTextValue("UI.EnterSeed"), "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnFinishedSettingSeed), new Action(this.GoBackHere), allowEmpty: true); uiVirtualKeyboard.SetMaxInputLength(40); Main.MenuUI.SetState((UIState) uiVirtualKeyboard); } private void Click_NamingAndCreating(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(10); if (string.IsNullOrEmpty(this._optionwWorldName)) { this._optionwWorldName = ""; Main.clrInput(); UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Lang.menu[48].Value, "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnFinishedNamingAndCreating), new Action(this.GoBackHere)); uiVirtualKeyboard.SetMaxInputLength(27); Main.MenuUI.SetState((UIState) uiVirtualKeyboard); } else this.FinishCreatingWorld(); } private void OnFinishedSettingName(string name) { this._optionwWorldName = name.Trim(); this.UpdateInputFields(); this.GoBackHere(); } private void UpdateInputFields() { this._namePlate.SetContents(this._optionwWorldName); this._namePlate.TrimDisplayIfOverElementDimensions(27); this._namePlate.Recalculate(); this._seedPlate.SetContents(this._optionSeed); this._seedPlate.TrimDisplayIfOverElementDimensions(40); this._seedPlate.Recalculate(); } private void OnFinishedSettingSeed(string seed) { this._optionSeed = seed.Trim(); string processedSeed; this.ProcessSeed(out processedSeed); this._optionSeed = processedSeed; this.UpdateInputFields(); this.UpdateSliders(); this.UpdatePreviewPlate(); this.GoBackHere(); } private void GoBackHere() => Main.MenuUI.SetState((UIState) this); private void OnFinishedNamingAndCreating(string name) { this.OnFinishedSettingName(name); this.FinishCreatingWorld(); } private void FinishCreatingWorld() { string processedSeed; this.ProcessSeed(out processedSeed); switch (this._optionSize) { case UIWorldCreation.WorldSizeId.Small: Main.maxTilesX = 4200; Main.maxTilesY = 1200; break; case UIWorldCreation.WorldSizeId.Medium: Main.maxTilesX = 6400; Main.maxTilesY = 1800; break; case UIWorldCreation.WorldSizeId.Large: Main.maxTilesX = 8400; Main.maxTilesY = 2400; break; } WorldGen.setWorldSize(); switch (this._optionDifficulty) { case UIWorldCreation.WorldDifficultyId.Normal: Main.GameMode = 0; break; case UIWorldCreation.WorldDifficultyId.Expert: Main.GameMode = 1; break; case UIWorldCreation.WorldDifficultyId.Master: Main.GameMode = 2; break; case UIWorldCreation.WorldDifficultyId.Creative: Main.GameMode = 3; break; } switch (this._optionEvil) { case UIWorldCreation.WorldEvilId.Random: WorldGen.WorldGenParam_Evil = -1; break; case UIWorldCreation.WorldEvilId.Corruption: WorldGen.WorldGenParam_Evil = 0; break; case UIWorldCreation.WorldEvilId.Crimson: WorldGen.WorldGenParam_Evil = 1; break; } Main.ActiveWorldFileData = WorldFile.CreateMetadata(Main.worldName = this._optionwWorldName.Trim(), SocialAPI.Cloud != null && SocialAPI.Cloud.EnabledByDefault, Main.GameMode); if (processedSeed.Length == 0) Main.ActiveWorldFileData.SetSeedToRandom(); else Main.ActiveWorldFileData.SetSeed(processedSeed); Main.menuMode = 10; WorldGen.CreateNewWorld(); } private void ProcessSeed(out string processedSeed) { processedSeed = this._optionSeed; WorldGen.notTheBees = processedSeed.ToLower() == "not the bees" || processedSeed.ToLower() == "not the bees!"; WorldGen.getGoodWorldGen = processedSeed.ToLower() == "for the worthy"; string[] strArray = this._optionSeed.Split('.'); if (strArray.Length != 4) return; int result; if (int.TryParse(strArray[0], out result)) { switch (result) { case 1: this._optionSize = UIWorldCreation.WorldSizeId.Small; break; case 2: this._optionSize = UIWorldCreation.WorldSizeId.Medium; break; case 3: this._optionSize = UIWorldCreation.WorldSizeId.Large; break; } } if (int.TryParse(strArray[1], out result)) { switch (result) { case 1: this._optionDifficulty = UIWorldCreation.WorldDifficultyId.Normal; break; case 2: this._optionDifficulty = UIWorldCreation.WorldDifficultyId.Expert; break; case 3: this._optionDifficulty = UIWorldCreation.WorldDifficultyId.Master; break; case 4: this._optionDifficulty = UIWorldCreation.WorldDifficultyId.Creative; break; } } if (int.TryParse(strArray[2], out result)) { switch (result) { case 1: this._optionEvil = UIWorldCreation.WorldEvilId.Corruption; break; case 2: this._optionEvil = UIWorldCreation.WorldEvilId.Crimson; break; } } processedSeed = strArray[3]; } private void AssignRandomWorldName() { do { LocalizedText localizedText = Language.SelectRandom(Lang.CreateDialogFilter("RandomWorldName_Composition.")); var data = new { Adjective = Language.SelectRandom(Lang.CreateDialogFilter("RandomWorldName_Adjective.")).Value, Location = Language.SelectRandom(Lang.CreateDialogFilter("RandomWorldName_Location.")).Value, Noun = Language.SelectRandom(Lang.CreateDialogFilter("RandomWorldName_Noun.")).Value }; this._optionwWorldName = localizedText.FormatWith((object) data); } while (this._optionwWorldName.Length > 27); } private void AssignRandomWorldSeed() => this._optionSeed = Main.rand.Next().ToString(); public override void Draw(SpriteBatch spriteBatch) { base.Draw(spriteBatch); this.SetupGamepadPoints(spriteBatch); } private void SetupGamepadPoints(SpriteBatch spriteBatch) { UILinkPointNavigator.Shortcuts.BackButtonCommand = 1; int num1 = 3000; List snapPoints = this.GetSnapPoints(); SnapPoint snapPoint1 = (SnapPoint) null; SnapPoint snapPoint2 = (SnapPoint) null; SnapPoint snapPoint3 = (SnapPoint) null; SnapPoint snapPoint4 = (SnapPoint) null; SnapPoint snapPoint5 = (SnapPoint) null; SnapPoint snapPoint6 = (SnapPoint) null; for (int index = 0; index < snapPoints.Count; ++index) { SnapPoint snapPoint7 = snapPoints[index]; string name = snapPoint7.Name; if (!(name == "Back")) { if (!(name == "Create")) { if (!(name == "Name")) { if (!(name == "Seed")) { if (!(name == "RandomizeName")) { if (name == "RandomizeSeed") snapPoint6 = snapPoint7; } else snapPoint5 = snapPoint7; } else snapPoint4 = snapPoint7; } else snapPoint3 = snapPoint7; } else snapPoint2 = snapPoint7; } else snapPoint1 = snapPoint7; } List snapGroup1 = this.GetSnapGroup(snapPoints, "size"); List snapGroup2 = this.GetSnapGroup(snapPoints, "difficulty"); List snapGroup3 = this.GetSnapGroup(snapPoints, "evil"); UILinkPointNavigator.SetPosition(num1, snapPoint1.Position); UILinkPoint point1 = UILinkPointNavigator.Points[num1]; point1.Unlink(); UILinkPoint uiLinkPoint1 = point1; int num2 = num1 + 1; UILinkPointNavigator.SetPosition(num2, snapPoint2.Position); UILinkPoint point2 = UILinkPointNavigator.Points[num2]; point2.Unlink(); UILinkPoint uiLinkPoint2 = point2; int num3 = num2 + 1; UILinkPointNavigator.SetPosition(num3, snapPoint5.Position); UILinkPoint point3 = UILinkPointNavigator.Points[num3]; point3.Unlink(); UILinkPoint uiLinkPoint3 = point3; int num4 = num3 + 1; UILinkPointNavigator.SetPosition(num4, snapPoint3.Position); UILinkPoint point4 = UILinkPointNavigator.Points[num4]; point4.Unlink(); UILinkPoint uiLinkPoint4 = point4; int num5 = num4 + 1; UILinkPointNavigator.SetPosition(num5, snapPoint6.Position); UILinkPoint point5 = UILinkPointNavigator.Points[num5]; point5.Unlink(); UILinkPoint uiLinkPoint5 = point5; int num6 = num5 + 1; UILinkPointNavigator.SetPosition(num6, snapPoint4.Position); UILinkPoint point6 = UILinkPointNavigator.Points[num6]; point6.Unlink(); UILinkPoint uiLinkPoint6 = point6; int num7 = num6 + 1; UILinkPoint[] uiLinkPointArray1 = new UILinkPoint[snapGroup1.Count]; for (int index = 0; index < snapGroup1.Count; ++index) { UILinkPointNavigator.SetPosition(num7, snapGroup1[index].Position); UILinkPoint point7 = UILinkPointNavigator.Points[num7]; point7.Unlink(); uiLinkPointArray1[index] = point7; ++num7; } UILinkPoint[] uiLinkPointArray2 = new UILinkPoint[snapGroup2.Count]; for (int index = 0; index < snapGroup2.Count; ++index) { UILinkPointNavigator.SetPosition(num7, snapGroup2[index].Position); UILinkPoint point8 = UILinkPointNavigator.Points[num7]; point8.Unlink(); uiLinkPointArray2[index] = point8; ++num7; } UILinkPoint[] uiLinkPointArray3 = new UILinkPoint[snapGroup3.Count]; for (int index = 0; index < snapGroup3.Count; ++index) { UILinkPointNavigator.SetPosition(num7, snapGroup3[index].Position); UILinkPoint point9 = UILinkPointNavigator.Points[num7]; point9.Unlink(); uiLinkPointArray3[index] = point9; ++num7; } this.LoopHorizontalLineLinks(uiLinkPointArray1); this.LoopHorizontalLineLinks(uiLinkPointArray2); this.EstablishUpDownRelationship(uiLinkPointArray1, uiLinkPointArray2); for (int index = 0; index < uiLinkPointArray1.Length; ++index) uiLinkPointArray1[index].Up = uiLinkPoint6.ID; if (true) { this.LoopHorizontalLineLinks(uiLinkPointArray3); this.EstablishUpDownRelationship(uiLinkPointArray2, uiLinkPointArray3); for (int index = 0; index < uiLinkPointArray3.Length; ++index) uiLinkPointArray3[index].Down = uiLinkPoint1.ID; uiLinkPointArray3[uiLinkPointArray3.Length - 1].Down = uiLinkPoint2.ID; uiLinkPoint2.Up = uiLinkPointArray3[uiLinkPointArray3.Length - 1].ID; uiLinkPoint1.Up = uiLinkPointArray3[0].ID; } else { for (int index = 0; index < uiLinkPointArray2.Length; ++index) uiLinkPointArray2[index].Down = uiLinkPoint1.ID; uiLinkPointArray2[uiLinkPointArray2.Length - 1].Down = uiLinkPoint2.ID; uiLinkPoint2.Up = uiLinkPointArray2[uiLinkPointArray2.Length - 1].ID; uiLinkPoint1.Up = uiLinkPointArray2[0].ID; } uiLinkPoint2.Left = uiLinkPoint1.ID; uiLinkPoint1.Right = uiLinkPoint2.ID; uiLinkPoint4.Down = uiLinkPoint6.ID; uiLinkPoint4.Left = uiLinkPoint3.ID; uiLinkPoint3.Right = uiLinkPoint4.ID; uiLinkPoint6.Up = uiLinkPoint4.ID; uiLinkPoint6.Down = uiLinkPointArray1[0].ID; uiLinkPoint6.Left = uiLinkPoint5.ID; uiLinkPoint5.Right = uiLinkPoint6.ID; uiLinkPoint5.Up = uiLinkPoint3.ID; uiLinkPoint5.Down = uiLinkPointArray1[0].ID; uiLinkPoint3.Down = uiLinkPoint5.ID; } private void EstablishUpDownRelationship(UILinkPoint[] topSide, UILinkPoint[] bottomSide) { int num = Math.Max(topSide.Length, bottomSide.Length); for (int val1 = 0; val1 < num; ++val1) { int index1 = Math.Min(val1, topSide.Length - 1); int index2 = Math.Min(val1, bottomSide.Length - 1); topSide[index1].Down = bottomSide[index2].ID; bottomSide[index2].Up = topSide[index1].ID; } } private void LoopHorizontalLineLinks(UILinkPoint[] pointsLine) { for (int index = 1; index < pointsLine.Length - 1; ++index) { pointsLine[index - 1].Right = pointsLine[index].ID; pointsLine[index].Left = pointsLine[index - 1].ID; pointsLine[index].Right = pointsLine[index + 1].ID; pointsLine[index + 1].Left = pointsLine[index].ID; } } private List GetSnapGroup(List ptsOnPage, string groupName) { List list = ptsOnPage.Where((Func) (a => a.Name == groupName)).ToList(); list.Sort(new Comparison(this.SortPoints)); return list; } private int SortPoints(SnapPoint a, SnapPoint b) => a.Id.CompareTo(b.Id); private enum WorldSizeId { Small, Medium, Large, } private enum WorldDifficultyId { Normal, Expert, Master, Creative, } private enum WorldEvilId { Random, Corruption, Crimson, } } }