private static void SpawnColorItem(Color color, UiSpacer spacer, out UiColumn colorSquare, out UiTextBlock colorText) { colorSquare = new UiColumn(); var colorSquare1 = new UiTexture2D(graphics => Helpers.GetTexture(graphics)); colorSquare1.SetColor(color); colorSquare.AddChild(UiSpacer.GetSpacer(0, 5)); colorSquare.AddChild(colorSquare1); colorText = new UiTextBlock(); colorText.SetString($"{color.R:X2}{color.G:X2}{color.B:X2}"); }
internal void LoadContent(GraphicsDevice graphics) { _fonts.Clear(); _backgrounds.Clear(); _images.Clear(); foreach (var asset in GameContext.AssetBundleManager.FindByExtension("uifont")) { using (var stream = GameContext.ContentLoader.ReadStream(asset)) { stream.Seek(0L, SeekOrigin.Begin); var blob = BlobAllocator.Blob(true); blob.LoadJsonStream(stream); if (Process.GetCurrentProcess().ProcessName.Contains("Staxel.Client")) { _fonts.Add(blob.GetString("code"), ContentManager.Load <SpriteFont>(blob.GetString("xnb"))); } } } foreach (var asset in GameContext.AssetBundleManager.FindByExtension("uiBackground")) { using (var stream = GameContext.ContentLoader.ReadStream(asset)) { stream.Seek(0L, SeekOrigin.Begin); var blob = BlobAllocator.Blob(true); blob.LoadJsonStream(stream); _backgrounds.Add(blob.GetString("code"), new UiBackground(graphics, blob)); } } foreach (var asset in GameContext.AssetBundleManager.FindByExtension("uiPicture")) { using (var stream = GameContext.ContentLoader.ReadStream(asset)) { stream.Seek(0L, SeekOrigin.Begin); var blob = BlobAllocator.Blob(true); blob.LoadJsonStream(stream); var image = new UiTexture2D(context => Texture2D.FromStream(context.Graphics.GraphicsDevice, GameContext.ContentLoader.ReadStream(blob.GetString("picture")))); _images.Add(blob.GetString("code"), image); } } LoadUIContent?.Invoke(graphics); }
public ColorPickerWindow(Color?_default = null) { if (_default != null) { _color = _default.Value; } _current = new UiWindow(); _current.ListenForEscape(true); _current.Container.SetBackground(Constants.Backgrounds.Dark); var picker = new UiColorPicker(); var currentColor = new UiTexture2D(context => Helpers.GetTexture(context)); var hoverColor = new UiTexture2D(context => Helpers.GetTexture(context)); var selectedColor = new UiTexture2D(context => Helpers.GetTexture(context)); selectedColor.SetColor(_color); currentColor.SetColor(_color); var row = new UiRow(); row.AddChild(picker); var column = new UiColumn(); var spacer = new UiSpacer(); spacer.SetHeight(20); spacer.SetWidth(20); row.AddChild(spacer); var mouseText = new UiTextBlock(); mouseText.SetColor(Color.White); mouseText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.mouse")); column.AddChild(mouseText); column.AddChild(hoverColor); column.AddChild(spacer); var selectedText = new UiTextBlock(); selectedText.SetColor(Color.White); selectedText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.selected")); column.AddChild(selectedText); column.AddChild(selectedColor); column.AddChild(spacer); var currentText = new UiTextBlock(); currentText.SetColor(Color.White); currentText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.current")); column.AddChild(currentText); column.AddChild(currentColor); row.AddChild(column); _current.AddChild(row); _current.AddChild(spacer); var colorRow = new UiRow(); UiTextInput colorHex = null; var colorR = new UiNumberInput(); colorR.SetItteration(1.0f); colorR.SetMin(0); colorR.SetMax(255); colorR.SetValue(_color.R); colorR.SetBackgroundColors(Color.Red, Color.Pink); colorR.OnChange += value => { if (byte.TryParse(value.ToString(), out var val)) { _color.R = val; colorHex?.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); selectedColor.SetColor(_color); } }; var colorG = new UiNumberInput(); colorG.SetItteration(1.0f); colorG.SetMin(0); colorG.SetMax(255); colorG.SetValue(_color.G); colorG.SetBackgroundColors(Color.Green, Color.LimeGreen); colorG.OnChange += value => { if (byte.TryParse(value.ToString(), out var val)) { _color.G = val; colorHex?.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); selectedColor.SetColor(_color); } }; var colorB = new UiNumberInput(); colorB.SetItteration(1.0f); colorB.SetMin(0); colorB.SetMax(255); colorB.SetValue(_color.B); colorB.SetBackgroundColors(Color.Blue, Color.LightBlue); colorB.SetTextColors(Color.White, Color.Black); colorB.OnChange += value => { if (byte.TryParse(value.ToString(), out var val)) { _color.B = val; colorHex?.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); selectedColor.SetColor(_color); } }; var colorHexRow = new UiRow(); var hex = new UiTextBlock(); hex.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.hex")); colorHex = new UiTextInput(); colorHex.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); colorHex.SetBackgroundColor(new Color(237, 207, 154)); colorHex.SetTextColor(Color.Black); colorHex.SetActiveTextColor(Color.Black); colorHex.SetBackground(Constants.Backgrounds.TextInput); colorHex.SetLimit(6); colorHex.InputCheck += key => { switch (key.ToString().ToUpper()) { default: return(false); case "A": case "B": case "C": case "D": case "E": case "F": case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": return(true); } }; colorHex.OnChange += text => { if (text.IsNullOrEmpty()) { _color = Color.Black; } else { _color = ColorMath.ParseString(text); } selectedColor.SetColor(_color); colorR.ForceSetValue(_color.R); colorG.ForceSetValue(_color.G); colorB.ForceSetValue(_color.B); }; picker.ColorClick += color => { selectedColor.SetColor(color); _color = color; colorR.ForceSetValue(_color.R); colorG.ForceSetValue(_color.G); colorB.ForceSetValue(_color.B); colorHex.ForceSetValue($"{_color.R:X2}{_color.G:X2}{_color.B:X2}"); }; colorRow.AddChild(colorR); colorRow.AddChild(spacer); colorRow.AddChild(colorG); colorRow.AddChild(spacer); colorRow.AddChild(colorB); _current.AddChild(colorRow); _current.AddChild(spacer); colorHexRow.AddChild(hex); colorHexRow.AddChild(colorHex); _current.AddChild(colorHexRow); _current.AddChild(spacer); var confirmButton = new UiButton(); confirmButton.SetBackground(Constants.Backgrounds.Button); var confirmText = new UiTextBlock(); confirmText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.setColor")); confirmButton.AddChild(confirmText); confirmButton.OnClick += () => { OnColorSet?.Invoke(_color); if (_colorHistory.Contains(_color)) { _colorHistory.Remove(_color); } _colorHistory.Add(_color); _current.Dispose(); }; var cancelButton = new UiButton(); cancelButton.SetBackground(Constants.Backgrounds.Button); var cancelText = new UiTextBlock(); cancelText.SetString(ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.foxcore.text.cancel")); cancelButton.AddChild(cancelText); cancelButton.OnClick += () => { _current.Dispose(); }; var buttonRow = new UiRow(); buttonRow.AddChild(confirmButton); buttonRow.AddChild(spacer); buttonRow.AddChild(cancelButton); buttonRow.AddChild(spacer); var favButton = new UiButton(); favButton.SetBackground(Constants.Backgrounds.Button); var favPic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.favorites"); favButton.AddChild(favPic); buttonRow.AddChild(favButton); buttonRow.AddChild(spacer); favButton.OnClick += () => { SpawnFavoriteFolderMenu(_current, spacer, color => { colorHex.ForceSetValue($"{color.R:X2}{color.G:X2}{color.B:X2}", true); }); }; var historyButton = new UiButton(); historyButton.SetBackground(Constants.Backgrounds.Button); var historyPic = FoxUIHook.Instance.GetPicture("nimbusfox.ui.images.history"); historyButton.AddChild(historyPic); buttonRow.AddChild(historyButton); historyButton.OnClick += () => { SpawnHistoryWindow(_current, spacer, color => { colorHex.ForceSetValue($"{color.R:X2}{color.G:X2}{color.B:X2}", true); }); }; _current.AddChild(buttonRow); picker.ColorHover += color => { hoverColor.SetColor(color); }; _current.OnClose += () => { OnClose?.Invoke(); }; }