| < Назад Далее > |
Я показал вам как написать классы подразделений, управлять подразделениями и анимировать их. Последняя тема, которую я затрону — загрузка и создание новых подразделений. В рассматриваемом примере программы есть функция с именем vInitializeUnits(). Она отвечает за загрузку информации о базовых типах и добавляет в игру несколько активных подразделений. Вот ее код:
void CD3DFramework::vInitializeUnits(void)
{
int iUnit;
// Инициализация диспетчера подразделений
m_UnitManager.vReset();
// Установка устройства Drect3D
m_UnitManager.vSetRenderDevice (m_pd3dDevice);
// Импорт базовых данных подразделений
m_UnitManager.iLoadBaseTypes(
"UnitData\\BaseType_Defense.csv",
"UnitData\\BaseType_Offense.csv",
"UnitData\\BaseType_Movement.csv",
"UnitData\\BaseType_Unit.csv",
"UnitData\\BaseType_Animation.csv");
// Добавление нескольких подразделений к "игре"
iUnit = m_UnitManager.iAddUnit("Apache Attack Helicopter", 0);
m_UnitManager.m_UnitObjs[iUnit].vSetPosition(-180.0f, -80.0f);
iUnit = m_UnitManager.iAddUnit("Apache Attack Helicopter", 1);
m_UnitManager.m_UnitObjs[iUnit].vSetPosition(-70.0f, -80.0f);
iUnit = m_UnitManager.iAddUnit("Spirit Scout Helicopter", 2);
m_UnitManager.m_UnitObjs[iUnit].vSetPosition(50.0f, -80.0f);
iUnit = m_UnitManager.iAddUnit("Spirit Scout Helicopter", 3);
m_UnitManager.m_UnitObjs[iUnit].vSetPosition(180.0f, -80.0f);
}
В начале кода я вызываю функцию инициализации диспетчера подразделений. В результате освобождается выделенная ранее память и диспетчер подготавливается к загрузке данных.
Затем для диспетчера подразделений я устанавливаю указатель на устройство визуализации DirectX. Если вы помните, ранее говорилось, что это необходимо для загрузки текстур.
Чтобы загрузить подготовленную информацию о подразделениях я вызываю функцию загрузки базовых типов диспетчера. Она получает имена файлов с подготовленными данными и загружает их в базовые типы, которыми управляет объект диспетчера подразделений.
Пришло время для веселья! Следующая часть кода создает подразделения с помощью функции добавления подразделений. Диспетчер создает и активирует запрошенные подразделения, чтобы они появились в игровом цикле. Сразу после создания каждого подразделения я инициализирую данные о его местоположении, чтобы подразделение появилось в требуемом месте экрана. Обратите внимание, создавая подразделения я назначаю каждому из них собственный цвет владельца. Это позволит вам увидеть как различные цвета владельца отображаются во время визуализации.
После того как подразделения созданы в диспетчере и активированы, они могут модифицироваться и отображаться согласно вашим пожеланиям. В качестве упражнения попробуйте создать на экране еще несколько сотен подразделений и посмотрите, что получится!