Terraria 1.4.0.5 Source Code
This commit is contained in:
commit
05205f009e
1059 changed files with 563450 additions and 0 deletions
73
Localization/LocalizedText.cs
Normal file
73
Localization/LocalizedText.cs
Normal file
|
@ -0,0 +1,73 @@
|
|||
// Decompiled with JetBrains decompiler
|
||||
// Type: Terraria.Localization.LocalizedText
|
||||
// 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 System.ComponentModel;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Terraria.Localization
|
||||
{
|
||||
public class LocalizedText
|
||||
{
|
||||
public static readonly LocalizedText Empty = new LocalizedText("", "");
|
||||
private static Regex _substitutionRegex = new Regex("{(\\?(?:!)?)?([a-zA-Z][\\w\\.]*)}", RegexOptions.Compiled);
|
||||
public readonly string Key;
|
||||
|
||||
public string Value { get; private set; }
|
||||
|
||||
internal LocalizedText(string key, string text)
|
||||
{
|
||||
this.Key = key;
|
||||
this.Value = text;
|
||||
}
|
||||
|
||||
internal void SetValue(string text) => this.Value = text;
|
||||
|
||||
public string FormatWith(object obj)
|
||||
{
|
||||
string input = this.Value;
|
||||
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(obj);
|
||||
return LocalizedText._substitutionRegex.Replace(input, (MatchEvaluator) (match =>
|
||||
{
|
||||
if (match.Groups[1].Length != 0)
|
||||
return "";
|
||||
PropertyDescriptor propertyDescriptor = properties.Find(match.Groups[2].ToString(), false);
|
||||
return propertyDescriptor == null ? "" : (propertyDescriptor.GetValue(obj) ?? (object) "").ToString();
|
||||
}));
|
||||
}
|
||||
|
||||
public bool CanFormatWith(object obj)
|
||||
{
|
||||
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(obj);
|
||||
foreach (Match match in LocalizedText._substitutionRegex.Matches(this.Value))
|
||||
{
|
||||
string name = match.Groups[2].ToString();
|
||||
PropertyDescriptor propertyDescriptor = properties.Find(name, false);
|
||||
if (propertyDescriptor == null)
|
||||
return false;
|
||||
object obj1 = propertyDescriptor.GetValue(obj);
|
||||
if (obj1 == null || match.Groups[1].Length != 0 && (((int) (obj1 as bool?) ?? 0) ^ (match.Groups[1].Length == 1 ? 1 : 0)) != 0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public NetworkText ToNetworkText() => NetworkText.FromKey(this.Key);
|
||||
|
||||
public NetworkText ToNetworkText(params object[] substitutions) => NetworkText.FromKey(this.Key, substitutions);
|
||||
|
||||
public static explicit operator string(LocalizedText text) => text.Value;
|
||||
|
||||
public string Format(object arg0) => string.Format(this.Value, arg0);
|
||||
|
||||
public string Format(object arg0, object arg1) => string.Format(this.Value, arg0, arg1);
|
||||
|
||||
public string Format(object arg0, object arg1, object arg2) => string.Format(this.Value, arg0, arg1, arg2);
|
||||
|
||||
public string Format(params object[] args) => string.Format(this.Value, args);
|
||||
|
||||
public override string ToString() => this.Value;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue