Files
riversong-code-showcase/Source/Riversong/Game/UI/Helpers/TextFormatHelper.cs
2026-05-21 16:04:49 +02:00

66 lines
2.0 KiB
C#

using System;
using System.Text;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class TextFormatHelper
{
public string Pluralize(int value, string singular, string plural)
{
return value == 1 ? singular : plural;
}
public string FormatImportantText(string text)
{
return $"<b>{text}</b>";
}
public void FormatImportantText(StringBuilder sb, string text)
{
sb.Append("<b>");
sb.Append(text);
sb.Append("</b>");
}
public void FormatUnlockConditions(UnlockDefinition unlock, StringBuilder sb)
{
if (unlock.Type != UnlockType.UnlockBuilding || unlock.Conditions.Count <= 0) return;
sb.Append("To unlock the ");
FormatImportantText(sb, unlock.Building.BuildingName);
sb.AppendLine(", your village needs a little more:");
foreach (var condition in unlock.Conditions)
{
sb.AppendLine();
FormatUnlockCondition(sb, condition);
}
}
private void FormatUnlockCondition(StringBuilder sb, UnlockCondition condition)
{
sb.Append("\u2022 ");
switch (condition.Type)
{
case UnlockConditionType.BuildingPlaced:
sb.Append("Add a ");
FormatImportantText(sb, condition.Building.BuildingName);
sb.Append(" to your village");
return;
case UnlockConditionType.HouseCountAtTierOrAbove:
sb.Append("Grow ");
sb.Append(condition.HouseCount);
sb.Append(' ');
sb.Append(Pluralize(condition.HouseCount, "house", "houses"));
sb.Append(" to tier ");
sb.Append(condition.MinHouseTierIndex + 1);
return;
default:
throw new ArgumentOutOfRangeException();
}
}
}
}