terraria-source-code/GameContent/UI/States/UIWorldCreation.cs
2021-10-26 12:45:26 -04:00

927 lines
40 KiB
C#

// 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<UIWorldCreation.WorldSizeId>[] _sizeButtons;
private GroupOptionButton<UIWorldCreation.WorldDifficultyId>[] _difficultyButtons;
private GroupOptionButton<UIWorldCreation.WorldEvilId>[] _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<bool> groupOptionButton1 = new GroupOptionButton<bool>(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<bool> 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<bool> groupOptionButton3 = new GroupOptionButton<bool>(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<bool> 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<UIWorldCreation.WorldSizeId> sizeButton in this._sizeButtons)
sizeButton.SetCurrentOption(UIWorldCreation.WorldSizeId.Small);
if (Main.ActivePlayerFileData.Player.difficulty == (byte) 3)
{
foreach (GroupOptionButton<UIWorldCreation.WorldDifficultyId> difficultyButton in this._difficultyButtons)
difficultyButton.SetCurrentOption(UIWorldCreation.WorldDifficultyId.Creative);
this._optionDifficulty = UIWorldCreation.WorldDifficultyId.Creative;
this.UpdatePreviewPlate();
}
else
{
foreach (GroupOptionButton<UIWorldCreation.WorldDifficultyId> difficultyButton in this._difficultyButtons)
difficultyButton.SetCurrentOption(UIWorldCreation.WorldDifficultyId.Normal);
}
foreach (GroupOptionButton<UIWorldCreation.WorldEvilId> 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<Texture2D>("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<UIWorldCreation.WorldSizeId>[] groupOptionButtonArray = new GroupOptionButton<UIWorldCreation.WorldSizeId>[worldSizeIdArray.Length];
for (int id = 0; id < groupOptionButtonArray.Length; ++id)
{
GroupOptionButton<UIWorldCreation.WorldSizeId> groupOptionButton = new GroupOptionButton<UIWorldCreation.WorldSizeId>(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<UIWorldCreation.WorldDifficultyId>[] groupOptionButtonArray = new GroupOptionButton<UIWorldCreation.WorldDifficultyId>[worldDifficultyIdArray.Length];
for (int id = 0; id < groupOptionButtonArray.Length; ++id)
{
GroupOptionButton<UIWorldCreation.WorldDifficultyId> groupOptionButton = new GroupOptionButton<UIWorldCreation.WorldDifficultyId>(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<UIWorldCreation.WorldEvilId>[] groupOptionButtonArray = new GroupOptionButton<UIWorldCreation.WorldEvilId>[worldEvilIdArray.Length];
for (int id = 0; id < groupOptionButtonArray.Length; ++id)
{
GroupOptionButton<UIWorldCreation.WorldEvilId> groupOptionButton = new GroupOptionButton<UIWorldCreation.WorldEvilId>(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<UIWorldCreation.WorldSizeId> groupOptionButton = (GroupOptionButton<UIWorldCreation.WorldSizeId>) listeningElement;
this._optionSize = groupOptionButton.OptionValue;
foreach (GroupOptionButton<UIWorldCreation.WorldSizeId> sizeButton in this._sizeButtons)
sizeButton.SetCurrentOption(groupOptionButton.OptionValue);
this.UpdatePreviewPlate();
}
private void ClickDifficultyOption(UIMouseEvent evt, UIElement listeningElement)
{
GroupOptionButton<UIWorldCreation.WorldDifficultyId> groupOptionButton = (GroupOptionButton<UIWorldCreation.WorldDifficultyId>) listeningElement;
this._optionDifficulty = groupOptionButton.OptionValue;
foreach (GroupOptionButton<UIWorldCreation.WorldDifficultyId> difficultyButton in this._difficultyButtons)
difficultyButton.SetCurrentOption(groupOptionButton.OptionValue);
this.UpdatePreviewPlate();
}
private void ClickEvilOption(UIMouseEvent evt, UIElement listeningElement)
{
GroupOptionButton<UIWorldCreation.WorldEvilId> groupOptionButton = (GroupOptionButton<UIWorldCreation.WorldEvilId>) listeningElement;
this._optionEvil = groupOptionButton.OptionValue;
foreach (GroupOptionButton<UIWorldCreation.WorldEvilId> 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<UIWorldCreation.WorldSizeId> sizeButton in this._sizeButtons)
sizeButton.SetCurrentOption(this._optionSize);
foreach (GroupOptionButton<UIWorldCreation.WorldDifficultyId> difficultyButton in this._difficultyButtons)
difficultyButton.SetCurrentOption(this._optionDifficulty);
foreach (GroupOptionButton<UIWorldCreation.WorldEvilId> evilButton in this._evilButtons)
evilButton.SetCurrentOption(this._optionEvil);
}
public void ShowOptionDescription(UIMouseEvent evt, UIElement listeningElement)
{
LocalizedText text = (LocalizedText) null;
if (listeningElement is GroupOptionButton<UIWorldCreation.WorldSizeId> groupOptionButton1)
text = groupOptionButton1.Description;
if (listeningElement is GroupOptionButton<UIWorldCreation.WorldDifficultyId> groupOptionButton2)
text = groupOptionButton2.Description;
if (listeningElement is GroupOptionButton<UIWorldCreation.WorldEvilId> groupOptionButton3)
text = groupOptionButton3.Description;
if (listeningElement is UICharacterNameButton characterNameButton)
text = characterNameButton.Description;
if (listeningElement is GroupOptionButton<bool> 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<LocalizedText> uiTextPanel1 = new UITextPanel<LocalizedText>(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<LocalizedText> 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<LocalizedText> uiTextPanel3 = new UITextPanel<LocalizedText>(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<LocalizedText> 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<SnapPoint> 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<SnapPoint> snapGroup1 = this.GetSnapGroup(snapPoints, "size");
List<SnapPoint> snapGroup2 = this.GetSnapGroup(snapPoints, "difficulty");
List<SnapPoint> 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<SnapPoint> GetSnapGroup(List<SnapPoint> ptsOnPage, string groupName)
{
List<SnapPoint> list = ptsOnPage.Where<SnapPoint>((Func<SnapPoint, bool>) (a => a.Name == groupName)).ToList<SnapPoint>();
list.Sort(new Comparison<SnapPoint>(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,
}
}
}