Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WordwrapString()

static string[] Terraria.Utils.WordwrapString ( string text,
DynamicSpriteFont font,
int maxWidth,
int maxLines,
out int lineAmount )
inlinestatic

Definition at line 522 of file Utils.cs.

523 {
524 string[] array = new string[maxLines];
525 int num = 0;
526 List<string> list = new List<string>(text.Split('\n'));
527 List<string> list2 = new List<string>(list[0].Split(' '));
528 for (int i = 1; i < list.Count && i < maxLines; i++)
529 {
530 list2.Add("\n");
531 list2.AddRange(list[i].Split(' '));
532 }
533 bool flag = true;
534 while (list2.Count > 0)
535 {
536 string text2 = list2[0];
537 string text3 = " ";
538 if (list2.Count == 1)
539 {
540 text3 = "";
541 }
542 if (text2 == "\n")
543 {
544 array[num++] += text2;
545 flag = true;
546 if (num >= maxLines)
547 {
548 break;
549 }
550 list2.RemoveAt(0);
551 }
552 else if (flag)
553 {
554 if (font.MeasureString(text2).X > (float)maxWidth)
555 {
556 string text4 = text2[0].ToString() ?? "";
557 int num2 = 1;
558 while (font.MeasureString(text4 + text2[num2] + "-").X <= (float)maxWidth)
559 {
560 text4 += text2[num2++];
561 }
562 text4 += "-";
563 array[num++] = text4 + " ";
564 if (num >= maxLines)
565 {
566 break;
567 }
568 list2.RemoveAt(0);
569 list2.Insert(0, text2.Substring(num2));
570 }
571 else
572 {
573 ref string reference = ref array[num];
575 flag = false;
576 list2.RemoveAt(0);
577 }
578 }
579 else if (font.MeasureString(array[num] + text2).X > (float)maxWidth)
580 {
581 num++;
582 if (num >= maxLines)
583 {
584 break;
585 }
586 flag = true;
587 }
588 else
589 {
590 ref string reference2 = ref array[num];
592 flag = false;
593 list2.RemoveAt(0);
594 }
595 }
596 lineAmount = num;
597 if (lineAmount == maxLines)
598 {
599 lineAmount--;
600 }
601 return array;
602 }
void AddRange(IEnumerable< KeyValuePair< TKey, TValue > > collection)
void Add(TKey key, TValue value)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.AddRange(), System.array, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Text.RegularExpressions.i, System.list, and System.text.

Referenced by Terraria.Main.DrawMouseOver(), Terraria.UI.ChestUI.DrawName(), and Terraria.Main.TextDisplayCache.PrepareCache().