Код: Выделить всё
public abstract class BaseEffect
{
public abstract object ReturnParams();
}
Код: Выделить всё
public class AttackEffect : BaseEffect
{
private int _damageValue = 64;
public override object ReturnParams()
{
return new {damageValue = _damageValue};
}
}
< /code>
public class DebuffEffect : BaseEffect
{
private int _debuffNumber = 2;
private string _debuffName = "burn";
public override object ReturnParams()
{
return new { debuffNumber = _debuffNumber, debuffName = _debuffName };
}
}
< /code>
In addition, I have an AbilityКод: Выделить всё
using System.Linq;
using SmartFormat;
public class Ability
{
private BaseEffect[] _effects;
private string _tooltip = "Deal {0.damageValue} damage. Apply {1.debuffNumber} {1.debuffName}.";
void UpdateTooltip()
{
var effectParams = GetEffectParams();
Console.WriteLine(Smart.Format(_tooltip, effectParams));
}
private object[] GetEffectParams()
{
return _effects.Select(effect => effect.ReturnParams()).ToArray();
}
}
< /code>
This works in a way. However I don't like having to create an object[][*] Я рассматривал возможность получить только строки, но мне нужны числовые значения для плюрализации (во время локализации)
или я должен попытаться переместить деталь, чтобы быть плюрализованным в эффект. «2 äpfel» сработает, но, возможно, будут ли другие языки изменять части глаголов в зависимости от множественного числа?) НАПРИМЕР. «Сдеть 1 урон». (1 эффект), «сделка 1 повреждение и применить 1 ожог» (2 эффекта), «сделка 1 повреждение, применить 1 сжигание и лечение 1» (3 эффекта) (выгода не будет писать струны вручную, с другой стороны, формулировка струны станет довольно негибкой.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ps-gamedev
Мобильная версия