Добавлен Hares,
опубликован
Работа с РО в промышленных масштабах - Введение
Содержание:
Часть 1, или Эпоха Великих Географических Открытий.
В этой части нам предстоит самая муторная часть - описательная. Найти, что, где и как лежит, и описать это структурами.
Пошагово
Шаг 1.
Находим нужный нам тип данных. Открываем его. Создаём объект нужного нам типа, а именно:
Алгоритм.Показатели и Алгоритм.Получение опыта.
Алгоритм.Показатели и Алгоритм.Получение опыта.
Создаём:
- 3 алгоритма типа "Показатели", по одному на каждый атрибут героя.
- 1 алгоритм типа "Показатели", любой из 3 атрибутов, но с суффиксом " - Основной".
- 1 алгоритм типа "Получение опыта". В нём создаём:
- 1 нулевой уровень с одним вписанным в него атрибутом (показателем) и добавлением этого самого атрибута герою.
- 1 какой-то ещё уровень с одним вписанным в него атрибутом.
Находим нужные нам поля, и заполняем.
Шаг 2.
Находим сверху кнопочку "Отобразить XML". Ищем в получившемся коде находим все наши алгоритмы и копируем их.
Далее включаем компилятор, создаём проект, создаём струкуру - Алгоритм, или, если хочется, структуру Behavior с наследующими её струкутами Veterancy и Attribute.
Далее заполняем их имеющимися у нас полями. Если вы выбрали первый способ, то советую использовать параметр:
///<summary>
/// Здесь содержится вся информация, не включённая в предыдущие поля.
///</summary>
String[] XmlCode;
Вообще xml-код в MSVS - вещь приятная и полезная. Позволяет вставлять описания функций, параметров и т.п... В общем, в данном случае - идеально, т.к. легко забыть, что определяет то или иное свойтсво.
Ежели вы выбрали второй способ - наследование, то создайте дополнительные подструктуры (Modification и т.п.)
Вот то, что должно было у нас получиться:
- Для первого способа:
/// <summary>
/// Тип данных "алгоритм". Используется для всего того, что юниты не кастуют сами (пассивки, замедления, ауры итд итп)
/// <summary>
public struct Behavior
{
/// <summary>
/// Идентификатор объекта. Не может повторяться.
/// </summary>
public string Id;
/// <summary>
/// Тип алгоритма. На данный момент используются только "CBehaviorVeterancy" и "CBehaviorAttribute".
/// </summary>
public string Type;
/// <summary>
/// Ссылка на текстовую константу названия алгоритма.
/// </summary>
public string Name;
/// <summary>
/// Ссылка на текстовую константу суффикса названия алгоритма.
/// </summary>
public string EditorSuffix;
/// <summary>
/// Ссылка на текстовую константу описания редактора.
/// </summary>
public string EditorDesription;
/// <summary>
/// Ссылка на текстовую константу префикса названия алгоритма.
/// </summary>
public string EditorPrefix;
/// <summary>
/// Иконка. У данных алгоритмов отображается только в редакторе.
/// </summary>
public string Icon; // Art
/// <summary>
/// Раса. Нужна для удобной типологии.
/// </summary>
public string Race;
/// <summary>
/// Тип эффекта алгоритма. Хрень полнейшая.
/// </summary>
public string AbilityorEffectType;
/// <summary>
/// Флаг "Постоянный". Ставим true.
/// </summary>
public bool Permanent;
/// <summary>
/// Максимальное количество данных показателей. Только для тип Attribute.
/// </summary>
public int MaxPoints;
///<summary>
/// Здесь содержится вся информация, не включённая в предыдущие поля.
///</summary>
public string[] XmlCode;
}
- И для второго способа...
/// <summary>
/// Модификация боевой единицы.
/// </summary>
public classModifications
{
/// <summary>
/// Бонус к макс. запасу здоровья.
/// </summary>
public double VitalBonus;
/// <summary>
/// Бонус к регенерации здоровья.
/// </summary>
public double VitalRegenBonus;
/// <summary>
/// Бонус к макс. запасу маны.
/// </summary>
public double EnergyBonus;
/// <summary>
/// Бонус к регенерации маны.
/// </summary>
public double EnergyRegenBonus;
/// <summary>
/// Коэффициент скорости атаки.
/// </summary>
public double AttackSpeedBonus;
/// <summary>
/// Бонус к скорости передвижения.
/// </summary>
public double MovementSpeedBonus;
/// <summary>
/// Бонус к прочности брони.
/// </summary>
public double VitalArmorBonus;
/// <summary>
/// Бонус к урону.
/// </summary>
public double AttackBonus;
/// <summary>
/// Включаемые алгоритмы.
/// </summary>
public string[] BehaviorsActivided;
/// <summary>
/// Изменяемые алгоритмы.
/// </summary>
public string[] BehaviorChanged;
/// <summary>
/// Относительные значения изменяемых алгоритмов.
/// </summary>
public int[] BehaviorChangedToValue;
}
/// <summary>
/// Тип данных "алгоритм". Используется для всего того, что юниты не кастуют сами (пассивки, замедления, ауры итд итп)
/// <summary>
public class Behavior
{
/// <summary>
/// Ижентификатор объекта. Не может повторяться.
/// </summary>
public string Id;
/// <summary>
/// Тип алгоритма. На данный момент используются только "CBehaviorVeterancy" и "CBehaviorAttribute".
/// </summary>
public string Type;
/// <summary>
/// Ссылка на текстовую константу названия алгоритма.
/// </summary>
public string Name;
/// <summary>
/// Само текстовое название алгоритма. Для удобства.
/// </summary>
public string NameValue;
/// <summary>
/// Ссылка на текстовую константу суффикса названия алгоритма.
/// </summary>
public string EditorSuffix;
/// <summary>
/// Ссылка на текстовую константу описания редактора.
/// </summary>
public string EditorDesription;
/// <summary>
/// Ссылка на текстовую константу префикса названия алгоритма.
/// </summary>
public string EditorPrefix;
/// <summary>
/// Иконка. У данных алгоритмов отображается только в редакторе.
/// </summary>
public string Icon; // Art
/// <summary>
/// Раса. Нужна для удобной типологии.
/// </summary>
public string Race;
/// <summary>
/// Тип эффекта алгоритма. Хрень полнейшая.
/// </summary>
public string AbilityorEffectType;
/// <summary>
/// Флаг "Постоянный". Ставим true.
/// </summary>
public bool Permanent;
}
/// <summary>
/// Тип алгоритма "Показатель". Характеризует атрибут героя.
/// </summary>
public class Attribute : Behavior
{
/// <summary>
/// Максимальное количество данного параметра.
/// </summary>
public int MaxPoints;
/// <summary>
/// Показывает, является ли данный параметр основным.
/// </summary>
public bool IsMain;
/// <summary>
/// Модификация, которой подвергается герой при воздействии одного данного атрибута.
/// </summary>
public Modifications Modification;
}
/// <summary>
/// Тип алгоритма "Показатель". Характеризует атрибут героя.
/// </summary>
public class Veterancy : Behavior
{
/// <summary>
/// Модификация, которой подвергается герой при получении уровня.
/// </summary>
public Modifications[] LevelModification;
/// <summary>
/// Миниальное количество опыта для достижения данного уровня.
/// </summary>
public ulong[] LevelMinXp;
}
- Сори за то, что подсветка синтаксиса не работает. Видимо, c# не поддерживается, автоматическое определение даёт xml (спасибо и на том!). Эй, админы, помогите программистам! включите поддержку шарпа!
На этом наши первооткрытия заканчиваются.
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Тем паче, что есть ряд инструментов, позволяющих синхронизировать поля и значения с дочерними объектами или сбрасывать настройки к родительским.
Отредактирован Hares
Добавлена вторая статья