IMonsterDatabase
Контракт только для чтения для запросов к базе данных монстров. Это публичная поверхность API для всех запросов к базе данных.
Пространство имён: OpenMon.MCE.SDK
Определение
public interface IMonsterDatabase
{
MonsterEntry GetMonster(uint dexNumber);
MonsterEntry GetMonster(string name);
IReadOnlyList<MonsterEntry> GetAllMonsters();
Move GetMove(string name);
IReadOnlyList<Move> GetAllMoves();
Ability GetAbility(string name);
IReadOnlyList<Ability> GetAllAbilities();
Item GetItem(string name);
IReadOnlyList<Item> GetAllItems();
IReadOnlyList<MonsterType> GetAllTypes();
float GetTypeEffectiveness(MonsterType attackingType, MonsterType defendingType);
IReadOnlyList<Form> GetAllForms();
int MonsterCount { get; }
}
Методы
GetMonster(uint dexNumber)
Получить запись монстра по его национальному номеру декса.
| Параметр | Тип | Описание |
|---|---|---|
dexNumber | uint | Уникальный номер декса |
Возвращает: MonsterEntry или null, если не найден.
GetMonster(string name)
Получить запись монстра по имени вида.
| Параметр | Тип | Описание |
|---|---|---|
name | string | Имя вида (с учётом регистра) |
Возвращает: MonsterEntry или null, если не найден.
GetAllMonsters()
Получить все зарегистрированные записи монстров в базе данных.
Возвращает: IReadOnlyList<MonsterEntry> -- все виды, упорядоченные по номеру декса.
GetMove(string name)
Получить приём по имени.
Возвращает: Move или null, если не найден.
GetAllMoves()
Получить все зарегистрированные приёмы.
Возвращает: IReadOnlyList<Move> -- все 668+ приёмов.
GetAbility(string name)
Получить способность по имени.
Возвращает: Ability или null, если не найдена.
GetAllAbilities()
Получить все зарегистрированные способности.
Возвращает: IReadOnlyList<Ability>.
GetItem(string name)
Получить предмет по имени.
Возвращает: Item или null, если не найден.
GetAllItems()
Получить все зарегистрированные предметы.
Возвращает: IReadOnlyList<Item>.
GetAllTypes()
Получить все зарегистрированные типы монстров.
Возвращает: IReadOnlyList<MonsterType> -- 18 стандартных типов (или пользовательские типы, если изменены).
GetTypeEffectiveness(MonsterType, MonsterType)
Получить множитель эффективности типов для атаки одного типа по другому.
| Параметр | Тип | Описание |
|---|---|---|
attackingType | MonsterType | Тип приёма |
defendingType | MonsterType | Тип цели (один тип) |
Возвращает: float -- 0.0 (иммунитет), 0.5 (не очень эффективно), 1.0 (нейтрально) или 2.0 (суперэффективно).
Этот метод проверяет один атакующий тип против одного защищающегося типа. Для защитников с двойным типом вызовите его дважды и перемножьте результаты:
float effectiveness = db.GetTypeEffectiveness(moveType, defenderType1)
* db.GetTypeEffectiveness(moveType, defenderType2);
GetAllForms()
Получить все зарегистрированные формы.
Возвращает: IReadOnlyList<Form>.
Свойства
MonsterCount
Общее количество записей монстров в базе данных.
Тип: int
Пример использования
[Inject] private IMonsterDatabase db;
// Найти конкретного монстра
MonsterEntry sparkbit = db.GetMonster("Sparkbit");
MonsterEntry starter = db.GetMonster(1);
// Проверить сочетание типов
float eff = db.GetTypeEffectiveness(MonsterType.Water, MonsterType.Fire);
Debug.Log($"Water vs Fire: {eff}x"); // 2.0x
// Подсчитать всех монстров типа Fire
int fireCount = db.GetAllMonsters()
.Count(m => m.Type1 == MonsterType.Fire || m.Type2 == MonsterType.Fire);