В моей игре есть enum (длиной около 200 записей) с разными GameEntityType
s.
Когда игра сохраняется, в файл сохранения записывается только массив GameEntityType
.
Для реконструкции игрового мира и отображения различной информации о GameEntityTypes
Мне нужно иметь список довольно много дополнительных деталей (постоянные значения).
Это означает, что с каждым GameEntityType
связаны другие значения.
Эти значения доступны очень часто каждый кадр.
Моя цель - иметь простой способ получить всю дополнительную информацию из GameEntityTypeID (перечисление).
Например, когда я читаю 0x1 из файла сохранения, я могу просто получить доступ к Имени и всем остальным
информация, которая подразумевается с числом / перечислением из массива, подобного этому: "Constants.TextureList [GameEntityType
]", возвращает строку "Stone_Texture.DDS"
Пример для дополнительной / связанной информации о первой записи перечисления:
Типы:
string
, строка, Flag-Enum: "Visual-Classification"
, bool
, bool
Ценности:
"StoneBlock"
, "Stone_Texture.DDS"
, 0x0102
, false
, true
Мой первый подход к этому заключался в создании статического класса GameEntityTypeInfo, который
для каждого дополнительного типа информации был член, подобный следующему:
public static const string [] = {"StoneBlock", ... [more entrys]
};
Конечно, это ужасное решение, потому что я не могу просто добавить GameEntityType's
везде, где я хочу, без необходимости обновлять все остальные списки тоже.
Я также должен разделить логические единицы на единицы типа данных (что является проблемой! Потому что, когда я решаю, что мне больше не нужен конкретный тип EntityType, мне нужно пройти более 6 списков!)
Затем я попытался решить эту проблему, создав структуру из этих наборов данных.
и добавив их в статический массив.
Но создание списка с дополнительной информацией во время конструктора (пока игра запускается)
все еще не кажется лучшим решением.
Вопрос: Как создать быстрый (поиск по названию / классификации будет использоваться в каждом кадре не менее 5000 раз) и легкий доступ (предпочтительно с индексаторами) к этим постоянным значениям?
Поиск, подобный этому, будет лучшим "Constants.TextureList [GameEntityType
]"