// Decompiled with JetBrains decompiler // Type: Terraria.GameContent.UI.States.UICharacterCreation // 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 Newtonsoft.Json; using ReLogic.Content; using ReLogic.OS; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using Terraria.Audio; using Terraria.GameContent.Creative; using Terraria.GameContent.UI.Elements; using Terraria.GameInput; using Terraria.ID; using Terraria.Initializers; using Terraria.IO; using Terraria.Localization; using Terraria.UI; using Terraria.UI.Gamepad; namespace Terraria.GameContent.UI.States { public class UICharacterCreation : UIState { private int[] _validClothStyles = new int[10] { 0, 2, 1, 3, 8, 4, 6, 5, 7, 9 }; private readonly Player _player; private UIColoredImageButton[] _colorPickers; private UICharacterCreation.CategoryId _selectedPicker; private Vector3 _currentColorHSL; private UIColoredImageButton _clothingStylesCategoryButton; private UIColoredImageButton _hairStylesCategoryButton; private UIColoredImageButton _charInfoCategoryButton; private UIElement _topContainer; private UIElement _middleContainer; private UIElement _hslContainer; private UIElement _hairstylesContainer; private UIElement _clothStylesContainer; private UIElement _infoContainer; private UIText _hslHexText; private UIText _difficultyDescriptionText; private UIElement _copyHexButton; private UIElement _pasteHexButton; private UIElement _randomColorButton; private UIElement _copyTemplateButton; private UIElement _pasteTemplateButton; private UIElement _randomizePlayerButton; private UIColoredImageButton _genderMale; private UIColoredImageButton _genderFemale; private UICharacterNameButton _charName; private UIText _helpGlyphLeft; private UIText _helpGlyphRight; private UIGamepadHelper _helper; private List _foundPoints = new List(); public UICharacterCreation(Player player) { this._player = player; this._player.difficulty = (byte) 3; this.BuildPage(); } private void BuildPage() { this.RemoveAllChildren(); int num = 4; UIElement uiElement1 = new UIElement() { Width = StyleDimension.FromPixels(500f), Height = StyleDimension.FromPixels((float) (380 + num)), Top = StyleDimension.FromPixels(220f), HAlign = 0.5f, VAlign = 0.0f }; uiElement1.SetPadding(0.0f); this.Append(uiElement1); UIPanel uiPanel = new UIPanel(); uiPanel.Width = StyleDimension.FromPercent(1f); uiPanel.Height = StyleDimension.FromPixels(uiElement1.Height.Pixels - 150f - (float) num); uiPanel.Top = StyleDimension.FromPixels(50f); uiPanel.BackgroundColor = new Color(33, 43, 79) * 0.8f; UIPanel container = uiPanel; container.SetPadding(0.0f); uiElement1.Append((UIElement) container); this.MakeBackAndCreatebuttons(uiElement1); this.MakeCharPreview(container); UIElement uiElement2 = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f), Height = StyleDimension.FromPixelsAndPercent(50f, 0.0f) }; uiElement2.SetPadding(0.0f); uiElement2.PaddingTop = 4f; uiElement2.PaddingBottom = 0.0f; container.Append(uiElement2); UIElement uiElement3 = new UIElement() { Top = StyleDimension.FromPixelsAndPercent(uiElement2.Height.Pixels + 6f, 0.0f), Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f), Height = StyleDimension.FromPixelsAndPercent(container.Height.Pixels - 70f, 0.0f) }; uiElement3.SetPadding(0.0f); uiElement3.PaddingTop = 3f; uiElement3.PaddingBottom = 0.0f; container.Append(uiElement3); this._topContainer = uiElement2; this._middleContainer = uiElement3; this.MakeInfoMenu(uiElement3); this.MakeHSLMenu(uiElement3); this.MakeHairsylesMenu(uiElement3); this.MakeClothStylesMenu(uiElement3); this.MakeCategoriesBar(uiElement2); this.Click_CharInfo((UIMouseEvent) null, (UIElement) null); } private void MakeCharPreview(UIPanel container) { float num1 = 70f; for (float num2 = 0.0f; (double) num2 <= 1.0; ++num2) { UICharacter uiCharacter1 = new UICharacter(this._player, true, false, 1.5f); uiCharacter1.Width = StyleDimension.FromPixels(80f); uiCharacter1.Height = StyleDimension.FromPixelsAndPercent(80f, 0.0f); uiCharacter1.Top = StyleDimension.FromPixelsAndPercent(-num1, 0.0f); uiCharacter1.VAlign = 0.0f; uiCharacter1.HAlign = 0.5f; UICharacter uiCharacter2 = uiCharacter1; container.Append((UIElement) uiCharacter2); } } private void MakeHairsylesMenu(UIElement middleInnerPanel) { Main.Hairstyles.UpdateUnlocks(); UIElement element = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(-10f, 1f), Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f), HAlign = 0.5f, VAlign = 0.5f, Top = StyleDimension.FromPixels(6f) }; middleInnerPanel.Append(element); element.SetPadding(0.0f); UIList uiList1 = new UIList(); uiList1.Width = StyleDimension.FromPixelsAndPercent(-18f, 1f); uiList1.Height = StyleDimension.FromPixelsAndPercent(-6f, 1f); UIList uiList2 = uiList1; uiList2.SetPadding(4f); element.Append((UIElement) uiList2); UIScrollbar uiScrollbar = new UIScrollbar(); uiScrollbar.HAlign = 1f; uiScrollbar.Height = StyleDimension.FromPixelsAndPercent(-30f, 1f); uiScrollbar.Top = StyleDimension.FromPixels(10f); UIScrollbar scrollbar = uiScrollbar; scrollbar.SetView(100f, 1000f); uiList2.SetScrollbar(scrollbar); element.Append((UIElement) scrollbar); int count = Main.Hairstyles.AvailableHairstyles.Count; UIElement uiElement = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f), Height = StyleDimension.FromPixelsAndPercent((float) (48 * (count / 10 + (count % 10 == 0 ? 0 : 1))), 0.0f) }; uiList2.Add(uiElement); uiElement.SetPadding(0.0f); for (int index = 0; index < count; ++index) { UIHairStyleButton uiHairStyleButton1 = new UIHairStyleButton(this._player, Main.Hairstyles.AvailableHairstyles[index]); uiHairStyleButton1.Left = StyleDimension.FromPixels((float) ((double) (index % 10) * 46.0 + 6.0)); uiHairStyleButton1.Top = StyleDimension.FromPixels((float) ((double) (index / 10) * 48.0 + 1.0)); UIHairStyleButton uiHairStyleButton2 = uiHairStyleButton1; uiHairStyleButton2.SetSnapPoint("Middle", index); uiElement.Append((UIElement) uiHairStyleButton2); } this._hairstylesContainer = element; } private void MakeClothStylesMenu(UIElement middleInnerPanel) { UIElement element1 = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(-10f, 1f), Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f), HAlign = 0.5f, VAlign = 0.5f }; middleInnerPanel.Append(element1); element1.SetPadding(0.0f); int num1 = 15; for (int id = 0; id < this._validClothStyles.Length; ++id) { int num2 = 0; if (id >= this._validClothStyles.Length / 2) num2 = 20; UIClothStyleButton clothStyleButton1 = new UIClothStyleButton(this._player, this._validClothStyles[id]); clothStyleButton1.Left = StyleDimension.FromPixels((float) ((double) id * 46.0 + (double) num2 + 6.0)); clothStyleButton1.Top = StyleDimension.FromPixels((float) num1); UIClothStyleButton clothStyleButton2 = clothStyleButton1; clothStyleButton2.OnMouseDown += new UIElement.MouseEvent(this.Click_CharClothStyle); clothStyleButton2.SetSnapPoint("Middle", id); element1.Append((UIElement) clothStyleButton2); } for (int index = 0; index < 2; ++index) { int num3 = 0; if (index >= 1) num3 = 20; UIHorizontalSeparator horizontalSeparator1 = new UIHorizontalSeparator(); horizontalSeparator1.Left = StyleDimension.FromPixels((float) ((double) index * 230.0 + (double) num3 + 6.0)); horizontalSeparator1.Top = StyleDimension.FromPixels((float) (num1 + 86)); horizontalSeparator1.Width = StyleDimension.FromPixelsAndPercent(230f, 0.0f); horizontalSeparator1.Color = Color.Lerp(Color.White, new Color(63, 65, 151, (int) byte.MaxValue), 0.85f) * 0.9f; UIHorizontalSeparator horizontalSeparator2 = horizontalSeparator1; element1.Append((UIElement) horizontalSeparator2); UIColoredImageButton pickerWithoutClick = this.CreatePickerWithoutClick(UICharacterCreation.CategoryId.Clothing, "Images/UI/CharCreation/" + (index == 0 ? "ClothStyleMale" : "ClothStyleFemale"), 0.0f, 0.0f); pickerWithoutClick.Top = StyleDimension.FromPixelsAndPercent((float) (num1 + 92), 0.0f); pickerWithoutClick.Left = StyleDimension.FromPixels((float) ((double) index * 230.0 + 92.0 + (double) num3 + 6.0)); pickerWithoutClick.HAlign = 0.0f; pickerWithoutClick.VAlign = 0.0f; element1.Append((UIElement) pickerWithoutClick); if (index == 0) { pickerWithoutClick.OnMouseDown += new UIElement.MouseEvent(this.Click_CharGenderMale); this._genderMale = pickerWithoutClick; } else { pickerWithoutClick.OnMouseDown += new UIElement.MouseEvent(this.Click_CharGenderFemale); this._genderFemale = pickerWithoutClick; } pickerWithoutClick.SetSnapPoint("Low", index * 4); } UIElement element2 = new UIElement() { Width = StyleDimension.FromPixels(130f), Height = StyleDimension.FromPixels(50f), HAlign = 0.5f, VAlign = 1f }; element1.Append(element2); UIColoredImageButton coloredImageButton1 = new UIColoredImageButton(Main.Assets.Request("Images/UI/CharCreation/Copy", (AssetRequestMode) 1), true); coloredImageButton1.VAlign = 0.5f; coloredImageButton1.HAlign = 0.0f; coloredImageButton1.Left = StyleDimension.FromPixelsAndPercent(0.0f, 0.0f); UIColoredImageButton coloredImageButton2 = coloredImageButton1; coloredImageButton2.OnMouseDown += new UIElement.MouseEvent(this.Click_CopyPlayerTemplate); element2.Append((UIElement) coloredImageButton2); this._copyTemplateButton = (UIElement) coloredImageButton2; UIColoredImageButton coloredImageButton3 = new UIColoredImageButton(Main.Assets.Request("Images/UI/CharCreation/Paste", (AssetRequestMode) 1), true); coloredImageButton3.VAlign = 0.5f; coloredImageButton3.HAlign = 0.5f; UIColoredImageButton coloredImageButton4 = coloredImageButton3; coloredImageButton4.OnMouseDown += new UIElement.MouseEvent(this.Click_PastePlayerTemplate); element2.Append((UIElement) coloredImageButton4); this._pasteTemplateButton = (UIElement) coloredImageButton4; UIColoredImageButton coloredImageButton5 = new UIColoredImageButton(Main.Assets.Request("Images/UI/CharCreation/Randomize", (AssetRequestMode) 1), true); coloredImageButton5.VAlign = 0.5f; coloredImageButton5.HAlign = 1f; UIColoredImageButton coloredImageButton6 = coloredImageButton5; coloredImageButton6.OnMouseDown += new UIElement.MouseEvent(this.Click_RandomizePlayer); element2.Append((UIElement) coloredImageButton6); this._randomizePlayerButton = (UIElement) coloredImageButton6; coloredImageButton2.SetSnapPoint("Low", 1); coloredImageButton4.SetSnapPoint("Low", 2); coloredImageButton6.SetSnapPoint("Low", 3); this._clothStylesContainer = element1; } private void MakeCategoriesBar(UIElement categoryContainer) { float xPositionStart = -240f; float xPositionPerId = 48f; this._colorPickers = new UIColoredImageButton[10]; categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.HairColor, "Images/UI/CharCreation/ColorHair", xPositionStart, xPositionPerId)); categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.Eye, "Images/UI/CharCreation/ColorEye", xPositionStart, xPositionPerId)); categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.Skin, "Images/UI/CharCreation/ColorSkin", xPositionStart, xPositionPerId)); categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.Shirt, "Images/UI/CharCreation/ColorShirt", xPositionStart, xPositionPerId)); categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.Undershirt, "Images/UI/CharCreation/ColorUndershirt", xPositionStart, xPositionPerId)); categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.Pants, "Images/UI/CharCreation/ColorPants", xPositionStart, xPositionPerId)); categoryContainer.Append((UIElement) this.CreateColorPicker(UICharacterCreation.CategoryId.Shoes, "Images/UI/CharCreation/ColorShoes", xPositionStart, xPositionPerId)); this._colorPickers[4].SetMiddleTexture(Main.Assets.Request("Images/UI/CharCreation/ColorEyeBack", (AssetRequestMode) 1)); this._clothingStylesCategoryButton = this.CreatePickerWithoutClick(UICharacterCreation.CategoryId.Clothing, "Images/UI/CharCreation/ClothStyleMale", xPositionStart, xPositionPerId); this._clothingStylesCategoryButton.OnMouseDown += new UIElement.MouseEvent(this.Click_ClothStyles); this._clothingStylesCategoryButton.SetSnapPoint("Top", 1); categoryContainer.Append((UIElement) this._clothingStylesCategoryButton); this._hairStylesCategoryButton = this.CreatePickerWithoutClick(UICharacterCreation.CategoryId.HairStyle, "Images/UI/CharCreation/HairStyle_Hair", xPositionStart, xPositionPerId); this._hairStylesCategoryButton.OnMouseDown += new UIElement.MouseEvent(this.Click_HairStyles); this._hairStylesCategoryButton.SetMiddleTexture(Main.Assets.Request("Images/UI/CharCreation/HairStyle_Arrow", (AssetRequestMode) 1)); this._hairStylesCategoryButton.SetSnapPoint("Top", 2); categoryContainer.Append((UIElement) this._hairStylesCategoryButton); this._charInfoCategoryButton = this.CreatePickerWithoutClick(UICharacterCreation.CategoryId.CharInfo, "Images/UI/CharCreation/CharInfo", xPositionStart, xPositionPerId); this._charInfoCategoryButton.OnMouseDown += new UIElement.MouseEvent(this.Click_CharInfo); this._charInfoCategoryButton.SetSnapPoint("Top", 0); categoryContainer.Append((UIElement) this._charInfoCategoryButton); this.UpdateColorPickers(); UIHorizontalSeparator horizontalSeparator1 = new UIHorizontalSeparator(); horizontalSeparator1.Width = StyleDimension.FromPixelsAndPercent(-20f, 1f); horizontalSeparator1.Top = StyleDimension.FromPixels(6f); horizontalSeparator1.VAlign = 1f; horizontalSeparator1.HAlign = 0.5f; horizontalSeparator1.Color = Color.Lerp(Color.White, new Color(63, 65, 151, (int) byte.MaxValue), 0.85f) * 0.9f; UIHorizontalSeparator horizontalSeparator2 = horizontalSeparator1; categoryContainer.Append((UIElement) horizontalSeparator2); int num = 21; UIText uiText1 = new UIText(PlayerInput.GenerateInputTag_ForCurrentGamemode(false, "HotbarMinus")); uiText1.Left = new StyleDimension((float) -num, 0.0f); uiText1.VAlign = 0.5f; uiText1.Top = new StyleDimension(-4f, 0.0f); UIText uiText2 = uiText1; categoryContainer.Append((UIElement) uiText2); UIText uiText3 = new UIText(PlayerInput.GenerateInputTag_ForCurrentGamemode(false, "HotbarMinus")); uiText3.HAlign = 1f; uiText3.Left = new StyleDimension((float) (12 + num), 0.0f); uiText3.VAlign = 0.5f; uiText3.Top = new StyleDimension(-4f, 0.0f); UIText uiText4 = uiText3; categoryContainer.Append((UIElement) uiText4); this._helpGlyphLeft = uiText2; this._helpGlyphRight = uiText4; categoryContainer.OnUpdate += new UIElement.ElementEvent(this.UpdateHelpGlyphs); } private void UpdateHelpGlyphs(UIElement element) { string text1 = ""; string text2 = ""; if (PlayerInput.UsingGamepad) { text1 = PlayerInput.GenerateInputTag_ForCurrentGamemode(false, "HotbarMinus"); text2 = PlayerInput.GenerateInputTag_ForCurrentGamemode(false, "HotbarPlus"); } this._helpGlyphLeft.SetText(text1); this._helpGlyphRight.SetText(text2); } private UIColoredImageButton CreateColorPicker( UICharacterCreation.CategoryId id, string texturePath, float xPositionStart, float xPositionPerId) { UIColoredImageButton coloredImageButton = new UIColoredImageButton(Main.Assets.Request(texturePath, (AssetRequestMode) 1)); this._colorPickers[(int) id] = coloredImageButton; coloredImageButton.VAlign = 0.0f; coloredImageButton.HAlign = 0.0f; coloredImageButton.Left.Set(xPositionStart + (float) id * xPositionPerId, 0.5f); coloredImageButton.OnMouseDown += new UIElement.MouseEvent(this.Click_ColorPicker); coloredImageButton.SetSnapPoint("Top", (int) id); return coloredImageButton; } private UIColoredImageButton CreatePickerWithoutClick( UICharacterCreation.CategoryId id, string texturePath, float xPositionStart, float xPositionPerId) { UIColoredImageButton coloredImageButton = new UIColoredImageButton(Main.Assets.Request(texturePath, (AssetRequestMode) 1)); coloredImageButton.VAlign = 0.0f; coloredImageButton.HAlign = 0.0f; coloredImageButton.Left.Set(xPositionStart + (float) id * xPositionPerId, 0.5f); return coloredImageButton; } private void MakeInfoMenu(UIElement parentContainer) { UIElement element1 = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f), Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f), HAlign = 0.5f, VAlign = 0.0f }; element1.SetPadding(10f); element1.PaddingBottom = 0.0f; element1.PaddingTop = 0.0f; parentContainer.Append(element1); UICharacterNameButton characterNameButton = new UICharacterNameButton(Language.GetText("UI.WorldCreationName"), Language.GetText("UI.PlayerEmptyName")); characterNameButton.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); characterNameButton.HAlign = 0.5f; element1.Append((UIElement) characterNameButton); this._charName = characterNameButton; characterNameButton.OnMouseDown += new UIElement.MouseEvent(this.Click_Naming); characterNameButton.SetSnapPoint("Middle", 0); float num1 = 4f; float num2 = 0.0f; float percent = 0.4f; UIElement element2 = new UIElement() { HAlign = 0.0f, VAlign = 1f, Width = StyleDimension.FromPixelsAndPercent(-num1, percent), Height = StyleDimension.FromPixelsAndPercent(-50f, 1f) }; element2.SetPadding(0.0f); element1.Append(element2); UISlicedImage uiSlicedImage1 = new UISlicedImage(Main.Assets.Request("Images/UI/CharCreation/CategoryPanelHighlight", (AssetRequestMode) 1)); uiSlicedImage1.HAlign = 1f; uiSlicedImage1.VAlign = 1f; uiSlicedImage1.Width = StyleDimension.FromPixelsAndPercent((float) (-(double) num1 * 2.0), 1f - percent); uiSlicedImage1.Left = StyleDimension.FromPixels(-num1); uiSlicedImage1.Height = StyleDimension.FromPixelsAndPercent(element2.Height.Pixels, element2.Height.Precent); UISlicedImage uiSlicedImage2 = uiSlicedImage1; uiSlicedImage2.SetSliceDepths(10); uiSlicedImage2.Color = Color.LightGray * 0.7f; element1.Append((UIElement) uiSlicedImage2); float num3 = 4f; UIDifficultyButton difficultyButton1 = new UIDifficultyButton(this._player, Lang.menu[26], Lang.menu[31], (byte) 0, Color.Cyan); difficultyButton1.HAlign = 0.0f; difficultyButton1.VAlign = (float) (1.0 / ((double) num3 - 1.0)); difficultyButton1.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); difficultyButton1.Height = StyleDimension.FromPixelsAndPercent(-num2, 1f / num3); UIDifficultyButton difficultyButton2 = difficultyButton1; UIDifficultyButton difficultyButton3 = new UIDifficultyButton(this._player, Lang.menu[25], Lang.menu[30], (byte) 1, Main.mcColor); difficultyButton3.HAlign = 0.0f; difficultyButton3.VAlign = (float) (2.0 / ((double) num3 - 1.0)); difficultyButton3.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); difficultyButton3.Height = StyleDimension.FromPixelsAndPercent(-num2, 1f / num3); UIDifficultyButton difficultyButton4 = difficultyButton3; UIDifficultyButton difficultyButton5 = new UIDifficultyButton(this._player, Lang.menu[24], Lang.menu[29], (byte) 2, Main.hcColor); difficultyButton5.HAlign = 0.0f; difficultyButton5.VAlign = 1f; difficultyButton5.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); difficultyButton5.Height = StyleDimension.FromPixelsAndPercent(-num2, 1f / num3); UIDifficultyButton difficultyButton6 = difficultyButton5; UIDifficultyButton difficultyButton7 = new UIDifficultyButton(this._player, Language.GetText("UI.Creative"), Language.GetText("UI.CreativeDescriptionPlayer"), (byte) 3, Main.creativeModeColor); difficultyButton7.HAlign = 0.0f; difficultyButton7.VAlign = 0.0f; difficultyButton7.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); difficultyButton7.Height = StyleDimension.FromPixelsAndPercent(-num2, 1f / num3); UIDifficultyButton difficultyButton8 = difficultyButton7; UIText uiText1 = new UIText(Lang.menu[26]); uiText1.HAlign = 0.0f; uiText1.VAlign = 0.5f; uiText1.Width = StyleDimension.FromPixelsAndPercent(0.0f, 1f); uiText1.Height = StyleDimension.FromPixelsAndPercent(0.0f, 1f); uiText1.Top = StyleDimension.FromPixelsAndPercent(15f, 0.0f); uiText1.IsWrapped = true; UIText uiText2 = uiText1; uiText2.PaddingLeft = 20f; uiText2.PaddingRight = 20f; uiSlicedImage2.Append((UIElement) uiText2); element2.Append((UIElement) difficultyButton2); element2.Append((UIElement) difficultyButton4); element2.Append((UIElement) difficultyButton6); element2.Append((UIElement) difficultyButton8); this._infoContainer = element1; this._difficultyDescriptionText = uiText2; difficultyButton2.OnMouseDown += new UIElement.MouseEvent(this.UpdateDifficultyDescription); difficultyButton4.OnMouseDown += new UIElement.MouseEvent(this.UpdateDifficultyDescription); difficultyButton6.OnMouseDown += new UIElement.MouseEvent(this.UpdateDifficultyDescription); difficultyButton8.OnMouseDown += new UIElement.MouseEvent(this.UpdateDifficultyDescription); this.UpdateDifficultyDescription((UIMouseEvent) null, (UIElement) null); difficultyButton2.SetSnapPoint("Middle", 1); difficultyButton4.SetSnapPoint("Middle", 2); difficultyButton6.SetSnapPoint("Middle", 3); difficultyButton8.SetSnapPoint("Middle", 4); } private void UpdateDifficultyDescription(UIMouseEvent evt, UIElement listeningElement) { LocalizedText text = Lang.menu[31]; switch (this._player.difficulty) { case 0: text = Lang.menu[31]; break; case 1: text = Lang.menu[30]; break; case 2: text = Lang.menu[29]; break; case 3: text = Language.GetText("UI.CreativeDescriptionPlayer"); break; } this._difficultyDescriptionText.SetText(text); } private void MakeHSLMenu(UIElement parentContainer) { UIElement element1 = new UIElement() { Width = StyleDimension.FromPixelsAndPercent(220f, 0.0f), Height = StyleDimension.FromPixelsAndPercent(158f, 0.0f), HAlign = 0.5f, VAlign = 0.0f }; element1.SetPadding(0.0f); parentContainer.Append(element1); UIPanel uiPanel1 = new UIPanel(); uiPanel1.Width = StyleDimension.FromPixelsAndPercent(220f, 0.0f); uiPanel1.Height = StyleDimension.FromPixelsAndPercent(104f, 0.0f); uiPanel1.HAlign = 0.5f; uiPanel1.VAlign = 0.0f; uiPanel1.Top = StyleDimension.FromPixelsAndPercent(10f, 0.0f); UIElement element2 = (UIElement) uiPanel1; element2.SetPadding(0.0f); element2.PaddingTop = 3f; element1.Append(element2); element2.Append((UIElement) this.CreateHSLSlider(UICharacterCreation.HSLSliderId.Hue)); element2.Append((UIElement) this.CreateHSLSlider(UICharacterCreation.HSLSliderId.Saturation)); element2.Append((UIElement) this.CreateHSLSlider(UICharacterCreation.HSLSliderId.Luminance)); UIPanel uiPanel2 = new UIPanel(); uiPanel2.VAlign = 1f; uiPanel2.HAlign = 1f; uiPanel2.Width = StyleDimension.FromPixelsAndPercent(100f, 0.0f); uiPanel2.Height = StyleDimension.FromPixelsAndPercent(32f, 0.0f); UIPanel uiPanel3 = uiPanel2; UIText uiText1 = new UIText("FFFFFF"); uiText1.VAlign = 0.5f; uiText1.HAlign = 0.5f; UIText uiText2 = uiText1; uiPanel3.Append((UIElement) uiText2); element1.Append((UIElement) uiPanel3); UIColoredImageButton coloredImageButton1 = new UIColoredImageButton(Main.Assets.Request("Images/UI/CharCreation/Copy", (AssetRequestMode) 1), true); coloredImageButton1.VAlign = 1f; coloredImageButton1.HAlign = 0.0f; coloredImageButton1.Left = StyleDimension.FromPixelsAndPercent(0.0f, 0.0f); UIColoredImageButton coloredImageButton2 = coloredImageButton1; coloredImageButton2.OnMouseDown += new UIElement.MouseEvent(this.Click_CopyHex); element1.Append((UIElement) coloredImageButton2); this._copyHexButton = (UIElement) coloredImageButton2; UIColoredImageButton coloredImageButton3 = new UIColoredImageButton(Main.Assets.Request("Images/UI/CharCreation/Paste", (AssetRequestMode) 1), true); coloredImageButton3.VAlign = 1f; coloredImageButton3.HAlign = 0.0f; coloredImageButton3.Left = StyleDimension.FromPixelsAndPercent(40f, 0.0f); UIColoredImageButton coloredImageButton4 = coloredImageButton3; coloredImageButton4.OnMouseDown += new UIElement.MouseEvent(this.Click_PasteHex); element1.Append((UIElement) coloredImageButton4); this._pasteHexButton = (UIElement) coloredImageButton4; UIColoredImageButton coloredImageButton5 = new UIColoredImageButton(Main.Assets.Request("Images/UI/CharCreation/Randomize", (AssetRequestMode) 1), true); coloredImageButton5.VAlign = 1f; coloredImageButton5.HAlign = 0.0f; coloredImageButton5.Left = StyleDimension.FromPixelsAndPercent(80f, 0.0f); UIColoredImageButton coloredImageButton6 = coloredImageButton5; coloredImageButton6.OnMouseDown += new UIElement.MouseEvent(this.Click_RandomizeSingleColor); element1.Append((UIElement) coloredImageButton6); this._randomColorButton = (UIElement) coloredImageButton6; this._hslContainer = element1; this._hslHexText = uiText2; coloredImageButton2.SetSnapPoint("Low", 0); coloredImageButton4.SetSnapPoint("Low", 1); coloredImageButton6.SetSnapPoint("Low", 2); } private UIColoredSlider CreateHSLSlider(UICharacterCreation.HSLSliderId id) { UIColoredSlider sliderButtonBase = this.CreateHSLSliderButtonBase(id); sliderButtonBase.VAlign = 0.0f; sliderButtonBase.HAlign = 0.0f; sliderButtonBase.Width = StyleDimension.FromPixelsAndPercent(-10f, 1f); sliderButtonBase.Top.Set((float) (30 * (int) id), 0.0f); sliderButtonBase.OnMouseDown += new UIElement.MouseEvent(this.Click_ColorPicker); sliderButtonBase.SetSnapPoint("Middle", (int) id, offset: new Vector2?(new Vector2(0.0f, 20f))); return sliderButtonBase; } private UIColoredSlider CreateHSLSliderButtonBase( UICharacterCreation.HSLSliderId id) { UIColoredSlider uiColoredSlider; switch (id) { case UICharacterCreation.HSLSliderId.Saturation: uiColoredSlider = new UIColoredSlider(LocalizedText.Empty, (Func) (() => this.GetHSLSliderPosition(UICharacterCreation.HSLSliderId.Saturation)), (Action) (x => this.UpdateHSLValue(UICharacterCreation.HSLSliderId.Saturation, x)), new Action(this.UpdateHSL_S), (Func) (x => this.GetHSLSliderColorAt(UICharacterCreation.HSLSliderId.Saturation, x)), Color.Transparent); break; case UICharacterCreation.HSLSliderId.Luminance: uiColoredSlider = new UIColoredSlider(LocalizedText.Empty, (Func) (() => this.GetHSLSliderPosition(UICharacterCreation.HSLSliderId.Luminance)), (Action) (x => this.UpdateHSLValue(UICharacterCreation.HSLSliderId.Luminance, x)), new Action(this.UpdateHSL_L), (Func) (x => this.GetHSLSliderColorAt(UICharacterCreation.HSLSliderId.Luminance, x)), Color.Transparent); break; default: uiColoredSlider = new UIColoredSlider(LocalizedText.Empty, (Func) (() => this.GetHSLSliderPosition(UICharacterCreation.HSLSliderId.Hue)), (Action) (x => this.UpdateHSLValue(UICharacterCreation.HSLSliderId.Hue, x)), new Action(this.UpdateHSL_H), (Func) (x => this.GetHSLSliderColorAt(UICharacterCreation.HSLSliderId.Hue, x)), Color.Transparent); break; } return uiColoredSlider; } private void UpdateHSL_H() => this.UpdateHSLValue(UICharacterCreation.HSLSliderId.Hue, UILinksInitializer.HandleSliderHorizontalInput(this._currentColorHSL.X, 0.0f, 1f, PlayerInput.CurrentProfile.InterfaceDeadzoneX, 0.35f)); private void UpdateHSL_S() => this.UpdateHSLValue(UICharacterCreation.HSLSliderId.Saturation, UILinksInitializer.HandleSliderHorizontalInput(this._currentColorHSL.Y, 0.0f, 1f, PlayerInput.CurrentProfile.InterfaceDeadzoneX, 0.35f)); private void UpdateHSL_L() => this.UpdateHSLValue(UICharacterCreation.HSLSliderId.Luminance, UILinksInitializer.HandleSliderHorizontalInput(this._currentColorHSL.Z, 0.0f, 1f, PlayerInput.CurrentProfile.InterfaceDeadzoneX, 0.35f)); private float GetHSLSliderPosition(UICharacterCreation.HSLSliderId id) { switch (id) { case UICharacterCreation.HSLSliderId.Hue: return this._currentColorHSL.X; case UICharacterCreation.HSLSliderId.Saturation: return this._currentColorHSL.Y; case UICharacterCreation.HSLSliderId.Luminance: return this._currentColorHSL.Z; default: return 1f; } } private void UpdateHSLValue(UICharacterCreation.HSLSliderId id, float value) { switch (id) { case UICharacterCreation.HSLSliderId.Hue: this._currentColorHSL.X = value; break; case UICharacterCreation.HSLSliderId.Saturation: this._currentColorHSL.Y = value; break; case UICharacterCreation.HSLSliderId.Luminance: this._currentColorHSL.Z = value; break; } Color rgb = UICharacterCreation.ScaledHslToRgb(this._currentColorHSL.X, this._currentColorHSL.Y, this._currentColorHSL.Z); this.ApplyPendingColor(rgb); this._colorPickers[(int) this._selectedPicker]?.SetColor(rgb); if (this._selectedPicker == UICharacterCreation.CategoryId.HairColor) this._hairStylesCategoryButton.SetColor(rgb); this.UpdateHexText(rgb); } private Color GetHSLSliderColorAt(UICharacterCreation.HSLSliderId id, float pointAt) { switch (id) { case UICharacterCreation.HSLSliderId.Hue: return UICharacterCreation.ScaledHslToRgb(pointAt, 1f, 0.5f); case UICharacterCreation.HSLSliderId.Saturation: return UICharacterCreation.ScaledHslToRgb(this._currentColorHSL.X, pointAt, this._currentColorHSL.Z); case UICharacterCreation.HSLSliderId.Luminance: return UICharacterCreation.ScaledHslToRgb(this._currentColorHSL.X, this._currentColorHSL.Y, pointAt); default: return Color.White; } } private void ApplyPendingColor(Color pendingColor) { switch (this._selectedPicker) { case UICharacterCreation.CategoryId.HairColor: this._player.hairColor = pendingColor; break; case UICharacterCreation.CategoryId.Eye: this._player.eyeColor = pendingColor; break; case UICharacterCreation.CategoryId.Skin: this._player.skinColor = pendingColor; break; case UICharacterCreation.CategoryId.Shirt: this._player.shirtColor = pendingColor; break; case UICharacterCreation.CategoryId.Undershirt: this._player.underShirtColor = pendingColor; break; case UICharacterCreation.CategoryId.Pants: this._player.pantsColor = pendingColor; break; case UICharacterCreation.CategoryId.Shoes: this._player.shoeColor = pendingColor; break; } } private void UpdateHexText(Color pendingColor) => this._hslHexText.SetText(UICharacterCreation.GetHexText(pendingColor)); private static string GetHexText(Color pendingColor) => "#" + pendingColor.Hex3().ToUpper(); 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.OpenCharacterSelectUI(); } 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_ColorPicker(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); for (int index = 0; index < this._colorPickers.Length; ++index) { if (this._colorPickers[index] == evt.Target) { this.SelectColorPicker((UICharacterCreation.CategoryId) index); break; } } } private void Click_ClothStyles(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this.UnselectAllCategories(); this._selectedPicker = UICharacterCreation.CategoryId.Clothing; this._middleContainer.Append(this._clothStylesContainer); this._clothingStylesCategoryButton.SetSelected(true); this.UpdateSelectedGender(); } private void Click_HairStyles(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this.UnselectAllCategories(); this._selectedPicker = UICharacterCreation.CategoryId.HairStyle; this._middleContainer.Append(this._hairstylesContainer); this._hairStylesCategoryButton.SetSelected(true); } private void Click_CharInfo(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this.UnselectAllCategories(); this._selectedPicker = UICharacterCreation.CategoryId.CharInfo; this._middleContainer.Append(this._infoContainer); this._charInfoCategoryButton.SetSelected(true); } private void Click_CharClothStyle(UIMouseEvent evt, UIElement listeningElement) { this._clothingStylesCategoryButton.SetImage(Main.Assets.Request("Images/UI/CharCreation/" + (this._player.Male ? "ClothStyleMale" : "ClothStyleFemale"), (AssetRequestMode) 1)); this.UpdateSelectedGender(); } private void Click_CharGenderMale(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this._player.Male = true; this.Click_CharClothStyle(evt, listeningElement); this.UpdateSelectedGender(); } private void Click_CharGenderFemale(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this._player.Male = false; this.Click_CharClothStyle(evt, listeningElement); this.UpdateSelectedGender(); } private void UpdateSelectedGender() { this._genderMale.SetSelected(this._player.Male); this._genderFemale.SetSelected(!this._player.Male); } private void Click_CopyHex(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); Platform.Get().Value = this._hslHexText.Text; } private void Click_PasteHex(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); Vector3 hsl; if (!this.GetHexColor(Platform.Get().Value, out hsl)) return; this.ApplyPendingColor(UICharacterCreation.ScaledHslToRgb(hsl.X, hsl.Y, hsl.Z)); this._currentColorHSL = hsl; this.UpdateHexText(UICharacterCreation.ScaledHslToRgb(hsl.X, hsl.Y, hsl.Z)); this.UpdateColorPickers(); } private void Click_CopyPlayerTemplate(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); string text = JsonConvert.SerializeObject((object) new Dictionary() { { "version", (object) 1 }, { "hairStyle", (object) this._player.hair }, { "clothingStyle", (object) this._player.skinVariant }, { "hairColor", (object) UICharacterCreation.GetHexText(this._player.hairColor) }, { "eyeColor", (object) UICharacterCreation.GetHexText(this._player.eyeColor) }, { "skinColor", (object) UICharacterCreation.GetHexText(this._player.skinColor) }, { "shirtColor", (object) UICharacterCreation.GetHexText(this._player.shirtColor) }, { "underShirtColor", (object) UICharacterCreation.GetHexText(this._player.underShirtColor) }, { "pantsColor", (object) UICharacterCreation.GetHexText(this._player.pantsColor) }, { "shoeColor", (object) UICharacterCreation.GetHexText(this._player.shoeColor) } }, new JsonSerializerSettings() { TypeNameHandling = (TypeNameHandling) 4, MetadataPropertyHandling = (MetadataPropertyHandling) 1, Formatting = (Formatting) 1 }); PlayerInput.PrettyPrintProfiles(ref text); Platform.Get().Value = text; } private void Click_PastePlayerTemplate(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); try { string str1 = Platform.Get().Value; int startIndex = str1.IndexOf("{"); if (startIndex == -1) return; string str2 = str1.Substring(startIndex); int num1 = str2.LastIndexOf("}"); if (num1 == -1) return; Dictionary dictionary1 = JsonConvert.DeserializeObject>(str2.Substring(0, num1 + 1)); if (dictionary1 == null) return; Dictionary dictionary2 = new Dictionary(); foreach (KeyValuePair keyValuePair in dictionary1) dictionary2[keyValuePair.Key.ToLower()] = keyValuePair.Value; object obj; if (dictionary2.TryGetValue("version", out obj)) { long num2 = (long) obj; } if (dictionary2.TryGetValue("hairstyle", out obj)) { int num3 = (int) (long) obj; if (Main.Hairstyles.AvailableHairstyles.Contains(num3)) this._player.hair = num3; } if (dictionary2.TryGetValue("clothingstyle", out obj)) { int num4 = (int) (long) obj; if (((IEnumerable) this._validClothStyles).Contains(num4)) this._player.skinVariant = num4; } Vector3 hsl; if (dictionary2.TryGetValue("haircolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.hairColor = UICharacterCreation.ScaledHslToRgb(hsl); if (dictionary2.TryGetValue("eyecolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.eyeColor = UICharacterCreation.ScaledHslToRgb(hsl); if (dictionary2.TryGetValue("skincolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.skinColor = UICharacterCreation.ScaledHslToRgb(hsl); if (dictionary2.TryGetValue("shirtcolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.shirtColor = UICharacterCreation.ScaledHslToRgb(hsl); if (dictionary2.TryGetValue("undershirtcolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.underShirtColor = UICharacterCreation.ScaledHslToRgb(hsl); if (dictionary2.TryGetValue("pantscolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.pantsColor = UICharacterCreation.ScaledHslToRgb(hsl); if (dictionary2.TryGetValue("shoecolor", out obj) && this.GetHexColor((string) obj, out hsl)) this._player.shoeColor = UICharacterCreation.ScaledHslToRgb(hsl); this.Click_CharClothStyle((UIMouseEvent) null, (UIElement) null); this.UpdateColorPickers(); } catch { } } private void Click_RandomizePlayer(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); Player player = this._player; int index = Main.rand.Next(Main.Hairstyles.AvailableHairstyles.Count); player.hair = Main.Hairstyles.AvailableHairstyles[index]; while ((int) player.eyeColor.R + (int) player.eyeColor.G + (int) player.eyeColor.B > 300) player.eyeColor = UICharacterCreation.ScaledHslToRgb(UICharacterCreation.GetRandomColorVector()); float num = (float) Main.rand.Next(60, 120) * 0.01f; if ((double) num > 1.0) num = 1f; player.skinColor.R = (byte) ((double) Main.rand.Next(240, (int) byte.MaxValue) * (double) num); player.skinColor.G = (byte) ((double) Main.rand.Next(110, 140) * (double) num); player.skinColor.B = (byte) ((double) Main.rand.Next(75, 110) * (double) num); player.hairColor = UICharacterCreation.ScaledHslToRgb(UICharacterCreation.GetRandomColorVector()); player.shirtColor = UICharacterCreation.ScaledHslToRgb(UICharacterCreation.GetRandomColorVector()); player.underShirtColor = UICharacterCreation.ScaledHslToRgb(UICharacterCreation.GetRandomColorVector()); player.pantsColor = UICharacterCreation.ScaledHslToRgb(UICharacterCreation.GetRandomColorVector()); player.shoeColor = UICharacterCreation.ScaledHslToRgb(UICharacterCreation.GetRandomColorVector()); player.skinVariant = this._validClothStyles[Main.rand.Next(this._validClothStyles.Length)]; switch (player.hair + 1) { case 5: case 6: case 7: case 10: case 12: case 19: case 22: case 23: case 26: case 27: case 30: case 33: player.Male = false; break; default: player.Male = true; break; } this.Click_CharClothStyle((UIMouseEvent) null, (UIElement) null); this.UpdateSelectedGender(); this.UpdateColorPickers(); } private void Click_Naming(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(10); this._player.name = ""; Main.clrInput(); UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Lang.menu[45].Value, "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnFinishedNaming), new Action(this.OnCancledNaming), allowEmpty: true); uiVirtualKeyboard.SetMaxInputLength(20); Main.MenuUI.SetState((UIState) uiVirtualKeyboard); } private void Click_NamingAndCreating(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(10); if (string.IsNullOrEmpty(this._player.name)) { this._player.name = ""; Main.clrInput(); UIVirtualKeyboard uiVirtualKeyboard = new UIVirtualKeyboard(Lang.menu[45].Value, "", new UIVirtualKeyboard.KeyboardSubmitEvent(this.OnFinishedNamingAndCreating), new Action(this.OnCancledNaming)); uiVirtualKeyboard.SetMaxInputLength(20); Main.MenuUI.SetState((UIState) uiVirtualKeyboard); } else this.FinishCreatingCharacter(); } private void OnFinishedNaming(string name) { this._player.name = name.Trim(); Main.MenuUI.SetState((UIState) this); this._charName.SetContents(this._player.name); } private void OnCancledNaming() => Main.MenuUI.SetState((UIState) this); private void OnFinishedNamingAndCreating(string name) { this._player.name = name.Trim(); Main.MenuUI.SetState((UIState) this); this._charName.SetContents(this._player.name); this.FinishCreatingCharacter(); } private void FinishCreatingCharacter() { this.SetupPlayerStatsAndInventoryBasedOnDifficulty(); PlayerFileData.CreateAndSave(this._player); Main.LoadPlayers(); Main.menuMode = 1; } private void SetupPlayerStatsAndInventoryBasedOnDifficulty() { int index1 = 0; int num1; if (this._player.difficulty == (byte) 3) { this._player.statLife = this._player.statLifeMax = 100; this._player.statMana = this._player.statManaMax = 20; this._player.inventory[index1].SetDefaults(6); Item[] inventory1 = this._player.inventory; int index2 = index1; int index3 = index2 + 1; inventory1[index2].Prefix(-1); this._player.inventory[index3].SetDefaults(1); Item[] inventory2 = this._player.inventory; int index4 = index3; int index5 = index4 + 1; inventory2[index4].Prefix(-1); this._player.inventory[index5].SetDefaults(10); Item[] inventory3 = this._player.inventory; int index6 = index5; int index7 = index6 + 1; inventory3[index6].Prefix(-1); this._player.inventory[index7].SetDefaults(7); Item[] inventory4 = this._player.inventory; int index8 = index7; int index9 = index8 + 1; inventory4[index8].Prefix(-1); this._player.inventory[index9].SetDefaults(4281); Item[] inventory5 = this._player.inventory; int index10 = index9; int index11 = index10 + 1; inventory5[index10].Prefix(-1); this._player.inventory[index11].SetDefaults(8); Item[] inventory6 = this._player.inventory; int index12 = index11; int index13 = index12 + 1; inventory6[index12].stack = 100; this._player.inventory[index13].SetDefaults(965); Item[] inventory7 = this._player.inventory; int index14 = index13; int num2 = index14 + 1; inventory7[index14].stack = 100; Item[] inventory8 = this._player.inventory; int index15 = num2; num1 = index15 + 1; inventory8[index15].SetDefaults(50); this._player.armor[3].SetDefaults(4978); this._player.armor[3].Prefix(-1); this._player.AddBuff(216, 3600); } else { this._player.inventory[index1].SetDefaults(3507); Item[] inventory9 = this._player.inventory; int index16 = index1; int index17 = index16 + 1; inventory9[index16].Prefix(-1); this._player.inventory[index17].SetDefaults(3509); Item[] inventory10 = this._player.inventory; int index18 = index17; int index19 = index18 + 1; inventory10[index18].Prefix(-1); this._player.inventory[index19].SetDefaults(3506); Item[] inventory11 = this._player.inventory; int index20 = index19; num1 = index20 + 1; inventory11[index20].Prefix(-1); } if (Main.runningCollectorsEdition) { Item[] inventory = this._player.inventory; int index21 = num1; int num3 = index21 + 1; inventory[index21].SetDefaults(603); } this._player.savedPerPlayerFieldsThatArentInThePlayerClass = new Player.SavedPlayerDataWithAnnoyingRules(); CreativePowerManager.Instance.ResetDataForNewPlayer(this._player); } private bool GetHexColor(string hexString, out Vector3 hsl) { if (hexString.StartsWith("#")) hexString = hexString.Substring(1); uint result; if (hexString.Length <= 6 && uint.TryParse(hexString, NumberStyles.HexNumber, (IFormatProvider) CultureInfo.CurrentCulture, out result)) { uint num1 = result & (uint) byte.MaxValue; uint num2 = result >> 8 & (uint) byte.MaxValue; uint num3 = result >> 16 & (uint) byte.MaxValue; hsl = UICharacterCreation.RgbToScaledHsl(new Color((int) num3, (int) num2, (int) num1)); return true; } hsl = Vector3.Zero; return false; } private void Click_RandomizeSingleColor(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); Vector3 randomColorVector = UICharacterCreation.GetRandomColorVector(); this.ApplyPendingColor(UICharacterCreation.ScaledHslToRgb(randomColorVector.X, randomColorVector.Y, randomColorVector.Z)); this._currentColorHSL = randomColorVector; this.UpdateHexText(UICharacterCreation.ScaledHslToRgb(randomColorVector.X, randomColorVector.Y, randomColorVector.Z)); this.UpdateColorPickers(); } private static Vector3 GetRandomColorVector() => new Vector3(Main.rand.NextFloat(), Main.rand.NextFloat(), Main.rand.NextFloat()); private void UnselectAllCategories() { foreach (UIColoredImageButton colorPicker in this._colorPickers) colorPicker?.SetSelected(false); this._clothingStylesCategoryButton.SetSelected(false); this._hairStylesCategoryButton.SetSelected(false); this._charInfoCategoryButton.SetSelected(false); this._hslContainer.Remove(); this._hairstylesContainer.Remove(); this._clothStylesContainer.Remove(); this._infoContainer.Remove(); } private void SelectColorPicker(UICharacterCreation.CategoryId selection) { this._selectedPicker = selection; switch (selection) { case UICharacterCreation.CategoryId.CharInfo: this.Click_CharInfo((UIMouseEvent) null, (UIElement) null); break; case UICharacterCreation.CategoryId.Clothing: this.Click_ClothStyles((UIMouseEvent) null, (UIElement) null); break; case UICharacterCreation.CategoryId.HairStyle: this.Click_HairStyles((UIMouseEvent) null, (UIElement) null); break; default: this.UnselectAllCategories(); this._middleContainer.Append(this._hslContainer); for (int index = 0; index < this._colorPickers.Length; ++index) { if (this._colorPickers[index] != null) this._colorPickers[index].SetSelected((UICharacterCreation.CategoryId) index == selection); } Vector3 vector3 = Vector3.One; switch (this._selectedPicker) { case UICharacterCreation.CategoryId.HairColor: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.hairColor); break; case UICharacterCreation.CategoryId.Eye: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.eyeColor); break; case UICharacterCreation.CategoryId.Skin: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.skinColor); break; case UICharacterCreation.CategoryId.Shirt: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.shirtColor); break; case UICharacterCreation.CategoryId.Undershirt: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.underShirtColor); break; case UICharacterCreation.CategoryId.Pants: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.pantsColor); break; case UICharacterCreation.CategoryId.Shoes: vector3 = UICharacterCreation.RgbToScaledHsl(this._player.shoeColor); break; } this._currentColorHSL = vector3; this.UpdateHexText(UICharacterCreation.ScaledHslToRgb(vector3.X, vector3.Y, vector3.Z)); break; } } private void UpdateColorPickers() { int selectedPicker = (int) this._selectedPicker; this._colorPickers[3].SetColor(this._player.hairColor); this._hairStylesCategoryButton.SetColor(this._player.hairColor); this._colorPickers[4].SetColor(this._player.eyeColor); this._colorPickers[5].SetColor(this._player.skinColor); this._colorPickers[6].SetColor(this._player.shirtColor); this._colorPickers[7].SetColor(this._player.underShirtColor); this._colorPickers[8].SetColor(this._player.pantsColor); this._colorPickers[9].SetColor(this._player.shoeColor); } public override void Draw(SpriteBatch spriteBatch) { base.Draw(spriteBatch); string text = (string) null; if (this._copyHexButton.IsMouseHovering) text = Language.GetTextValue("UI.CopyColorToClipboard"); if (this._pasteHexButton.IsMouseHovering) text = Language.GetTextValue("UI.PasteColorFromClipboard"); if (this._randomColorButton.IsMouseHovering) text = Language.GetTextValue("UI.RandomizeColor"); if (this._copyTemplateButton.IsMouseHovering) text = Language.GetTextValue("UI.CopyPlayerToClipboard"); if (this._pasteTemplateButton.IsMouseHovering) text = Language.GetTextValue("UI.PastePlayerFromClipboard"); if (this._randomizePlayerButton.IsMouseHovering) text = Language.GetTextValue("UI.RandomizePlayer"); if (text != null) { float x = FontAssets.MouseText.Value.MeasureString(text).X; Vector2 vector2 = new Vector2((float) Main.mouseX, (float) Main.mouseY) + new Vector2(16f); if ((double) vector2.Y > (double) (Main.screenHeight - 30)) vector2.Y = (float) (Main.screenHeight - 30); if ((double) vector2.X > (double) Main.screenWidth - (double) x) vector2.X = (float) (Main.screenWidth - 460); Utils.DrawBorderStringFourWay(spriteBatch, FontAssets.MouseText.Value, text, vector2.X, vector2.Y, new Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), Color.Black, Vector2.Zero); } this.SetupGamepadPoints(spriteBatch); } private void SetupGamepadPoints(SpriteBatch spriteBatch) { UILinkPointNavigator.Shortcuts.BackButtonCommand = 1; int num1 = 3000; int num2 = num1 + 20; int num3 = num1; List snapPoints = this.GetSnapPoints(); SnapPoint snapPoint1 = snapPoints.First((Func) (a => a.Name == "Back")); SnapPoint snapPoint2 = snapPoints.First((Func) (a => a.Name == "Create")); UILinkPoint point1 = UILinkPointNavigator.Points[num3]; point1.Unlink(); UILinkPointNavigator.SetPosition(num3, snapPoint1.Position); int num4 = num3 + 1; UILinkPoint point2 = UILinkPointNavigator.Points[num4]; point2.Unlink(); UILinkPointNavigator.SetPosition(num4, snapPoint2.Position); int num5 = num4 + 1; point1.Right = point2.ID; point2.Left = point1.ID; this._foundPoints.Clear(); this._foundPoints.Add(point1.ID); this._foundPoints.Add(point2.ID); List list1 = snapPoints.Where((Func) (a => a.Name == "Top")).ToList(); list1.Sort(new Comparison(this.SortPoints)); for (int index = 0; index < list1.Count; ++index) { UILinkPoint point3 = UILinkPointNavigator.Points[num5]; point3.Unlink(); UILinkPointNavigator.SetPosition(num5, list1[index].Position); point3.Left = num5 - 1; point3.Right = num5 + 1; point3.Down = num2; if (index == 0) point3.Left = -3; if (index == list1.Count - 1) point3.Right = -4; if (this._selectedPicker == UICharacterCreation.CategoryId.HairStyle || this._selectedPicker == UICharacterCreation.CategoryId.Clothing) point3.Down = num2 + index; this._foundPoints.Add(num5); ++num5; } List list2 = snapPoints.Where((Func) (a => a.Name == "Middle")).ToList(); list2.Sort(new Comparison(this.SortPoints)); int ptid1 = num2; switch (this._selectedPicker) { case UICharacterCreation.CategoryId.CharInfo: for (int index = 0; index < list2.Count; ++index) { UILinkPoint andSet = this.GetAndSet(ptid1, list2[index]); andSet.Up = andSet.ID - 1; andSet.Down = andSet.ID + 1; if (index == 0) andSet.Up = num1 + 2; if (index == list2.Count - 1) { andSet.Down = point1.ID; point1.Up = andSet.ID; point2.Up = andSet.ID; } this._foundPoints.Add(ptid1); ++ptid1; } break; case UICharacterCreation.CategoryId.Clothing: List list3 = snapPoints.Where((Func) (a => a.Name == "Low")).ToList(); list3.Sort(new Comparison(this.SortPoints)); int num6 = -2; int num7 = -2; int ptid2 = num2 + 20; for (int index = 0; index < list3.Count; ++index) { UILinkPoint andSet = this.GetAndSet(ptid2, list3[index]); andSet.Up = num2 + index + 2; andSet.Down = point1.ID; if (index >= 3) { ++andSet.Up; andSet.Down = point2.ID; } andSet.Left = andSet.ID - 1; andSet.Right = andSet.ID + 1; if (index == 0) { num6 = andSet.ID; andSet.Left = andSet.ID + 4; point1.Up = andSet.ID; } if (index == list3.Count - 1) { num7 = andSet.ID; andSet.Right = andSet.ID - 4; point2.Up = andSet.ID; } this._foundPoints.Add(ptid2); ++ptid2; } int ptid3 = num2; for (int index = 0; index < list2.Count; ++index) { UILinkPoint andSet = this.GetAndSet(ptid3, list2[index]); andSet.Up = num1 + 2 + index; andSet.Left = andSet.ID - 1; andSet.Right = andSet.ID + 1; if (index == 0) andSet.Left = andSet.ID + 9; if (index == list2.Count - 1) andSet.Right = andSet.ID - 9; andSet.Down = num6; if (index >= 5) andSet.Down = num7; this._foundPoints.Add(ptid3); ++ptid3; } break; case UICharacterCreation.CategoryId.HairStyle: if (list2.Count != 0) { this._helper.CullPointsOutOfElementArea(spriteBatch, list2, this._hairstylesContainer); SnapPoint snapPoint3 = list2[list2.Count - 1]; int num8 = snapPoint3.Id / 10; int num9 = snapPoint3.Id % 10; int count = Main.Hairstyles.AvailableHairstyles.Count; for (int index = 0; index < list2.Count; ++index) { SnapPoint snap = list2[index]; UILinkPoint andSet = this.GetAndSet(ptid1, snap); andSet.Left = andSet.ID - 1; if (snap.Id == 0) andSet.Left = -3; andSet.Right = andSet.ID + 1; if (snap.Id == count - 1) andSet.Right = -4; andSet.Up = andSet.ID - 10; if (index < 10) andSet.Up = num1 + 2 + index; andSet.Down = andSet.ID + 10; if (snap.Id + 10 > snapPoint3.Id) andSet.Down = snap.Id % 10 >= 5 ? point2.ID : point1.ID; if (index == list2.Count - 1) { point1.Up = andSet.ID; point2.Up = andSet.ID; } this._foundPoints.Add(ptid1); ++ptid1; } break; } break; default: List list4 = snapPoints.Where((Func) (a => a.Name == "Low")).ToList(); list4.Sort(new Comparison(this.SortPoints)); int ptid4 = num2 + 20; for (int index = 0; index < list4.Count; ++index) { UILinkPoint andSet = this.GetAndSet(ptid4, list4[index]); andSet.Up = num2 + 2; andSet.Down = point1.ID; andSet.Left = andSet.ID - 1; andSet.Right = andSet.ID + 1; if (index == 0) { andSet.Left = andSet.ID + 2; point1.Up = andSet.ID; } if (index == list4.Count - 1) { andSet.Right = andSet.ID - 2; point2.Up = andSet.ID; } this._foundPoints.Add(ptid4); ++ptid4; } int ptid5 = num2; for (int index = 0; index < list2.Count; ++index) { UILinkPoint andSet = this.GetAndSet(ptid5, list2[index]); andSet.Up = andSet.ID - 1; andSet.Down = andSet.ID + 1; if (index == 0) andSet.Up = num1 + 2 + 5; if (index == list2.Count - 1) andSet.Down = num2 + 20 + 2; this._foundPoints.Add(ptid5); ++ptid5; } break; } if (!PlayerInput.UsingGamepadUI || this._foundPoints.Contains(UILinkPointNavigator.CurrentPoint)) return; this.MoveToVisuallyClosestPoint(); } private void MoveToVisuallyClosestPoint() { Dictionary points = UILinkPointNavigator.Points; Vector2 mouseScreen = Main.MouseScreen; UILinkPoint uiLinkPoint1 = (UILinkPoint) null; foreach (int foundPoint in this._foundPoints) { UILinkPoint uiLinkPoint2; if (!points.TryGetValue(foundPoint, out uiLinkPoint2)) return; if (uiLinkPoint1 == null || (double) Vector2.Distance(mouseScreen, uiLinkPoint1.Position) > (double) Vector2.Distance(mouseScreen, uiLinkPoint2.Position)) uiLinkPoint1 = uiLinkPoint2; } if (uiLinkPoint1 == null) return; UILinkPointNavigator.ChangePoint(uiLinkPoint1.ID); } public void TryMovingCategory(int direction) { int num = (int) (this._selectedPicker + direction) % 10; if (num < 0) num += 10; this.SelectColorPicker((UICharacterCreation.CategoryId) num); } private UILinkPoint GetAndSet(int ptid, SnapPoint snap) { UILinkPoint point = UILinkPointNavigator.Points[ptid]; point.Unlink(); UILinkPointNavigator.SetPosition(point.ID, snap.Position); return point; } private bool PointWithName(SnapPoint a, string comp) => a.Name == comp; private int SortPoints(SnapPoint a, SnapPoint b) => a.Id.CompareTo(b.Id); private static Color ScaledHslToRgb(Vector3 hsl) => UICharacterCreation.ScaledHslToRgb(hsl.X, hsl.Y, hsl.Z); private static Color ScaledHslToRgb(float hue, float saturation, float luminosity) => Main.hslToRgb(hue, saturation, (float) ((double) luminosity * 0.850000023841858 + 0.150000005960464)); private static Vector3 RgbToScaledHsl(Color color) { Vector3 hsl = Main.rgbToHsl(color); hsl.Z = (float) (((double) hsl.Z - 0.150000005960464) / 0.850000023841858); return Vector3.Clamp(hsl, Vector3.Zero, Vector3.One); } private enum CategoryId { CharInfo, Clothing, HairStyle, HairColor, Eye, Skin, Shirt, Undershirt, Pants, Shoes, Count, } private enum HSLSliderId { Hue, Saturation, Luminance, } } }