C# модульная система способностей и подсказки инструментов (Gamedev)C#

Место общения программистов C#
Ответить
Anonymous
 C# модульная система способностей и подсказки инструментов (Gamedev)

Сообщение Anonymous »

Я создаю прототипирование системы способностей, где каждая способность применяет ряд эффектов. Я делаю это в Годо, но сейчас я просто обеспокоен чистым C# и таким образом удалил все вещи Godot из моих примеров кода. Для читаемости я уже выбрал SmartFormat, но мне интересно, действительно ли мне нужно использовать простые объекты [] массивы и аналогичные.

Код: Выделить всё

public abstract class BaseEffect
{
public abstract object ReturnParams();
}
и две конкретные реализации, унаследованные от Baseeffect :

Код: Выделить всё

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
класс, который содержит множество эффектов. Тот же эффект, вероятно, должен быть включен несколько раз (сделка 10 урона, а затем нанесет 7 урон или что -то в этом роде). < /P>

Код: Выделить всё

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[]
из анонимных объектов, возвращаемых geteffectparams () .

[*] Я рассматривал возможность получить только строки, но мне нужны числовые значения для плюрализации (во время локализации)
или я должен попытаться переместить деталь, чтобы быть плюрализованным в эффект. «2 äpfel» сработает, но, возможно, будут ли другие языки изменять части глаголов в зависимости от множественного числа?) НАПРИМЕР. «Сдеть 1 урон». (1 эффект), «сделка 1 повреждение и применить 1 ожог» (2 эффекта), «сделка 1 повреждение, применить 1 сжигание и лечение 1» (3 эффекта) (выгода не будет писать струны вручную, с другой стороны, формулировка струны станет довольно негибкой.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ps-gamedev
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»