Перейти к основному содержимому

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)

Получить запись монстра по его национальному номеру декса.

ПараметрТипОписание
dexNumberuintУникальный номер декса

Возвращает: MonsterEntry или null, если не найден.

GetMonster(string name)

Получить запись монстра по имени вида.

ПараметрТипОписание
namestringИмя вида (с учётом регистра)

Возвращает: 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)

Получить множитель эффективности типов для атаки одного типа по другому.

ПараметрТипОписание
attackingTypeMonsterTypeТип приёма
defendingTypeMonsterTypeТип цели (один тип)

Возвращает: 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);