netlib.narod.ru< Назад | Оглавление | Далее >

Загрузка и создание подразделений

Я показал вам как написать классы подразделений, управлять подразделениями и анимировать их. Последняя тема, которую я затрону — загрузка и создание новых подразделений. В рассматриваемом примере программы есть функция с именем 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. Если вы помните, ранее говорилось, что это необходимо для загрузки текстур.

Чтобы загрузить подготовленную информацию о подразделениях я вызываю функцию загрузки базовых типов диспетчера. Она получает имена файлов с подготовленными данными и загружает их в базовые типы, которыми управляет объект диспетчера подразделений.

Пришло время для веселья! Следующая часть кода создает подразделения с помощью функции добавления подразделений. Диспетчер создает и активирует запрошенные подразделения, чтобы они появились в игровом цикле. Сразу после создания каждого подразделения я инициализирую данные о его местоположении, чтобы подразделение появилось в требуемом месте экрана. Обратите внимание, создавая подразделения я назначаю каждому из них собственный цвет владельца. Это позволит вам увидеть как различные цвета владельца отображаются во время визуализации.

После того как подразделения созданы в диспетчере и активированы, они могут модифицироваться и отображаться согласно вашим пожеланиям. В качестве упражнения попробуйте создать на экране еще несколько сотен подразделений и посмотрите, что получится!


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz