private DynamicPart CreateFileLoadedPart(int offset, string file) { string text; using var reader = new File(); if (reader.Open(file, File.ModeFlags.Read) == Error.Ok) { text = reader.GetAsText(); } else { text = "Missing file to show here!"; GD.PrintErr("Can't load file to show in credits: ", file); } var label = new DynamicPart(offset, new Label { Text = text, RectMinSize = new Vector2(RectSize.x * LicenseTextWidthFraction, 0), RectPosition = new Vector2(Mathf.Round(RectSize.x * (1.0f - LicenseTextWidthFraction)), 0), Align = Label.AlignEnum.Fill, Autowrap = true, }); AddDynamicItem(label); return(label); }
private DynamicPart CreateDynamicPart(int offset, IEnumerable <string> texts, int columns, Font overrideFont = null) { if (columns <= 1) { return(CreateDynamicPart(offset, string.Join("\n", texts))); } var splitTexts = Enumerable.Range(0, columns).Select(_ => new StringBuilder()).ToList(); using (var textEnumerator = texts.GetEnumerator()) { bool done = false; while (!done) { foreach (var column in splitTexts) { if (!textEnumerator.MoveNext()) { done = true; break; } column.AppendLine(textEnumerator.Current); } } } var hBox = new HBoxContainer { // 0.7 == 15% shrink of middle spacing for 2 columns and move position to center. RectPosition = new Vector2(columns == 2 ? RectSize.x * 0.15f : 0, 0), RectMinSize = new Vector2(columns == 2 ? RectSize.x * 0.7f : RectSize.x, 0), }; foreach (var columnText in splitTexts) { var label = new Label { Text = columnText.ToString(), Align = Label.AlignEnum.Center, SizeFlagsHorizontal = (int)SizeFlags.ExpandFill, }; if (overrideFont != null) { label.AddFontOverride("font", overrideFont); } hBox.AddChild(label); } var dynamicPart = new DynamicPart(offset, hBox); AddDynamicItem(dynamicPart); return(dynamicPart); }
private DynamicPart CreateDynamicPart(int offset, string text, Font overrideFont = null) { var label = new DynamicPart(offset, new Label { Text = text, RectMinSize = new Vector2(RectSize.x, 0), Align = Label.AlignEnum.Center, }); if (overrideFont != null) { label.Control.AddFontOverride("font", overrideFont); } AddDynamicItem(label); return(label); }
private void AddDynamicItem(DynamicPart part) { AddChild(part.Control); dynamicParts.Add(part); part.UpdatePosition(smoothOffset, RectSize.y); }